Skip to content

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

@Leffinator

Description

@Leffinator

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions