aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/crypto/aead.h
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2014-01-31 15:53:38 +0100
committerMartin Willi <martin@revosec.ch>2014-03-31 15:56:12 +0200
commite5d73b0dfa6bc57b2ed8745df4409308eeaf272e (patch)
tree245ca1455caf0fa3c8e22e8916ad7d4474f82c34 /src/libstrongswan/crypto/aead.h
parente12eec10089a4a18a15ccb511aa1200ad59e8044 (diff)
downloadstrongswan-e5d73b0dfa6bc57b2ed8745df4409308eeaf272e.tar.bz2
strongswan-e5d73b0dfa6bc57b2ed8745df4409308eeaf272e.tar.xz
aead: Support custom AEAD salt sizes
The salt, or often called implicit nonce, varies between AEAD algorithms and their use in protocols. For IKE and ESP, GCM uses 4 bytes, while CCM uses 3 bytes. With TLS, however, AEAD mode uses 4 bytes for both GCM and CCM. Our GCM backends currently support 4 bytes and CCM 3 bytes only. This is fine until we go for CCM mode support in TLS, which requires 4 byte nonces.
Diffstat (limited to 'src/libstrongswan/crypto/aead.h')
-rw-r--r--src/libstrongswan/crypto/aead.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/libstrongswan/crypto/aead.h b/src/libstrongswan/crypto/aead.h
index c887f53bb..43f71b65e 100644
--- a/src/libstrongswan/crypto/aead.h
+++ b/src/libstrongswan/crypto/aead.h
@@ -102,6 +102,10 @@ struct aead_t {
/**
* Get the size of the key material (for encryption and authentication).
*
+ * This includes any additional bytes requires for the implicit nonce part.
+ * For AEADs based on traditional ciphers, the length is for both
+ * the integrity and the encryption key in total.
+ *
* @return key size in bytes
*/
size_t (*get_key_size)(aead_t *this);
@@ -109,6 +113,11 @@ struct aead_t {
/**
* Set the key for encryption and authentication.
*
+ * If the AEAD uses an implicit nonce, the last part of the key shall
+ * be the implicit nonce. For AEADs based on traditional ciphers, the
+ * key shall include both integrity and encryption keys, concatenated
+ * in that order.
+ *
* @param key encryption and authentication key
* @return TRUE if key set successfully
*/