Apologies, my analysis was wrong. With MBEDTLS_PSA_ITS_FILE_C disabled, Mbed TLS builds fine if I use a minimal version of the header psa/internal_trusted_storage.h. I can reproduce the build failure if I add https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git/tree/interface/include to the compiler's include path. So the problem is an incompatibility between Mbed TLS headers and TF-M headers. I don't know yet which side(s) needs to be fixed.

Best regards,

--
Gilles Peskine

On 05/05/2023 17:47, Gilles Peskine via mbed-tls wrote:
With Archanaa's help I've analyzed the problem and filed an issue at https://github.com/Mbed-TLS/mbedtls/issues/7559 .

This problem is most likely to arise if you build with MBEDTLS_PSA_CRYPTO_STORAGE_C enabled but MBEDTLS_PSA_ITS_FILE_C disabled, relying on a native implementation of PSA ITS. As a quick fix, you can add the line
#include "common.h"
at the top of library/psa_crypto_core.h.

Best regards,

--
Gilles Peskine
Mbed TLS developer

On 05/05/2023 12:19, Gilles Peskine via mbed-tls wrote:
Hi,

Can you share your configuration and compiler (including flags and target)? This isn't happening in any of the configurations we test on our CI, but psa_crypto_core.h doesn't include the correct header directly, and maybe the indirect include that makes it work for us is omitted in some configurations.

Library and test code should define MBEDTLS_ALLOW_PRIVATE_ACCESS, but it's missing in some places. We'll fix that, but it would be good to know what configurations make it actually break.

Best regards,

--
Gilles Peskine
Mbed TLS developer

On 04/05/2023 21:56, S Krishnan, Archanaa via mbed-tls wrote:

Hello,

 

In mbedLS v3.4.0, I came across a build error that there are no members for type and flag in psa_core_keyattributes_t  structure.

 

The following functions in psa_crypto_core.h  access private members type and flag of psa_core_keyattributes_t structure without the MBEDTLS_PRIBATE() private access.

  • psa_is_key_slot_occupied()
  • psa_key_slot_get_flags()
  • psa_key_slot_set_flags()
  • psa_key_slot_set_bits_in_flags()
  • psa_key_slot_clear_bits()

 

Updating to private access for attribute struct members in psa_crypto_core.h fixed the build errors.

 

Regards,
Archanaa