To use ECDHE_RSA you need to enable the following Kconfig symbol:
Name: MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED Prompt: ECDHE RSA Prompt: ECDHE-RSA based ciphersuite modes Prompt: ECDHE-RSA based ciphersuite modes Type: bool Value: n Direct dependencies (=n): MBEDTLS_HAS_CIPHER_MODE_CIPHERSUITE_REQUIREMENTS(=y) && MBEDTLS_HAS_ECDH_CIPHERSUITE_REQUIREMENTS(=y) && MBEDTLS_HAS_RSA_CIPHERSUITE_REQUIREMENTS(=n) && MBEDTLS_TLS_LIBRARY(=y) && NRF_SECURITY(=y) (=n) || (MBEDTLS_PKCS1_V15(=n) || MBEDTLS_PKCS1_V21(=n)) && MBEDTLS_ECDH_C(=n) && !(NRF_SECURITY(=y) || NORDIC_SECURITY_BACKEND(=n)) && MBEDTLS_BUILTIN(=n) && MBEDTLS_CFG_FILE(=nrf-config.h) = "config-mbedtls.h" && MBEDTLS(=y) (=n) || (MBEDTLS_PKCS1_V15(=n) || MBEDTLS_PKCS1_V21(=n)) && MBEDTLS_ECDH_C(=n) && !(NRF_SECURITY(=y) || NORDIC_SECURITY_BACKEND(=n)) && MBEDTLS_BUILTIN(=n) && MBEDTLS_CFG_FILE(=nrf-config.h) = "config-mbedtls.h" && MBEDTLS(=y) && 0 (=n)
This symbol depends on MBEDTLS_HAS_RSA_CIPHERSUITE_REQUIREMENTS:
Name: MBEDTLS_HAS_RSA_CIPHERSUITE_REQUIREMENTS Type: bool Value: n Direct dependencies (=n): MBEDTLS_RSA_C(=n) && MBEDTLS_PKCS1_V15(=n) && MBEDTLS_TLS_LIBRARY(=y) && NRF_SECURITY(=y)
This symbol depends on MBEDTLS_RSA_C:
Name: MBEDTLS_RSA_C Prompt: RSA - Rivest-Shamir-Adleman cryptosystem Prompt: RSA base support Prompt: RSA base support Type: bool Value: n Help: Enable RSA cryptosystem support. MBEDTLS_RSA_C setting in mbed TLS config file. Direct dependencies (=n): OPENTHREAD(=n) || MBEDTLS_LEGACY_CRYPTO_C(=n) && NRF_SECURITY(=y) (=n) || MBEDTLS_BUILTIN(=n) && MBEDTLS_CFG_FILE(=nrf-config.h) = "config-mbedtls.h" && MBEDTLS(=y) (=n) || MBEDTLS_BUILTIN(=n) && MBEDTLS_CFG_FILE(=nrf-config.h) = "config-mbedtls.h" && MBEDTLS(=y) && 0 (=n)
Which depends on MBEDTLS_LEGACY_CRYPTO_C.
I saw a similar post created about this nRF9160: Offloaded sockets can't use MBEDTLS_USE_PSA_CRYPTO with RSA Certificates
However, this affects not only nRF91xx, but also nRF54Lx and potentially other device series.
Question: If I enable MBEDTLS_LEGACY_CRYPTO_C is it going to use it only for RSA (& won't use the PSA API) or for everything else too?
We can compare this with MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED:
Name: MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED Prompt: ECDHE ECDSA Prompt: ECDHE-ECDSA based ciphersuite modes Prompt: ECDHE-ECDSA based ciphersuite modes Type: bool Value: y Direct dependencies (=y): MBEDTLS_HAS_CIPHER_MODE_CIPHERSUITE_REQUIREMENTS(=y) && MBEDTLS_HAS_ECDH_CIPHERSUITE_REQUIREMENTS(=y) && MBEDTLS_HAS_ECDSA_CIPHERSUITE_REQUIREMENTS(=y) && MBEDTLS_TLS_LIBRARY(=y) && NRF_SECURITY(=y) (=y) || ((MBEDTLS_ECDH_C(=n) && MBEDTLS_ECDSA_C(=n)) || (PSA_WANT_ALG_ECDH(=y) && PSA_WANT_ALG_ECDSA(=y))) && !(NRF_SECURITY(=y) || NORDIC_SECURITY_BACKEND(=n)) && MBEDTLS_BUILTIN(=n) && MBEDTLS_CFG_FILE(=nrf-config.h) = "config-mbedtls.h" && MBEDTLS(=y) (=n) || ((MBEDTLS_ECDH_C(=n) && MBEDTLS_ECDSA_C(=n)) || (PSA_WANT_ALG_ECDH(=y) && PSA_WANT_ALG_ECDSA(=y))) && !(NRF_SECURITY(=y) || NORDIC_SECURITY_BACKEND(=n)) && MBEDTLS_BUILTIN(=n) && MBEDTLS_CFG_FILE(=nrf-config.h) = "config-mbedtls.h" && MBEDTLS(=y) && 0 (=n)
Name: MBEDTLS_HAS_ECDSA_CIPHERSUITE_REQUIREMENTS Type: bool Value: y Direct dependencies (=y): (MBEDTLS_ECP_C(=n) && MBEDTLS_ECDSA_C(=n) && MBEDTLS_SHA256_C(=n)) || (PSA_WANT_ALG_ECDSA(=y) && PSA_WANT_ALG_SHA_256(=y) && MBEDTLS_USE_PSA_CRYPTO(=y)) (=y) && MBEDTLS_TLS_LIBRARY(=y) && NRF_SECURITY(=y)
We can see it's possible to have a combination of options that enable this Kconfig symbol:
(PSA_WANT_ALG_ECDSA(=y) && PSA_WANT_ALG_SHA_256(=y) && MBEDTLS_USE_PSA_CRYPTO(=y)) (=y)