Make function to test if an encryption algorithm is an AEAD alg public
This commit is contained in:
@@ -253,28 +253,6 @@ static void strip_dh(private_proposal_t *this)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the given alg is an authenticated encryption algorithm
|
||||
*/
|
||||
static bool is_authenticated_encryption(u_int16_t alg)
|
||||
{
|
||||
switch(alg)
|
||||
{
|
||||
case ENCR_AES_CCM_ICV8:
|
||||
case ENCR_AES_CCM_ICV12:
|
||||
case ENCR_AES_CCM_ICV16:
|
||||
case ENCR_AES_GCM_ICV8:
|
||||
case ENCR_AES_GCM_ICV12:
|
||||
case ENCR_AES_GCM_ICV16:
|
||||
case ENCR_CAMELLIA_CCM_ICV8:
|
||||
case ENCR_CAMELLIA_CCM_ICV12:
|
||||
case ENCR_CAMELLIA_CCM_ICV16:
|
||||
case ENCR_NULL_AUTH_AES_GMAC:
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a matching alg/keysize in two linked lists
|
||||
*/
|
||||
@@ -366,7 +344,7 @@ static proposal_t *select_proposal(private_proposal_t *this,
|
||||
return NULL;
|
||||
}
|
||||
/* select integrity algorithm */
|
||||
if (!is_authenticated_encryption(algo))
|
||||
if (!encryption_algorithm_is_aead(algo))
|
||||
{
|
||||
if (select_algo(this->integrity_algos, other->integrity_algos, private,
|
||||
&add, &algo, &key_size))
|
||||
@@ -565,7 +543,7 @@ static void check_proposal(private_proposal_t *this)
|
||||
e = this->encryption_algos->create_enumerator(this->encryption_algos);
|
||||
while (e->enumerate(e, &alg))
|
||||
{
|
||||
if (!is_authenticated_encryption(alg->algorithm))
|
||||
if (!encryption_algorithm_is_aead(alg->algorithm))
|
||||
{
|
||||
all_aead = FALSE;
|
||||
break;
|
||||
|
||||
@@ -159,4 +159,25 @@ int encryption_algorithm_to_oid(encryption_algorithm_t alg, size_t key_size)
|
||||
return oid;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Described in header.
|
||||
*/
|
||||
bool encryption_algorithm_is_aead(encryption_algorithm_t alg)
|
||||
{
|
||||
switch (alg)
|
||||
{
|
||||
case ENCR_AES_CCM_ICV8:
|
||||
case ENCR_AES_CCM_ICV12:
|
||||
case ENCR_AES_CCM_ICV16:
|
||||
case ENCR_AES_GCM_ICV8:
|
||||
case ENCR_AES_GCM_ICV12:
|
||||
case ENCR_AES_GCM_ICV16:
|
||||
case ENCR_NULL_AUTH_AES_GMAC:
|
||||
case ENCR_CAMELLIA_CCM_ICV8:
|
||||
case ENCR_CAMELLIA_CCM_ICV12:
|
||||
case ENCR_CAMELLIA_CCM_ICV16:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,4 +170,12 @@ encryption_algorithm_t encryption_algorithm_from_oid(int oid, size_t *key_size);
|
||||
*/
|
||||
int encryption_algorithm_to_oid(encryption_algorithm_t alg, size_t key_size);
|
||||
|
||||
/**
|
||||
* Check if an encryption algorithm identifier is an AEAD algorithm.
|
||||
*
|
||||
* @param alg algorithm identifier
|
||||
* @return TRUE if it is an AEAD algorithm
|
||||
*/
|
||||
bool encryption_algorithm_is_aead(encryption_algorithm_t alg);
|
||||
|
||||
#endif /** CRYPTER_H_ @}*/
|
||||
|
||||
Reference in New Issue
Block a user