From 58c94d39ae164726d418268aab13d27bf93b2170 Mon Sep 17 00:00:00 2001 From: Steven Cooreman Date: Tue, 2 Mar 2021 21:31:17 +0100 Subject: [PATCH] Make psa_get_mac_output_length testable and test it Signed-off-by: Steven Cooreman --- library/psa_crypto.c | 7 ++++--- library/psa_crypto_invasive.h | 7 +++++++ tests/suites/test_suite_psa_crypto_metadata.function | 7 +++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/library/psa_crypto.c b/library/psa_crypto.c index 9f014d0bf3..a112ff41ba 100644 --- a/library/psa_crypto.c +++ b/library/psa_crypto.c @@ -564,9 +564,10 @@ static inline size_t psa_get_key_slot_bits( const psa_key_slot_t *slot ) * \p algorithm tries to truncate the MAC to a size which would be * larger than the underlying algorithm's maximum output length. */ -static psa_status_t psa_get_mac_output_length( psa_algorithm_t algorithm, - psa_key_type_t key_type, - size_t *length ) +MBEDTLS_STATIC_TESTABLE psa_status_t psa_get_mac_output_length( + psa_algorithm_t algorithm, + psa_key_type_t key_type, + size_t *length ) { /* Get the default length for the algorithm and key combination. None of the * currently supported algorithms have a default output length dependent on diff --git a/library/psa_crypto_invasive.h b/library/psa_crypto_invasive.h index be127d9f8c..99156de6be 100644 --- a/library/psa_crypto_invasive.h +++ b/library/psa_crypto_invasive.h @@ -35,6 +35,7 @@ #endif #include "psa/crypto.h" +#include "common.h" #include "mbedtls/entropy.h" @@ -76,4 +77,10 @@ psa_status_t mbedtls_psa_crypto_configure_entropy_sources( void (* entropy_free )( mbedtls_entropy_context *ctx ) ); #endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */ +#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_PSA_CRYPTO_C) +psa_status_t psa_get_mac_output_length( psa_algorithm_t algorithm, + psa_key_type_t key_type, + size_t *length ); +#endif /* MBEDTLS_TEST_HOOKS && MBEDTLS_PSA_CRYPTO_C */ + #endif /* PSA_CRYPTO_INVASIVE_H */ diff --git a/tests/suites/test_suite_psa_crypto_metadata.function b/tests/suites/test_suite_psa_crypto_metadata.function index 3b3e38053d..5839611a4b 100644 --- a/tests/suites/test_suite_psa_crypto_metadata.function +++ b/tests/suites/test_suite_psa_crypto_metadata.function @@ -9,6 +9,7 @@ #endif #include "psa/crypto.h" +#include "psa_crypto_invasive.h" /* Flags for algorithm classification macros. There is a flag for every * algorithm classification macro PSA_ALG_IS_xxx except for the @@ -158,6 +159,12 @@ void mac_algorithm_core( psa_algorithm_t alg, int classification_flags, /* Length */ TEST_EQUAL( length, PSA_MAC_LENGTH( key_type, key_bits, alg ) ); +#if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_PSA_CRYPTO_C) + size_t output_length = 0; + PSA_ASSERT( psa_get_mac_output_length( alg, key_type, &output_length ) ); + TEST_EQUAL( length, output_length ); +#endif + exit: ; }