forked from espressif/esp-idf
mbedtls: added a test of different auth-tag lengths in AES-GCM
This commit is contained in:
@@ -830,4 +830,56 @@ TEST_CASE("mbedtls AES GCM - Combine different IV/Key/Plaintext/AAD lengths", "[
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("mbedtls AES GCM - Different Authentication Tag lengths", "[aes-gcm]")
|
||||||
|
{
|
||||||
|
const unsigned CALL_SZ = 160;
|
||||||
|
uint8_t iv[16];
|
||||||
|
uint8_t key[16];
|
||||||
|
uint8_t aad[16];
|
||||||
|
uint8_t *input = heap_caps_malloc(CALL_SZ, MALLOC_CAP_DMA | MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL);
|
||||||
|
TEST_ASSERT_NOT_NULL(input);
|
||||||
|
|
||||||
|
memset(input, 0x67, CALL_SZ);
|
||||||
|
memset(iv, 0xA2, sizeof(iv));
|
||||||
|
memset(key, 0x48, sizeof(key));
|
||||||
|
memset(aad, 0x12, sizeof(aad));
|
||||||
|
|
||||||
|
size_t tag_len[] = {4, 8, 11, 16};
|
||||||
|
|
||||||
|
const uint8_t expected_last_block[] = {
|
||||||
|
0xcd, 0xb9, 0xad, 0x6f, 0xc9, 0x35, 0x21, 0x0d,
|
||||||
|
0xc9, 0x5d, 0xea, 0xd9, 0xf7, 0x1d, 0x43, 0xed
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t expected_tag[16] = {
|
||||||
|
0x57, 0x10, 0x22, 0x91, 0x65, 0xfa, 0x89, 0xba,
|
||||||
|
0x0a, 0x3e, 0xc1, 0x7c, 0x93, 0x6e, 0x35, 0xac
|
||||||
|
};
|
||||||
|
|
||||||
|
aes_gcm_test_cfg_t cfg = {
|
||||||
|
.plaintext = input,
|
||||||
|
.plaintext_length = CALL_SZ,
|
||||||
|
.output_caps = MALLOC_CAP_DMA | MALLOC_CAP_8BIT | MALLOC_CAP_INTERNAL,
|
||||||
|
.add_buf = aad,
|
||||||
|
.add_length = sizeof(aad),
|
||||||
|
.iv = iv,
|
||||||
|
.iv_length = sizeof(iv),
|
||||||
|
.key = key,
|
||||||
|
.key_bits = 8 * sizeof(key),
|
||||||
|
};
|
||||||
|
|
||||||
|
aes_gcm_test_expected_res_t res = {
|
||||||
|
.expected_tag = expected_tag,
|
||||||
|
.ciphertext_last_block = expected_last_block,
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i < sizeof(tag_len) / sizeof(tag_len[0]); i++) {
|
||||||
|
printf("Test AES-GCM with tag length = %d\n", tag_len[i]);
|
||||||
|
cfg.tag_len = tag_len[i];
|
||||||
|
aes_gcm_test(&cfg, &res, AES_GCM_TEST_CRYPT_N_TAG);
|
||||||
|
aes_gcm_test(&cfg, &res, AES_GCM_TEST_START_UPDATE_FINISH);
|
||||||
|
}
|
||||||
|
free(input);
|
||||||
|
}
|
||||||
|
|
||||||
#endif //CONFIG_MBEDTLS_HARDWARE_AES
|
#endif //CONFIG_MBEDTLS_HARDWARE_AES
|
||||||
|
Reference in New Issue
Block a user