From c29afb684eca31c011d75868a9873cc8a42163e2 Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Mon, 1 Jul 2024 14:50:54 +0200 Subject: [PATCH] Adjust build systems Adjust build systems such as we can built Mbed TLS in the default and full configuration. Signed-off-by: Ronald Cron --- 3rdparty/everest/CMakeLists.txt | 3 +- 3rdparty/p256-m/CMakeLists.txt | 3 +- CMakeLists.txt | 6 +- library/CMakeLists.txt | 190 ++++++++-------- library/Makefile | 204 +++++++++--------- programs/Makefile | 2 +- programs/test/CMakeLists.txt | 7 +- scripts/generate_errors.pl | 2 +- scripts/generate_features.pl | 2 +- scripts/generate_visualc_files.pl | 20 +- tests/CMakeLists.txt | 4 +- tests/Makefile | 4 +- tf-psa-crypto/CMakeLists.txt | 2 + tf-psa-crypto/core/CMakeLists.txt | 0 tf-psa-crypto/drivers/CMakeLists.txt | 1 + tf-psa-crypto/drivers/builtin/CMakeLists.txt | 1 + .../drivers/builtin/src/CMakeLists.txt | 0 17 files changed, 243 insertions(+), 208 deletions(-) create mode 100644 tf-psa-crypto/core/CMakeLists.txt create mode 100644 tf-psa-crypto/drivers/CMakeLists.txt create mode 100644 tf-psa-crypto/drivers/builtin/CMakeLists.txt create mode 100644 tf-psa-crypto/drivers/builtin/src/CMakeLists.txt diff --git a/3rdparty/everest/CMakeLists.txt b/3rdparty/everest/CMakeLists.txt index 356931e05f..4958a79162 100644 --- a/3rdparty/everest/CMakeLists.txt +++ b/3rdparty/everest/CMakeLists.txt @@ -13,7 +13,8 @@ target_include_directories(${everest_target} $ 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/p256-m/CMakeLists.txt b/3rdparty/p256-m/CMakeLists.txt index d3dc81328e..f097ed13a5 100644 --- a/3rdparty/p256-m/CMakeLists.txt +++ b/3rdparty/p256-m/CMakeLists.txt @@ -11,7 +11,8 @@ target_include_directories(${p256m_target} $ $ $ - 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/CMakeLists.txt b/CMakeLists.txt index 28d4b832a9..edf779088f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -357,7 +357,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,6 +372,8 @@ 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}/tf-psa-crypto/core + PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/tf-psa-crypto/drivers/builtin/src PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/everest/include) # Pass-through MBEDTLS_CONFIG_FILE and MBEDTLS_USER_CONFIG_FILE diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 69bd6f56f1..fbbeb5b52c 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) @@ -333,8 +335,10 @@ foreach(target IN LISTS target_libraries) $ $ 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 e4fb643ec2..7acee56b1f 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,86 +110,86 @@ 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 @@ -349,10 +354,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 +367,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 9b48cc0f05..1f2d7198c8 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 20cdf41890..0c9b11a4b0 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 $ ${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/generate_errors.pl b/scripts/generate_errors.pl index fb95c0d2ca..df546d7d6e 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 cea8c115a7..6972682cd2 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 e9267eb450..8e38290e64 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -25,7 +25,9 @@ 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'; @@ -55,10 +57,12 @@ my @include_directories = qw( ); 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, @@ -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 760a4e6bc5..fd15a5f25f 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 21ddf13745..69bf9f2c2b 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 diff --git a/tf-psa-crypto/CMakeLists.txt b/tf-psa-crypto/CMakeLists.txt index 1425abb4c6..1dc9f9f0db 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/CMakeLists.txt b/tf-psa-crypto/core/CMakeLists.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tf-psa-crypto/drivers/CMakeLists.txt b/tf-psa-crypto/drivers/CMakeLists.txt new file mode 100644 index 0000000000..f03055e347 --- /dev/null +++ b/tf-psa-crypto/drivers/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(builtin) diff --git a/tf-psa-crypto/drivers/builtin/CMakeLists.txt b/tf-psa-crypto/drivers/builtin/CMakeLists.txt new file mode 100644 index 0000000000..febd4f0ab6 --- /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/CMakeLists.txt b/tf-psa-crypto/drivers/builtin/src/CMakeLists.txt new file mode 100644 index 0000000000..e69de29bb2