3434#include "otp_keystore.h"
3535#endif
3636
37+ #if defined(WOLFCRYPT_TZ_PSA )
3738#if defined(WOLFBOOT_HASH_SHA256 )
3839#include <wolfssl/wolfcrypt/sha256.h>
39- #elif defined(WOLFBOOT_HASH_SHA384 ) || defined( WOLFBOOT_HASH_SHA3_384 )
40+ #elif defined(WOLFBOOT_HASH_SHA384 )
4041#include <wolfssl/wolfcrypt/sha512.h>
42+ #elif defined(WOLFBOOT_HASH_SHA3_384 )
43+ #include <wolfssl/wolfcrypt/sha3.h>
44+ #endif
4145#endif
4246
4347#define PLL_SRC_HSE 1
@@ -177,12 +181,16 @@ __attribute__((weak)) int stm32h5_obkeys_read_uds(uint8_t *out, size_t out_len)
177181}
178182#endif
179183
184+ #if defined(WOLFCRYPT_TZ_PSA )
180185static int uds_from_uid (uint8_t * out , size_t out_len )
181186{
182187 uint8_t uid [12 ];
183188#if defined(WOLFBOOT_HASH_SHA256 )
184189 uint8_t digest [SHA256_DIGEST_SIZE ];
185190 wc_Sha256 hash ;
191+ #elif defined(WOLFBOOT_HASH_SHA3_384 )
192+ uint8_t digest [SHA3_384_DIGEST_SIZE ];
193+ wc_Sha3 hash ;
186194#else
187195 uint8_t digest [SHA384_DIGEST_SIZE ];
188196 wc_Sha384 hash ;
@@ -207,6 +215,11 @@ static int uds_from_uid(uint8_t *out, size_t out_len)
207215 wc_Sha256Update (& hash , uid , sizeof (uid ));
208216 wc_Sha256Final (& hash , digest );
209217 copy_len = sizeof (digest );
218+ #elif defined(WOLFBOOT_HASH_SHA3_384 )
219+ wc_InitSha3_384 (& hash , NULL , INVALID_DEVID );
220+ wc_Sha3_384_Update (& hash , uid , sizeof (uid ));
221+ wc_Sha3_384_Final (& hash , digest );
222+ copy_len = sizeof (digest );
210223#else
211224 wc_InitSha384 (& hash );
212225 wc_Sha384Update (& hash , uid , sizeof (uid ));
@@ -270,6 +283,7 @@ int hal_uds_derive_key(uint8_t *out, size_t out_len)
270283 return -1 ;
271284#endif
272285}
286+ #endif /* WOLFCRYPT_TZ_PSA */
273287
274288int hal_attestation_get_lifecycle (uint32_t * lifecycle )
275289{
0 commit comments