Skip to content

Commit 9023ee1

Browse files
committed
drivers: esp32: bt|wifi: adjust Kconfigs for TF-PSA-Crypto 1.x
- replace legacy Kconfigs with corresponding PSA_WANT ones. - extend Mbed TLS' CMake file in order to include these legacy ecdh module that was removed from TF-PSA-Crypto when ESP32 BT and WiFi drivers are built. Signed-off-by: Valerio Setti <vsetti@baylibre.com>
1 parent 313126b commit 9023ee1

File tree

3 files changed

+41
-10
lines changed

3 files changed

+41
-10
lines changed

‎drivers/bluetooth/hci/Kconfig.esp32‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -488,11 +488,16 @@ config ESP32_BT_LE_CRYPTO_STACK_MBEDTLS
488488
bool "mbedTLS crypto stack"
489489
depends on ESP32_BT_LE_SECURITY_ENABLE
490490
default y
491-
select MBEDTLS
492-
select MBEDTLS_ECP_C
493-
select MBEDTLS_ECP_DP_SECP256R1_ENABLED
494-
select MBEDTLS_ECDH_C
495-
select MBEDTLS_ENTROPY_C
491+
select PSA_CRYPTO
492+
select MBEDTLS_CTR_DRBG_C
493+
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
494+
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
495+
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE
496+
select PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
497+
select PSA_WANT_ECC_SECP_R1_256
498+
select PSA_WANT_ALG_ECDH
499+
# Keep access to legacy crypto headers
500+
select MBEDTLS_DECLARE_PRIVATE_IDENTIFIERS
496501
help
497502
Use mbedTLS library for BLE cryptographic operations.
498503

‎drivers/wifi/esp32/Kconfig.esp32‎

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ menuconfig WIFI_ESP32
1212
select NET_L2_ETHERNET_MGMT
1313
select WIFI_USE_NATIVE_NETWORKING
1414
select MBEDTLS
15+
# This is needed because some guards in TLS now require PSA crypto stuff
16+
# to be enabled
17+
select PSA_CRYPTO
1518
select THREAD_STACK_INFO
1619
select DYNAMIC_THREAD
1720
select DYNAMIC_THREAD_ALLOC
@@ -367,15 +370,19 @@ config ESP32_WIFI_SOFTAP_SUPPORT
367370

368371
config ESP32_WIFI_MBEDTLS_CRYPTO
369372
bool "Use MbedTLS crypto APIs"
370-
select MBEDTLS_ECP_C
371-
select MBEDTLS_ECDH_C
372-
select MBEDTLS_ECDSA_C
373+
select PSA_CRYPTO
374+
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_IMPORT
375+
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_EXPORT
376+
select PSA_WANT_KEY_TYPE_ECC_KEY_PAIR_GENERATE
377+
select PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY
378+
select PSA_WANT_ECC_SECP_R1_256
379+
select PSA_WANT_ALG_ECDH
380+
select PSA_WANT_ALG_ECDSA
381+
select PSA_WANT_ALG_CMAC
373382
select MBEDTLS_PKCS5_C
374383
select MBEDTLS_MD_C
375384
select MBEDTLS_PK_WRITE_C
376385
select MBEDTLS_CIPHER_MODE_CTR_ENABLED
377-
select MBEDTLS_CMAC
378-
select MBEDTLS_ENTROPY_C
379386
help
380387
Select this option to use MbedTLS crypto APIs which utilize hardware acceleration.
381388

‎modules/mbedtls/CMakeLists.txt‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,25 @@ if(CONFIG_MBEDTLS)
6767
set(MBEDTLS_EXPORT_REMOVED_HEADERS ON)
6868
endif()
6969

70+
# == DIRTY FIX ==
71+
# This is required because ESP32 drivers for BT and WiFi still rely on legacy
72+
# crypto.
73+
if(CONFIG_ESP32_BT_LE_CRYPTO_STACK_MBEDTLS OR CONFIG_ESP32_WIFI_MBEDTLS_CRYPTO)
74+
target_sources(builtin PRIVATE ${ZEPHYR_MBEDTLS_MODULE_DIR}/tf-psa-crypto/removed/ecdh.c)
75+
target_include_directories(builtin PRIVATE ${ZEPHYR_MBEDTLS_MODULE_DIR}/tf-psa-crypto/removed)
76+
target_compile_definitions(builtin PRIVATE
77+
# Setting legacy build symbols is not allowed so we need to set this
78+
# to bypass the check.
79+
-DTF_PSA_CRYPTO_CONFIG_CHECK_BYPASS
80+
-DMBEDTLS_ENTROPY_C
81+
-DMBEDTLS_BIGNUM_C
82+
-DMBEDTLS_ECP_C
83+
-DMBEDTLS_ECDH_C
84+
-DMBEDTLS_ECP_DP_SECP256R1_ENABLED
85+
)
86+
set(MBEDTLS_EXPORT_REMOVED_HEADERS ON)
87+
endif()
88+
7089
# Linking to "zephyr_interface" doesn't work in these case because these
7190
# are object libraries so properties are NOT propagated. We need to
7291
# explicitly do this.

0 commit comments

Comments
 (0)