aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonald Cron <ronald.cron@arm.com>2024-07-10 14:02:42 +0000
committerGitHub <noreply@github.com>2024-07-10 14:02:42 +0000
commit1004c9cacb56c20da57cfbc8ab196e5d8bbeb4a7 (patch)
treeebeb179cc382a4c395958babd1b5c3c32b37610e
parentfe3ad99af36eedbfe45b26c4332bff4ce5fdf1b0 (diff)
parent1992c9122fca78dc3c6e282c52d1b1f2019eb9af (diff)
downloadmbedtls-development.zip
mbedtls-development.tar.gz
mbedtls-development.tar.bz2
Merge pull request #9340 from ronald-cron-arm/move-mbedtls-crypto-modulesHEADdevelopmentcoverity_scan
Move mbedtls crypto modules
-rw-r--r--3rdparty/Makefile.inc3
-rw-r--r--CMakeLists.txt12
-rw-r--r--Makefile19
-rw-r--r--README.md6
-rw-r--r--docs/psa-driver-example-and-guide.md2
m---------framework0
-rw-r--r--library/.gitignore2
-rw-r--r--library/CMakeLists.txt198
-rw-r--r--library/Makefile208
-rw-r--r--programs/Makefile2
-rw-r--r--programs/test/CMakeLists.txt7
-rwxr-xr-xscripts/code_style.py5
-rw-r--r--scripts/common.make4
-rw-r--r--scripts/data_files/driver_jsons/p256_transparent_driver.json2
-rwxr-xr-xscripts/generate_driver_wrappers.py4
-rwxr-xr-xscripts/generate_errors.pl2
-rwxr-xr-xscripts/generate_features.pl2
-rwxr-xr-xscripts/generate_visualc_files.pl38
-rw-r--r--tests/CMakeLists.txt4
-rw-r--r--tests/Makefile21
-rwxr-xr-xtests/scripts/all.sh296
-rwxr-xr-xtests/scripts/check-generated-files.sh18
-rwxr-xr-xtests/scripts/check_files.py5
-rwxr-xr-xtests/scripts/check_names.py38
-rwxr-xr-xtests/scripts/list_internal_identifiers.py4
-rwxr-xr-xtests/scripts/test_psa_compliance.py9
-rw-r--r--tests/src/drivers/hash.c2
-rw-r--r--tests/src/drivers/test_driver_aead.c2
-rw-r--r--tests/src/drivers/test_driver_asymmetric_encryption.c2
-rw-r--r--tests/src/drivers/test_driver_cipher.c2
-rw-r--r--tests/src/drivers/test_driver_key_agreement.c4
-rw-r--r--tests/src/drivers/test_driver_key_management.c6
-rw-r--r--tests/src/drivers/test_driver_mac.c2
-rw-r--r--tests/src/drivers/test_driver_pake.c2
-rw-r--r--tests/src/drivers/test_driver_signature.c6
-rw-r--r--tf-psa-crypto/CMakeLists.txt2
-rw-r--r--tf-psa-crypto/core/.gitignore4
-rw-r--r--tf-psa-crypto/core/CMakeLists.txt0
-rw-r--r--tf-psa-crypto/core/alignment.h (renamed from library/alignment.h)0
-rw-r--r--tf-psa-crypto/core/common.h435
-rw-r--r--tf-psa-crypto/core/psa_crypto.c (renamed from library/psa_crypto.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_aead.c (renamed from library/psa_crypto_aead.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_aead.h (renamed from library/psa_crypto_aead.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_cipher.c (renamed from library/psa_crypto_cipher.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_cipher.h (renamed from library/psa_crypto_cipher.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_client.c (renamed from library/psa_crypto_client.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_core.h (renamed from library/psa_crypto_core.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_core_common.h (renamed from library/psa_crypto_core_common.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_driver_wrappers_no_static.h (renamed from library/psa_crypto_driver_wrappers_no_static.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_ecp.c (renamed from library/psa_crypto_ecp.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_ecp.h (renamed from library/psa_crypto_ecp.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_ffdh.c (renamed from library/psa_crypto_ffdh.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_ffdh.h (renamed from library/psa_crypto_ffdh.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_hash.c (renamed from library/psa_crypto_hash.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_hash.h (renamed from library/psa_crypto_hash.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_invasive.h (renamed from library/psa_crypto_invasive.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_its.h (renamed from library/psa_crypto_its.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_mac.c (renamed from library/psa_crypto_mac.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_mac.h (renamed from library/psa_crypto_mac.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_pake.c (renamed from library/psa_crypto_pake.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_pake.h (renamed from library/psa_crypto_pake.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_random_impl.h (renamed from library/psa_crypto_random_impl.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_rsa.c (renamed from library/psa_crypto_rsa.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_rsa.h (renamed from library/psa_crypto_rsa.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_se.c (renamed from library/psa_crypto_se.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_se.h (renamed from library/psa_crypto_se.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_slot_management.c (renamed from library/psa_crypto_slot_management.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_slot_management.h (renamed from library/psa_crypto_slot_management.h)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_storage.c (renamed from library/psa_crypto_storage.c)0
-rw-r--r--tf-psa-crypto/core/psa_crypto_storage.h (renamed from library/psa_crypto_storage.h)0
-rw-r--r--tf-psa-crypto/core/psa_its_file.c (renamed from library/psa_its_file.c)0
-rw-r--r--tf-psa-crypto/core/psa_util.c (renamed from library/psa_util.c)0
-rw-r--r--tf-psa-crypto/core/psa_util_internal.h (renamed from library/psa_util_internal.h)0
-rw-r--r--tf-psa-crypto/drivers/CMakeLists.txt (renamed from 3rdparty/CMakeLists.txt)1
-rw-r--r--tf-psa-crypto/drivers/builtin/CMakeLists.txt1
-rw-r--r--tf-psa-crypto/drivers/builtin/src/.gitignore4
-rw-r--r--tf-psa-crypto/drivers/builtin/src/CMakeLists.txt0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/aes.c (renamed from library/aes.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/aesce.c (renamed from library/aesce.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/aesce.h (renamed from library/aesce.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/aesni.c (renamed from library/aesni.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/aesni.h (renamed from library/aesni.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/aria.c (renamed from library/aria.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/asn1parse.c (renamed from library/asn1parse.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/asn1write.c (renamed from library/asn1write.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/base64.c (renamed from library/base64.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/base64_internal.h (renamed from library/base64_internal.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum.c (renamed from library/bignum.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum_core.c (renamed from library/bignum_core.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum_core.h (renamed from library/bignum_core.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum_mod.c (renamed from library/bignum_mod.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum_mod.h (renamed from library/bignum_mod.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum_mod_raw.c (renamed from library/bignum_mod_raw.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum_mod_raw.h (renamed from library/bignum_mod_raw.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bignum_mod_raw_invasive.h (renamed from library/bignum_mod_raw_invasive.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/block_cipher.c (renamed from library/block_cipher.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/block_cipher_internal.h (renamed from library/block_cipher_internal.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/bn_mul.h (renamed from library/bn_mul.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/camellia.c (renamed from library/camellia.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ccm.c (renamed from library/ccm.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/chacha20.c (renamed from library/chacha20.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/chachapoly.c (renamed from library/chachapoly.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/check_crypto_config.h (renamed from library/check_crypto_config.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/cipher.c (renamed from library/cipher.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/cipher_wrap.c (renamed from library/cipher_wrap.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/cipher_wrap.h (renamed from library/cipher_wrap.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/cmac.c (renamed from library/cmac.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/constant_time.c (renamed from library/constant_time.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/constant_time_impl.h (renamed from library/constant_time_impl.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/constant_time_internal.h (renamed from library/constant_time_internal.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ctr.h (renamed from library/ctr.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ctr_drbg.c (renamed from library/ctr_drbg.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/des.c (renamed from library/des.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/dhm.c (renamed from library/dhm.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ecdh.c (renamed from library/ecdh.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ecdsa.c (renamed from library/ecdsa.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ecjpake.c (renamed from library/ecjpake.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ecp.c (renamed from library/ecp.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ecp_curves.c (renamed from library/ecp_curves.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ecp_curves_new.c (renamed from library/ecp_curves_new.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ecp_invasive.h (renamed from library/ecp_invasive.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/entropy.c (renamed from library/entropy.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/entropy_poll.c (renamed from library/entropy_poll.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/entropy_poll.h (renamed from library/entropy_poll.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/gcm.c (renamed from library/gcm.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/hkdf.c (renamed from library/hkdf.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/hmac_drbg.c (renamed from library/hmac_drbg.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/lmots.c (renamed from library/lmots.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/lmots.h (renamed from library/lmots.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/lms.c (renamed from library/lms.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/md.c (renamed from library/md.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/md5.c (renamed from library/md5.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/md_psa.h (renamed from library/md_psa.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/md_wrap.h (renamed from library/md_wrap.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/memory_buffer_alloc.c (renamed from library/memory_buffer_alloc.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/nist_kw.c (renamed from library/nist_kw.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/oid.c (renamed from library/oid.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pem.c (renamed from library/pem.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pk.c (renamed from library/pk.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pk_ecc.c (renamed from library/pk_ecc.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pk_internal.h (renamed from library/pk_internal.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pk_wrap.c (renamed from library/pk_wrap.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pk_wrap.h (renamed from library/pk_wrap.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pkcs12.c (renamed from library/pkcs12.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pkcs5.c (renamed from library/pkcs5.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pkparse.c (renamed from library/pkparse.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pkwrite.c (renamed from library/pkwrite.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/pkwrite.h (renamed from library/pkwrite.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/platform.c (renamed from library/platform.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/platform_util.c (renamed from library/platform_util.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/poly1305.c (renamed from library/poly1305.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/ripemd160.c (renamed from library/ripemd160.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/rsa.c (renamed from library/rsa.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/rsa_alt_helpers.c (renamed from library/rsa_alt_helpers.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/rsa_alt_helpers.h (renamed from library/rsa_alt_helpers.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/rsa_internal.h (renamed from library/rsa_internal.h)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/sha1.c (renamed from library/sha1.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/sha256.c (renamed from library/sha256.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/sha3.c (renamed from library/sha3.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/sha512.c (renamed from library/sha512.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/threading.c (renamed from library/threading.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/timing.c (renamed from library/timing.c)0
-rw-r--r--tf-psa-crypto/drivers/builtin/src/version.c (renamed from library/version.c)0
-rw-r--r--tf-psa-crypto/drivers/everest/.gitignore (renamed from 3rdparty/everest/.gitignore)0
-rw-r--r--tf-psa-crypto/drivers/everest/CMakeLists.txt (renamed from 3rdparty/everest/CMakeLists.txt)3
-rw-r--r--tf-psa-crypto/drivers/everest/Makefile.inc (renamed from 3rdparty/everest/Makefile.inc)0
-rw-r--r--tf-psa-crypto/drivers/everest/README.md (renamed from 3rdparty/everest/README.md)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/Hacl_Curve25519.h (renamed from 3rdparty/everest/include/everest/Hacl_Curve25519.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/everest.h (renamed from 3rdparty/everest/include/everest/everest.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlib.h (renamed from 3rdparty/everest/include/everest/kremlib.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlib/FStar_UInt128.h (renamed from 3rdparty/everest/include/everest/kremlib/FStar_UInt128.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h (renamed from 3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/c_endianness.h (renamed from 3rdparty/everest/include/everest/kremlin/c_endianness.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/builtin.h (renamed from 3rdparty/everest/include/everest/kremlin/internal/builtin.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/callconv.h (renamed from 3rdparty/everest/include/everest/kremlin/internal/callconv.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/compat.h (renamed from 3rdparty/everest/include/everest/kremlin/internal/compat.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/debug.h (renamed from 3rdparty/everest/include/everest/kremlin/internal/debug.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/target.h (renamed from 3rdparty/everest/include/everest/kremlin/internal/target.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/types.h (renamed from 3rdparty/everest/include/everest/kremlin/internal/types.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/wasmsupport.h (renamed from 3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/vs2013/Hacl_Curve25519.h (renamed from 3rdparty/everest/include/everest/vs2013/Hacl_Curve25519.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/vs2013/inttypes.h (renamed from 3rdparty/everest/include/everest/vs2013/inttypes.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/vs2013/stdbool.h (renamed from 3rdparty/everest/include/everest/vs2013/stdbool.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/include/everest/x25519.h (renamed from 3rdparty/everest/include/everest/x25519.h)0
-rw-r--r--tf-psa-crypto/drivers/everest/library/Hacl_Curve25519.c (renamed from 3rdparty/everest/library/Hacl_Curve25519.c)0
-rw-r--r--tf-psa-crypto/drivers/everest/library/Hacl_Curve25519_joined.c (renamed from 3rdparty/everest/library/Hacl_Curve25519_joined.c)0
-rw-r--r--tf-psa-crypto/drivers/everest/library/everest.c (renamed from 3rdparty/everest/library/everest.c)0
-rw-r--r--tf-psa-crypto/drivers/everest/library/kremlib/FStar_UInt128_extracted.c (renamed from 3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c)0
-rw-r--r--tf-psa-crypto/drivers/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c (renamed from 3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c)0
-rw-r--r--tf-psa-crypto/drivers/everest/library/legacy/Hacl_Curve25519.c (renamed from 3rdparty/everest/library/legacy/Hacl_Curve25519.c)0
-rw-r--r--tf-psa-crypto/drivers/everest/library/x25519.c (renamed from 3rdparty/everest/library/x25519.c)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/.gitignore (renamed from 3rdparty/p256-m/.gitignore)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/CMakeLists.txt (renamed from 3rdparty/p256-m/CMakeLists.txt)3
-rw-r--r--tf-psa-crypto/drivers/p256-m/Makefile.inc (renamed from 3rdparty/p256-m/Makefile.inc)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/README.md (renamed from 3rdparty/p256-m/README.md)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/p256-m/README.md (renamed from 3rdparty/p256-m/p256-m/README.md)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/p256-m/p256-m.c (renamed from 3rdparty/p256-m/p256-m/p256-m.c)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/p256-m/p256-m.h (renamed from 3rdparty/p256-m/p256-m/p256-m.h)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/p256-m_driver_entrypoints.c (renamed from 3rdparty/p256-m/p256-m_driver_entrypoints.c)0
-rw-r--r--tf-psa-crypto/drivers/p256-m/p256-m_driver_entrypoints.h (renamed from 3rdparty/p256-m/p256-m_driver_entrypoints.h)0
200 files changed, 972 insertions, 420 deletions
diff --git a/3rdparty/Makefile.inc b/3rdparty/Makefile.inc
deleted file mode 100644
index 70f316b..0000000
--- a/3rdparty/Makefile.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-THIRDPARTY_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
-include $(THIRDPARTY_DIR)/everest/Makefile.inc
-include $(THIRDPARTY_DIR)/p256-m/Makefile.inc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 28d4b83..e1bfbb5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -294,12 +294,10 @@ add_subdirectory(framework)
add_subdirectory(include)
-add_subdirectory(3rdparty)
+add_subdirectory(tf-psa-crypto)
add_subdirectory(library)
-add_subdirectory(tf-psa-crypto)
-
add_subdirectory(pkgconfig)
#
@@ -357,7 +355,9 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/include
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library)
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/core
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/src)
# Request C11, needed for memory poisoning tests
set_target_properties(mbedtls_test PROPERTIES C_STANDARD 11)
@@ -370,7 +370,9 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/include
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/library
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/everest/include)
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/core
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/src
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/everest/include)
# Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE
if(MBEDTLS_CONFIG_FILE)
diff --git a/Makefile b/Makefile
index 74e328a..b638804 100644
--- a/Makefile
+++ b/Makefile
@@ -200,12 +200,18 @@ endif
## Editor navigation files
C_SOURCE_FILES = $(wildcard \
- 3rdparty/*/include/*/*.h 3rdparty/*/include/*/*/*.h 3rdparty/*/include/*/*/*/*.h \
- 3rdparty/*/*.c 3rdparty/*/*/*.c 3rdparty/*/*/*/*.c 3rdparty/*/*/*/*/*.c \
include/*/*.h \
library/*.[hc] \
+ tf-psa-crypto/core/*.[hc] \
tf-psa-crypto/include/*/*.h \
- tf-psa-crypto/drivers/builtin/include/*/*.h \
+ tf-psa-crypto/drivers/*/include/*/*.h \
+ tf-psa-crypto/drivers/*/include/*/*/*.h \
+ tf-psa-crypto/drivers/*/include/*/*/*/*.h \
+ tf-psa-crypto/drivers/builtin/src/*.[hc] \
+ tf-psa-crypto/drivers/*/*.c \
+ tf-psa-crypto/drivers/*/*/*.c \
+ tf-psa-crypto/drivers/*/*/*/*.c \
+ tf-psa-crypto/drivers/*/*/*/*/*.c \
programs/*/*.[hc] \
tests/include/*/*.h tests/include/*/*/*.h \
tests/src/*.c tests/src/*/*.c \
@@ -222,7 +228,8 @@ GPATH GRTAGS GSYMS GTAGS: $(C_SOURCE_FILES)
ls $(C_SOURCE_FILES) | gtags -f - --gtagsconf .globalrc
cscope: cscope.in.out cscope.po.out cscope.out
cscope.in.out cscope.po.out cscope.out: $(C_SOURCE_FILES)
- cscope -bq -u -Iinclude -Ilibrary -Itf-psa-crypto/include \
- -Itf-psa-crypto/drivers/builtin/include \
- $(patsubst %,-I%,$(wildcard 3rdparty/*/include)) -Itests/include $(C_SOURCE_FILES)
+ cscope -bq -u -Iinclude -Ilibrary -Itf-psa-crypto/core \
+ -Itf-psa-crypto/include \
+ -Itf-psa-crypto/drivers/builtin/src \
+ $(patsubst %,-I%,$(wildcard tf-psa-crypto/drivers/*/include)) -Itests/include $(C_SOURCE_FILES)
.PHONY: cscope global
diff --git a/README.md b/README.md
index b70c67e..966b276 100644
--- a/README.md
+++ b/README.md
@@ -315,10 +315,10 @@ Unless specifically indicated otherwise in a file, Mbed TLS files are provided u
### Third-party code included in Mbed TLS
-This project contains code from other projects. This code is located within the `3rdparty/` directory. The original license text is included within project subdirectories, where it differs from the normal Mbed TLS license, and/or in source files. The projects are listed below:
+This project contains code from other projects. This code is located within the `tf-psa-crypto/drivers/` directory. The original license text is included within project subdirectories, where it differs from the normal Mbed TLS license, and/or in source files. The projects are listed below:
-* `3rdparty/everest/`: Files stem from [Project Everest](https://project-everest.github.io/) and are distributed under the Apache 2.0 license.
-* `3rdparty/p256-m/p256-m/`: Files have been taken from the [p256-m](https://github.com/mpg/p256-m) repository. The code in the original repository is distributed under the Apache 2.0 license. It is distributed in Mbed TLS under a dual Apache-2.0 OR GPL-2.0-or-later license with permission from the author.
+* `drivers/everest/`: Files stem from [Project Everest](https://project-everest.github.io/) and are distributed under the Apache 2.0 license.
+* `drivers/p256-m/p256-m/`: Files have been taken from the [p256-m](https://github.com/mpg/p256-m) repository. The code in the original repository is distributed under the Apache 2.0 license. It is distributed in Mbed TLS under a dual Apache-2.0 OR GPL-2.0-or-later license with permission from the author.
Contributing
------------
diff --git a/docs/psa-driver-example-and-guide.md b/docs/psa-driver-example-and-guide.md
index aa825ad..a5e9b16 100644
--- a/docs/psa-driver-example-and-guide.md
+++ b/docs/psa-driver-example-and-guide.md
@@ -138,7 +138,7 @@ This guide assumes you are building Mbed TLS from source alongside your project.
### Example: Manually integrating a software accelerator alongside Mbed TLS
-[p256-m](https://github.com/mpg/p256-m) is a minimalistic implementation of ECDH and ECDSA on the NIST P-256 curve, specifically optimized for use in constrained 32-bit environments. It started out as an independent project and has been integrated in Mbed TLS as a PSA transparent driver. The source code of p256-m and the driver entry points is located in the Mbed TLS source tree under `3rdparty/p256-m`. In this section, we will look at how this integration was done.
+[p256-m](https://github.com/mpg/p256-m) is a minimalistic implementation of ECDH and ECDSA on the NIST P-256 curve, specifically optimized for use in constrained 32-bit environments. It started out as an independent project and has been integrated in Mbed TLS as a PSA transparent driver. The source code of p256-m and the driver entry points is located in the Mbed TLS source tree under `drivers/p256-m`. In this section, we will look at how this integration was done.
The Mbed TLS build system includes the instructions needed to build p256-m. To build with and use p256-m, set the macro `MBEDTLS_PSA_P256M_DRIVER_ENABLED` using `config.py`, then build as usual using make/cmake. From the root of the `mbedtls/` directory, run:
diff --git a/framework b/framework
-Subproject 8853c8471200e62448413d1f40d6801a19796a8
+Subproject 9eeacb7125d6630a11e29d8a7aab5873b3638b6
diff --git a/library/.gitignore b/library/.gitignore
index c6a39f5..9794129 100644
--- a/library/.gitignore
+++ b/library/.gitignore
@@ -6,6 +6,4 @@ libmbed*
/error.c
/version_features.c
/ssl_debug_helpers_generated.c
-/psa_crypto_driver_wrappers.h
-/psa_crypto_driver_wrappers_no_static.c
###END_GENERATED_FILES###
diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
index e2562df..da109dc 100644
--- a/library/CMakeLists.txt
+++ b/library/CMakeLists.txt
@@ -10,87 +10,90 @@ if(NOT DEFINED MBEDTLS_DIR)
set(MBEDTLS_DIR ${CMAKE_SOURCE_DIR})
endif()
+set(TF_PSA_CRYPTO_CORE_DIR ../tf-psa-crypto/core)
+set(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR ../tf-psa-crypto/drivers/builtin/src)
+
set(src_crypto
- aes.c
- aesni.c
- aesce.c
- aria.c
- asn1parse.c
- asn1write.c
- base64.c
- bignum.c
- bignum_core.c
- bignum_mod.c
- bignum_mod_raw.c
- block_cipher.c
- camellia.c
- ccm.c
- chacha20.c
- chachapoly.c
- cipher.c
- cipher_wrap.c
- constant_time.c
- cmac.c
- ctr_drbg.c
- des.c
- dhm.c
- ecdh.c
- ecdsa.c
- ecjpake.c
- ecp.c
- ecp_curves.c
- ecp_curves_new.c
- entropy.c
- entropy_poll.c
- error.c
- gcm.c
- hkdf.c
- hmac_drbg.c
- lmots.c
- lms.c
- md.c
- md5.c
- memory_buffer_alloc.c
- nist_kw.c
- oid.c
- pem.c
- pk.c
- pk_ecc.c
- pk_wrap.c
- pkcs12.c
- pkcs5.c
- pkparse.c
- pkwrite.c
- platform.c
- platform_util.c
- poly1305.c
- psa_crypto.c
- psa_crypto_aead.c
- psa_crypto_cipher.c
- psa_crypto_client.c
- psa_crypto_driver_wrappers_no_static.c
- psa_crypto_ecp.c
- psa_crypto_ffdh.c
- psa_crypto_hash.c
- psa_crypto_mac.c
- psa_crypto_pake.c
- psa_crypto_rsa.c
- psa_crypto_se.c
- psa_crypto_slot_management.c
- psa_crypto_storage.c
- psa_its_file.c
- psa_util.c
- ripemd160.c
- rsa.c
- rsa_alt_helpers.c
- sha1.c
- sha256.c
- sha512.c
- sha3.c
- threading.c
- timing.c
- version.c
- version_features.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/aes.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/aesni.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/aesce.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/aria.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/asn1parse.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/asn1write.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/base64.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/bignum.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/bignum_core.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/bignum_mod.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/bignum_mod_raw.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/block_cipher.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/camellia.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ccm.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/chacha20.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/chachapoly.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/cipher.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/cipher_wrap.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/constant_time.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/cmac.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ctr_drbg.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/des.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/dhm.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ecdh.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ecdsa.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ecjpake.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ecp.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ecp_curves.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ecp_curves_new.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/entropy.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/entropy_poll.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/error.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/gcm.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/hkdf.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/hmac_drbg.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/lmots.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/lms.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/md.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/md5.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/memory_buffer_alloc.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/nist_kw.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/oid.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pem.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pk.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pk_ecc.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pk_wrap.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pkcs12.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pkcs5.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pkparse.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/pkwrite.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/platform.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/platform_util.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/poly1305.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_aead.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_cipher.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_client.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_driver_wrappers_no_static.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_ecp.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_ffdh.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_hash.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_mac.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_pake.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_rsa.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_se.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_slot_management.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_storage.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_its_file.c
+ ${TF_PSA_CRYPTO_CORE_DIR}/psa_util.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/ripemd160.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/rsa.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/rsa_alt_helpers.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/sha1.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/sha256.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/sha512.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/sha3.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/threading.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/timing.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/version.c
+ ${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/version_features.c
)
set(src_x509
@@ -133,14 +136,14 @@ if(GEN_FILES)
file(GLOB tls_error_headers ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/*.h)
add_custom_command(
OUTPUT
- ${CMAKE_CURRENT_BINARY_DIR}/error.c
+ ${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/error.c
COMMAND
${PERL_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_errors.pl
${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/drivers/builtin/include/mbedtls
${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files
- ${CMAKE_CURRENT_BINARY_DIR}/error.c
+ ${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/error.c
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_errors.pl
${crypto_error_headers}
@@ -150,13 +153,13 @@ if(GEN_FILES)
add_custom_command(
OUTPUT
- ${CMAKE_CURRENT_BINARY_DIR}/version_features.c
+ ${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/version_features.c
COMMAND
${PERL_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_features.pl
${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files
- ${CMAKE_CURRENT_BINARY_DIR}/version_features.c
+ ${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/version_features.c
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_features.pl
${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/mbedtls_config.h
@@ -178,24 +181,23 @@ if(GEN_FILES)
add_custom_command(
OUTPUT
- ${CMAKE_CURRENT_BINARY_DIR}/psa_crypto_driver_wrappers.h
- ${CMAKE_CURRENT_BINARY_DIR}/psa_crypto_driver_wrappers_no_static.c
+ ${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_driver_wrappers.h
+ ${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_driver_wrappers_no_static.c
COMMAND
${MBEDTLS_PYTHON_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_driver_wrappers.py
- ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}/${TF_PSA_CRYPTO_CORE_DIR}
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/generate_driver_wrappers.py
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja
)
-
-
else()
- link_to_source(error.c)
- link_to_source(version_features.c)
+ link_to_source(${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/error.c)
+ link_to_source(${TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_DIR}/version_features.c)
link_to_source(ssl_debug_helpers_generated.c)
- link_to_source(psa_crypto_driver_wrappers_no_static.c)
+ link_to_source(${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_driver_wrappers.h)
+ link_to_source(${TF_PSA_CRYPTO_CORE_DIR}/psa_crypto_driver_wrappers_no_static.c)
endif()
if(CMAKE_COMPILER_IS_GNUCC)
@@ -324,19 +326,19 @@ endif(USE_SHARED_MBEDTLS_LIBRARY)
foreach(target IN LISTS target_libraries)
add_library(MbedTLS::${target} ALIAS ${target}) # add_subdirectory support
- # Include public header files from /include and other directories
- # declared by /3rdparty/**/CMakeLists.txt. Include private header files
- # from /library and others declared by /3rdparty/**/CMakeLists.txt.
- # /library needs to be listed explicitly when building .c files outside
- # of /library (which currently means: under /3rdparty).
+ # Include public header files from /include, /tf-psa-crypto/include/ and
+ # tf-psa-crypto/drivers/builtin/include/. Include private header files
+ # from /library, tf-psa-crypto/core/ and tf-psa-crypto/drivers/builtin/src/.
target_include_directories(${target}
PUBLIC $<BUILD_INTERFACE:${MBEDTLS_DIR}/include/>
$<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/include/>
$<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/drivers/builtin/include/>
$<INSTALL_INTERFACE:include/>
PRIVATE ${MBEDTLS_DIR}/library/
+ ${MBEDTLS_DIR}/tf-psa-crypto/core
+ ${MBEDTLS_DIR}/tf-psa-crypto/drivers/builtin/src
# Needed to include psa_crypto_driver_wrappers.h
- ${CMAKE_CURRENT_BINARY_DIR})
+ ${CMAKE_CURRENT_BINARY_DIR}/../tf-psa-crypto/core)
# Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE
if(MBEDTLS_CONFIG_FILE)
target_compile_definitions(${target}
diff --git a/library/Makefile b/library/Makefile
index e4fb643..f7c4898 100644
--- a/library/Makefile
+++ b/library/Makefile
@@ -2,11 +2,15 @@ ifndef MBEDTLS_PATH
MBEDTLS_PATH := ..
endif
+TF_PSA_CRYPTO_CORE_PATH = $(MBEDTLS_PATH)/tf-psa-crypto/core
+TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH = $(MBEDTLS_PATH)/tf-psa-crypto/drivers/builtin/src
+
GENERATED_FILES := \
- error.c version_features.c \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/error.c \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/version_features.c \
ssl_debug_helpers_generated.c \
- psa_crypto_driver_wrappers.h \
- psa_crypto_driver_wrappers_no_static.c
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_driver_wrappers.h \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_driver_wrappers_no_static.c
ifneq ($(GENERATED_FILES),$(wildcard $(GENERATED_FILES)))
ifeq (,$(wildcard $(MBEDTLS_PATH)/framework/exported.make))
@@ -29,11 +33,12 @@ WARNING_CFLAGS ?= -Wall -Wextra -Wformat=2 -Wno-format-nonliteral
LDFLAGS ?=
# Include ../include, ../tf-psa-crypto/include and
-# ../tf-psa-crypto/drivers/builtin/include for public headers and . for
-# private headers. Note that . needs to be included explicitly for the sake of
-# library files that are not in the /library directory (which currently means
-# under /3rdparty).
-LOCAL_CFLAGS = $(WARNING_CFLAGS) -I. -I../include -I../tf-psa-crypto/include \
+# ../tf-psa-crypto/drivers/builtin/include for public headers and .,
+# ../tf-psa-crypto/core and ../tf-psa-crypto/drivers/builtin/src for
+# private headers.
+LOCAL_CFLAGS = $(WARNING_CFLAGS) -I. -I../tf-psa-crypto/core \
+ -I../tf-psa-crypto/drivers/builtin/src \
+ -I../include -I../tf-psa-crypto/include \
-I../tf-psa-crypto/drivers/builtin/include -D_FILE_OFFSET_BITS=64
LOCAL_LDFLAGS =
@@ -105,89 +110,91 @@ endif
endif
OBJS_CRYPTO= \
- aes.o \
- aesni.o \
- aesce.o \
- aria.o \
- asn1parse.o \
- asn1write.o \
- base64.o \
- bignum.o \
- bignum_core.o \
- bignum_mod.o \
- bignum_mod_raw.o \
- block_cipher.o \
- camellia.o \
- ccm.o \
- chacha20.o \
- chachapoly.o \
- cipher.o \
- cipher_wrap.o \
- cmac.o \
- constant_time.o \
- ctr_drbg.o \
- des.o \
- dhm.o \
- ecdh.o \
- ecdsa.o \
- ecjpake.o \
- ecp.o \
- ecp_curves.o \
- ecp_curves_new.o \
- entropy.o \
- entropy_poll.o \
- error.o \
- gcm.o \
- hkdf.o \
- hmac_drbg.o \
- lmots.o \
- lms.o \
- md.o \
- md5.o \
- memory_buffer_alloc.o \
- nist_kw.o \
- oid.o \
- pem.o \
- pk.o \
- pk_ecc.o \
- pk_wrap.o \
- pkcs12.o \
- pkcs5.o \
- pkparse.o \
- pkwrite.o \
- platform.o \
- platform_util.o \
- poly1305.o \
- psa_crypto.o \
- psa_crypto_aead.o \
- psa_crypto_cipher.o \
- psa_crypto_client.o \
- psa_crypto_driver_wrappers_no_static.o \
- psa_crypto_ecp.o \
- psa_crypto_ffdh.o \
- psa_crypto_hash.o \
- psa_crypto_mac.o \
- psa_crypto_pake.o \
- psa_crypto_rsa.o \
- psa_crypto_se.o \
- psa_crypto_slot_management.o \
- psa_crypto_storage.o \
- psa_its_file.o \
- psa_util.o \
- ripemd160.o \
- rsa.o \
- rsa_alt_helpers.o \
- sha1.o \
- sha256.o \
- sha512.o \
- sha3.o \
- threading.o \
- timing.o \
- version.o \
- version_features.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_aead.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_cipher.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_client.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_driver_wrappers_no_static.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_ecp.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_ffdh.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_hash.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_mac.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_pake.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_rsa.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_se.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_slot_management.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_storage.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_its_file.o \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_util.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/aes.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/aesni.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/aesce.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/aria.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/asn1parse.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/asn1write.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/base64.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/bignum.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/bignum_core.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/bignum_mod.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/bignum_mod_raw.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/block_cipher.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/camellia.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ccm.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/chacha20.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/chachapoly.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/cipher.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/cipher_wrap.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/cmac.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/constant_time.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ctr_drbg.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/des.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/dhm.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ecdh.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ecdsa.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ecjpake.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ecp.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ecp_curves.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ecp_curves_new.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/entropy.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/entropy_poll.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/error.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/gcm.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/hkdf.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/hmac_drbg.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/lmots.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/lms.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/md.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/md5.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/memory_buffer_alloc.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/nist_kw.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/oid.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pem.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pk.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pk_ecc.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pk_wrap.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pkcs12.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pkcs5.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pkparse.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/pkwrite.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/platform.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/platform_util.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/poly1305.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/ripemd160.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/rsa.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/rsa_alt_helpers.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/sha1.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/sha256.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/sha512.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/sha3.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/threading.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/timing.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/version.o \
+ $(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/version_features.o \
# This line is intentionally left blank
-include ../3rdparty/Makefile.inc
+THIRDPARTY_DIR := $(MBEDTLS_PATH)/tf-psa-crypto/drivers
+include $(MBEDTLS_PATH)/tf-psa-crypto/drivers/everest/Makefile.inc
+include $(MBEDTLS_PATH)/tf-psa-crypto/drivers/p256-m/Makefile.inc
LOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES)
OBJS_CRYPTO+=$(THIRDPARTY_CRYPTO_OBJECTS)
@@ -349,10 +356,10 @@ else
gen_file_dep = |
endif
-error.c: $(gen_file_dep) ../scripts/generate_errors.pl
-error.c: $(gen_file_dep) ../scripts/data_files/error.fmt
-error.c: $(gen_file_dep) $(filter-out %config%,$(wildcard ../include/mbedtls/*.h))
-error.c:
+$(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/error.c: $(gen_file_dep) ../scripts/generate_errors.pl
+$(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/error.c: $(gen_file_dep) ../scripts/data_files/error.fmt
+$(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/error.c: $(gen_file_dep) $(filter-out %config%,$(wildcard ../include/mbedtls/*.h))
+$(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/error.c:
echo " Gen $@"
$(PERL) ../scripts/generate_errors.pl
@@ -362,33 +369,34 @@ ssl_debug_helpers_generated.c:
echo " Gen $@"
$(PYTHON) ../scripts/generate_ssl_debug_helpers.py --mbedtls-root .. .
-version_features.c: $(gen_file_dep) ../scripts/generate_features.pl
-version_features.c: $(gen_file_dep) ../scripts/data_files/version_features.fmt
+$(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/version_features.c: $(gen_file_dep) ../scripts/generate_features.pl
+$(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/version_features.c: $(gen_file_dep) ../scripts/data_files/version_features.fmt
## The generated file only depends on the options that are present in mbedtls_config.h,
## not on which options are set. To avoid regenerating this file all the time
## when switching between configurations, don't declare mbedtls_config.h as a
## dependency. Remove this file from your working tree if you've just added or
## removed an option in mbedtls_config.h.
#version_features.c: ../include/mbedtls/mbedtls_config.h
-version_features.c:
+$(TF_PSA_CRYPTO_DRIVERS_BUILTIN_SRC_PATH)/version_features.c:
echo " Gen $@"
$(PERL) ../scripts/generate_features.pl
GENERATED_WRAPPER_FILES = \
- psa_crypto_driver_wrappers.h \
- psa_crypto_driver_wrappers_no_static.c
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_driver_wrappers.h \
+ $(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_driver_wrappers_no_static.c
$(GENERATED_WRAPPER_FILES): ../scripts/generate_driver_wrappers.py
$(GENERATED_WRAPPER_FILES): ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers.h.jinja
$(GENERATED_WRAPPER_FILES): ../scripts/data_files/driver_templates/psa_crypto_driver_wrappers_no_static.c.jinja
$(GENERATED_WRAPPER_FILES):
echo " Gen $(GENERATED_WRAPPER_FILES)"
- $(PYTHON) ../scripts/generate_driver_wrappers.py
+ $(PYTHON) ../scripts/generate_driver_wrappers.py $(TF_PSA_CRYPTO_CORE_PATH)
-psa_crypto.o:psa_crypto_driver_wrappers.h
+$(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto.o:$(TF_PSA_CRYPTO_CORE_PATH)/psa_crypto_driver_wrappers.h
clean:
ifndef WINDOWS
rm -f *.o libmbed*
+ rm -f $(OBJS_CRYPTO)
rm -f $(THIRDPARTY_CRYPTO_OBJECTS)
else
if exist *.o del /Q /F *.o
diff --git a/programs/Makefile b/programs/Makefile
index 9b48cc0..1f2d719 100644
--- a/programs/Makefile
+++ b/programs/Makefile
@@ -356,7 +356,7 @@ endif
test/metatest$(EXEXT): test/metatest.c $(DEP)
echo " CC test/metatest.c"
- $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -I ../library test/metatest.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
+ $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -I../library -I../tf-psa-crypto/core test/metatest.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
test/query_config.o: test/query_config.c test/query_config.h $(DEP)
echo " CC test/query_config.c"
diff --git a/programs/test/CMakeLists.txt b/programs/test/CMakeLists.txt
index 20cdf41..0c9b11a 100644
--- a/programs/test/CMakeLists.txt
+++ b/programs/test/CMakeLists.txt
@@ -78,8 +78,11 @@ foreach(exe IN LISTS executables_libs executables_mbedcrypto)
endif()
add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test>
${extra_sources})
- target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
- target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../library)
+ target_include_directories(${exe}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
+ target_include_directories(${exe}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../library
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../tf-psa-crypto/core)
if(exe STREQUAL "query_compile_time_config")
target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
endif()
diff --git a/scripts/code_style.py b/scripts/code_style.py
index d3f89d9..26de730 100755
--- a/scripts/code_style.py
+++ b/scripts/code_style.py
@@ -66,7 +66,7 @@ def get_src_files(since: Optional[str]) -> List[str]:
that have changed since that commit. Without this argument, list all
files known to git.
- Only C files are included, and certain files (generated, or 3rdparty)
+ Only C files are included, and certain files (generated, or third party)
are excluded.
"""
file_patterns = ["*.[hc]",
@@ -130,7 +130,8 @@ def get_src_files(since: Optional[str]) -> List[str]:
# companion files in the same subtree), or for automatically
# generated files (we're correcting the templates instead).
src_files = [filename for filename in src_files
- if not (filename.startswith("3rdparty/") or
+ if not (filename.startswith("tf-psa-crypto/drivers/everest/") or
+ filename.startswith("tf-psa-crypto/drivers/p256-m/") or
filename in generated_files or
is_file_autogenerated(filename))]
return src_files
diff --git a/scripts/common.make b/scripts/common.make
index 077ac6f..d102a97 100644
--- a/scripts/common.make
+++ b/scripts/common.make
@@ -44,7 +44,9 @@ LOCAL_LDFLAGS = ${MBEDTLS_TEST_OBJS} \
-lmbedcrypto$(SHARED_SUFFIX)
endif
-include $(MBEDTLS_PATH)/3rdparty/Makefile.inc
+THIRDPARTY_DIR = $(MBEDTLS_PATH)/tf-psa-crypto/drivers
+include $(THIRDPARTY_DIR)/everest/Makefile.inc
+include $(THIRDPARTY_DIR)/p256-m/Makefile.inc
LOCAL_CFLAGS+=$(THIRDPARTY_INCLUDES)
ifdef PSASIM
diff --git a/scripts/data_files/driver_jsons/p256_transparent_driver.json b/scripts/data_files/driver_jsons/p256_transparent_driver.json
index 7d2aabf..4794074 100644
--- a/scripts/data_files/driver_jsons/p256_transparent_driver.json
+++ b/scripts/data_files/driver_jsons/p256_transparent_driver.json
@@ -2,7 +2,7 @@
"prefix": "p256",
"type": "transparent",
"mbedtls/h_condition": "defined(MBEDTLS_PSA_P256M_DRIVER_ENABLED)",
- "headers": ["../3rdparty/p256-m/p256-m_driver_entrypoints.h"],
+ "headers": ["../tf-psa-crypto/drivers/p256-m/p256-m_driver_entrypoints.h"],
"capabilities": [
{
"mbedtls/c_condition": "defined(MBEDTLS_PSA_P256M_DRIVER_ENABLED)",
diff --git a/scripts/generate_driver_wrappers.py b/scripts/generate_driver_wrappers.py
index 0f0c8c7..9579764 100755
--- a/scripts/generate_driver_wrappers.py
+++ b/scripts/generate_driver_wrappers.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
-"""Generate library/psa_crypto_driver_wrappers.h
- library/psa_crypto_driver_wrappers_no_static.c
+"""Generate psa_crypto_driver_wrappers.h
+ psa_crypto_driver_wrappers_no_static.c
This module is invoked by the build scripts to auto generate the
psa_crypto_driver_wrappers.h and psa_crypto_driver_wrappers_no_static
diff --git a/scripts/generate_errors.pl b/scripts/generate_errors.pl
index fb95c0d..df546d7 100755
--- a/scripts/generate_errors.pl
+++ b/scripts/generate_errors.pl
@@ -24,7 +24,7 @@ if( @ARGV ) {
$crypto_include_dir = 'tf-psa-crypto/drivers/builtin/include/mbedtls';
$tls_include_dir = 'include/mbedtls';
$data_dir = 'scripts/data_files';
- $error_file = 'library/error.c';
+ $error_file = 'tf-psa-crypto/drivers/builtin/src/error.c';
unless( -d $crypto_include_dir && -d $tls_include_dir && -d $data_dir ) {
chdir '..' or die;
diff --git a/scripts/generate_features.pl b/scripts/generate_features.pl
index cea8c11..6972682 100755
--- a/scripts/generate_features.pl
+++ b/scripts/generate_features.pl
@@ -16,7 +16,7 @@ if( @ARGV ) {
} else {
$include_dir = 'include/mbedtls';
$data_dir = 'scripts/data_files';
- $feature_file = 'library/version_features.c';
+ $feature_file = 'tf-psa-crypto/drivers/builtin/src/version_features.c';
unless( -d $include_dir && -d $data_dir ) {
chdir '..' or die;
diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl
index e9267eb..d48b2b2 100755
--- a/scripts/generate_visualc_files.pl
+++ b/scripts/generate_visualc_files.pl
@@ -25,19 +25,21 @@ my $programs_dir = 'programs';
my $mbedtls_header_dir = 'include/mbedtls';
my $drivers_builtin_header_dir = 'tf-psa-crypto/drivers/builtin/include/mbedtls';
my $psa_header_dir = 'tf-psa-crypto/include/psa';
-my $source_dir = 'library';
+my $tls_source_dir = 'library';
+my $crypto_core_source_dir = 'tf-psa-crypto/core';
+my $crypto_source_dir = 'tf-psa-crypto/drivers/builtin/src';
my $test_source_dir = 'tests/src';
my $test_header_dir = 'tests/include/test';
my $test_drivers_header_dir = 'tests/include/test/drivers';
my $test_drivers_source_dir = 'tests/src/drivers';
my @thirdparty_header_dirs = qw(
- 3rdparty/everest/include/everest
+ tf-psa-crypto/drivers/everest/include/everest
);
my @thirdparty_source_dirs = qw(
- 3rdparty/everest/library
- 3rdparty/everest/library/kremlib
- 3rdparty/everest/library/legacy
+ tf-psa-crypto/drivers/everest/library
+ tf-psa-crypto/drivers/everest/library/kremlib
+ tf-psa-crypto/drivers/everest/library/legacy
);
# Directories to add to the include path.
@@ -47,25 +49,27 @@ my @include_directories = qw(
include
tf-psa-crypto/include
tf-psa-crypto/drivers/builtin/include
- 3rdparty/everest/include/
- 3rdparty/everest/include/everest
- 3rdparty/everest/include/everest/vs2013
- 3rdparty/everest/include/everest/kremlib
+ tf-psa-crypto/drivers/everest/include/
+ tf-psa-crypto/drivers/everest/include/everest
+ tf-psa-crypto/drivers/everest/include/everest/vs2013
+ tf-psa-crypto/drivers/everest/include/everest/kremlib
tests/include
);
my $include_directories = join(';', map {"../../$_"} @include_directories);
-# Directories to add to the include path when building the library, but not
+# Directories to add to the include path when building the libraries, but not
# when building tests or applications.
my @library_include_directories = qw(
library
+ tf-psa-crypto/core
+ tf-psa-crypto/drivers/builtin/src
);
my $library_include_directories =
join(';', map {"../../$_"} (@library_include_directories,
@include_directories));
my @excluded_files = qw(
- 3rdparty/everest/library/Hacl_Curve25519.c
+ tf-psa-crypto/drivers/everest/library/Hacl_Curve25519.c
);
my %excluded_files = ();
foreach (@excluded_files) { $excluded_files{$_} = 1 }
@@ -106,7 +110,9 @@ sub check_dirs {
&& -d $mbedtls_header_dir
&& -d $drivers_builtin_header_dir
&& -d $psa_header_dir
- && -d $source_dir
+ && -d $tls_source_dir
+ && -d $crypto_core_source_dir
+ && -d $crypto_source_dir
&& -d $test_source_dir
&& -d $test_drivers_source_dir
&& -d $test_header_dir
@@ -265,12 +271,16 @@ sub main {
$psa_header_dir,
$test_header_dir,
$test_drivers_header_dir,
- $source_dir,
+ $tls_source_dir,
+ $crypto_core_source_dir,
+ $crypto_source_dir,
@thirdparty_header_dirs,
);
my @headers = (map { <$_/*.h> } @header_dirs);
my @source_dirs = (
- $source_dir,
+ $tls_source_dir,
+ $crypto_core_source_dir,
+ $crypto_source_dir,
$test_source_dir,
$test_drivers_source_dir,
@thirdparty_source_dirs,
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 760a4e6..fd15a5f 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -291,7 +291,9 @@ function(add_test_suite suite_name)
# them as PUBLIC.
target_include_directories(test_suite_${data_name}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../library)
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../library
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/core
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../tf-psa-crypto/drivers/builtin/src)
# Request C11, which is needed for memory poisoning tests
set_target_properties(test_suite_${data_name} PROPERTIES C_STANDARD 11)
diff --git a/tests/Makefile b/tests/Makefile
index 21ddf13..95cd461 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -4,8 +4,8 @@ include ../scripts/common.make
# Set this to -v to see the details of failing test cases
TEST_FLAGS ?= $(if $(filter-out 0 OFF Off off NO No no FALSE False false N n,$(CTEST_OUTPUT_ON_FAILURE)),-v,)
-# Also include library headers, for the sake of invasive tests.
-LOCAL_CFLAGS += -I../library
+# Also include private headers, for the sake of invasive tests.
+LOCAL_CFLAGS += -I../library -I../tf-psa-crypto/core -I../tf-psa-crypto/drivers/builtin/src
# Enable definition of various functions used throughout the testsuite
@@ -268,17 +268,22 @@ define libtestdriver1_rewrite :=
s/\b(?=mbedtls_|psa_)/libtestdriver1_/g;
endef
-libtestdriver1.a: export MBEDTLS_PATH := $(patsubst ../..//%,/%,../../$(MBEDTLS_PATH))
libtestdriver1.a:
- # Copy the library and fake a 3rdparty Makefile include.
rm -Rf ./libtestdriver1
mkdir ./libtestdriver1
+ mkdir ./libtestdriver1/tf-psa-crypto
+ mkdir ./libtestdriver1/tf-psa-crypto/drivers
+ mkdir ./libtestdriver1/tf-psa-crypto/drivers/everest
+ mkdir ./libtestdriver1/tf-psa-crypto/drivers/p256-m
+ touch ./libtestdriver1/tf-psa-crypto/drivers/everest/Makefile.inc
+ touch ./libtestdriver1/tf-psa-crypto/drivers/p256-m/Makefile.inc
+ cp -Rf ../framework ./libtestdriver1
cp -Rf ../library ./libtestdriver1
cp -Rf ../include ./libtestdriver1
- cp -Rf ../tf-psa-crypto ./libtestdriver1
+ cp -Rf ../tf-psa-crypto/core ./libtestdriver1/tf-psa-crypto
+ cp -Rf ../tf-psa-crypto/include ./libtestdriver1/tf-psa-crypto
+ cp -Rf ../tf-psa-crypto/drivers/builtin ./libtestdriver1/tf-psa-crypto/drivers
cp -Rf ../scripts ./libtestdriver1
- mkdir ./libtestdriver1/3rdparty
- touch ./libtestdriver1/3rdparty/Makefile.inc
# Set the test driver base (minimal) configuration.
cp ./include/test/drivers/config_test_driver.h ./libtestdriver1/include/mbedtls/mbedtls_config.h
@@ -298,8 +303,10 @@ libtestdriver1.a:
# when this test driver library is linked with the Mbed TLS library.
perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/library/*.[ch]
perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/include/*/*.h
+ perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/tf-psa-crypto/core/*.[ch]
perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/tf-psa-crypto/include/*/*.h
perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/tf-psa-crypto/drivers/builtin/include/*/*.h
+ perl -pi -e '$(libtestdriver1_rewrite)' ./libtestdriver1/tf-psa-crypto/drivers/builtin/src/*.[ch]
$(MAKE) -C ./libtestdriver1/library CFLAGS="-I../../ $(CFLAGS)" LDFLAGS="$(LDFLAGS)" libmbedcrypto.a
cp ./libtestdriver1/library/libmbedcrypto.a ../library/libtestdriver1.a
diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh
index 6b439aa..b2f6bf2 100755
--- a/tests/scripts/all.sh
+++ b/tests/scripts/all.sh
@@ -133,10 +133,18 @@ pre_check_environment () {
pre_initialize_variables () {
if in_mbedtls_repo; then
CONFIG_H='include/mbedtls/mbedtls_config.h'
- CRYPTO_CONFIG_H='tf-psa-crypto/include/psa/crypto_config.h'
+ if [ -d tf-psa-crypto ]; then
+ CRYPTO_CONFIG_H='tf-psa-crypto/include/psa/crypto_config.h'
+ PSA_CORE_PATH='tf-psa-crypto/core'
+ BUILTIN_SRC_PATH='tf-psa-crypto/drivers/builtin/src'
+ else
+ CRYPTO_CONFIG_H='include/psa/crypto_config.h'
+ fi
else
CONFIG_H='drivers/builtin/include/mbedtls/mbedtls_config.h'
CRYPTO_CONFIG_H='include/psa/crypto_config.h'
+ PSA_CORE_PATH='core'
+ BUILTIN_SRC_PATH='drivers/builtin/src'
fi
CONFIG_TEST_DRIVER_H='tests/include/test/drivers/config_test_driver.h'
@@ -331,9 +339,14 @@ cleanup()
-iname CMakeCache.txt -o \
-path './cmake/*.cmake' \) -exec rm -f {} \+
# Remove Makefiles generated by in-tree CMake builds
- rm -f 3rdparty/Makefile 3rdparty/*/Makefile pkgconfig/Makefile framework/Makefile
+ rm -f pkgconfig/Makefile framework/Makefile
rm -f include/Makefile programs/!(fuzz)/Makefile
rm -f tf-psa-crypto/Makefile tf-psa-crypto/include/Makefile
+ rm -f tf-psa-crypto/core/Makefile tf-psa-crypto/drivers/Makefile
+ rm -f tf-psa-crypto/drivers/everest/Makefile
+ rm -f tf-psa-crypto/drivers/p256-m/Makefile
+ rm -f tf-psa-crypto/drivers/builtin/Makefile
+ rm -f tf-psa-crypto/drivers/builtin/src/Makefile
# Remove any artifacts from the component_test_cmake_as_subdirectory test.
rm -rf programs/test/cmake_subproject/build
@@ -444,6 +457,12 @@ armc6_build_test()
msg "size: ARM Compiler 6 ($FLAGS)"
"$ARMC6_FROMELF" -z library/*.o
+ if [ -n ${PSA_CORE_PATH} ]; then
+ "$ARMC6_FROMELF" -z ${PSA_CORE_PATH}/*.o
+ fi
+ if [ -n ${BUILTIN_SRC_PATH} ]; then
+ "$ARMC6_FROMELF" -z ${BUILTIN_SRC_PATH}/*.o
+ fi
}
err_msg()
@@ -1108,6 +1127,8 @@ helper_psasim_server() {
component_check_recursion () {
msg "Check: recursion.pl" # < 1s
tests/scripts/recursion.pl library/*.c
+ tests/scripts/recursion.pl ${PSA_CORE_PATH}/*.c
+ tests/scripts/recursion.pl ${BUILTIN_SRC_PATH}/*.c
}
component_check_generated_files () {
@@ -1670,8 +1691,8 @@ component_full_no_pkparse_pkwrite() {
make CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS"
# Ensure that PK_[PARSE|WRITE]_C were not re-enabled accidentally (additive config).
- not grep mbedtls_pk_parse_key library/pkparse.o
- not grep mbedtls_pk_write_key_der library/pkwrite.o
+ not grep mbedtls_pk_parse_key ${BUILTIN_SRC_PATH}/pkparse.o
+ not grep mbedtls_pk_write_key_der ${BUILTIN_SRC_PATH}/pkwrite.o
msg "test: full without pkparse and pkwrite"
make test
@@ -1698,8 +1719,8 @@ component_test_crypto_full_md_light_only () {
make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS"
# Make sure we don't have the HMAC functions, but the hashing functions
- not grep mbedtls_md_hmac library/md.o
- grep mbedtls_md library/md.o
+ not grep mbedtls_md_hmac ${BUILTIN_SRC_PATH}/md.o
+ grep mbedtls_md ${BUILTIN_SRC_PATH}/md.o
msg "test: crypto_full with only the light subset of MD"
make test
@@ -1734,7 +1755,7 @@ component_test_full_no_cipher () {
make
# Ensure that CIPHER_C was not re-enabled
- not grep mbedtls_cipher_init library/cipher.o
+ not grep mbedtls_cipher_init ${BUILTIN_SRC_PATH}/cipher.o
msg "test: full no CIPHER"
make test
@@ -1787,7 +1808,7 @@ component_test_full_no_ccm_star_no_tag() {
make
# Ensure MBEDTLS_PSA_BUILTIN_CIPHER was not enabled
- not grep mbedtls_psa_cipher library/psa_crypto_cipher.o
+ not grep mbedtls_psa_cipher ${PSA_CORE_PATH}/psa_crypto_cipher.o
msg "test: full no PSA_WANT_ALG_CCM_STAR_NO_TAG"
make test
@@ -2524,7 +2545,7 @@ component_test_psa_crypto_config_accel_ecdsa () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_ecdsa_ library/ecdsa.o
+ not grep mbedtls_ecdsa_ ${BUILTIN_SRC_PATH}/ecdsa.o
# Run the tests
# -------------
@@ -2565,7 +2586,7 @@ component_test_psa_crypto_config_accel_ecdh () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_ecdh_ library/ecdh.o
+ not grep mbedtls_ecdh_ ${BUILTIN_SRC_PATH}/ecdh.o
# Run the tests
# -------------
@@ -2603,7 +2624,7 @@ component_test_psa_crypto_config_accel_ffdh () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_dhm_ library/dhm.o
+ not grep mbedtls_dhm_ ${BUILTIN_SRC_PATH}/dhm.o
# Run the tests
# -------------
@@ -2657,7 +2678,7 @@ component_test_psa_crypto_config_accel_pake() {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_ecjpake_init library/ecjpake.o
+ not grep mbedtls_ecjpake_init ${BUILTIN_SRC_PATH}/ecjpake.o
# Run the tests
# -------------
@@ -2714,10 +2735,10 @@ component_test_psa_crypto_config_accel_ecc_some_key_types () {
helper_libtestdriver1_make_main "$loc_accel_list"
# ECP should be re-enabled but not the others
- not grep mbedtls_ecdh_ library/ecdh.o
- not grep mbedtls_ecdsa library/ecdsa.o
- not grep mbedtls_ecjpake library/ecjpake.o
- grep mbedtls_ecp library/ecp.o
+ not grep mbedtls_ecdh_ ${BUILTIN_SRC_PATH}/ecdh.o
+ not grep mbedtls_ecdsa ${BUILTIN_SRC_PATH}/ecdsa.o
+ not grep mbedtls_ecjpake ${BUILTIN_SRC_PATH}/ecjpake.o
+ grep mbedtls_ecp ${BUILTIN_SRC_PATH}/ecp.o
# Run the tests
# -------------
@@ -2808,27 +2829,27 @@ common_test_psa_crypto_config_accel_ecc_some_curves () {
helper_libtestdriver1_make_main "$loc_accel_list"
# We expect ECDH to be re-enabled for the missing curves
- grep mbedtls_ecdh_ library/ecdh.o
+ grep mbedtls_ecdh_ ${BUILTIN_SRC_PATH}/ecdh.o
# We expect ECP to be re-enabled, however the parts specific to the
# families of curves that are accelerated should be ommited.
# - functions with mxz in the name are specific to Montgomery curves
# - ecp_muladd is specific to Weierstrass curves
- ##nm library/ecp.o | tee ecp.syms
+ ##nm ${BUILTIN_SRC_PATH}/ecp.o | tee ecp.syms
if [ $weierstrass -eq 1 ]; then
- not grep mbedtls_ecp_muladd library/ecp.o
- grep mxz library/ecp.o
+ not grep mbedtls_ecp_muladd ${BUILTIN_SRC_PATH}/ecp.o
+ grep mxz ${BUILTIN_SRC_PATH}/ecp.o
else
- grep mbedtls_ecp_muladd library/ecp.o
- not grep mxz library/ecp.o
+ grep mbedtls_ecp_muladd ${BUILTIN_SRC_PATH}/ecp.o
+ not grep mxz ${BUILTIN_SRC_PATH}/ecp.o
fi
# We expect ECDSA and ECJPAKE to be re-enabled only when
# Weierstrass curves are not accelerated
if [ $weierstrass -eq 1 ]; then
- not grep mbedtls_ecdsa library/ecdsa.o
- not grep mbedtls_ecjpake library/ecjpake.o
+ not grep mbedtls_ecdsa ${BUILTIN_SRC_PATH}/ecdsa.o
+ not grep mbedtls_ecjpake ${BUILTIN_SRC_PATH}/ecjpake.o
else
- grep mbedtls_ecdsa library/ecdsa.o
- grep mbedtls_ecjpake library/ecjpake.o
+ grep mbedtls_ecdsa ${BUILTIN_SRC_PATH}/ecdsa.o
+ grep mbedtls_ecjpake ${BUILTIN_SRC_PATH}/ecjpake.o
fi
# Run the tests
@@ -2907,10 +2928,10 @@ component_test_psa_crypto_config_accel_ecc_ecp_light_only () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure any built-in EC alg was not re-enabled by accident (additive config)
- not grep mbedtls_ecdsa_ library/ecdsa.o
- not grep mbedtls_ecdh_ library/ecdh.o
- not grep mbedtls_ecjpake_ library/ecjpake.o
- not grep mbedtls_ecp_mul library/ecp.o
+ not grep mbedtls_ecdsa_ ${BUILTIN_SRC_PATH}/ecdsa.o
+ not grep mbedtls_ecdh_ ${BUILTIN_SRC_PATH}/ecdh.o
+ not grep mbedtls_ecjpake_ ${BUILTIN_SRC_PATH}/ecjpake.o
+ not grep mbedtls_ecp_mul ${BUILTIN_SRC_PATH}/ecp.o
# Run the tests
# -------------
@@ -3011,11 +3032,11 @@ component_test_psa_crypto_config_accel_ecc_no_ecp_at_all () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure any built-in EC alg was not re-enabled by accident (additive config)
- not grep mbedtls_ecdsa_ library/ecdsa.o
- not grep mbedtls_ecdh_ library/ecdh.o
- not grep mbedtls_ecjpake_ library/ecjpake.o
+ not grep mbedtls_ecdsa_ ${BUILTIN_SRC_PATH}/ecdsa.o
+ not grep mbedtls_ecdh_ ${BUILTIN_SRC_PATH}/ecdh.o
+ not grep mbedtls_ecjpake_ ${BUILTIN_SRC_PATH}/ecjpake.o
# Also ensure that ECP module was not re-enabled
- not grep mbedtls_ecp_ library/ecp.o
+ not grep mbedtls_ecp_ ${BUILTIN_SRC_PATH}/ecp.o
# Run the tests
# -------------
@@ -3186,14 +3207,14 @@ common_test_psa_crypto_config_accel_ecc_ffdh_no_bignum () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure any built-in EC alg was not re-enabled by accident (additive config)
- not grep mbedtls_ecdsa_ library/ecdsa.o
- not grep mbedtls_ecdh_ library/ecdh.o
- not grep mbedtls_ecjpake_ library/ecjpake.o
+ not grep mbedtls_ecdsa_ ${BUILTIN_SRC_PATH}/ecdsa.o
+ not grep mbedtls_ecdh_ ${BUILTIN_SRC_PATH}/ecdh.o
+ not grep mbedtls_ecjpake_ ${BUILTIN_SRC_PATH}/ecjpake.o
# Also ensure that ECP, RSA, [DHM] or BIGNUM modules were not re-enabled
- not grep mbedtls_ecp_ library/ecp.o
- not grep mbedtls_rsa_ library/rsa.o
- not grep mbedtls_mpi_ library/bignum.o
- not grep mbedtls_dhm_ library/dhm.o
+ not grep mbedtls_ecp_ ${BUILTIN_SRC_PATH}/ecp.o
+ not grep mbedtls_rsa_ ${BUILTIN_SRC_PATH}/rsa.o
+ not grep mbedtls_mpi_ ${BUILTIN_SRC_PATH}/bignum.o
+ not grep mbedtls_dhm_ ${BUILTIN_SRC_PATH}/dhm.o
# Run the tests
# -------------
@@ -3289,20 +3310,20 @@ component_test_tfm_config_p256m_driver_accel_ec () {
make CC=$ASAN_CC CFLAGS="$ASAN_CFLAGS -I../tests/include/spe" LDFLAGS="$ASAN_CFLAGS"
# Make sure any built-in EC alg was not re-enabled by accident (additive config)
- not grep mbedtls_ecdsa_ library/ecdsa.o
- not grep mbedtls_ecdh_ library/ecdh.o
- not grep mbedtls_ecjpake_ library/ecjpake.o
+ not grep mbedtls_ecdsa_ ${BUILTIN_SRC_PATH}/ecdsa.o
+ not grep mbedtls_ecdh_ ${BUILTIN_SRC_PATH}/ecdh.o
+ not grep mbedtls_ecjpake_ ${BUILTIN_SRC_PATH}/ecjpake.o
# Also ensure that ECP, RSA, DHM or BIGNUM modules were not re-enabled
- not grep mbedtls_ecp_ library/ecp.o
- not grep mbedtls_rsa_ library/rsa.o
- not grep mbedtls_dhm_ library/dhm.o
- not grep mbedtls_mpi_ library/bignum.o
+ not grep mbedtls_ecp_ ${BUILTIN_SRC_PATH}/ecp.o
+ not grep mbedtls_rsa_ ${BUILTIN_SRC_PATH}/rsa.o
+ not grep mbedtls_dhm_ ${BUILTIN_SRC_PATH}/dhm.o
+ not grep mbedtls_mpi_ ${BUILTIN_SRC_PATH}/bignum.o
# Check that p256m was built
grep -q p256_ecdsa_ library/libmbedcrypto.a
# In "config-tfm.h" we disabled CIPHER_C tweaking TF-M's configuration
# files, so we want to ensure that it has not be re-enabled accidentally.
- not grep mbedtls_cipher library/cipher.o
+ not grep mbedtls_cipher ${BUILTIN_SRC_PATH}/cipher.o
# Run the tests
msg "test: TF-M config + p256m driver + accel ECDH(E)/ECDSA"
@@ -3327,7 +3348,7 @@ component_test_tfm_config() {
# In "config-tfm.h" we disabled CIPHER_C tweaking TF-M's configuration
# files, so we want to ensure that it has not be re-enabled accidentally.
- not grep mbedtls_cipher library/cipher.o
+ not grep mbedtls_cipher ${BUILTIN_SRC_PATH}/cipher.o
msg "test: TF-M config"
make test
@@ -3449,7 +3470,7 @@ component_test_psa_crypto_config_accel_rsa_crypto () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_rsa library/rsa.o
+ not grep mbedtls_rsa ${BUILTIN_SRC_PATH}/rsa.o
# Run the tests
# -------------
@@ -3559,11 +3580,11 @@ component_test_psa_crypto_config_accel_hash () {
# There's a risk of something getting re-enabled via config_psa.h;
# make sure it did not happen. Note: it's OK for MD_C to be enabled.
- not grep mbedtls_md5 library/md5.o
- not grep mbedtls_sha1 library/sha1.o
- not grep mbedtls_sha256 library/sha256.o
- not grep mbedtls_sha512 library/sha512.o
- not grep mbedtls_ripemd160 library/ripemd160.o
+ not grep mbedtls_md5 ${BUILTIN_SRC_PATH}/md5.o
+ not grep mbedtls_sha1 ${BUILTIN_SRC_PATH}/sha1.o
+ not grep mbedtls_sha256 ${BUILTIN_SRC_PATH}/sha256.o
+ not grep mbedtls_sha512 ${BUILTIN_SRC_PATH}/sha512.o
+ not grep mbedtls_ripemd160 ${BUILTIN_SRC_PATH}/ripemd160.o
# Run the tests
# -------------
@@ -3616,11 +3637,11 @@ component_test_psa_crypto_config_accel_hash_use_psa () {
# There's a risk of something getting re-enabled via config_psa.h;
# make sure it did not happen. Note: it's OK for MD_C to be enabled.
- not grep mbedtls_md5 library/md5.o
- not grep mbedtls_sha1 library/sha1.o
- not grep mbedtls_sha256 library/sha256.o
- not grep mbedtls_sha512 library/sha512.o
- not grep mbedtls_ripemd160 library/ripemd160.o
+ not grep mbedtls_md5 ${BUILTIN_SRC_PATH}/md5.o
+ not grep mbedtls_sha1 ${BUILTIN_SRC_PATH}/sha1.o
+ not grep mbedtls_sha256 ${BUILTIN_SRC_PATH}/sha256.o
+ not grep mbedtls_sha512 ${BUILTIN_SRC_PATH}/sha512.o
+ not grep mbedtls_ripemd160 ${BUILTIN_SRC_PATH}/ripemd160.o
# Run the tests
# -------------
@@ -3707,7 +3728,7 @@ component_test_psa_crypto_config_accel_hmac() {
helper_libtestdriver1_make_main "$loc_accel_list"
# Ensure that built-in support for HMAC is disabled.
- not grep mbedtls_md_hmac library/md.o
+ not grep mbedtls_md_hmac ${BUILTIN_SRC_PATH}/md.o
# Run the tests
# -------------
@@ -3765,7 +3786,7 @@ component_test_psa_crypto_config_accel_des () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_des* library/des.o
+ not grep mbedtls_des* ${BUILTIN_SRC_PATH}/des.o
# Run the tests
# -------------
@@ -3802,9 +3823,9 @@ component_test_psa_crypto_config_accel_aead () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_ccm library/ccm.o
- not grep mbedtls_gcm library/gcm.o
- not grep mbedtls_chachapoly library/chachapoly.o
+ not grep mbedtls_ccm ${BUILTIN_SRC_PATH}/ccm.o
+ not grep mbedtls_gcm ${BUILTIN_SRC_PATH}/gcm.o
+ not grep mbedtls_chachapoly ${BUILTIN_SRC_PATH}/chachapoly.o
# Run the tests
# -------------
@@ -3870,15 +3891,15 @@ component_test_psa_crypto_config_accel_cipher_aead_cmac () {
helper_libtestdriver1_make_main "$loc_accel_list"
# Make sure this was not re-enabled by accident (additive config)
- not grep mbedtls_cipher library/cipher.o
- not grep mbedtls_des library/des.o
- not grep mbedtls_aes library/aes.o
- not grep mbedtls_aria library/aria.o
- not grep mbedtls_camellia library/camellia.o
- not grep mbedtls_ccm library/ccm.o
- not grep mbedtls_gcm library/gcm.o
- not grep mbedtls_chachapoly library/chachapoly.o
- not grep mbedtls_cmac library/cmac.o
+ not grep mbedtls_cipher ${BUILTIN_SRC_PATH}/cipher.o
+ not grep mbedtls_des ${BUILTIN_SRC_PATH}/des.o
+ not grep mbedtls_aes ${BUILTIN_SRC_PATH}/aes.o
+ not grep mbedtls_aria ${BUILTIN_SRC_PATH}/aria.o
+ not grep mbedtls_camellia ${BUILTIN_SRC_PATH}/camellia.o
+ not grep mbedtls_ccm ${BUILTIN_SRC_PATH}/ccm.o
+ not grep mbedtls_gcm ${BUILTIN_SRC_PATH}/gcm.o
+ not grep mbedtls_chachapoly ${BUILTIN_SRC_PATH}/chachapoly.o
+ not grep mbedtls_cmac ${BUILTIN_SRC_PATH}/cmac.o
# Run the tests
# -------------
@@ -3967,9 +3988,9 @@ component_test_full_block_cipher_psa_dispatch () {
# Make sure disabled components were not re-enabled by accident (additive
# config)
- not grep mbedtls_aes_ library/aes.o
- not grep mbedtls_aria_ library/aria.o
- not grep mbedtls_camellia_ library/camellia.o
+ not grep mbedtls_aes_ ${BUILTIN_SRC_PATH}/aes.o
+ not grep mbedtls_aria_ ${BUILTIN_SRC_PATH}/aria.o
+ not grep mbedtls_camellia_ ${BUILTIN_SRC_PATH}/camellia.o
# Run the tests
# -------------
@@ -4074,9 +4095,8 @@ build_test_config_combos() {
./scripts/config.py unset ${opt}
done
- # enter the directory containing the target file & strip the dir from the filename
- cd $(dirname ${file})
- file=$(basename ${file})
+ # enter the library directory
+ cd library
# The most common issue is unused variables/functions, so ensure -Wunused is set.
warning_flags="-Werror -Wall -Wextra -Wwrite-strings -Wpointer-arith -Wimplicit-fallthrough -Wshadow -Wvla -Wformat=2 -Wno-format-nonliteral -Wshadow -Wasm-operand-widths -Wunused"
@@ -4091,7 +4111,7 @@ build_test_config_combos() {
deps=""
len=${#options[@]}
- source_file=${file%.o}.c
+ source_file=../${file%.o}.c
targets=0
echo 'include Makefile' >${makefile}
@@ -4148,7 +4168,7 @@ component_build_aes_variations() {
MBEDTLS_ROOT_DIR="$PWD"
msg "build: aes.o for all combinations of relevant config options"
- build_test_config_combos library/aes.o validate_aes_config_variations \
+ build_test_config_combos ${BUILTIN_SRC_PATH}/aes.o validate_aes_config_variations \
"MBEDTLS_AES_SETKEY_ENC_ALT" "MBEDTLS_AES_DECRYPT_ALT" \
"MBEDTLS_AES_ROM_TABLES" "MBEDTLS_AES_ENCRYPT_ALT" "MBEDTLS_AES_SETKEY_DEC_ALT" \
"MBEDTLS_AES_FEWER_TABLES" "MBEDTLS_AES_USE_HARDWARE_ONLY" \
@@ -4165,7 +4185,7 @@ component_build_aes_variations() {
scripts/config.py unset MBEDTLS_CIPHER_MODE_XTS
scripts/config.py unset MBEDTLS_DES_C
scripts/config.py unset MBEDTLS_NIST_KW_C
- build_test_config_combos library/aes.o validate_aes_config_variations \
+ build_test_config_combos ${BUILTIN_SRC_PATH}/aes.o validate_aes_config_variations \
"MBEDTLS_AES_SETKEY_ENC_ALT" "MBEDTLS_AES_DECRYPT_ALT" \
"MBEDTLS_AES_ROM_TABLES" "MBEDTLS_AES_ENCRYPT_ALT" "MBEDTLS_AES_SETKEY_DEC_ALT" \
"MBEDTLS_AES_FEWER_TABLES" "MBEDTLS_AES_USE_HARDWARE_ONLY" \
@@ -4597,49 +4617,49 @@ component_build_aes_armce () {
scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY
msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, aarch64"
- make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, arm"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
msg "MBEDTLS_AES_USE_HARDWARE_ONLY, clang, thumb"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY
msg "no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, aarch64"
- make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a+crypto"
msg "no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, arm"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
msg "no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, thumb"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
# test for presence of AES instructions
scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY
msg "clang, test A32 crypto instructions built"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
- grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
+ grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.o
msg "clang, test T32 crypto instructions built"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
- grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
+ grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.o
msg "clang, test aarch64 crypto instructions built"
- make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
- grep -E 'aes[a-z]+\s*[qv]' library/aesce.o
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
+ grep -E 'aes[a-z]+\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.o
# test for absence of AES instructions
scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY
scripts/config.py unset MBEDTLS_AESCE_C
msg "clang, test A32 crypto instructions not built"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
- not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
+ not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.o
msg "clang, test T32 crypto instructions not built"
- make -B library/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
- not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
+ not grep -E 'aes[0-9a-z]+.[0-9]\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.o
msg "clang, test aarch64 crypto instructions not built"
- make -B library/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
- not grep -E 'aes[a-z]+\s*[qv]' library/aesce.o
+ make -B library/../${BUILTIN_SRC_PATH}/aesce.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
+ not grep -E 'aes[a-z]+\s*[qv]' ${BUILTIN_SRC_PATH}/aesce.o
}
support_build_sha_armce() {
@@ -4654,30 +4674,30 @@ component_build_sha_armce () {
# Test variations of SHA256 Armv8 crypto extensions
scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, aarch64"
- make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, arm"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
# test the deprecated form of the config option
scripts/config.py set MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY clang, thumb"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
scripts/config.py unset MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
msg "MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT clang, aarch64"
- make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a"
scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
# test the deprecated form of the config option
scripts/config.py set MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, arm"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -std=c99"
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -std=c99"
msg "MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, thumb"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
scripts/config.py unset MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
@@ -4685,32 +4705,32 @@ component_build_sha_armce () {
for opt in MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT; do
scripts/config.py set ${opt}
msg "${opt} clang, test A32 crypto instructions built"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
- grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
+ grep -E 'sha256[a-z0-9]+.32\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.o
msg "${opt} clang, test T32 crypto instructions built"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
- grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
+ grep -E 'sha256[a-z0-9]+.32\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.o
msg "${opt} clang, test aarch64 crypto instructions built"
- make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
- grep -E 'sha256[a-z0-9]+\s+[qv]' library/sha256.o
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
+ grep -E 'sha256[a-z0-9]+\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.o
scripts/config.py unset ${opt}
done
# examine the disassembly for absence of SHA instructions
msg "clang, test A32 crypto instructions not built"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
- not grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
+ not grep -E 'sha256[a-z0-9]+.32\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.o
msg "clang, test T32 crypto instructions not built"
- make -B library/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
- not grep -E 'sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
+ not grep -E 'sha256[a-z0-9]+.32\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.o
msg "clang, test aarch64 crypto instructions not built"
- make -B library/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
- not grep -E 'sha256[a-z0-9]+\s+[qv]' library/sha256.o
+ make -B library/../${BUILTIN_SRC_PATH}/sha256.o CC=clang CFLAGS="--target=aarch64-linux-gnu -march=armv8-a -S"
+ not grep -E 'sha256[a-z0-9]+\s+[qv]' ${BUILTIN_SRC_PATH}/sha256.o
}
support_build_aes_aesce_armcc () {
@@ -4832,13 +4852,13 @@ helper_block_cipher_no_decrypt_build_test () {
make CFLAGS="-O2 $cflags" LDFLAGS="$ldflags"
# Make sure we don't have mbedtls_xxx_setkey_dec in AES/ARIA/CAMELLIA
- not grep mbedtls_aes_setkey_dec library/aes.o
- not grep mbedtls_aria_setkey_dec library/aria.o
- not grep mbedtls_camellia_setkey_dec library/camellia.o
+ not grep mbedtls_aes_setkey_dec ${BUILTIN_SRC_PATH}/aes.o
+ not grep mbedtls_aria_setkey_dec ${BUILTIN_SRC_PATH}/aria.o
+ not grep mbedtls_camellia_setkey_dec ${BUILTIN_SRC_PATH}/camellia.o
# Make sure we don't have mbedtls_internal_aes_decrypt in AES
- not grep mbedtls_internal_aes_decrypt library/aes.o
+ not grep mbedtls_internal_aes_decrypt ${BUILTIN_SRC_PATH}/aes.o
# Make sure we don't have mbedtls_aesni_inverse_key in AESNI
- not grep mbedtls_aesni_inverse_key library/aesni.o
+ not grep mbedtls_aesni_inverse_key ${BUILTIN_SRC_PATH}/aesni.o
msg "test: default config + BLOCK_CIPHER_NO_DECRYPT${set_opts:+ + $set_opts}${unset_opts:+ - $unset_opts} with $cflags${ldflags:+, $ldflags}"
make test
@@ -4939,14 +4959,14 @@ component_test_block_cipher_no_decrypt_aesce_armcc () {
armc6_build_test "-O1 --target=aarch64-arm-none-eabi -march=armv8-a+crypto -Werror -Wall -Wextra"
# Make sure we don't have mbedtls_xxx_setkey_dec in AES/ARIA/CAMELLIA
- not grep mbedtls_aes_setkey_dec library/aes.o
- not grep mbedtls_aria_setkey_dec library/aria.o
- not grep mbedtls_camellia_setkey_dec library/camellia.o
+ not grep mbedtls_aes_setkey_dec ${BUILTIN_SRC_PATH}/aes.o
+ not grep mbedtls_aria_setkey_dec ${BUILTIN_SRC_PATH}/aria.o
+ not grep mbedtls_camellia_setkey_dec ${BUILTIN_SRC_PATH}/camellia.o
# Make sure we don't have mbedtls_internal_aes_decrypt in AES
- not grep mbedtls_internal_aes_decrypt library/aes.o
+ not grep mbedtls_internal_aes_decrypt ${BUILTIN_SRC_PATH}/aes.o
# Make sure we don't have mbedtls_aesce_inverse_key and aesce_decrypt_block in AESCE
- not grep mbedtls_aesce_inverse_key library/aesce.o
- not grep aesce_decrypt_block library/aesce.o
+ not grep mbedtls_aesce_inverse_key ${BUILTIN_SRC_PATH}/aesce.o
+ not grep aesce_decrypt_block ${BUILTIN_SRC_PATH}/aesce.o
}
component_test_ctr_drbg_aes_256_sha_256 () {
@@ -5319,6 +5339,8 @@ component_build_arm_none_eabi_gcc () {
msg "size: ${ARM_NONE_EABI_GCC_PREFIX}gcc -O1, baremetal+debug"
${ARM_NONE_EABI_GCC_PREFIX}size -t library/*.o
+ ${ARM_NONE_EABI_GCC_PREFIX}size -t ${PSA_CORE_PATH}/*.o
+ ${ARM_NONE_EABI_GCC_PREFIX}size -t ${BUILTIN_SRC_PATH}/*.o
}
component_build_arm_linux_gnueabi_gcc_arm5vte () {
@@ -5333,6 +5355,8 @@ component_build_arm_linux_gnueabi_gcc_arm5vte () {
msg "size: ${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc -march=armv5te -O1, baremetal+debug"
${ARM_LINUX_GNUEABI_GCC_PREFIX}size -t library/*.o
+ ${ARM_LINUX_GNUEABI_GCC_PREFIX}size -t ${PSA_CORE_PATH}/*.o
+ ${ARM_LINUX_GNUEABI_GCC_PREFIX}size -t ${BUILTIN_SRC_PATH}/*.o
}
support_build_arm_linux_gnueabi_gcc_arm5vte () {
type ${ARM_LINUX_GNUEABI_GCC_PREFIX}gcc >/dev/null 2>&1
@@ -5348,6 +5372,8 @@ component_build_arm_none_eabi_gcc_arm5vte () {
msg "size: ${ARM_NONE_EABI_GCC_PREFIX}gcc -march=armv5te -O1, baremetal+debug"
${ARM_NONE_EABI_GCC_PREFIX}size -t library/*.o
+ ${ARM_NONE_EABI_GCC_PREFIX}size -t ${PSA_CORE_PATH}/*.o
+ ${ARM_NONE_EABI_GCC_PREFIX}size -t ${BUILTIN_SRC_PATH}/*.o
}
component_build_arm_none_eabi_gcc_m0plus () {
@@ -5357,6 +5383,8 @@ component_build_arm_none_eabi_gcc_m0plus () {
msg "size: ${ARM_NONE_EABI_GCC_PREFIX}gcc -mthumb -mcpu=cortex-m0plus -Os, baremetal_size"
${ARM_NONE_EABI_GCC_PREFIX}size -t library/*.o
+ ${ARM_NONE_EABI_GCC_PREFIX}size -t ${PSA_CORE_PATH}/*.o
+ ${ARM_NONE_EABI_GCC_PREFIX}size -t ${BUILTIN_SRC_PATH}/*.o
for lib in library/*.a; do
echo "$lib:"
${ARM_NONE_EABI_GCC_PREFIX}size -t $lib | grep TOTALS
@@ -5370,6 +5398,8 @@ component_build_arm_none_eabi_gcc_no_udbl_division () {
make CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -Wall -Wextra' lib
echo "Checking that software 64-bit division is not required"
not grep __aeabi_uldiv library/*.o
+ not grep __aeabi_uldiv ${PSA_CORE_PATH}/*.o
+ not grep __aeabi_uldiv ${BUILTIN_SRC_PATH}/*.o
}
component_build_arm_none_eabi_gcc_no_64bit_multiplication () {
@@ -5379,6 +5409,8 @@ component_build_arm_none_eabi_gcc_no_64bit_multiplication () {
make CC="${ARM_NONE_EABI_GCC_PREFIX}gcc" AR="${ARM_NONE_EABI_GCC_PREFIX}ar" LD="${ARM_NONE_EABI_GCC_PREFIX}ld" CFLAGS='-std=c99 -Werror -O1 -march=armv6-m -mthumb' lib
echo "Checking that software 64-bit multiplication is not required"
not grep __aeabi_lmul library/*.o
+ not grep __aeabi_lmul ${PSA_CORE_PATH}/*.o
+ not grep __aeabi_lmul ${BUILTIN_SRC_PATH}/*.o
}
component_build_arm_clang_thumb () {
@@ -5423,6 +5455,8 @@ component_build_armcc () {
msg "size: ARM Compiler 5"
"$ARMC5_FROMELF" -z library/*.o
+ "$ARMC5_FROMELF" -z ${PSA_CORE_PATH}/*.o
+ "$ARMC5_FROMELF" -z ${BUILTIN_SRC_PATH}/*.o
# Compile mostly with -O1 since some Arm inline assembly is disabled for -O0.
diff --git a/tests/scripts/check-generated-files.sh b/tests/scripts/check-generated-files.sh
index 09c850a..56d4884 100755
--- a/tests/scripts/check-generated-files.sh
+++ b/tests/scripts/check-generated-files.sh
@@ -31,9 +31,16 @@ in_tf_psa_crypto_repo () {
}
if in_mbedtls_repo; then
- library_dir='library'
+ if [ -d tf-psa-crypto ]; then
+ crypto_core_dir='tf-psa-crypto/core'
+ builtin_drivers_dir='tf-psa-crypto/drivers/builtin/src'
+ else
+ crypto_core_dir='library'
+ builtin_drivers_dir='library'
+ fi
elif in_tf_psa_crypto_repo; then
- library_dir='core'
+ crypto_core_dir='core'
+ builtin_drivers_dir='drivers/builtin/src/'
else
echo "Must be run from Mbed TLS root or TF-PSA-Crypto root" >&2
exit 1
@@ -133,13 +140,14 @@ check framework/scripts/generate_config_tests.py $(framework/scripts/generate_co
check framework/scripts/generate_ecp_tests.py $(framework/scripts/generate_ecp_tests.py --list)
check framework/scripts/generate_psa_tests.py $(framework/scripts/generate_psa_tests.py --list)
check framework/scripts/generate_test_keys.py tests/src/test_keys.h
-check scripts/generate_driver_wrappers.py $library_dir/psa_crypto_driver_wrappers.h $library_dir/psa_crypto_driver_wrappers_no_static.c
+check scripts/generate_driver_wrappers.py ${crypto_core_dir}/psa_crypto_driver_wrappers.h \
+ ${crypto_core_dir}/psa_crypto_driver_wrappers_no_static.c
# Additional checks for Mbed TLS only
if in_mbedtls_repo; then
- check scripts/generate_errors.pl library/error.c
+ check scripts/generate_errors.pl ${builtin_drivers_dir}/error.c
check scripts/generate_query_config.pl programs/test/query_config.c
- check scripts/generate_features.pl library/version_features.c
+ check scripts/generate_features.pl ${builtin_drivers_dir}/version_features.c
check scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.c
check framework/scripts/generate_test_cert_macros.py tests/src/test_certs.h
# generate_visualc_files enumerates source files (library/*.c). It doesn't
diff --git a/tests/scripts/check_files.py b/tests/scripts/check_files.py
index 2a5d64b..e937202 100755
--- a/tests/scripts/check_files.py
+++ b/tests/scripts/check_files.py
@@ -368,9 +368,8 @@ class LicenseIssueTracker(LineIssueTracker):
heading = "License issue:"
LICENSE_EXEMPTION_RE_LIST = [
- # Third-party code, other than whitelisted third-party modules,
- # may be under a different license.
- r'3rdparty/(?!(p256-m)/.*)',
+ # Exempt third-party drivers which may be under a different license
+ r'tf-psa-crypto/drivers/(?=(everest)/.*)',
# Documentation explaining the license may have accidental
# false positives.
r'(ChangeLog|LICENSE|framework\/LICENSE|[-0-9A-Z_a-z]+\.md)\Z',
diff --git a/tests/scripts/check_names.py b/tests/scripts/check_names.py
index 142233c..4f503e4 100755
--- a/tests/scripts/check_names.py
+++ b/tests/scripts/check_names.py
@@ -240,15 +240,19 @@ class CodeParser():
"include/psa/*.h",
"tf-psa-crypto/include/psa/*.h",
"tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
- "3rdparty/everest/include/everest/everest.h",
- "3rdparty/everest/include/everest/x25519.h"
+ "tf-psa-crypto/drivers/everest/include/everest/everest.h",
+ "tf-psa-crypto/drivers/everest/include/everest/x25519.h"
])
all_macros["internal"] = self.parse_macros([
"library/*.h",
+ "tf-psa-crypto/core/*.h",
+ "tf-psa-crypto/drivers/builtin/src/*.h",
"tests/include/test/drivers/*.h",
])
all_macros["private"] = self.parse_macros([
"library/*.c",
+ "tf-psa-crypto/core/*.c",
+ "tf-psa-crypto/drivers/builtin/src/*.c",
])
enum_consts = self.parse_enum_consts([
"include/mbedtls/*.h",
@@ -256,9 +260,13 @@ class CodeParser():
"tf-psa-crypto/include/psa/*.h",
"tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
"library/*.h",
+ "tf-psa-crypto/core/*.h",
+ "tf-psa-crypto/drivers/builtin/src/*.h",
"library/*.c",
- "3rdparty/everest/include/everest/everest.h",
- "3rdparty/everest/include/everest/x25519.h"
+ "tf-psa-crypto/core/*.c",
+ "tf-psa-crypto/drivers/builtin/src/*.c",
+ "tf-psa-crypto/drivers/everest/include/everest/everest.h",
+ "tf-psa-crypto/drivers/everest/include/everest/x25519.h"
])
identifiers, excluded_identifiers = self.parse_identifiers([
"include/mbedtls/*.h",
@@ -266,21 +274,27 @@ class CodeParser():
"tf-psa-crypto/include/psa/*.h",
"tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
"library/*.h",
- "3rdparty/everest/include/everest/everest.h",
- "3rdparty/everest/include/everest/x25519.h"
- ], ["3rdparty/p256-m/p256-m/p256-m.h"])
+ "tf-psa-crypto/core/*.h",
+ "tf-psa-crypto/drivers/builtin/src/*.h",
+ "tf-psa-crypto/drivers/everest/include/everest/everest.h",
+ "tf-psa-crypto/drivers/everest/include/everest/x25519.h"
+ ], ["tf-psa-crypto/drivers/p256-m/p256-m/p256-m.h"])
mbed_psa_words = self.parse_mbed_psa_words([
"include/mbedtls/*.h",
"include/psa/*.h",
"tf-psa-crypto/include/psa/*.h",
"tf-psa-crypto/drivers/builtin/include/mbedtls/*.h",
"library/*.h",
- "3rdparty/everest/include/everest/everest.h",
- "3rdparty/everest/include/everest/x25519.h",
+ "tf-psa-crypto/core/*.h",
+ "tf-psa-crypto/drivers/builtin/src/*.h",
+ "tf-psa-crypto/drivers/everest/include/everest/everest.h",
+ "tf-psa-crypto/drivers/everest/include/everest/x25519.h",
"library/*.c",
- "3rdparty/everest/library/everest.c",
- "3rdparty/everest/library/x25519.c"
- ], ["library/psa_crypto_driver_wrappers.h"])
+ "tf-psa-crypto/core/*.c",
+ "tf-psa-crypto/drivers/builtin/src/*.c",
+ "tf-psa-crypto/drivers/everest/library/everest.c",
+ "tf-psa-crypto/drivers/everest/library/x25519.c"
+ ], ["tf-psa-crypto/core/psa_crypto_driver_wrappers.h"])
symbols = self.parse_symbols()
# Remove identifier macros like mbedtls_printf or mbedtls_calloc
diff --git a/tests/scripts/list_internal_identifiers.py b/tests/scripts/list_internal_identifiers.py
index b648ce2..052feca 100755
--- a/tests/scripts/list_internal_identifiers.py
+++ b/tests/scripts/list_internal_identifiers.py
@@ -33,7 +33,9 @@ def main():
name_check = CodeParser(logging.getLogger())
result = name_check.parse_identifiers([
"include/mbedtls/*_internal.h",
- "library/*.h"
+ "library/*.h",
+ "tf-psa-crypto/core/*.h",
+ "tf-psa-crypto/drivers/builtin/src/*.h"
])[0]
result.sort(key=lambda x: x.name)
diff --git a/tests/scripts/test_psa_compliance.py b/tests/scripts/test_psa_compliance.py
index d4e4979..7c09afc 100755
--- a/tests/scripts/test_psa_compliance.py
+++ b/tests/scripts/test_psa_compliance.py
@@ -39,7 +39,14 @@ def main(library_build_dir: str):
in_tf_psa_crypto_repo = build_tree.looks_like_tf_psa_crypto_root(root_dir)
crypto_name = build_tree.crypto_library_filename(root_dir)
- library_subdir = build_tree.crypto_core_directory(root_dir, relative=True)
+
+ # Temporary, while the crypto library is still located in the library
+ # directory. This will not be the case anymore when it will be built by
+ # the TF-PSA-Crypto build system.
+ if in_tf_psa_crypto_repo:
+ library_subdir = build_tree.crypto_core_directory(root_dir, relative=True)
+ else:
+ library_subdir = 'library'
crypto_lib_filename = (library_build_dir + '/' +
library_subdir + '/' +
diff --git a/tests/src/drivers/hash.c b/tests/src/drivers/hash.c
index 76ec12a..2416ba8 100644
--- a/tests/src/drivers/hash.c
+++ b/tests/src/drivers/hash.c
@@ -13,7 +13,7 @@
#include "test/drivers/hash.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_hash.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_hash.h"
#endif
mbedtls_test_driver_hash_hooks_t
diff --git a/tests/src/drivers/test_driver_aead.c b/tests/src/drivers/test_driver_aead.c
index 314ce83..080b4db 100644
--- a/tests/src/drivers/test_driver_aead.c
+++ b/tests/src/drivers/test_driver_aead.c
@@ -16,7 +16,7 @@
#include "mbedtls/constant_time.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_aead.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_aead.h"
#endif
mbedtls_test_driver_aead_hooks_t
diff --git a/tests/src/drivers/test_driver_asymmetric_encryption.c b/tests/src/drivers/test_driver_asymmetric_encryption.c
index 4fc8c9d..55e09b2 100644
--- a/tests/src/drivers/test_driver_asymmetric_encryption.c
+++ b/tests/src/drivers/test_driver_asymmetric_encryption.c
@@ -16,7 +16,7 @@
#include "test/drivers/key_management.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_rsa.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_rsa.h"
#endif
#define PSA_RSA_KEY_PAIR_MAX_SIZE \
diff --git a/tests/src/drivers/test_driver_cipher.c b/tests/src/drivers/test_driver_cipher.c
index 2bc751a..ace0ed3 100644
--- a/tests/src/drivers/test_driver_cipher.c
+++ b/tests/src/drivers/test_driver_cipher.c
@@ -19,7 +19,7 @@
#include "test/random.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_cipher.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_cipher.h"
#endif
#include <string.h>
diff --git a/tests/src/drivers/test_driver_key_agreement.c b/tests/src/drivers/test_driver_key_agreement.c
index 594fcd5..8a8e3a8 100644
--- a/tests/src/drivers/test_driver_key_agreement.c
+++ b/tests/src/drivers/test_driver_key_agreement.c
@@ -21,8 +21,8 @@
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
#include "libtestdriver1/tf-psa-crypto/include/psa/crypto.h"
-#include "libtestdriver1/library/psa_crypto_ecp.h"
-#include "libtestdriver1/library/psa_crypto_ffdh.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_ecp.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_ffdh.h"
#endif
mbedtls_test_driver_key_agreement_hooks_t
diff --git a/tests/src/drivers/test_driver_key_management.c b/tests/src/drivers/test_driver_key_management.c
index 2a87899..c0869f1 100644
--- a/tests/src/drivers/test_driver_key_management.c
+++ b/tests/src/drivers/test_driver_key_management.c
@@ -23,9 +23,9 @@
#include "test/random.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_ecp.h"
-#include "libtestdriver1/library/psa_crypto_rsa.h"
-#include "libtestdriver1/library/psa_crypto_ffdh.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_ecp.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_rsa.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_ffdh.h"
#endif
#include <string.h>
diff --git a/tests/src/drivers/test_driver_mac.c b/tests/src/drivers/test_driver_mac.c
index 9f8120b..de43e49 100644
--- a/tests/src/drivers/test_driver_mac.c
+++ b/tests/src/drivers/test_driver_mac.c
@@ -13,7 +13,7 @@
#include "test/drivers/mac.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_mac.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_mac.h"
#endif
mbedtls_test_driver_mac_hooks_t mbedtls_test_driver_mac_hooks =
diff --git a/tests/src/drivers/test_driver_pake.c b/tests/src/drivers/test_driver_pake.c
index 52395e4..9631101 100644
--- a/tests/src/drivers/test_driver_pake.c
+++ b/tests/src/drivers/test_driver_pake.c
@@ -14,7 +14,7 @@
#include "string.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_pake.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_pake.h"
#endif
mbedtls_test_driver_pake_hooks_t mbedtls_test_driver_pake_hooks =
diff --git a/tests/src/drivers/test_driver_signature.c b/tests/src/drivers/test_driver_signature.c
index 4fca5d1..02c6298 100644
--- a/tests/src/drivers/test_driver_signature.c
+++ b/tests/src/drivers/test_driver_signature.c
@@ -26,9 +26,9 @@
#include "test/random.h"
#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
-#include "libtestdriver1/library/psa_crypto_ecp.h"
-#include "libtestdriver1/library/psa_crypto_hash.h"
-#include "libtestdriver1/library/psa_crypto_rsa.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_ecp.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_hash.h"
+#include "libtestdriver1/tf-psa-crypto/core/psa_crypto_rsa.h"
#endif
#include <string.h>
diff --git a/tf-psa-crypto/CMakeLists.txt b/tf-psa-crypto/CMakeLists.txt
index 1425abb..1dc9f9f 100644
--- a/tf-psa-crypto/CMakeLists.txt
+++ b/tf-psa-crypto/CMakeLists.txt
@@ -36,3 +36,5 @@ if(LIB_INSTALL_DIR)
endif()
add_subdirectory(include)
+add_subdirectory(core)
+add_subdirectory(drivers)
diff --git a/tf-psa-crypto/core/.gitignore b/tf-psa-crypto/core/.gitignore
new file mode 100644
index 0000000..70d9d04
--- /dev/null
+++ b/tf-psa-crypto/core/.gitignore
@@ -0,0 +1,4 @@
+###START_GENERATED_FILES###
+/psa_crypto_driver_wrappers.h
+/psa_crypto_driver_wrappers_no_static.c
+###END_GENERATED_FILES###
diff --git a/tf-psa-crypto/core/CMakeLists.txt b/tf-psa-crypto/core/CMakeLists.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tf-psa-crypto/core/CMakeLists.txt
diff --git a/library/alignment.h b/tf-psa-crypto/core/alignment.h
index a17001d..a17001d 100644
--- a/library/alignment.h
+++ b/tf-psa-crypto/core/alignment.h
diff --git a/tf-psa-crypto/core/common.h b/tf-psa-crypto/core/common.h
new file mode 100644
index 0000000..3936ffd
--- /dev/null
+++ b/tf-psa-crypto/core/common.h
@@ -0,0 +1,435 @@
+/**
+ * \file common.h
+ *
+ * \brief Utility macros for internal use in the library
+ */
+/*
+ * Copyright The Mbed TLS Contributors
+ * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+ */
+
+#ifndef MBEDTLS_LIBRARY_COMMON_H
+#define MBEDTLS_LIBRARY_COMMON_H
+
+#include "mbedtls/build_info.h"
+#include "alignment.h"
+
+#include <assert.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stddef.h>
+
+#if defined(__ARM_NEON)
+#include <arm_neon.h>
+#define MBEDTLS_HAVE_NEON_INTRINSICS
+#elif defined(MBEDTLS_PLATFORM_IS_WINDOWS_ON_ARM64)
+#include <arm64_neon.h>
+#define MBEDTLS_HAVE_NEON_INTRINSICS
+#endif
+
+/** Helper to define a function as static except when building invasive tests.
+ *
+ * If a function is only used inside its own source file and should be
+ * declared `static` to allow the compiler to optimize for code size,
+ * but that function has unit tests, define it with
+ * ```
+ * MBEDTLS_STATIC_TESTABLE int mbedtls_foo(...) { ... }
+ * ```
+ * and declare it in a header in the `library/` directory with
+ * ```
+ * #if defined(MBEDTLS_TEST_HOOKS)
+ * int mbedtls_foo(...);
+ * #endif
+ * ```
+ */
+#if defined(MBEDTLS_TEST_HOOKS)
+#define MBEDTLS_STATIC_TESTABLE
+#else
+#define MBEDTLS_STATIC_TESTABLE static
+#endif
+
+#if defined(MBEDTLS_TEST_HOOKS)
+extern void (*mbedtls_test_hook_test_fail)(const char *test, int line, const char *file);
+#define MBEDTLS_TEST_HOOK_TEST_ASSERT(TEST) \
+ do { \
+ if ((!(TEST)) && ((*mbedtls_test_hook_test_fail) != NULL)) \
+ { \
+ (*mbedtls_test_hook_test_fail)( #TEST, __LINE__, __FILE__); \
+ } \
+ } while (0)
+#else
+#define MBEDTLS_TEST_HOOK_TEST_ASSERT(TEST)
+#endif /* defined(MBEDTLS_TEST_HOOKS) */
+
+/** \def ARRAY_LENGTH
+ * Return the number of elements of a static or stack array.
+ *
+ * \param array A value of array (not pointer) type.
+ *
+ * \return The number of elements of the array.
+ */
+/* A correct implementation of ARRAY_LENGTH, but which silently gives
+ * a nonsensical result if called with a pointer rather than an array. */
+#define ARRAY_LENGTH_UNSAFE(array) \
+ (sizeof(array) / sizeof(*(array)))
+
+#if defined(__GNUC__)
+/* Test if arg and &(arg)[0] have the same type. This is true if arg is
+ * an array but not if it's a pointer. */
+#define IS_ARRAY_NOT_POINTER(arg) \
+ (!__builtin_types_compatible_p(__typeof__(arg), \
+ __typeof__(&(arg)[0])))
+/* A compile-time constant with the value 0. If `const_expr` is not a
+ * compile-time constant with a nonzero value, cause a compile-time error. */
+#define STATIC_ASSERT_EXPR(const_expr) \
+ (0 && sizeof(struct { unsigned int STATIC_ASSERT : 1 - 2 * !(const_expr); }))
+
+/* Return the scalar value `value` (possibly promoted). This is a compile-time
+ * constant if `value` is. `condition` must be a compile-time constant.
+ * If `condition` is false, arrange to cause a compile-time error. */
+#define STATIC_ASSERT_THEN_RETURN(condition, value) \
+ (STATIC_ASSERT_EXPR(condition) ? 0 : (value))
+
+#define ARRAY_LENGTH(array) \
+ (STATIC_ASSERT_THEN_RETURN(IS_ARRAY_NOT_POINTER(array), \
+ ARRAY_LENGTH_UNSAFE(array)))
+
+#else
+/* If we aren't sure the compiler supports our non-standard tricks,
+ * fall back to the unsafe implementation. */
+#define ARRAY_LENGTH(array) ARRAY_LENGTH_UNSAFE(array)
+#endif
+/** Allow library to access its structs' private members.
+ *
+ * Although structs defined in header files are publicly available,
+ * their members are private and should not be accessed by the user.
+ */
+#define MBEDTLS_ALLOW_PRIVATE_ACCESS
+
+/**
+ * \brief Securely zeroize a buffer then free it.
+ *
+ * Similar to making consecutive calls to
+ * \c mbedtls_platform_zeroize() and \c mbedtls_free(), but has
+ * code size savings, and potential for optimisation in the future.
+ *
+ * Guaranteed to be a no-op if \p buf is \c NULL and \p len is 0.
+ *
+ * \param buf Buffer to be zeroized then freed.
+ * \param len Length of the buffer in bytes
+ */
+void mbedtls_zeroize_and_free(void *buf, size_t len);
+
+/** Return an offset into a buffer.
+ *
+ * This is just the addition of an offset to a pointer, except that this
+ * function also accepts an offset of 0 into a buffer whose pointer is null.
+ * (`p + n` has undefined behavior when `p` is null, even when `n == 0`.
+ * A null pointer is a valid buffer pointer when the size is 0, for example
+ * as the result of `malloc(0)` on some platforms.)
+ *
+ * \param p Pointer to a buffer of at least n bytes.
+ * This may be \p NULL if \p n is zero.
+ * \param n An offset in bytes.
+ * \return Pointer to offset \p n in the buffer \p p.
+ * Note that this is only a valid pointer if the size of the
+ * buffer is at least \p n + 1.
+ */
+static inline unsigned char *mbedtls_buffer_offset(
+ unsigned char *p, size_t n)
+{
+ return p == NULL ? NULL : p + n;
+}
+
+/** Return an offset into a read-only buffer.
+ *
+ * Similar to mbedtls_buffer_offset(), but for const pointers.
+ *
+ * \param p Pointer to a buffer of at least n bytes.
+ * This may be \p NULL if \p n is zero.
+ * \param n An offset in bytes.
+ * \return Pointer to offset \p n in the buffer \p p.
+ * Note that this is only a valid pointer if the size of the
+ * buffer is at least \p n + 1.
+ */
+static inline const unsigned char *mbedtls_buffer_offset_const(
+ const unsigned char *p, size_t n)
+{
+ return p == NULL ? NULL : p + n;
+}
+
+/* Always inline mbedtls_xor() for similar reasons as mbedtls_xor_no_simd(). */
+#if defined(__IAR_SYSTEMS_ICC__)
+#pragma inline = forced
+#elif defined(__GNUC__)
+__attribute__((always_inline))
+#endif
+/**
+ * Perform a fast block XOR operation, such that
+ * r[i] = a[i] ^ b[i] where 0 <= i < n
+ *
+ * \param r Pointer to result (buffer of at least \p n bytes). \p r
+ * may be equal to either \p a or \p b, but behaviour when
+ * it overlaps in other ways is undefined.
+ * \param a Pointer to input (buffer of at least \p n bytes)
+ * \param b Pointer to input (buffer of at least \p n bytes)
+ * \param n Number of bytes to process.
+ *
+ * \note Depending on the situation, it may be faster to use either mbedtls_xor() or
+ * mbedtls_xor_no_simd() (these are functionally equivalent).
+ * If the result is used immediately after the xor operation in non-SIMD code (e.g, in
+ * AES-CBC), there may be additional latency to transfer the data from SIMD to scalar
+ * registers, and in this case, mbedtls_xor_no_simd() may be faster. In other cases where
+ * the result is not used immediately (e.g., in AES-CTR), mbedtls_xor() may be faster.
+ * For targets without SIMD support, they will behave the same.
+ */
+static inline void mbedtls_xor(unsigned char *r,
+ const unsigned char *a,
+ const unsigned char *b,
+ size_t n)
+{
+ size_t i = 0;
+#if defined(MBEDTLS_EFFICIENT_UNALIGNED_ACCESS)
+#if defined(MBEDTLS_HAVE_NEON_INTRINSICS) && \
+ (!(defined(MBEDTLS_COMPILER_IS_GCC) && MBEDTLS_GCC_VERSION < 70300))
+ /* Old GCC versions generate a warning here, so disable the NEON path for these compilers */
+ for (; (i + 16) <= n; i += 16) {
+ uint8x16_t v1 = vld1q_u8(a + i);
+ uint8x16_t v2 = vld1q_u8(b + i);
+ uint8x16_t x = veorq_u8(v1, v2);
+ vst1q_u8(r + i, x);
+ }
+#if defined(__IAR_SYSTEMS_ICC__)
+ /* This if statement helps some compilers (e.g., IAR) optimise out the byte-by-byte tail case
+ * where n is a constant multiple of 16.
+ * For other compilers (e.g. recent gcc and clang) it makes no difference if n is a compile-time
+ * constant, and is a very small perf regression if n is not a compile-time constant. */
+ if (n % 16 == 0) {
+ return;
+ }
+#endif
+#elif defined(MBEDTLS_ARCH_IS_X64) || defined(MBEDTLS_ARCH_IS_ARM64)
+ /* This codepath probably only makes sense on architectures with 64-bit registers */
+ for (; (i + 8) <= n; i += 8) {
+ uint64_t x = mbedtls_get_unaligned_uint64(a + i) ^ mbedtls_get_unaligned_uint64(b + i);
+ mbedtls_put_unaligned_uint64(r + i, x);
+ }
+#if defined(__IAR_SYSTEMS_ICC__)
+ if (n % 8 == 0) {
+ return;
+ }
+#endif
+#else
+ for (; (i + 4) <= n; i += 4) {
+ uint32_t x = mbedtls_get_unaligned_uint32(a + i) ^ mbedtls_get_unaligned_uint32(b + i);
+ mbedtls_put_unaligned_uint32(r + i, x);
+ }
+#if defined(__IAR_SYSTEMS_ICC__)
+ if (n % 4 == 0) {
+ return;
+ }
+#endif
+#endif
+#endif
+ for (; i < n; i++) {
+ r[i] = a[i] ^ b[i];
+ }
+}
+
+/* Always inline mbedtls_xor_no_simd() as we see significant perf regressions when it does not get
+ * inlined (e.g., observed about 3x perf difference in gcm_mult_largetable with gcc 7 - 12) */
+#if defined(__IAR_SYSTEMS_ICC__)
+#pragma inline = forced
+#elif defined(__GNUC__)
+__attribute__((always_inline))
+#endif
+/**
+ * Perform a fast block XOR operation, such that
+ * r[i] = a[i] ^ b[i] where 0 <= i < n
+ *
+ * In some situations, this can perform better than mbedtls_xor() (e.g., it's about 5%
+ * better in AES-CBC).
+ *
+ * \param r Pointer to result (buffer of at least \p n bytes). \p r
+ * may be equal to either \p a or \p b, but behaviour when
+ * it overlaps in other ways is undefined.
+ * \param a Pointer to input (buffer of at least \p n bytes)
+ * \param b Pointer to input (buffer of at least \p n bytes)
+ * \param n Number of bytes to process.
+ *
+ * \note Depending on the situation, it may be faster to use either mbedtls_xor() or
+ * mbedtls_xor_no_simd() (these are functionally equivalent).
+ * If the result is used immediately after the xor operation in non-SIMD code (e.g, in
+ * AES-CBC), there may be additional latency to transfer the data from SIMD to scalar
+ * registers, and in this case, mbedtls_xor_no_simd() may be faster. In other cases where
+ * the result is not used immediately (e.g., in AES-CTR), mbedtls_xor() may be faster.
+ * For targets without SIMD support, they will behave the same.
+ */
+static inline void mbedtls_xor_no_simd(unsigned char *r,
+ const unsigned char *a,
+ const unsigned char *b,
+ size_t n)
+{
+ size_t i = 0;
+#if defined(MBEDTLS_EFFICIENT_UNALIGNED_ACCESS)
+#if defined(MBEDTLS_ARCH_IS_X64) || defined(MBEDTLS_ARCH_IS_ARM64)
+ /* This codepath probably only makes sense on architectures with 64-bit registers */
+ for (; (i + 8) <= n; i += 8) {
+ uint64_t x = mbedtls_get_unaligned_uint64(a + i) ^ mbedtls_get_unaligned_uint64(b + i);
+ mbedtls_put_unaligned_uint64(r + i, x);
+ }
+#if defined(__IAR_SYSTEMS_ICC__)
+ /* This if statement helps some compilers (e.g., IAR) optimise out the byte-by-byte tail case
+ * where n is a constant multiple of 8.
+ * For other compilers (e.g. recent gcc and clang) it makes no difference if n is a compile-time
+ * constant, and is a very small perf regression if n is not a compile-time constant. */
+ if (n % 8 == 0) {
+ return;
+ }
+#endif
+#else
+ for (; (i + 4) <= n; i += 4) {
+ uint32_t x = mbedtls_get_unaligned_uint32(a + i) ^ mbedtls_get_unaligned_uint32(b + i);
+ mbedtls_put_unaligned_uint32(r + i, x);
+ }
+#if defined(__IAR_SYSTEMS_ICC__)
+ if (n % 4 == 0) {
+ return;
+ }
+#endif
+#endif
+#endif
+ for (; i < n; i++) {
+ r[i] = a[i] ^ b[i];
+ }
+}
+
+/* Fix MSVC C99 compatible issue
+ * MSVC support __func__ from visual studio 2015( 1900 )
+ * Use MSVC predefine macro to avoid name check fail.
+ */
+#if (defined(_MSC_VER) && (_MSC_VER <= 1900))
+#define /*no-check-names*/ __func__ __FUNCTION__
+#endif
+
+/* Define `asm` for compilers which don't define it. */
+/* *INDENT-OFF* */
+#ifndef asm
+#if defined(__IAR_SYSTEMS_ICC__)
+#define asm __asm
+#else
+#define asm __asm__
+#endif
+#endif
+/* *INDENT-ON* */
+
+/*
+ * Define the constraint used for read-only pointer operands to aarch64 asm.
+ *
+ * This is normally the usual "r", but for aarch64_32 (aka ILP32,
+ * as found in watchos), "p" is required to avoid warnings from clang.
+ *
+ * Note that clang does not recognise '+p' or '=p', and armclang
+ * does not recognise 'p' at all. Therefore, to update a pointer from
+ * aarch64 assembly, it is necessary to use something like:
+ *
+ * uintptr_t uptr = (uintptr_t) ptr;
+ * asm( "ldr x4, [%x0], #8" ... : "+r" (uptr) : : )
+ * ptr = (void*) uptr;
+ *
+ * Note that the "x" in "%x0" is neccessary; writing "%0" will cause warnings.
+ */
+#if defined(__aarch64__) && defined(MBEDTLS_HAVE_ASM)
+#if UINTPTR_MAX == 0xfffffffful
+/* ILP32: Specify the pointer operand slightly differently, as per #7787. */
+#define MBEDTLS_ASM_AARCH64_PTR_CONSTRAINT "p"
+#elif UINTPTR_MAX == 0xfffffffffffffffful
+/* Normal case (64-bit pointers): use "r" as the constraint for pointer operands to asm */
+#define MBEDTLS_ASM_AARCH64_PTR_CONSTRAINT "r"
+#else
+#error "Unrecognised pointer size for aarch64"
+#endif
+#endif
+
+/* Always provide a static assert macro, so it can be used unconditionally.
+ * It will expand to nothing on some systems.
+ * Can be used outside functions (but don't add a trailing ';' in that case:
+ * the semicolon is included here to avoid triggering -Wextra-semi when
+ * MBEDTLS_STATIC_ASSERT() expands to nothing).
+ * Can't use the C11-style `defined(static_assert)` on FreeBSD, since it
+ * defines static_assert even with -std=c99, but then complains about it.
+ */
+#if defined(static_assert) && !defined(__FreeBSD__)
+#define MBEDTLS_STATIC_ASSERT(expr, msg) static_assert(expr, msg);
+#else
+#define MBEDTLS_STATIC_ASSERT(expr, msg)
+#endif
+
+#if defined(__has_builtin)
+#define MBEDTLS_HAS_BUILTIN(x) __has_builtin(x)
+#else
+#define MBEDTLS_HAS_BUILTIN(x) 0
+#endif
+
+/* Define compiler branch hints */
+#if MBEDTLS_HAS_BUILTIN(__builtin_expect)
+#define MBEDTLS_LIKELY(x) __builtin_expect(!!(x), 1)
+#define MBEDTLS_UNLIKELY(x) __builtin_expect(!!(x), 0)
+#else
+#define MBEDTLS_LIKELY(x) x
+#define MBEDTLS_UNLIKELY(x) x
+#endif
+
+/* MBEDTLS_ASSUME may be used to provide additional information to the compiler
+ * which can result in smaller code-size. */
+#if MBEDTLS_HAS_BUILTIN(__builtin_assume)
+/* clang provides __builtin_assume */
+#define MBEDTLS_ASSUME(x) __builtin_assume(x)
+#elif MBEDTLS_HAS_BUILTIN(__builtin_unreachable)
+/* gcc and IAR can use __builtin_unreachable */
+#define MBEDTLS_ASSUME(x) do { if (!(x)) __builtin_unreachable(); } while (0)
+#elif defined(_MSC_VER)
+/* Supported by MSVC since VS 2005 */
+#define MBEDTLS_ASSUME(x) __assume(x)
+#else
+#define MBEDTLS_ASSUME(x) do { } while (0)
+#endif
+
+/* For gcc -Os, override with -O2 for a given function.
+ *
+ * This will not affect behaviour for other optimisation settings, e.g. -O0.
+ */
+#if defined(MBEDTLS_COMPILER_IS_GCC) && defined(__OPTIMIZE_SIZE__)
+#define MBEDTLS_OPTIMIZE_FOR_PERFORMANCE __attribute__((optimize("-O2")))
+#else
+#define MBEDTLS_OPTIMIZE_FOR_PERFORMANCE
+#endif
+
+/* Suppress compiler warnings for unused functions and variables. */
+#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(__has_attribute)
+# if __has_attribute(unused)
+# define MBEDTLS_MAYBE_UNUSED __attribute__((unused))
+# endif
+#endif
+#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(__GNUC__)
+# define MBEDTLS_MAYBE_UNUSED __attribute__((unused))
+#endif
+#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(__IAR_SYSTEMS_ICC__) && defined(__VER__)
+/* IAR does support __attribute__((unused)), but only if the -e flag (extended language support)
+ * is given; the pragma always works.
+ * Unfortunately the pragma affects the rest of the file where it is used, but this is harmless.
+ * Check for version 5.2 or later - this pragma may be supported by earlier versions, but I wasn't
+ * able to find documentation).
+ */
+# if (__VER__ >= 5020000)
+# define MBEDTLS_MAYBE_UNUSED _Pragma("diag_suppress=Pe177")
+# endif
+#endif
+#if !defined(MBEDTLS_MAYBE_UNUSED) && defined(_MSC_VER)
+# define MBEDTLS_MAYBE_UNUSED __pragma(warning(suppress:4189))
+#endif
+#if !defined(MBEDTLS_MAYBE_UNUSED)
+# define MBEDTLS_MAYBE_UNUSED
+#endif
+
+#endif /* MBEDTLS_LIBRARY_COMMON_H */
diff --git a/library/psa_crypto.c b/tf-psa-crypto/core/psa_crypto.c
index 8100afc..8100afc 100644
--- a/library/psa_crypto.c
+++ b/tf-psa-crypto/core/psa_crypto.c
diff --git a/library/psa_crypto_aead.c b/tf-psa-crypto/core/psa_crypto_aead.c
index a201985..a201985 100644
--- a/library/psa_crypto_aead.c
+++ b/tf-psa-crypto/core/psa_crypto_aead.c
diff --git a/library/psa_crypto_aead.h b/tf-psa-crypto/core/psa_crypto_aead.h
index a339219..a339219 100644
--- a/library/psa_crypto_aead.h
+++ b/tf-psa-crypto/core/psa_crypto_aead.h
diff --git a/library/psa_crypto_cipher.c b/tf-psa-crypto/core/psa_crypto_cipher.c
index 3216c94..3216c94 100644
--- a/library/psa_crypto_cipher.c
+++ b/tf-psa-crypto/core/psa_crypto_cipher.c
diff --git a/library/psa_crypto_cipher.h b/tf-psa-crypto/core/psa_crypto_cipher.h
index cc56585..cc56585 100644
--- a/library/psa_crypto_cipher.h
+++ b/tf-psa-crypto/core/psa_crypto_cipher.h
diff --git a/library/psa_crypto_client.c b/tf-psa-crypto/core/psa_crypto_client.c
index 72f671d..72f671d 100644
--- a/library/psa_crypto_client.c
+++ b/tf-psa-crypto/core/psa_crypto_client.c
diff --git a/library/psa_crypto_core.h b/tf-psa-crypto/core/psa_crypto_core.h
index 9462d2e..9462d2e 100644
--- a/library/psa_crypto_core.h
+++ b/tf-psa-crypto/core/psa_crypto_core.h
diff --git a/library/psa_crypto_core_common.h b/tf-psa-crypto/core/psa_crypto_core_common.h
index 98fce2c..98fce2c 100644
--- a/library/psa_crypto_core_common.h
+++ b/tf-psa-crypto/core/psa_crypto_core_common.h
diff --git a/library/psa_crypto_driver_wrappers_no_static.h b/tf-psa-crypto/core/psa_crypto_driver_wrappers_no_static.h
index cd617f6..cd617f6 100644
--- a/library/psa_crypto_driver_wrappers_no_static.h
+++ b/tf-psa-crypto/core/psa_crypto_driver_wrappers_no_static.h
diff --git a/library/psa_crypto_ecp.c b/tf-psa-crypto/core/psa_crypto_ecp.c
index 95baff6..95baff6 100644
--- a/library/psa_crypto_ecp.c
+++ b/tf-psa-crypto/core/psa_crypto_ecp.c
diff --git a/library/psa_crypto_ecp.h b/tf-psa-crypto/core/psa_crypto_ecp.h
index a9f5d59..a9f5d59 100644
--- a/library/psa_crypto_ecp.h
+++ b/tf-psa-crypto/core/psa_crypto_ecp.h
diff --git a/library/psa_crypto_ffdh.c b/tf-psa-crypto/core/psa_crypto_ffdh.c
index ae38f6d..ae38f6d 100644
--- a/library/psa_crypto_ffdh.c
+++ b/tf-psa-crypto/core/psa_crypto_ffdh.c
diff --git a/library/psa_crypto_ffdh.h b/tf-psa-crypto/core/psa_crypto_ffdh.h
index 79accd1..79accd1 100644
--- a/library/psa_crypto_ffdh.h
+++ b/tf-psa-crypto/core/psa_crypto_ffdh.h
diff --git a/library/psa_crypto_hash.c b/tf-psa-crypto/core/psa_crypto_hash.c
index eeb7666..eeb7666 100644
--- a/library/psa_crypto_hash.c
+++ b/tf-psa-crypto/core/psa_crypto_hash.c
diff --git a/library/psa_crypto_hash.h b/tf-psa-crypto/core/psa_crypto_hash.h
index 0a7be80..0a7be80 100644
--- a/library/psa_crypto_hash.h
+++ b/tf-psa-crypto/core/psa_crypto_hash.h
diff --git a/library/psa_crypto_invasive.h b/tf-psa-crypto/core/psa_crypto_invasive.h
index 51c90c6..51c90c6 100644
--- a/library/psa_crypto_invasive.h
+++ b/tf-psa-crypto/core/psa_crypto_invasive.h
diff --git a/library/psa_crypto_its.h b/tf-psa-crypto/core/psa_crypto_its.h
index 877063b..877063b 100644
--- a/library/psa_crypto_its.h
+++ b/tf-psa-crypto/core/psa_crypto_its.h
diff --git a/library/psa_crypto_mac.c b/tf-psa-crypto/core/psa_crypto_mac.c
index 8fe6218..8fe6218 100644
--- a/library/psa_crypto_mac.c
+++ b/tf-psa-crypto/core/psa_crypto_mac.c
diff --git a/library/psa_crypto_mac.h b/tf-psa-crypto/core/psa_crypto_mac.h
index 2f614bc..2f614bc 100644
--- a/library/psa_crypto_mac.h
+++ b/tf-psa-crypto/core/psa_crypto_mac.h
diff --git a/library/psa_crypto_pake.c b/tf-psa-crypto/core/psa_crypto_pake.c
index 9ac2e8c..9ac2e8c 100644
--- a/library/psa_crypto_pake.c
+++ b/tf-psa-crypto/core/psa_crypto_pake.c
diff --git a/library/psa_crypto_pake.h b/tf-psa-crypto/core/psa_crypto_pake.h
index 3d3ee0c..3d3ee0c 100644
--- a/library/psa_crypto_pake.h
+++ b/tf-psa-crypto/core/psa_crypto_pake.h
diff --git a/library/psa_crypto_random_impl.h b/tf-psa-crypto/core/psa_crypto_random_impl.h
index 533fb2e..533fb2e 100644
--- a/library/psa_crypto_random_impl.h
+++ b/tf-psa-crypto/core/psa_crypto_random_impl.h
diff --git a/library/psa_crypto_rsa.c b/tf-psa-crypto/core/psa_crypto_rsa.c
index 2f613b3..2f613b3 100644
--- a/library/psa_crypto_rsa.c
+++ b/tf-psa-crypto/core/psa_crypto_rsa.c
diff --git a/library/psa_crypto_rsa.h b/tf-psa-crypto/core/psa_crypto_rsa.h
index ffeef26..ffeef26 100644
--- a/library/psa_crypto_rsa.h
+++ b/tf-psa-crypto/core/psa_crypto_rsa.h
diff --git a/library/psa_crypto_se.c b/tf-psa-crypto/core/psa_crypto_se.c
index 7a36a4f..7a36a4f 100644
--- a/library/psa_crypto_se.c
+++ b/tf-psa-crypto/core/psa_crypto_se.c
diff --git a/library/psa_crypto_se.h b/tf-psa-crypto/core/psa_crypto_se.h
index e0bd5ac..e0bd5ac 100644
--- a/library/psa_crypto_se.h
+++ b/tf-psa-crypto/core/psa_crypto_se.h
diff --git a/library/psa_crypto_slot_management.c b/tf-psa-crypto/core/psa_crypto_slot_management.c
index 9986a44..9986a44 100644
--- a/library/psa_crypto_slot_management.c
+++ b/tf-psa-crypto/core/psa_crypto_slot_management.c
diff --git a/library/psa_crypto_slot_management.h b/tf-psa-crypto/core/psa_crypto_slot_management.h
index a84be7d..a84be7d 100644
--- a/library/psa_crypto_slot_management.h
+++ b/tf-psa-crypto/core/psa_crypto_slot_management.h
diff --git a/library/psa_crypto_storage.c b/tf-psa-crypto/core/psa_crypto_storage.c
index 7d1317b..7d1317b 100644
--- a/library/psa_crypto_storage.c
+++ b/tf-psa-crypto/core/psa_crypto_storage.c
diff --git a/library/psa_crypto_storage.h b/tf-psa-crypto/core/psa_crypto_storage.h
index d7f5b18..d7f5b18 100644
--- a/library/psa_crypto_storage.h
+++ b/tf-psa-crypto/core/psa_crypto_storage.h
diff --git a/library/psa_its_file.c b/tf-psa-crypto/core/psa_its_file.c
index 9567137..9567137 100644
--- a/library/psa_its_file.c
+++ b/tf-psa-crypto/core/psa_its_file.c
diff --git a/library/psa_util.c b/tf-psa-crypto/core/psa_util.c
index 4ccc5b0..4ccc5b0 100644
--- a/library/psa_util.c
+++ b/tf-psa-crypto/core/psa_util.c
diff --git a/library/psa_util_internal.h b/tf-psa-crypto/core/psa_util_internal.h
index 70a08a0..70a08a0 100644
--- a/library/psa_util_internal.h
+++ b/tf-psa-crypto/core/psa_util_internal.h
diff --git a/3rdparty/CMakeLists.txt b/tf-psa-crypto/drivers/CMakeLists.txt
index fa149bd..517b6df 100644
--- a/3rdparty/CMakeLists.txt
+++ b/tf-psa-crypto/drivers/CMakeLists.txt
@@ -1,2 +1,3 @@
+add_subdirectory(builtin)
add_subdirectory(everest)
add_subdirectory(p256-m)
diff --git a/tf-psa-crypto/drivers/builtin/CMakeLists.txt b/tf-psa-crypto/drivers/builtin/CMakeLists.txt
new file mode 100644
index 0000000..febd4f0
--- /dev/null
+++ b/tf-psa-crypto/drivers/builtin/CMakeLists.txt
@@ -0,0 +1 @@
+add_subdirectory(src)
diff --git a/tf-psa-crypto/drivers/builtin/src/.gitignore b/tf-psa-crypto/drivers/builtin/src/.gitignore
new file mode 100644
index 0000000..f3923b1
--- /dev/null
+++ b/tf-psa-crypto/drivers/builtin/src/.gitignore
@@ -0,0 +1,4 @@
+###START_GENERATED_FILES###
+/error.c
+/version_features.c
+###END_GENERATED_FILES###
diff --git a/tf-psa-crypto/drivers/builtin/src/CMakeLists.txt b/tf-psa-crypto/drivers/builtin/src/CMakeLists.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tf-psa-crypto/drivers/builtin/src/CMakeLists.txt
diff --git a/library/aes.c b/tf-psa-crypto/drivers/builtin/src/aes.c
index 72e2c57..72e2c57 100644
--- a/library/aes.c
+++ b/tf-psa-crypto/drivers/builtin/src/aes.c
diff --git a/library/aesce.c b/tf-psa-crypto/drivers/builtin/src/aesce.c
index 6a9e0a1..6a9e0a1 100644
--- a/library/aesce.c
+++ b/tf-psa-crypto/drivers/builtin/src/aesce.c
diff --git a/library/aesce.h b/tf-psa-crypto/drivers/builtin/src/aesce.h
index a14d085..a14d085 100644
--- a/library/aesce.h
+++ b/tf-psa-crypto/drivers/builtin/src/aesce.h
diff --git a/library/aesni.c b/tf-psa-crypto/drivers/builtin/src/aesni.c
index 8e5bd55..8e5bd55 100644
--- a/library/aesni.c
+++ b/tf-psa-crypto/drivers/builtin/src/aesni.c
diff --git a/library/aesni.h b/tf-psa-crypto/drivers/builtin/src/aesni.h
index 59e27af..59e27af 100644
--- a/library/aesni.h
+++ b/tf-psa-crypto/drivers/builtin/src/aesni.h
diff --git a/library/aria.c b/tf-psa-crypto/drivers/builtin/src/aria.c
index d9f84cc..d9f84cc 100644
--- a/library/aria.c
+++ b/tf-psa-crypto/drivers/builtin/src/aria.c
diff --git a/library/asn1parse.c b/tf-psa-crypto/drivers/builtin/src/asn1parse.c
index e33fdf7..e33fdf7 100644
--- a/library/asn1parse.c
+++ b/tf-psa-crypto/drivers/builtin/src/asn1parse.c
diff --git a/library/asn1write.c b/tf-psa-crypto/drivers/builtin/src/asn1write.c
index 775a9ef..775a9ef 100644
--- a/library/asn1write.c
+++ b/tf-psa-crypto/drivers/builtin/src/asn1write.c
diff --git a/library/base64.c b/tf-psa-crypto/drivers/builtin/src/base64.c
index 9677dee..9677dee 100644
--- a/library/base64.c
+++ b/tf-psa-crypto/drivers/builtin/src/base64.c
diff --git a/library/base64_internal.h b/tf-psa-crypto/drivers/builtin/src/base64_internal.h
index a09bd23..a09bd23 100644
--- a/library/base64_internal.h
+++ b/tf-psa-crypto/drivers/builtin/src/base64_internal.h
diff --git a/library/bignum.c b/tf-psa-crypto/drivers/builtin/src/bignum.c
index c45fd5b..c45fd5b 100644
--- a/library/bignum.c
+++ b/tf-psa-crypto/drivers/builtin/src/bignum.c
diff --git a/library/bignum_core.c b/tf-psa-crypto/drivers/builtin/src/bignum_core.c
index 1a3e0b9..1a3e0b9 100644
--- a/library/bignum_core.c
+++ b/tf-psa-crypto/drivers/builtin/src/bignum_core.c
diff --git a/library/bignum_core.h b/tf-psa-crypto/drivers/builtin/src/bignum_core.h
index 92c8d47..92c8d47 100644
--- a/library/bignum_core.h
+++ b/tf-psa-crypto/drivers/builtin/src/bignum_core.h
diff --git a/library/bignum_mod.c b/tf-psa-crypto/drivers/builtin/src/bignum_mod.c
index dfd332a..dfd332a 100644
--- a/library/bignum_mod.c
+++ b/tf-psa-crypto/drivers/builtin/src/bignum_mod.c
diff --git a/library/bignum_mod.h b/tf-psa-crypto/drivers/builtin/src/bignum_mod.h
index 963d888..963d888 100644
--- a/library/bignum_mod.h
+++ b/tf-psa-crypto/drivers/builtin/src/bignum_mod.h
diff --git a/library/bignum_mod_raw.c b/tf-psa-crypto/drivers/builtin/src/bignum_mod_raw.c
index 5343bc6..5343bc6 100644
--- a/library/bignum_mod_raw.c
+++ b/tf-psa-crypto/drivers/builtin/src/bignum_mod_raw.c
diff --git a/library/bignum_mod_raw.h b/tf-psa-crypto/drivers/builtin/src/bignum_mod_raw.h
index 7bb4ca3..7bb4ca3 100644
--- a/library/bignum_mod_raw.h
+++ b/tf-psa-crypto/drivers/builtin/src/bignum_mod_raw.h
diff --git a/library/bignum_mod_raw_invasive.h b/tf-psa-crypto/drivers/builtin/src/bignum_mod_raw_invasive.h
index 94a0d06..94a0d06 100644
--- a/library/bignum_mod_raw_invasive.h
+++ b/tf-psa-crypto/drivers/builtin/src/bignum_mod_raw_invasive.h
diff --git a/library/block_cipher.c b/tf-psa-crypto/drivers/builtin/src/block_cipher.c
index 51cdcdf..51cdcdf 100644
--- a/library/block_cipher.c
+++ b/tf-psa-crypto/drivers/builtin/src/block_cipher.c
diff --git a/library/block_cipher_internal.h b/tf-psa-crypto/drivers/builtin/src/block_cipher_internal.h
index c57338b..c57338b 100644
--- a/library/block_cipher_internal.h
+++ b/tf-psa-crypto/drivers/builtin/src/block_cipher_internal.h
diff --git a/library/bn_mul.h b/tf-psa-crypto/drivers/builtin/src/bn_mul.h
index 0738469..0738469 100644
--- a/library/bn_mul.h
+++ b/tf-psa-crypto/drivers/builtin/src/bn_mul.h
diff --git a/library/camellia.c b/tf-psa-crypto/drivers/builtin/src/camellia.c
index b1c0a08..b1c0a08 100644
--- a/library/camellia.c
+++ b/tf-psa-crypto/drivers/builtin/src/camellia.c
diff --git a/library/ccm.c b/tf-psa-crypto/drivers/builtin/src/ccm.c
index 45ed697..45ed697 100644
--- a/library/ccm.c
+++ b/tf-psa-crypto/drivers/builtin/src/ccm.c
diff --git a/library/chacha20.c b/tf-psa-crypto/drivers/builtin/src/chacha20.c
index acaae5b..acaae5b 100644
--- a/library/chacha20.c
+++ b/tf-psa-crypto/drivers/builtin/src/chacha20.c
diff --git a/library/chachapoly.c b/tf-psa-crypto/drivers/builtin/src/chachapoly.c
index a1314ea..a1314ea 100644
--- a/library/chachapoly.c
+++ b/tf-psa-crypto/drivers/builtin/src/chachapoly.c
diff --git a/library/check_crypto_config.h b/tf-psa-crypto/drivers/builtin/src/check_crypto_config.h
index 6469e9f..6469e9f 100644
--- a/library/check_crypto_config.h
+++ b/tf-psa-crypto/drivers/builtin/src/check_crypto_config.h
diff --git a/library/cipher.c b/tf-psa-crypto/drivers/builtin/src/cipher.c
index 7f4c121..7f4c121 100644
--- a/library/cipher.c
+++ b/tf-psa-crypto/drivers/builtin/src/cipher.c
diff --git a/library/cipher_wrap.c b/tf-psa-crypto/drivers/builtin/src/cipher_wrap.c
index d2fee22..d2fee22 100644
--- a/library/cipher_wrap.c
+++ b/tf-psa-crypto/drivers/builtin/src/cipher_wrap.c
diff --git a/library/cipher_wrap.h b/tf-psa-crypto/drivers/builtin/src/cipher_wrap.h
index f229151..f229151 100644
--- a/library/cipher_wrap.h
+++ b/tf-psa-crypto/drivers/builtin/src/cipher_wrap.h
diff --git a/library/cmac.c b/tf-psa-crypto/drivers/builtin/src/cmac.c
index eda10d0..eda10d0 100644
--- a/library/cmac.c
+++ b/tf-psa-crypto/drivers/builtin/src/cmac.c
diff --git a/library/constant_time.c b/tf-psa-crypto/drivers/builtin/src/constant_time.c
index 95b8122..95b8122 100644
--- a/library/constant_time.c
+++ b/tf-psa-crypto/drivers/builtin/src/constant_time.c
diff --git a/library/constant_time_impl.h b/tf-psa-crypto/drivers/builtin/src/constant_time_impl.h
index 2a4574b..2a4574b 100644
--- a/library/constant_time_impl.h
+++ b/tf-psa-crypto/drivers/builtin/src/constant_time_impl.h
diff --git a/library/constant_time_internal.h b/tf-psa-crypto/drivers/builtin/src/constant_time_internal.h
index 26f6606..26f6606 100644
--- a/library/constant_time_internal.h
+++ b/tf-psa-crypto/drivers/builtin/src/constant_time_internal.h
diff --git a/library/ctr.h b/tf-psa-crypto/drivers/builtin/src/ctr.h
index aa48fb9..aa48fb9 100644
--- a/library/ctr.h
+++ b/tf-psa-crypto/drivers/builtin/src/ctr.h
diff --git a/library/ctr_drbg.c b/tf-psa-crypto/drivers/builtin/src/ctr_drbg.c
index 66d9d28..66d9d28 100644
--- a/library/ctr_drbg.c
+++ b/tf-psa-crypto/drivers/builtin/src/ctr_drbg.c
diff --git a/library/des.c b/tf-psa-crypto/drivers/builtin/src/des.c
index f0032b3..f0032b3 100644
--- a/library/des.c
+++ b/tf-psa-crypto/drivers/builtin/src/des.c
diff --git a/library/dhm.c b/tf-psa-crypto/drivers/builtin/src/dhm.c
index 75af8b7..75af8b7 100644
--- a/library/dhm.c
+++ b/tf-psa-crypto/drivers/builtin/src/dhm.c
diff --git a/library/ecdh.c b/tf-psa-crypto/drivers/builtin/src/ecdh.c
index b276c6a..b276c6a 100644
--- a/library/ecdh.c
+++ b/tf-psa-crypto/drivers/builtin/src/ecdh.c
diff --git a/library/ecdsa.c b/tf-psa-crypto/drivers/builtin/src/ecdsa.c
index 2f7a996..2f7a996 100644
--- a/library/ecdsa.c
+++ b/tf-psa-crypto/drivers/builtin/src/ecdsa.c
diff --git a/library/ecjpake.c b/tf-psa-crypto/drivers/builtin/src/ecjpake.c
index 628fb65..628fb65 100644
--- a/library/ecjpake.c
+++ b/tf-psa-crypto/drivers/builtin/src/ecjpake.c
diff --git a/library/ecp.c b/tf-psa-crypto/drivers/builtin/src/ecp.c
index 1e6b69b..1e6b69b 100644
--- a/library/ecp.c
+++ b/tf-psa-crypto/drivers/builtin/src/ecp.c
diff --git a/library/ecp_curves.c b/tf-psa-crypto/drivers/builtin/src/ecp_curves.c
index 97636a7..97636a7 100644
--- a/library/ecp_curves.c
+++ b/tf-psa-crypto/drivers/builtin/src/ecp_curves.c
diff --git a/library/ecp_curves_new.c b/tf-psa-crypto/drivers/builtin/src/ecp_curves_new.c
index 169247f..169247f 100644
--- a/library/ecp_curves_new.c
+++ b/tf-psa-crypto/drivers/builtin/src/ecp_curves_new.c
diff --git a/library/ecp_invasive.h b/tf-psa-crypto/drivers/builtin/src/ecp_invasive.h
index ff9f9ec..ff9f9ec 100644
--- a/library/ecp_invasive.h
+++ b/tf-psa-crypto/drivers/builtin/src/ecp_invasive.h
diff --git a/library/entropy.c b/tf-psa-crypto/drivers/builtin/src/entropy.c
index 7dcf067..7dcf067 100644
--- a/library/entropy.c
+++ b/tf-psa-crypto/drivers/builtin/src/entropy.c
diff --git a/library/entropy_poll.c b/tf-psa-crypto/drivers/builtin/src/entropy_poll.c
index 611768c..611768c 100644
--- a/library/entropy_poll.c
+++ b/tf-psa-crypto/drivers/builtin/src/entropy_poll.c
diff --git a/library/entropy_poll.h b/tf-psa-crypto/drivers/builtin/src/entropy_poll.h
index 6b4aec0..6b4aec0 100644
--- a/library/entropy_poll.h
+++ b/tf-psa-crypto/drivers/builtin/src/entropy_poll.h
diff --git a/library/gcm.c b/tf-psa-crypto/drivers/builtin/src/gcm.c
index 5dfac23..5dfac23 100644
--- a/library/gcm.c
+++ b/tf-psa-crypto/drivers/builtin/src/gcm.c
diff --git a/library/hkdf.c b/tf-psa-crypto/drivers/builtin/src/hkdf.c
index 631ac24..631ac24 100644
--- a/library/hkdf.c
+++ b/tf-psa-crypto/drivers/builtin/src/hkdf.c
diff --git a/library/hmac_drbg.c b/tf-psa-crypto/drivers/builtin/src/hmac_drbg.c
index 90174d5..90174d5 100644
--- a/library/hmac_drbg.c
+++ b/tf-psa-crypto/drivers/builtin/src/hmac_drbg.c
diff --git a/library/lmots.c b/tf-psa-crypto/drivers/builtin/src/lmots.c
index c51cb41..c51cb41 100644
--- a/library/lmots.c
+++ b/tf-psa-crypto/drivers/builtin/src/lmots.c
diff --git a/library/lmots.h b/tf-psa-crypto/drivers/builtin/src/lmots.h
index cf92d32..cf92d32 100644
--- a/library/lmots.h
+++ b/tf-psa-crypto/drivers/builtin/src/lmots.h
diff --git a/library/lms.c b/tf-psa-crypto/drivers/builtin/src/lms.c
index 7f7bec0..7f7bec0 100644
--- a/library/lms.c
+++ b/tf-psa-crypto/drivers/builtin/src/lms.c
diff --git a/library/md.c b/tf-psa-crypto/drivers/builtin/src/md.c
index 7e0465d..7e0465d 100644
--- a/library/md.c
+++ b/tf-psa-crypto/drivers/builtin/src/md.c
diff --git a/library/md5.c b/tf-psa-crypto/drivers/builtin/src/md5.c
index e4a87a2..e4a87a2 100644
--- a/library/md5.c
+++ b/tf-psa-crypto/drivers/builtin/src/md5.c
diff --git a/library/md_psa.h b/tf-psa-crypto/drivers/builtin/src/md_psa.h
index 028ba24..028ba24 100644
--- a/library/md_psa.h
+++ b/tf-psa-crypto/drivers/builtin/src/md_psa.h
diff --git a/library/md_wrap.h b/tf-psa-crypto/drivers/builtin/src/md_wrap.h
index dad1235..dad1235 100644
--- a/library/md_wrap.h
+++ b/tf-psa-crypto/drivers/builtin/src/md_wrap.h
diff --git a/library/memory_buffer_alloc.c b/tf-psa-crypto/drivers/builtin/src/memory_buffer_alloc.c
index 79b0a8b..79b0a8b 100644
--- a/library/memory_buffer_alloc.c
+++ b/tf-psa-crypto/drivers/builtin/src/memory_buffer_alloc.c
diff --git a/library/nist_kw.c b/tf-psa-crypto/drivers/builtin/src/nist_kw.c
index 8faafe4..8faafe4 100644
--- a/library/nist_kw.c
+++ b/tf-psa-crypto/drivers/builtin/src/nist_kw.c
diff --git a/library/oid.c b/tf-psa-crypto/drivers/builtin/src/oid.c
index 972a859..972a859 100644
--- a/library/oid.c
+++ b/tf-psa-crypto/drivers/builtin/src/oid.c
diff --git a/library/pem.c b/tf-psa-crypto/drivers/builtin/src/pem.c
index 0207601..0207601 100644
--- a/library/pem.c
+++ b/tf-psa-crypto/drivers/builtin/src/pem.c
diff --git a/library/pk.c b/tf-psa-crypto/drivers/builtin/src/pk.c
index 3fe51ea..3fe51ea 100644
--- a/library/pk.c
+++ b/tf-psa-crypto/drivers/builtin/src/pk.c
diff --git a/library/pk_ecc.c b/tf-psa-crypto/drivers/builtin/src/pk_ecc.c
index 86218ff..86218ff 100644
--- a/library/pk_ecc.c
+++ b/tf-psa-crypto/drivers/builtin/src/pk_ecc.c
diff --git a/library/pk_internal.h b/tf-psa-crypto/drivers/builtin/src/pk_internal.h
index e86a3a0..e86a3a0 100644
--- a/library/pk_internal.h
+++ b/tf-psa-crypto/drivers/builtin/src/pk_internal.h
diff --git a/library/pk_wrap.c b/tf-psa-crypto/drivers/builtin/src/pk_wrap.c
index 8710889..8710889 100644
--- a/library/pk_wrap.c
+++ b/tf-psa-crypto/drivers/builtin/src/pk_wrap.c
diff --git a/library/pk_wrap.h b/tf-psa-crypto/drivers/builtin/src/pk_wrap.h
index be096da..be096da 100644
--- a/library/pk_wrap.h
+++ b/tf-psa-crypto/drivers/builtin/src/pk_wrap.h
diff --git a/library/pkcs12.c b/tf-psa-crypto/drivers/builtin/src/pkcs12.c
index a3467b9..a3467b9 100644
--- a/library/pkcs12.c
+++ b/tf-psa-crypto/drivers/builtin/src/pkcs12.c
diff --git a/library/pkcs5.c b/tf-psa-crypto/drivers/builtin/src/pkcs5.c
index c6c5305..c6c5305 100644
--- a/library/pkcs5.c
+++ b/tf-psa-crypto/drivers/builtin/src/pkcs5.c
diff --git a/library/pkparse.c b/tf-psa-crypto/drivers/builtin/src/pkparse.c
index 4f6ee13..4f6ee13 100644
--- a/library/pkparse.c
+++ b/tf-psa-crypto/drivers/builtin/src/pkparse.c
diff --git a/library/pkwrite.c b/tf-psa-crypto/drivers/builtin/src/pkwrite.c
index 5e009c5..5e009c5 100644
--- a/library/pkwrite.c
+++ b/tf-psa-crypto/drivers/builtin/src/pkwrite.c
diff --git a/library/pkwrite.h b/tf-psa-crypto/drivers/builtin/src/pkwrite.h
index 01dc3d2..01dc3d2 100644
--- a/library/pkwrite.h
+++ b/tf-psa-crypto/drivers/builtin/src/pkwrite.h
diff --git a/library/platform.c b/tf-psa-crypto/drivers/builtin/src/platform.c
index 890c4cb..890c4cb 100644
--- a/library/platform.c
+++ b/tf-psa-crypto/drivers/builtin/src/platform.c
diff --git a/library/platform_util.c b/tf-psa-crypto/drivers/builtin/src/platform_util.c
index 0741bf5..0741bf5 100644
--- a/library/platform_util.c
+++ b/tf-psa-crypto/drivers/builtin/src/platform_util.c
diff --git a/library/poly1305.c b/tf-psa-crypto/drivers/builtin/src/poly1305.c
index c9ebe9e..c9ebe9e 100644
--- a/library/poly1305.c
+++ b/tf-psa-crypto/drivers/builtin/src/poly1305.c
diff --git a/library/ripemd160.c b/tf-psa-crypto/drivers/builtin/src/ripemd160.c
index b4fc3cd..b4fc3cd 100644
--- a/library/ripemd160.c
+++ b/tf-psa-crypto/drivers/builtin/src/ripemd160.c
diff --git a/library/rsa.c b/tf-psa-crypto/drivers/builtin/src/rsa.c
index 8a4c3d0..8a4c3d0 100644
--- a/library/rsa.c
+++ b/tf-psa-crypto/drivers/builtin/src/rsa.c
diff --git a/library/rsa_alt_helpers.c b/tf-psa-crypto/drivers/builtin/src/rsa_alt_helpers.c
index 5c265a9..5c265a9 100644
--- a/library/rsa_alt_helpers.c
+++ b/tf-psa-crypto/drivers/builtin/src/rsa_alt_helpers.c
diff --git a/library/rsa_alt_helpers.h b/tf-psa-crypto/drivers/builtin/src/rsa_alt_helpers.h
index f234036..f234036 100644
--- a/library/rsa_alt_helpers.h
+++ b/tf-psa-crypto/drivers/builtin/src/rsa_alt_helpers.h
diff --git a/library/rsa_internal.h b/tf-psa-crypto/drivers/builtin/src/rsa_internal.h
index f79c3b7..f79c3b7 100644
--- a/library/rsa_internal.h
+++ b/tf-psa-crypto/drivers/builtin/src/rsa_internal.h
diff --git a/library/sha1.c b/tf-psa-crypto/drivers/builtin/src/sha1.c
index dfbe481..dfbe481 100644
--- a/library/sha1.c
+++ b/tf-psa-crypto/drivers/builtin/src/sha1.c
diff --git a/library/sha256.c b/tf-psa-crypto/drivers/builtin/src/sha256.c
index 8b2c345..8b2c345 100644
--- a/library/sha256.c
+++ b/tf-psa-crypto/drivers/builtin/src/sha256.c
diff --git a/library/sha3.c b/tf-psa-crypto/drivers/builtin/src/sha3.c
index 5738559..5738559 100644
--- a/library/sha3.c
+++ b/tf-psa-crypto/drivers/builtin/src/sha3.c
diff --git a/library/sha512.c b/tf-psa-crypto/drivers/builtin/src/sha512.c
index 6dcea8d..6dcea8d 100644
--- a/library/sha512.c
+++ b/tf-psa-crypto/drivers/builtin/src/sha512.c
diff --git a/library/threading.c b/tf-psa-crypto/drivers/builtin/src/threading.c
index 85db243..85db243 100644
--- a/library/threading.c
+++ b/tf-psa-crypto/drivers/builtin/src/threading.c
diff --git a/library/timing.c b/tf-psa-crypto/drivers/builtin/src/timing.c
index 58f1c1e..58f1c1e 100644
--- a/library/timing.c
+++ b/tf-psa-crypto/drivers/builtin/src/timing.c
diff --git a/library/version.c b/tf-psa-crypto/drivers/builtin/src/version.c
index 0439733..0439733 100644
--- a/library/version.c
+++ b/tf-psa-crypto/drivers/builtin/src/version.c
diff --git a/3rdparty/everest/.gitignore b/tf-psa-crypto/drivers/everest/.gitignore
index f3c7a7c..f3c7a7c 100644
--- a/3rdparty/everest/.gitignore
+++ b/tf-psa-crypto/drivers/everest/.gitignore
diff --git a/3rdparty/everest/CMakeLists.txt b/tf-psa-crypto/drivers/everest/CMakeLists.txt
index 356931e..4958a79 100644
--- a/3rdparty/everest/CMakeLists.txt
+++ b/tf-psa-crypto/drivers/everest/CMakeLists.txt
@@ -13,7 +13,8 @@ target_include_directories(${everest_target}
$<INSTALL_INTERFACE:include>
PRIVATE include/everest
include/everest/kremlib
- ${MBEDTLS_DIR}/library/)
+ ${MBEDTLS_DIR}/library
+ ${MBEDTLS_DIR}/tf-psa-crypto/core)
# Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE
# This must be duplicated from library/CMakeLists.txt because
diff --git a/3rdparty/everest/Makefile.inc b/tf-psa-crypto/drivers/everest/Makefile.inc
index 8055ce9..8055ce9 100644
--- a/3rdparty/everest/Makefile.inc
+++ b/tf-psa-crypto/drivers/everest/Makefile.inc
diff --git a/3rdparty/everest/README.md b/tf-psa-crypto/drivers/everest/README.md
index bcf12c0..bcf12c0 100644
--- a/3rdparty/everest/README.md
+++ b/tf-psa-crypto/drivers/everest/README.md
diff --git a/3rdparty/everest/include/everest/Hacl_Curve25519.h b/tf-psa-crypto/drivers/everest/include/everest/Hacl_Curve25519.h
index e3f5ba4..e3f5ba4 100644
--- a/3rdparty/everest/include/everest/Hacl_Curve25519.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/Hacl_Curve25519.h
diff --git a/3rdparty/everest/include/everest/everest.h b/tf-psa-crypto/drivers/everest/include/everest/everest.h
index 392e792..392e792 100644
--- a/3rdparty/everest/include/everest/everest.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/everest.h
diff --git a/3rdparty/everest/include/everest/kremlib.h b/tf-psa-crypto/drivers/everest/include/everest/kremlib.h
index f06663f..f06663f 100644
--- a/3rdparty/everest/include/everest/kremlib.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlib.h
diff --git a/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h b/tf-psa-crypto/drivers/everest/include/everest/kremlib/FStar_UInt128.h
index d71c882..d71c882 100644
--- a/3rdparty/everest/include/everest/kremlib/FStar_UInt128.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlib/FStar_UInt128.h
diff --git a/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h b/tf-psa-crypto/drivers/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h
index 21560c4..21560c4 100644
--- a/3rdparty/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.h
diff --git a/3rdparty/everest/include/everest/kremlin/c_endianness.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/c_endianness.h
index 5cfde5d..5cfde5d 100644
--- a/3rdparty/everest/include/everest/kremlin/c_endianness.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/c_endianness.h
diff --git a/3rdparty/everest/include/everest/kremlin/internal/builtin.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/builtin.h
index 219b266..219b266 100644
--- a/3rdparty/everest/include/everest/kremlin/internal/builtin.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/builtin.h
diff --git a/3rdparty/everest/include/everest/kremlin/internal/callconv.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/callconv.h
index bf631ff..bf631ff 100644
--- a/3rdparty/everest/include/everest/kremlin/internal/callconv.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/callconv.h
diff --git a/3rdparty/everest/include/everest/kremlin/internal/compat.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/compat.h
index a5b8889..a5b8889 100644
--- a/3rdparty/everest/include/everest/kremlin/internal/compat.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/compat.h
diff --git a/3rdparty/everest/include/everest/kremlin/internal/debug.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/debug.h
index 44ac22c..44ac22c 100644
--- a/3rdparty/everest/include/everest/kremlin/internal/debug.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/debug.h
diff --git a/3rdparty/everest/include/everest/kremlin/internal/target.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/target.h
index b552f52..b552f52 100644
--- a/3rdparty/everest/include/everest/kremlin/internal/target.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/target.h
diff --git a/3rdparty/everest/include/everest/kremlin/internal/types.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/types.h
index b936f00..b936f00 100644
--- a/3rdparty/everest/include/everest/kremlin/internal/types.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/types.h
diff --git a/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/wasmsupport.h
index b44fa3f..b44fa3f 100644
--- a/3rdparty/everest/include/everest/kremlin/internal/wasmsupport.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/kremlin/internal/wasmsupport.h
diff --git a/3rdparty/everest/include/everest/vs2013/Hacl_Curve25519.h b/tf-psa-crypto/drivers/everest/include/everest/vs2013/Hacl_Curve25519.h
index 27ebe07..27ebe07 100644
--- a/3rdparty/everest/include/everest/vs2013/Hacl_Curve25519.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/vs2013/Hacl_Curve25519.h
diff --git a/3rdparty/everest/include/everest/vs2013/inttypes.h b/tf-psa-crypto/drivers/everest/include/everest/vs2013/inttypes.h
index 77003be..77003be 100644
--- a/3rdparty/everest/include/everest/vs2013/inttypes.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/vs2013/inttypes.h
diff --git a/3rdparty/everest/include/everest/vs2013/stdbool.h b/tf-psa-crypto/drivers/everest/include/everest/vs2013/stdbool.h
index dcae6d8..dcae6d8 100644
--- a/3rdparty/everest/include/everest/vs2013/stdbool.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/vs2013/stdbool.h
diff --git a/3rdparty/everest/include/everest/x25519.h b/tf-psa-crypto/drivers/everest/include/everest/x25519.h
index ef314d2..ef314d2 100644
--- a/3rdparty/everest/include/everest/x25519.h
+++ b/tf-psa-crypto/drivers/everest/include/everest/x25519.h
diff --git a/3rdparty/everest/library/Hacl_Curve25519.c b/tf-psa-crypto/drivers/everest/library/Hacl_Curve25519.c
index 450b9f8..450b9f8 100644
--- a/3rdparty/everest/library/Hacl_Curve25519.c
+++ b/tf-psa-crypto/drivers/everest/library/Hacl_Curve25519.c
diff --git a/3rdparty/everest/library/Hacl_Curve25519_joined.c b/tf-psa-crypto/drivers/everest/library/Hacl_Curve25519_joined.c
index a778160..a778160 100644
--- a/3rdparty/everest/library/Hacl_Curve25519_joined.c
+++ b/tf-psa-crypto/drivers/everest/library/Hacl_Curve25519_joined.c
diff --git a/3rdparty/everest/library/everest.c b/tf-psa-crypto/drivers/everest/library/everest.c
index fefc6a2..fefc6a2 100644
--- a/3rdparty/everest/library/everest.c
+++ b/tf-psa-crypto/drivers/everest/library/everest.c
diff --git a/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c b/tf-psa-crypto/drivers/everest/library/kremlib/FStar_UInt128_extracted.c
index 1060515..1060515 100644
--- a/3rdparty/everest/library/kremlib/FStar_UInt128_extracted.c
+++ b/tf-psa-crypto/drivers/everest/library/kremlib/FStar_UInt128_extracted.c
diff --git a/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c b/tf-psa-crypto/drivers/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c
index 0826524..0826524 100644
--- a/3rdparty/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c
+++ b/tf-psa-crypto/drivers/everest/library/kremlib/FStar_UInt64_FStar_UInt32_FStar_UInt16_FStar_UInt8.c
diff --git a/3rdparty/everest/library/legacy/Hacl_Curve25519.c b/tf-psa-crypto/drivers/everest/library/legacy/Hacl_Curve25519.c
index babebe4..babebe4 100644
--- a/3rdparty/everest/library/legacy/Hacl_Curve25519.c
+++ b/tf-psa-crypto/drivers/everest/library/legacy/Hacl_Curve25519.c
diff --git a/3rdparty/everest/library/x25519.c b/tf-psa-crypto/drivers/everest/library/x25519.c
index 83064dc..83064dc 100644
--- a/3rdparty/everest/library/x25519.c
+++ b/tf-psa-crypto/drivers/everest/library/x25519.c
diff --git a/3rdparty/p256-m/.gitignore b/tf-psa-crypto/drivers/p256-m/.gitignore
index f3c7a7c..f3c7a7c 100644
--- a/3rdparty/p256-m/.gitignore
+++ b/tf-psa-crypto/drivers/p256-m/.gitignore
diff --git a/3rdparty/p256-m/CMakeLists.txt b/tf-psa-crypto/drivers/p256-m/CMakeLists.txt
index d3dc813..f097ed1 100644
--- a/3rdparty/p256-m/CMakeLists.txt
+++ b/tf-psa-crypto/drivers/p256-m/CMakeLists.txt
@@ -11,7 +11,8 @@ target_include_directories(${p256m_target}
$<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/include>
$<BUILD_INTERFACE:${MBEDTLS_DIR}/tf-psa-crypto/drivers/builtin/include>
$<INSTALL_INTERFACE:include>
- PRIVATE ${MBEDTLS_DIR}/library/)
+ PRIVATE ${MBEDTLS_DIR}/library/
+ ${MBEDTLS_DIR}/tf-psa-crypto/core)
# Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE
# This must be duplicated from library/CMakeLists.txt because
diff --git a/3rdparty/p256-m/Makefile.inc b/tf-psa-crypto/drivers/p256-m/Makefile.inc
index 53bb55b..53bb55b 100644
--- a/3rdparty/p256-m/Makefile.inc
+++ b/tf-psa-crypto/drivers/p256-m/Makefile.inc
diff --git a/3rdparty/p256-m/README.md b/tf-psa-crypto/drivers/p256-m/README.md
index ec90f34..ec90f34 100644
--- a/3rdparty/p256-m/README.md
+++ b/tf-psa-crypto/drivers/p256-m/README.md
diff --git a/3rdparty/p256-m/p256-m/README.md b/tf-psa-crypto/drivers/p256-m/p256-m/README.md
index 5e88f71..5e88f71 100644
--- a/3rdparty/p256-m/p256-m/README.md
+++ b/tf-psa-crypto/drivers/p256-m/p256-m/README.md
diff --git a/3rdparty/p256-m/p256-m/p256-m.c b/tf-psa-crypto/drivers/p256-m/p256-m/p256-m.c
index 42c35b5..42c35b5 100644
--- a/3rdparty/p256-m/p256-m/p256-m.c
+++ b/tf-psa-crypto/drivers/p256-m/p256-m/p256-m.c
diff --git a/3rdparty/p256-m/p256-m/p256-m.h b/tf-psa-crypto/drivers/p256-m/p256-m/p256-m.h
index c267800..c267800 100644
--- a/3rdparty/p256-m/p256-m/p256-m.h
+++ b/tf-psa-crypto/drivers/p256-m/p256-m/p256-m.h
diff --git a/3rdparty/p256-m/p256-m_driver_entrypoints.c b/tf-psa-crypto/drivers/p256-m/p256-m_driver_entrypoints.c
index d272dcb..d272dcb 100644
--- a/3rdparty/p256-m/p256-m_driver_entrypoints.c
+++ b/tf-psa-crypto/drivers/p256-m/p256-m_driver_entrypoints.c
diff --git a/3rdparty/p256-m/p256-m_driver_entrypoints.h b/tf-psa-crypto/drivers/p256-m/p256-m_driver_entrypoints.h
index c740c45..c740c45 100644
--- a/3rdparty/p256-m/p256-m_driver_entrypoints.h
+++ b/tf-psa-crypto/drivers/p256-m/p256-m_driver_entrypoints.h