From a96e2410e7e5604a85bce6f548c0e66b55c88d67 Mon Sep 17 00:00:00 2001 From: Steven Cooreman Date: Tue, 23 Feb 2021 10:21:58 +0100 Subject: [PATCH] Test _AT_LEAST_THIS_LENGTH macros in the PSA Crypto metadata test suite Signed-off-by: Steven Cooreman --- .../test_suite_psa_crypto_metadata.function | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/suites/test_suite_psa_crypto_metadata.function b/tests/suites/test_suite_psa_crypto_metadata.function index 4b55da1edd..9379c5ed29 100644 --- a/tests/suites/test_suite_psa_crypto_metadata.function +++ b/tests/suites/test_suite_psa_crypto_metadata.function @@ -264,6 +264,24 @@ void mac_algorithm( int alg_arg, int classification_flags, TEST_EQUAL( PSA_ALG_TRUNCATED_MAC( truncated_alg, length ), PSA_ALG_TRUNCATED_MAC( alg, length ) ); } + + /* At-leat-this-length versions */ + for( n = 1; n <= length; n++ ) + { + psa_algorithm_t policy_alg = PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( alg, n ); + mac_algorithm_core( policy_alg, classification_flags | ALG_IS_WILDCARD, + key_type, key_bits, n ); + TEST_EQUAL( PSA_ALG_FULL_LENGTH_MAC( policy_alg ), alg ); + /* Check that calling PSA_ALG_TRUNCATED_MAC twice gives the length + * of the outer truncation (even if the outer length is smaller than + * the inner length). */ + TEST_EQUAL( PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( policy_alg, 1 ), + PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( alg, 1 ) ); + TEST_EQUAL( PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( policy_alg, length - 1 ), + PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( alg, length - 1) ); + TEST_EQUAL( PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( policy_alg, length ), + PSA_ALG_AT_LEAST_THIS_LENGTH_MAC( alg, length ) ); + } } /* END_CASE */ @@ -339,6 +357,24 @@ void aead_algorithm( int alg_arg, int classification_flags, TEST_EQUAL( PSA_ALG_AEAD_WITH_SHORTENED_TAG( truncated_alg, tag_length ), PSA_ALG_AEAD_WITH_SHORTENED_TAG( alg, tag_length ) ); } + + /* At-leat-this-length versions */ + for( n = 1; n <= tag_length; n++ ) + { + psa_algorithm_t policy_alg = PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( alg, n ); + aead_algorithm_core( policy_alg, classification_flags | ALG_IS_WILDCARD, n ); + TEST_EQUAL( PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG( policy_alg ), + alg ); + /* Check that calling PSA_ALG_AEAD_WITH_DEFAULT_LENGTH_TAG twice gives + * the length of the outer truncation (even if the outer length is + * smaller than the inner length). */ + TEST_EQUAL( PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( policy_alg, 1 ), + PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( alg, 1 ) ); + TEST_EQUAL( PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( policy_alg, tag_length - 1 ), + PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( alg, tag_length - 1) ); + TEST_EQUAL( PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( policy_alg, tag_length ), + PSA_ALG_AEAD_WITH_AT_LEAST_THIS_LENGTH_TAG( alg, tag_length ) ); + } } /* END_CASE */