Add aes_gmac() as a wrapper for AES GMAC operations using GCM
This is otherwise identical to aes_gcm_ae() but does not use the plain/crypt pointers since no data is encrypted. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
d140db6adf
commit
77b2c81275
3 changed files with 25 additions and 0 deletions
|
@ -311,3 +311,11 @@ int aes_gcm_ad(const u8 *key, size_t key_len, const u8 *iv, size_t iv_len,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int aes_gmac(const u8 *key, size_t key_len, const u8 *iv, size_t iv_len,
|
||||||
|
const u8 *aad, size_t aad_len, u8 *tag)
|
||||||
|
{
|
||||||
|
return aes_gcm_ae(key, key_len, iv, iv_len, NULL, 0, aad, aad_len, NULL,
|
||||||
|
tag);
|
||||||
|
}
|
||||||
|
|
|
@ -49,5 +49,8 @@ int __must_check aes_gcm_ad(const u8 *key, size_t key_len,
|
||||||
const u8 *crypt, size_t crypt_len,
|
const u8 *crypt, size_t crypt_len,
|
||||||
const u8 *aad, size_t aad_len, const u8 *tag,
|
const u8 *aad, size_t aad_len, const u8 *tag,
|
||||||
u8 *plain);
|
u8 *plain);
|
||||||
|
int __must_check aes_gmac(const u8 *key, size_t key_len,
|
||||||
|
const u8 *iv, size_t iv_len,
|
||||||
|
const u8 *aad, size_t aad_len, u8 *tag);
|
||||||
|
|
||||||
#endif /* AES_WRAP_H */
|
#endif /* AES_WRAP_H */
|
||||||
|
|
|
@ -407,6 +407,20 @@ static int test_gcm(void)
|
||||||
ret++;
|
ret++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (p_len == 0) {
|
||||||
|
if (aes_gmac(k, k_len, iv, iv_len, aad, aad_len, tag) <
|
||||||
|
0) {
|
||||||
|
printf("GMAC failed (test case %d)\n", i);
|
||||||
|
ret++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (os_memcmp(tag, t, sizeof(tag)) != 0) {
|
||||||
|
printf("GMAC tag mismatch (test case %d)\n", i);
|
||||||
|
ret++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (aes_gcm_ad(k, k_len, iv, iv_len, c, p_len, aad, aad_len,
|
if (aes_gcm_ad(k, k_len, iv, iv_len, c, p_len, aad, aad_len,
|
||||||
t, tmp) < 0) {
|
t, tmp) < 0) {
|
||||||
printf("GCM-AD failed (test case %d)\n", i);
|
printf("GCM-AD failed (test case %d)\n", i);
|
||||||
|
|
Loading…
Reference in a new issue