mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-08-14 07:07:48 +00:00
Updated mbedtls_ccm_finish_boundary to handle zero len tags
Signed-off-by: Minos Galanakis <[email protected]>
This commit is contained in:
@@ -1762,6 +1762,14 @@ 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
|
||||
|
||||
CCM finish check-boundary encrypt tag_len=0, finish_tag_len=0
|
||||
depends_on:MBEDTLS_CCM_GCM_CAN_AES
|
||||
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_ENCRYPT:0:0:MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED
|
||||
|
||||
CCM finish check-boundary decrypt tag_len=0, finish_tag_len=0
|
||||
depends_on:MBEDTLS_CCM_GCM_CAN_AES
|
||||
mbedtls_ccm_finish_boundary:MBEDTLS_CIPHER_ID_AES:MBEDTLS_CCM_DECRYPT:0:0:MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED
|
||||
|
||||
# CCM finish boundary matrix (encrypt)
|
||||
CCM finish check-boundary encrypt tag_len=16, finish_tag_len=16
|
||||
depends_on:MBEDTLS_CCM_GCM_CAN_AES
|
||||
|
||||
@@ -925,11 +925,21 @@ void mbedtls_ccm_finish_boundary(int cipher_id, int mode,
|
||||
|
||||
BLOCK_CIPHER_PSA_INIT();
|
||||
TEST_EQUAL(mbedtls_ccm_setkey(&ctx, cipher_id, key, sizeof(key) * 8), 0);
|
||||
TEST_EQUAL(0, mbedtls_ccm_starts(&ctx, mode, iv, sizeof(iv)));
|
||||
|
||||
/* Use the caller-provided tag length during setup, then finish with a
|
||||
* different tag length to exercise boundary handling/API compliance */
|
||||
TEST_EQUAL(0, mbedtls_ccm_set_lengths(&ctx, 0, 0, (size_t) start_tag_len));
|
||||
|
||||
/* For non-CCM* with tag_len=0, validate the mbedtls_ccm_set_lengths path
|
||||
* when ccm_calculate_first_block_if_ready() fails. */
|
||||
if (start_tag_len == 0) {
|
||||
TEST_EQUAL(0, mbedtls_ccm_set_lengths(&ctx, 0, 0, (size_t) start_tag_len));
|
||||
TEST_EQUAL(MBEDTLS_ERR_CCM_BAD_INPUT,
|
||||
mbedtls_ccm_starts(&ctx, mode, iv, sizeof(iv)));
|
||||
|
||||
/* Use the caller-provided tag length during setup, then finish with a
|
||||
* different tag length to exercise boundary handling/API compliance */
|
||||
} else {
|
||||
TEST_EQUAL(0, mbedtls_ccm_starts(&ctx, mode, iv, sizeof(iv)));
|
||||
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,
|
||||
|
||||
Reference in New Issue
Block a user