From 0d9ae6a986f0ed87962b3994968c5188a0fc479f Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Fri, 7 Nov 2025 22:35:28 +0100 Subject: [PATCH] Update test drivers for TF-PSA-Crypto test driver Update test drivers for TF-PSA-Crypto test driver based on a copy of `drivers/builtin`. We mainly keep using what is already in place for libtestdriver1 in Mbed TLS by still defining MBEDTLS_TEST_LIBTESTDRIVER1. As in TF-PSA-Crypto, the test driver is a derivative of a clone of the built-in driver, not of the whole library, the paths to the driver internal headers are different. The paths are relative to `drivers/libtestdriver1/include`. Otherwise, `psa_key_attributes_t` is prefixed with `libtestdriver1_` in Mbed TLS test driver but not in TF-PSA-Crypto one. Thus in TF-PSA-Crypto case define `libtestdriver1_psa_key_attributes_t` as `psa_key_attributes_t`. Signed-off-by: Ronald Cron --- tests/src/drivers/hash.c | 6 ++++-- tests/src/drivers/test_driver_aead.c | 7 +++++-- .../drivers/test_driver_asymmetric_encryption.c | 7 +++++-- tests/src/drivers/test_driver_cipher.c | 7 +++++-- tests/src/drivers/test_driver_key_agreement.c | 8 ++++++-- tests/src/drivers/test_driver_key_management.c | 17 +++++++++++------ tests/src/drivers/test_driver_mac.c | 7 +++++-- tests/src/drivers/test_driver_pake.c | 8 ++++++-- tests/src/drivers/test_driver_signature.c | 14 +++++++++----- 9 files changed, 56 insertions(+), 25 deletions(-) diff --git a/tests/src/drivers/hash.c b/tests/src/drivers/hash.c index 54aec9322..df19f1000 100644 --- a/tests/src/drivers/hash.c +++ b/tests/src/drivers/hash.c @@ -12,13 +12,15 @@ #include "test/drivers/hash.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +#include "../../libtestdriver1/src/psa_crypto_hash.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_hash.h" #else #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_hash.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ mbedtls_test_driver_hash_hooks_t mbedtls_test_driver_hash_hooks = MBEDTLS_TEST_DRIVER_HASH_INIT; diff --git a/tests/src/drivers/test_driver_aead.c b/tests/src/drivers/test_driver_aead.c index f653d89b9..8ee7e5219 100644 --- a/tests/src/drivers/test_driver_aead.c +++ b/tests/src/drivers/test_driver_aead.c @@ -15,13 +15,16 @@ #include "mbedtls/constant_time.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_key_attributes_t libtestdriver1_psa_key_attributes_t; +#include "../../libtestdriver1/src/psa_crypto_aead.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_aead.h" #else #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_aead.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ mbedtls_test_driver_aead_hooks_t mbedtls_test_driver_aead_hooks = MBEDTLS_TEST_DRIVER_AEAD_INIT; diff --git a/tests/src/drivers/test_driver_asymmetric_encryption.c b/tests/src/drivers/test_driver_asymmetric_encryption.c index 57adb5ce9..1faeecabf 100644 --- a/tests/src/drivers/test_driver_asymmetric_encryption.c +++ b/tests/src/drivers/test_driver_asymmetric_encryption.c @@ -21,13 +21,16 @@ #include "test/drivers/asymmetric_encryption.h" #include "test/drivers/key_management.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_key_attributes_t libtestdriver1_psa_key_attributes_t; +#include "../../libtestdriver1/src/psa_crypto_rsa.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_rsa.h" #else #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_rsa.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ #define PSA_RSA_KEY_PAIR_MAX_SIZE \ PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(PSA_VENDOR_RSA_MAX_KEY_BITS) diff --git a/tests/src/drivers/test_driver_cipher.c b/tests/src/drivers/test_driver_cipher.c index 9b753cd89..3c9b37e00 100644 --- a/tests/src/drivers/test_driver_cipher.c +++ b/tests/src/drivers/test_driver_cipher.c @@ -23,13 +23,16 @@ #include "test/random.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_key_attributes_t libtestdriver1_psa_key_attributes_t; +#include "../../libtestdriver1/src/psa_crypto_cipher.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_cipher.h" #else #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_cipher.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ #include diff --git a/tests/src/drivers/test_driver_key_agreement.c b/tests/src/drivers/test_driver_key_agreement.c index 8a7a9ea52..8f0571d1f 100644 --- a/tests/src/drivers/test_driver_key_agreement.c +++ b/tests/src/drivers/test_driver_key_agreement.c @@ -19,7 +19,11 @@ #include -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_key_attributes_t libtestdriver1_psa_key_attributes_t; +#include "../../libtestdriver1/src/psa_crypto_ecp.h" +#include "../../libtestdriver1/src/psa_crypto_ffdh.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/include/psa/crypto.h" #include "libtestdriver1/library/psa_crypto_ecp.h" @@ -29,7 +33,7 @@ #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_ecp.h" #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_ffdh.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ mbedtls_test_driver_key_agreement_hooks_t mbedtls_test_driver_key_agreement_hooks = MBEDTLS_TEST_DRIVER_KEY_AGREEMENT_INIT; diff --git a/tests/src/drivers/test_driver_key_management.c b/tests/src/drivers/test_driver_key_management.c index 90cdb2153..6e724b8b0 100644 --- a/tests/src/drivers/test_driver_key_management.c +++ b/tests/src/drivers/test_driver_key_management.c @@ -21,14 +21,17 @@ #include "mbedtls/ecp.h" #endif -#include "mbedtls/error.h" - #include "test/drivers/key_management.h" #include "test/drivers/test_driver.h" #include "test/random.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_key_attributes_t libtestdriver1_psa_key_attributes_t; +#include "../../libtestdriver1/src/psa_crypto_ecp.h" +#include "../../libtestdriver1/src/psa_crypto_rsa.h" +#include "../../libtestdriver1/src/psa_crypto_ffdh.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_ecp.h" #include "libtestdriver1/library/psa_crypto_rsa.h" @@ -38,7 +41,7 @@ #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_rsa.h" #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_ffdh.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ #include @@ -68,7 +71,8 @@ psa_status_t mbedtls_test_transparent_init(void) { psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED; -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if !defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) && \ + defined(MBEDTLS_TEST_LIBTESTDRIVER1) status = libtestdriver1_psa_crypto_init(); if (status != PSA_SUCCESS) { return status; @@ -81,7 +85,8 @@ psa_status_t mbedtls_test_transparent_init(void) void mbedtls_test_transparent_free(void) { -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if !defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) && \ + defined(MBEDTLS_TEST_LIBTESTDRIVER1) libtestdriver1_mbedtls_psa_crypto_free(); #endif diff --git a/tests/src/drivers/test_driver_mac.c b/tests/src/drivers/test_driver_mac.c index a123c2219..e45acdf58 100644 --- a/tests/src/drivers/test_driver_mac.c +++ b/tests/src/drivers/test_driver_mac.c @@ -12,13 +12,16 @@ #include "test/drivers/mac.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_key_attributes_t libtestdriver1_psa_key_attributes_t; +#include "../../libtestdriver1/src/psa_crypto_mac.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_mac.h" #else #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_mac.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ mbedtls_test_driver_mac_hooks_t mbedtls_test_driver_mac_hooks = MBEDTLS_TEST_DRIVER_MAC_INIT; diff --git a/tests/src/drivers/test_driver_pake.c b/tests/src/drivers/test_driver_pake.c index 07d697701..6e6794ece 100644 --- a/tests/src/drivers/test_driver_pake.c +++ b/tests/src/drivers/test_driver_pake.c @@ -13,13 +13,17 @@ #include "test/drivers/pake.h" #include "string.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_crypto_driver_pake_inputs_t libtestdriver1_psa_crypto_driver_pake_inputs_t; +typedef psa_crypto_driver_pake_step_t libtestdriver1_psa_crypto_driver_pake_step_t; +#include "../../libtestdriver1/src/psa_crypto_pake.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_pake.h" #else #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_pake.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ mbedtls_test_driver_pake_hooks_t mbedtls_test_driver_pake_hooks = MBEDTLS_TEST_DRIVER_PAKE_INIT; diff --git a/tests/src/drivers/test_driver_signature.c b/tests/src/drivers/test_driver_signature.c index 2915b5426..a89ee1507 100644 --- a/tests/src/drivers/test_driver_signature.c +++ b/tests/src/drivers/test_driver_signature.c @@ -24,7 +24,6 @@ #include "test/drivers/hash.h" #include "test/drivers/signature.h" -#include "test/drivers/hash.h" #if !defined(MBEDTLS_VERSION_MAJOR) || MBEDTLS_VERSION_MAJOR >= 4 #include "mbedtls/private/ecdsa.h" @@ -34,7 +33,12 @@ #include "test/random.h" -#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) +#if defined(TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1) +typedef psa_key_attributes_t libtestdriver1_psa_key_attributes_t; +#include "../../libtestdriver1/src/psa_crypto_ecp.h" +#include "../../libtestdriver1/src/psa_crypto_hash.h" +#include "../../libtestdriver1/src/psa_crypto_rsa.h" +#elif defined(MBEDTLS_TEST_LIBTESTDRIVER1) #if MBEDTLS_VERSION_MAJOR < 4 #include "libtestdriver1/library/psa_crypto_ecp.h" #include "libtestdriver1/library/psa_crypto_hash.h" @@ -44,7 +48,7 @@ #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_hash.h" #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_rsa.h" #endif -#endif +#endif /* TF_PSA_CRYPTO_TEST_LIBTESTDRIVER1 */ #include @@ -53,7 +57,7 @@ mbedtls_test_driver_signature_hooks_t mbedtls_test_driver_signature_hooks_t mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT; -psa_status_t sign_hash( +static psa_status_t sign_hash( const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, @@ -121,7 +125,7 @@ psa_status_t sign_hash( return PSA_ERROR_NOT_SUPPORTED; } -psa_status_t verify_hash( +static psa_status_t verify_hash( const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size,