/* * Copyright (c) 2017-2024, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include #include #include #include #include #include #include #include #include #include #include DEFINE_SVC_UUID2(_plat_trng_uuid, 0x23523c58, 0x7448, 0x4083, 0x9d, 0x16, 0xe3, 0xfa, 0xb9, 0xf1, 0x73, 0xbc ); uuid_t plat_trng_uuid; 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 entropy; plat_trng_uuid = _plat_trng_uuid; /* Initialise the entropy source and trigger RNG generation */ if (!plat_get_entropy(&entropy)) { ERROR("Failed to setup entropy\n"); panic(); } }