From 185ec2bf78ebc09a1e12d91e12b5ed12506efd35 Mon Sep 17 00:00:00 2001 From: Valerio Setti Date: Mon, 20 May 2024 14:10:53 +0200 Subject: [PATCH] mbedtls: add support for the P256M driver Add support for the CortexM optimized implementation of secp256r1 code. It supports: - import & export - key agreement - sign & verify Signed-off-by: Valerio Setti --- modules/mbedtls/CMakeLists.txt | 8 ++++++++ modules/mbedtls/Kconfig.tls-generic | 8 ++++++++ modules/mbedtls/configs/config-tls-generic.h | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/modules/mbedtls/CMakeLists.txt b/modules/mbedtls/CMakeLists.txt index 3ea8a84d3b0..66f076ce464 100644 --- a/modules/mbedtls/CMakeLists.txt +++ b/modules/mbedtls/CMakeLists.txt @@ -134,6 +134,14 @@ zephyr_interface_library_named(mbedTLS) ) endif() + if(CONFIG_MBEDTLS_PSA_P256M_DRIVER_ENABLED) + list(APPEND crypto_source + ${ZEPHYR_CURRENT_MODULE_DIR}/3rdparty/p256-m/p256-m_driver_entrypoints.c + ${ZEPHYR_CURRENT_MODULE_DIR}/3rdparty/p256-m/p256-m/p256-m.c + ) + zephyr_library_include_directories(${ZEPHYR_CURRENT_MODULE_DIR}/library) + endif() + list(APPEND crypto_source ${ZEPHYR_CURRENT_MODULE_DIR}/library/pem.c ${ZEPHYR_CURRENT_MODULE_DIR}/library/pkcs12.c diff --git a/modules/mbedtls/Kconfig.tls-generic b/modules/mbedtls/Kconfig.tls-generic index 0fc2d57818b..1d2a876a772 100644 --- a/modules/mbedtls/Kconfig.tls-generic +++ b/modules/mbedtls/Kconfig.tls-generic @@ -502,6 +502,14 @@ config MBEDTLS_LMS depends on MBEDTLS_SHA256 select PSA_WANT_ALG_SHA_256 +config MBEDTLS_PSA_P256M_DRIVER_ENABLED + bool "P256-M driver" + depends on MBEDTLS_PSA_CRYPTO_C + imply PSA_WANT_ALG_SHA_256 + help + Enable support for the optimized sofware implementation of the secp256r1 + curve. + config MBEDTLS_SSL_DTLS_CONNECTION_ID bool "DTLS Connection ID extension" depends on MBEDTLS_DTLS diff --git a/modules/mbedtls/configs/config-tls-generic.h b/modules/mbedtls/configs/config-tls-generic.h index 623986777dd..d76b425a569 100644 --- a/modules/mbedtls/configs/config-tls-generic.h +++ b/modules/mbedtls/configs/config-tls-generic.h @@ -457,6 +457,10 @@ #define MBEDTLS_PSA_CRYPTO_C #define MBEDTLS_PSA_ASSUME_EXCLUSIVE_BUFFERS +#if defined(CONFIG_MBEDTLS_PSA_P256M_DRIVER_ENABLED) +#define MBEDTLS_PSA_P256M_DRIVER_ENABLED +#endif + #if defined(CONFIG_ARCH_POSIX) && !defined(CONFIG_PICOLIBC) #define MBEDTLS_PSA_KEY_SLOT_COUNT 64 #define MBEDTLS_PSA_CRYPTO_STORAGE_C