1
0
mirror of https://github.com/Mbed-TLS/mbedtls.git synced 2025-07-30 22:43:08 +03:00

tests: add PSA_INIT/PSA_DONE to CCM and GCM test suites

Signed-off-by: Valerio Setti <valerio.setti@nordicsemi.no>
This commit is contained in:
Valerio Setti
2023-12-12 11:54:20 +01:00
parent f8e6cbacc0
commit 10e9aa26c5
3 changed files with 88 additions and 0 deletions

View File

@ -367,6 +367,30 @@ uint64_t mbedtls_test_parse_binary_string(data_t *bin_string);
#define MD_PSA_DONE() ((void) 0)
#endif /* MBEDTLS_MD_SOME_PSA */
/** \def BLOCK_CIPHER_PSA_INIT
*
* Call this macro to initialize the PSA subsystem if BLOCK_CIPHER uses a driver,
* and do nothing otherwise.
*
* If the initialization fails, mark the test case as failed and jump to the
* \p exit label.
*/
/** \def BLOCK_CIPHER_PSA_DONE
*
* Call this macro at the end of a test case if you called #BLOCK_CIPHER_PSA_INIT.
*
* This is like #PSA_DONE except it does nothing under the same conditions as
* #BLOCK_CIPHER_PSA_INIT.
*/
#if defined(MBEDTLS_BLOCK_CIPHER_SOME_PSA)
#define BLOCK_CIPHER_PSA_INIT() PSA_INIT()
#define BLOCK_CIPHER_PSA_DONE() PSA_DONE()
#else /* MBEDTLS_MD_SOME_PSA */
#define BLOCK_CIPHER_PSA_INIT() ((void) 0)
#define BLOCK_CIPHER_PSA_DONE() ((void) 0)
#endif /* MBEDTLS_MD_SOME_PSA */
/** \def MD_OR_USE_PSA_INIT
*
* Call this macro to initialize the PSA subsystem if MD uses a driver,

View File

@ -69,7 +69,9 @@ exit:
/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST:MBEDTLS_AES_C */
void mbedtls_ccm_self_test()
{
BLOCK_CIPHER_PSA_INIT();
TEST_ASSERT(mbedtls_ccm_self_test(1) == 0);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -105,6 +107,7 @@ void ccm_lengths(int msg_len, int iv_len, int add_len, int tag_len, int res)
unsigned char tag[18];
int decrypt_ret;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
TEST_CALLOC_OR_SKIP(add, add_len);
@ -132,6 +135,7 @@ void ccm_lengths(int msg_len, int iv_len, int add_len, int tag_len, int res)
exit:
mbedtls_free(add);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -148,6 +152,7 @@ void ccm_star_lengths(int msg_len, int iv_len, int add_len, int tag_len,
unsigned char tag[18];
int decrypt_ret;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
memset(key, 0, sizeof(key));
@ -174,6 +179,7 @@ void ccm_star_lengths(int msg_len, int iv_len, int add_len, int tag_len,
exit:
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -198,6 +204,7 @@ void mbedtls_ccm_encrypt_and_tag(int cipher_id, data_t *key,
/* Prepare tag buffer */
TEST_CALLOC(tag_buf, expected_tag_len);
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
TEST_EQUAL(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8), 0);
/* Test with input == output */
@ -230,6 +237,7 @@ exit:
mbedtls_ccm_free(&ctx);
mbedtls_free(io_msg_buf);
mbedtls_free(tag_buf);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -241,6 +249,7 @@ void mbedtls_ccm_star_no_tag(int cipher_id, int mode, data_t *key,
uint8_t *output = NULL;
size_t olen;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -255,6 +264,7 @@ void mbedtls_ccm_star_no_tag(int cipher_id, int mode, data_t *key,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -277,6 +287,7 @@ void mbedtls_ccm_auth_decrypt(int cipher_id, data_t *key,
memcpy(io_msg_buf, msg->x, expected_msg_len);
}
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
TEST_EQUAL(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8), 0);
/* Test with input == output */
@ -317,6 +328,7 @@ void mbedtls_ccm_auth_decrypt(int cipher_id, data_t *key,
exit:
mbedtls_free(io_msg_buf);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -364,6 +376,7 @@ void mbedtls_ccm_star_encrypt_and_tag(int cipher_id,
iv[source_address->len + frame_counter->len] = sec_level;
iv_len = sizeof(iv);
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
TEST_EQUAL(mbedtls_ccm_setkey(&ctx, cipher_id,
key->x, key->len * 8), 0);
@ -402,6 +415,7 @@ exit:
mbedtls_ccm_free(&ctx);
mbedtls_free(io_msg_buf);
mbedtls_free(tag_buf);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -443,6 +457,7 @@ void mbedtls_ccm_star_auth_decrypt(int cipher_id,
iv[source_address->len + frame_counter->len] = sec_level;
iv_len = sizeof(iv);
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
TEST_ASSERT(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8) == 0);
/* Test with input == output */
@ -479,6 +494,7 @@ void mbedtls_ccm_star_auth_decrypt(int cipher_id,
exit:
mbedtls_ccm_free(&ctx);
mbedtls_free(io_msg_buf);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -495,6 +511,7 @@ void mbedtls_ccm_skip_ad(int cipher_id, int mode,
/* Sanity checks on the test data */
TEST_EQUAL(msg->len, result->len);
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -517,6 +534,7 @@ void mbedtls_ccm_skip_ad(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -529,6 +547,7 @@ void mbedtls_ccm_skip_update(int cipher_id, int mode,
mbedtls_ccm_context ctx;
uint8_t *output = NULL;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -545,6 +564,7 @@ void mbedtls_ccm_skip_update(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -556,6 +576,7 @@ void mbedtls_ccm_overflow_ad(int cipher_id, int mode,
{
mbedtls_ccm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -566,6 +587,7 @@ void mbedtls_ccm_overflow_ad(int cipher_id, int mode,
TEST_EQUAL(MBEDTLS_ERR_CCM_BAD_INPUT, mbedtls_ccm_update_ad(&ctx, add->x, add->len));
exit:
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -577,6 +599,7 @@ void mbedtls_ccm_unexpected_ad(int cipher_id, int mode,
{
mbedtls_ccm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -586,6 +609,7 @@ void mbedtls_ccm_unexpected_ad(int cipher_id, int mode,
TEST_EQUAL(MBEDTLS_ERR_CCM_BAD_INPUT, mbedtls_ccm_update_ad(&ctx, add->x, add->len));
exit:
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -599,6 +623,7 @@ void mbedtls_ccm_unexpected_text(int cipher_id, int mode,
uint8_t *output = NULL;
size_t olen;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -614,6 +639,7 @@ void mbedtls_ccm_unexpected_text(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -625,6 +651,7 @@ void mbedtls_ccm_incomplete_ad(int cipher_id, int mode,
mbedtls_ccm_context ctx;
uint8_t *output = NULL;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -639,6 +666,7 @@ void mbedtls_ccm_incomplete_ad(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -651,6 +679,7 @@ void mbedtls_ccm_full_ad_and_overflow(int cipher_id, int mode,
{
mbedtls_ccm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -663,6 +692,7 @@ void mbedtls_ccm_full_ad_and_overflow(int cipher_id, int mode,
TEST_EQUAL(MBEDTLS_ERR_CCM_BAD_INPUT, mbedtls_ccm_update_ad(&ctx, add->x, 1));
exit:
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -679,6 +709,7 @@ void mbedtls_ccm_incomplete_ad_and_overflow(int cipher_id, int mode,
add_second_buffer[0] = add->x[add->len - 1];
add_second_buffer[1] = 0xAB; // some magic value
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -691,6 +722,7 @@ void mbedtls_ccm_incomplete_ad_and_overflow(int cipher_id, int mode,
TEST_EQUAL(MBEDTLS_ERR_CCM_BAD_INPUT, mbedtls_ccm_update_ad(&ctx, add_second_buffer, 2));
exit:
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -704,6 +736,7 @@ void mbedtls_ccm_overflow_update(int cipher_id, int mode,
uint8_t *output = NULL;
size_t olen;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -719,6 +752,7 @@ void mbedtls_ccm_overflow_update(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -732,6 +766,7 @@ void mbedtls_ccm_incomplete_update(int cipher_id, int mode,
uint8_t *output = NULL;
size_t olen;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -752,6 +787,7 @@ void mbedtls_ccm_incomplete_update(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -766,6 +802,7 @@ void mbedtls_ccm_full_update_and_overflow(int cipher_id, int mode,
uint8_t *output = NULL;
size_t olen;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -783,6 +820,7 @@ void mbedtls_ccm_full_update_and_overflow(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -801,6 +839,7 @@ void mbedtls_ccm_incomplete_update_overflow(int cipher_id, int mode,
msg_second_buffer[0] = msg->x[msg->len - 1];
msg_second_buffer[1] = 0xAB; // some magic value
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -818,6 +857,7 @@ void mbedtls_ccm_incomplete_update_overflow(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -829,6 +869,7 @@ void mbedtls_ccm_instant_finish(int cipher_id, int mode,
mbedtls_ccm_context ctx;
uint8_t *output = NULL;
BLOCK_CIPHER_PSA_INIT();
mbedtls_ccm_init(&ctx);
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));
@ -842,5 +883,6 @@ void mbedtls_ccm_instant_finish(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_ccm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */

View File

@ -171,6 +171,7 @@ void gcm_bad_parameters(int cipher_id, int direction,
mbedtls_gcm_context ctx;
size_t tag_len = tag_len_bits / 8;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
memset(output, 0x00, sizeof(output));
@ -183,6 +184,7 @@ void gcm_bad_parameters(int cipher_id, int direction,
exit:
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -200,6 +202,7 @@ void gcm_encrypt_and_tag(int cipher_id, data_t *key_str,
size_t n1;
size_t n1_add;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
memset(output, 0x00, 128);
@ -230,6 +233,7 @@ void gcm_encrypt_and_tag(int cipher_id, data_t *key_str,
exit:
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -247,6 +251,7 @@ void gcm_decrypt_and_verify(int cipher_id, data_t *key_str,
size_t n1;
size_t n1_add;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
memset(output, 0x00, 128);
@ -287,6 +292,7 @@ void gcm_decrypt_and_verify(int cipher_id, data_t *key_str,
exit:
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -300,6 +306,7 @@ void gcm_decrypt_and_verify_empty_cipher(int cipher_id,
{
mbedtls_gcm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
TEST_ASSERT(mbedtls_gcm_setkey(&ctx, cipher_id, key_str->x, key_str->len * 8) == 0);
@ -308,6 +315,7 @@ void gcm_decrypt_and_verify_empty_cipher(int cipher_id,
cipher_update_calls);
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -322,6 +330,7 @@ void gcm_decrypt_and_verify_empty_ad(int cipher_id,
{
mbedtls_gcm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
TEST_ASSERT(mbedtls_gcm_setkey(&ctx, cipher_id, key_str->x, key_str->len * 8) == 0);
@ -330,6 +339,7 @@ void gcm_decrypt_and_verify_empty_ad(int cipher_id,
ad_update_calls);
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -341,6 +351,7 @@ void gcm_decrypt_and_verify_no_ad_no_cipher(int cipher_id,
{
mbedtls_gcm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
TEST_ASSERT(mbedtls_gcm_setkey(&ctx, cipher_id, key_str->x, key_str->len * 8) == 0);
@ -348,6 +359,7 @@ void gcm_decrypt_and_verify_no_ad_no_cipher(int cipher_id,
iv_str, tag_str);
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -361,6 +373,7 @@ void gcm_encrypt_and_tag_empty_cipher(int cipher_id,
{
mbedtls_gcm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
TEST_ASSERT(mbedtls_gcm_setkey(&ctx, cipher_id, key_str->x, key_str->len * 8) == 0);
@ -370,6 +383,7 @@ void gcm_encrypt_and_tag_empty_cipher(int cipher_id,
exit:
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -384,6 +398,7 @@ void gcm_encrypt_and_tag_empty_ad(int cipher_id,
{
mbedtls_gcm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
TEST_ASSERT(mbedtls_gcm_setkey(&ctx, cipher_id, key_str->x, key_str->len * 8) == 0);
@ -393,6 +408,7 @@ void gcm_encrypt_and_tag_empty_ad(int cipher_id,
exit:
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -404,6 +420,7 @@ void gcm_encrypt_and_verify_no_ad_no_cipher(int cipher_id,
{
mbedtls_gcm_context ctx;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
TEST_ASSERT(mbedtls_gcm_setkey(&ctx, cipher_id, key_str->x, key_str->len * 8) == 0);
@ -411,6 +428,7 @@ void gcm_encrypt_and_verify_no_ad_no_cipher(int cipher_id,
iv_str, tag_str);
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
@ -444,6 +462,7 @@ void gcm_update_output_buffer_too_small(int cipher_id, int mode,
size_t olen = 0;
size_t output_len = input->len - 1;
BLOCK_CIPHER_PSA_INIT();
mbedtls_gcm_init(&ctx);
TEST_EQUAL(mbedtls_gcm_setkey(&ctx, cipher_id, key_str->x, key_str->len * 8), 0);
TEST_EQUAL(0, mbedtls_gcm_starts(&ctx, mode, iv->x, iv->len));
@ -455,12 +474,15 @@ void gcm_update_output_buffer_too_small(int cipher_id, int mode,
exit:
mbedtls_free(output);
mbedtls_gcm_free(&ctx);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */
/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST:MBEDTLS_AES_C */
void gcm_selftest()
{
BLOCK_CIPHER_PSA_INIT();
TEST_ASSERT(mbedtls_gcm_self_test(1) == 0);
BLOCK_CIPHER_PSA_DONE();
}
/* END_CASE */