16e954a6eSJens Wiklander // SPDX-License-Identifier: BSD-2-Clause 26e954a6eSJens Wiklander /* Copyright (c) 2018, Linaro Limited */ 36e954a6eSJens Wiklander 46e954a6eSJens Wiklander #include <compiler.h> 56e954a6eSJens Wiklander #include <crypto/crypto.h> 6ea6cd913SJens Wiklander #include <rng_support.h> 76e954a6eSJens Wiklander #include <tee/tee_cryp_utl.h> 86e954a6eSJens Wiklander #include <types_ext.h> 96e954a6eSJens Wiklander 10*391a3854SAndrew Davis TEE_Result __weak hw_get_random_bytes(void *buf, size_t blen) 11*391a3854SAndrew Davis { 12*391a3854SAndrew Davis uint8_t *b = buf; 13*391a3854SAndrew Davis size_t n = 0; 14*391a3854SAndrew Davis 15*391a3854SAndrew Davis for (n = 0; n < blen; n++) 16*391a3854SAndrew Davis b[n] = hw_get_random_byte(); 17*391a3854SAndrew Davis 18*391a3854SAndrew Davis return TEE_SUCCESS; 19*391a3854SAndrew Davis } 20*391a3854SAndrew Davis 21*391a3854SAndrew Davis /* This is a HW RNG, no need for seeding */ 226e954a6eSJens Wiklander TEE_Result __weak crypto_rng_init(const void *data __unused, 236e954a6eSJens Wiklander size_t dlen __unused) 246e954a6eSJens Wiklander { 256e954a6eSJens Wiklander return TEE_SUCCESS; 266e954a6eSJens Wiklander } 276e954a6eSJens Wiklander 28*391a3854SAndrew Davis /* This is a HW RNG, no need to add entropy */ 296e954a6eSJens Wiklander void __weak crypto_rng_add_event(enum crypto_rng_src sid __unused, 306e954a6eSJens Wiklander unsigned int *pnum __unused, 316e954a6eSJens Wiklander const void *data __unused, 326e954a6eSJens Wiklander size_t dlen __unused) 336e954a6eSJens Wiklander { 346e954a6eSJens Wiklander } 356e954a6eSJens Wiklander 366e954a6eSJens Wiklander TEE_Result __weak crypto_rng_read(void *buf, size_t blen) 376e954a6eSJens Wiklander { 38*391a3854SAndrew Davis if (!buf) 39ea6cd913SJens Wiklander return TEE_ERROR_BAD_PARAMETERS; 40ea6cd913SJens Wiklander 41*391a3854SAndrew Davis return hw_get_random_bytes(buf, blen); 426e954a6eSJens Wiklander } 43