feat(tc): get entropy with PSA Crypto API
The PSA Crypto API is available with sending messages to RSE. Change
to invoke PSA Crypto API for getting entropy.
Change-Id: I4b2dc4eb99606c2425b64949d9c3f5c576883758
Signed-off-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Icen Zeyada <Icen.Zeyada2@arm.com>
diff --git a/plat/arm/board/tc/tc_trng.c b/plat/arm/board/tc/tc_trng.c
index e5ec48a..793a90f 100644
--- a/plat/arm/board/tc/tc_trng.c
+++ b/plat/arm/board/tc/tc_trng.c
@@ -11,6 +11,7 @@
#include <string.h>
#include <lib/mmio.h>
+#include <lib/psa/rse_platform_api.h>
#include <lib/smccc.h>
#include <lib/utils_def.h>
#include <plat/common/platform.h>
@@ -24,20 +25,33 @@
);
uuid_t plat_trng_uuid;
-/* Dummy implementation */
bool plat_get_entropy(uint64_t *out)
{
+#if CRYPTO_SUPPORT
+ psa_status_t status;
+
+ status = rse_platform_get_entropy((uint8_t *)out, sizeof(*out));
+ if (status != PSA_SUCCESS) {
+ printf("Failed for entropy read, psa_status=%d\n", status);
+ return false;
+ }
+#else
+ /* Dummy value */
*out = 0xABBAEDDAACDCDEAD;
+#endif
return true;
}
void plat_entropy_setup(void)
{
- uint64_t dummy;
+ uint64_t entropy;
plat_trng_uuid = _plat_trng_uuid;
/* Initialise the entropy source and trigger RNG generation */
- plat_get_entropy(&dummy);
+ if (!plat_get_entropy(&entropy)) {
+ ERROR("Failed to setup entropy\n");
+ panic();
+ }
}