aes selftest: determine selftest loop limit in runtime

Signed-off-by: Yanray Wang <yanray.wang@arm.com>
This commit is contained in:
Yanray Wang 2023-05-11 12:04:23 +08:00
parent 62c9991a5b
commit 59c2dfa48c

View File

@ -1820,7 +1820,11 @@ int mbedtls_aes_self_test(int verbose)
/*
* ECB mode
*/
for (i = 0; i < 6; i++) {
{
static const int num_tests =
sizeof(aes_test_ecb_dec) / sizeof(*aes_test_ecb_dec);
for (i = 0; i < num_tests << 1; i++) {
u = i >> 1;
keybits = 128 + u * 64;
mode = i & 1;
@ -1830,13 +1834,6 @@ int mbedtls_aes_self_test(int verbose)
(mode == MBEDTLS_AES_DECRYPT) ? "dec" : "enc");
}
#if defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH)
if (keybits > 128) {
mbedtls_printf("skipped\n");
continue;
}
#endif /* MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH */
memset(buf, 0, 16);
if (mode == MBEDTLS_AES_DECRYPT) {
@ -1879,12 +1876,17 @@ int mbedtls_aes_self_test(int verbose)
if (verbose != 0) {
mbedtls_printf("\n");
}
}
#if defined(MBEDTLS_CIPHER_MODE_CBC)
/*
* CBC mode
*/
for (i = 0; i < 6; i++) {
{
static const int num_tests =
sizeof(aes_test_cbc_dec) / sizeof(*aes_test_cbc_dec);
for (i = 0; i < num_tests << 1; i++) {
u = i >> 1;
keybits = 128 + u * 64;
mode = i & 1;
@ -1894,13 +1896,6 @@ int mbedtls_aes_self_test(int verbose)
(mode == MBEDTLS_AES_DECRYPT) ? "dec" : "enc");
}
#if defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH)
if (keybits > 128) {
mbedtls_printf("skipped\n");
continue;
}
#endif /* MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH */
memset(iv, 0, 16);
memset(prv, 0, 16);
memset(buf, 0, 16);
@ -1954,13 +1949,18 @@ int mbedtls_aes_self_test(int verbose)
if (verbose != 0) {
mbedtls_printf("\n");
}
}
#endif /* MBEDTLS_CIPHER_MODE_CBC */
#if defined(MBEDTLS_CIPHER_MODE_CFB)
/*
* CFB128 mode
*/
for (i = 0; i < 6; i++) {
{
static const int num_tests =
sizeof(aes_test_cfb128_key) / sizeof(*aes_test_cfb128_key);
for (i = 0; i < num_tests << 1; i++) {
u = i >> 1;
keybits = 128 + u * 64;
mode = i & 1;
@ -1970,13 +1970,6 @@ int mbedtls_aes_self_test(int verbose)
(mode == MBEDTLS_AES_DECRYPT) ? "dec" : "enc");
}
#if defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH)
if (keybits > 128) {
mbedtls_printf("skipped\n");
continue;
}
#endif /* MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH */
memcpy(iv, aes_test_cfb128_iv, 16);
memcpy(key, aes_test_cfb128_key[u], keybits / 8);
@ -2020,13 +2013,18 @@ int mbedtls_aes_self_test(int verbose)
if (verbose != 0) {
mbedtls_printf("\n");
}
}
#endif /* MBEDTLS_CIPHER_MODE_CFB */
#if defined(MBEDTLS_CIPHER_MODE_OFB)
/*
* OFB mode
*/
for (i = 0; i < 6; i++) {
{
static const int num_tests =
sizeof(aes_test_ofb_key) / sizeof(*aes_test_ofb_key);
for (i = 0; i < num_tests << 1; i++) {
u = i >> 1;
keybits = 128 + u * 64;
mode = i & 1;
@ -2036,13 +2034,6 @@ int mbedtls_aes_self_test(int verbose)
(mode == MBEDTLS_AES_DECRYPT) ? "dec" : "enc");
}
#if defined(MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH)
if (keybits > 128) {
mbedtls_printf("skipped\n");
continue;
}
#endif /* MBEDTLS_AES_ONLY_128_BIT_KEY_LENGTH */
memcpy(iv, aes_test_ofb_iv, 16);
memcpy(key, aes_test_ofb_key[u], keybits / 8);
@ -2086,13 +2077,18 @@ int mbedtls_aes_self_test(int verbose)
if (verbose != 0) {
mbedtls_printf("\n");
}
}
#endif /* MBEDTLS_CIPHER_MODE_OFB */
#if defined(MBEDTLS_CIPHER_MODE_CTR)
/*
* CTR mode
*/
for (i = 0; i < 6; i++) {
{
static const int num_tests =
sizeof(aes_test_ctr_key) / sizeof(*aes_test_ctr_key);
for (i = 0; i < num_tests << 1; i++) {
u = i >> 1;
mode = i & 1;
@ -2134,6 +2130,7 @@ int mbedtls_aes_self_test(int verbose)
mbedtls_printf("passed\n");
}
}
}
if (verbose != 0) {
mbedtls_printf("\n");
@ -2141,14 +2138,14 @@ int mbedtls_aes_self_test(int verbose)
#endif /* MBEDTLS_CIPHER_MODE_CTR */
#if defined(MBEDTLS_CIPHER_MODE_XTS)
/*
* XTS mode
*/
{
static const int num_tests =
sizeof(aes_test_xts_key) / sizeof(*aes_test_xts_key);
mbedtls_aes_xts_context ctx_xts;
/*
* XTS mode
*/
mbedtls_aes_xts_init(&ctx_xts);
for (i = 0; i < num_tests << 1; i++) {