aboutsummaryrefslogtreecommitdiffstats
path: root/src/libipsec/esp_context.c
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/libipsec/esp_context.c
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/libipsec/esp_context.c')
-rw-r--r--src/libipsec/esp_context.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libipsec/esp_context.c b/src/libipsec/esp_context.c
index 66e14f98b..5e58f66da 100644
--- a/src/libipsec/esp_context.c
+++ b/src/libipsec/esp_context.c
@@ -216,7 +216,8 @@ static bool create_aead(private_esp_context_t *this, int alg,
case ENCR_AES_GCM_ICV12:
case ENCR_AES_GCM_ICV16:
/* the key includes a 4 byte salt */
- this->aead = lib->crypto->create_aead(lib->crypto, alg, key.len-4);
+ this->aead = lib->crypto->create_aead(lib->crypto, alg,
+ key.len - 4, 4);
break;
default:
break;