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.
This commit is contained in:
@@ -46,7 +46,7 @@ typedef crypter_t* (*crypter_constructor_t)(encryption_algorithm_t algo,
|
||||
* Constructor function for aead transforms
|
||||
*/
|
||||
typedef aead_t* (*aead_constructor_t)(encryption_algorithm_t algo,
|
||||
size_t key_size);
|
||||
size_t key_size, size_t salt_size);
|
||||
/**
|
||||
* Constructor function for signers
|
||||
*/
|
||||
@@ -100,10 +100,12 @@ struct crypto_factory_t {
|
||||
*
|
||||
* @param algo encryption algorithm
|
||||
* @param key_size length of the key in bytes
|
||||
* @param salt_size size of salt, implicit part of the nonce
|
||||
* @return aead_t instance, NULL if not supported
|
||||
*/
|
||||
aead_t* (*create_aead)(crypto_factory_t *this,
|
||||
encryption_algorithm_t algo, size_t key_size);
|
||||
encryption_algorithm_t algo,
|
||||
size_t key_size, size_t salt_size);
|
||||
|
||||
/**
|
||||
* Create a symmetric signer instance.
|
||||
|
||||
Reference in New Issue
Block a user