1 /* 2 * SPDX-License-Identifier: BSD-3-Clause 3 * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors 4 * 5 */ 6 7 #include "psa/crypto.h" 8 #include "pico/rand.h" 9 #include <string.h> 10 11 #if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) mbedtls_psa_external_get_random(mbedtls_psa_external_random_context_t * context,uint8_t * output,size_t output_size,size_t * output_length)12psa_status_t mbedtls_psa_external_get_random(mbedtls_psa_external_random_context_t *context, 13 uint8_t *output, 14 size_t output_size, 15 size_t *output_length) 16 { 17 size_t i = 0; 18 size_t copy_size = 0; 19 size_t remaining_size = 0; 20 21 uint64_t tmp_trn; 22 23 (void) context; 24 25 while (i < output_size) { 26 remaining_size = output_size - i; 27 copy_size = (remaining_size > 8) ? 8 : remaining_size; 28 29 tmp_trn = get_rand_64(); 30 memcpy(output + i, (uint8_t *)(&tmp_trn), copy_size); 31 i += copy_size; 32 } 33 34 *output_length = output_size; 35 36 return PSA_SUCCESS; 37 } 38 #endif /* MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG */ 39