test_suite_ccm: Added a test for invalid tag_len inputs.

Signed-off-by: Minos Galanakis <[email protected]>
This commit is contained in:
Minos Galanakis
2026-03-03 11:24:23 +00:00
parent 7c2f728178
commit d6f635e3f3
2 changed files with 87 additions and 0 deletions
+58
View File
@@ -1746,6 +1746,64 @@ CCM* decrypt, instant finish AES-128 (P=0, N=13, A=0, T=16)
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_instant_finish:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_STAR_DECRYPT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary encrypt tag_len=8, finish_tag_len=32
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:8:32:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary encrypt tag_len=8, finish_tag_len=8
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:8:8:0:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary decrypt tag_len=8, finish_tag_len=32
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:8:32:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary decrypt tag_len=8, finish_tag_len=8
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:8:8:0:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
# CCM finish boundary matrix (encrypt)
CCM finish check-boundary encrypt tag_len=16, finish_tag_len=16
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:16:16:0:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary encrypt tag_len=8, finish_tag_len=16
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:8:16:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary encrypt tag_len=16, finish_tag_len=17
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:16:17:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary encrypt tag_len=16, finish_tag_len=4000
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:16:4000:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary encrypt tag_len=16, finish_tag_len=8
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:16:8:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
# CCM finish boundary matrix (decrypt)
CCM finish check-boundary decrypt tag_len=16, finish_tag_len=16
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:16:16:0:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary decrypt tag_len=8, finish_tag_len=16
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:8:16:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary decrypt tag_len=16, finish_tag_len=17
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:16:17:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary decrypt tag_len=16, finish_tag_len=4000
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:16:4000:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM finish check-boundary decrypt tag_len=16, finish_tag_len=8
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:16:8:MBEDTLS_ERR_CCM_BAD_INPUT:"54caf96ef6d448734700aadab50faf7a":"a3803e752ae849c910d8da36af"
CCM pass unexpected auth data, NIST VPT AES-128 #14 (P=13, N=13, A=32, T=16)
depends_on:MBEDTLS_CCM_GCM_CAN_AES
mbedtls_ccm_unexpected_ad::MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:"d32088d50df9aba14d9022c870a0cb85":"e16c69861efc206e85aab1255e":"0eff7d7bcceb873c3203a8df74f4e91b04bd607ec11202f96cfeb99f5bcdb7aa"
+29
View File
@@ -906,3 +906,32 @@ exit:
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
/* BEGIN_CASE */
void mbedtls_ccm_finish_boundary(int cipher_id, int mode,
int start_tag_len, int finish_tag_len,
int expected_finish_ret,
data_t *key, data_t *iv)
{
mbedtls_ccm_context ctx;
unsigned char *tag = NULL;
mbedtls_ccm_init(&ctx);
BLOCK_CIPHER_PSA_INIT();
TEST_EQUAL(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8), 0);
TEST_EQUAL(0, mbedtls_ccm_starts(&ctx, mode, iv->x, iv->len));
/* Use the caller-provided tag length during setup, then finish with a
* different tag length to exercise boundary handling/API complianece */
TEST_EQUAL(0, mbedtls_ccm_set_lengths(&ctx, 0, 0, (size_t) start_tag_len));
TEST_CALLOC(tag, finish_tag_len);
TEST_EQUAL(expected_finish_ret,
mbedtls_ccm_finish(&ctx, tag, finish_tag_len));
exit:
mbedtls_free(tag);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */