From bd5cc3a0beb78d58c64f4dbccb9ccdd7ffb42295 Mon Sep 17 00:00:00 2001 From: Joe Subbiani Date: Fri, 9 Jul 2021 12:17:49 +0100 Subject: [PATCH] Add test in block_cipher_key_type test case The test case uses a bit shift to check that the block size is a power of 2 Fixes #4228 Signed-off-by: Joe Subbiani --- .../test_suite_psa_crypto_metadata.function | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/suites/test_suite_psa_crypto_metadata.function b/tests/suites/test_suite_psa_crypto_metadata.function index d91f90fc6..ef0b26565 100644 --- a/tests/suites/test_suite_psa_crypto_metadata.function +++ b/tests/suites/test_suite_psa_crypto_metadata.function @@ -603,6 +603,28 @@ void block_cipher_key_type( int type_arg, int block_size_arg ) TEST_EQUAL( type & PSA_KEY_TYPE_CATEGORY_MASK, PSA_KEY_TYPE_CATEGORY_SYMMETRIC ); TEST_EQUAL( PSA_BLOCK_CIPHER_BLOCK_LENGTH( type ), block_size ); + + /* PSA_ROUND_UP_TO_MULTIPLE(block_size, length) in crypto_sizes.h + * Requires block sizes to be a power of 2. + * The following creates a bit and shifts along until it finds a + * match or a mismatch. + */ + int check = 0; + + for (size_t index = 1; index > 0; index = index << 1) + { + if (index == block_size) + { + check = 0; + break; + } + if (index > block_size) + { + check = 1; + break; + } + } + TEST_EQUAL( check, 0); } /* END_CASE */