Make psa_get_mac_output_length testable and test it
Signed-off-by: Steven Cooreman <steven.cooreman@silabs.com>
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 9f014d0..a112ff4 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -564,9 +564,10 @@
* \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 be127d9..99156de 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 @@
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 3b3e380..5839611 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 @@
/* 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: ;
}