pico-sdk icon indicating copy to clipboard operation
pico-sdk copied to clipboard

mbedTLS: Linker error when using PSA function for ECDSA in SDK 2.2

Open Leffinator opened this issue 3 months ago • 1 comments

There is a linker error when using SDK Version 2.2 with mbedTLS 3.2 (default git submodule) and the PSA Interface of mbed TLS with ECDSA enabled: The same error is experienced when upgrading to mbedTLS Version 3.6.

.pico-sdk/sdk/2.2.0/lib/mbedtls/library/psa_crypto_ecp.c:448:(.text.mbedtls_psa_ecp_load_public_part+0x34): undefined reference to mbedtls_psa_get_random'`

I use following mbedtls_config.h defines:

#define MBEDTLS_NO_PLATFORM_ENTROPY
#define MBEDTLS_ENTROPY_HARDWARE_ALT
#define MBEDTLS_ENTROPY_C
#define MBEDTLS_CTR_DRBG_C
#define MBEDTLS_AES_C

#define MBEDTLS_PSA_CRYPTO_C
#define MBEDTLS_PSA_CRYPTO_CONFIG

#define MBEDTLS_SHA256_C
#define MBEDTLS_SHA256_ALT
#define MBEDTLS_SHA384_C

#define MBEDTLS_BIGNUM_C
#define MBEDTLS_ECP_C
#define MBEDTLS_ECDSA_C
#define MBEDTLS_ECP_DP_SECP384R1_ENABLED

and this crypto_config.h:

#ifndef PSA_CRYPTO_CONFIG_H
#define PSA_CRYPTO_CONFIG_H

/* ChaCha20-Poly1305 */
#define PSA_WANT_KEY_TYPE_CHACHA20        1
#define PSA_WANT_ALG_CHACHA20_POLY1305    1

/* ECDSA mit secp384r1 */
#define PSA_WANT_KEY_TYPE_ECC_KEY_PAIR    1
#define PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY  1
#define PSA_WANT_ECC_SECP_R1_384          1
#define PSA_WANT_ALG_ECDSA                1
#define PSA_WANT_HASH_SHA384              1
/* HKDF-SHA256 */
#define PSA_WANT_ALG_HKDF                 1
#define PSA_WANT_HASH_SHA256              1
#endif

The error can easily be resolved by adding "psutil.c" to src_cypto files in src/rp2_common/pico_mbedtls/CMakeLists.txt. Is this just an error or done on purpose?

Leffinator avatar Sep 18 '25 09:09 Leffinator

Probably just an oversight

peterharperuk avatar Sep 18 '25 09:09 peterharperuk