xref: /optee_os/core/crypto/rng_hw.c (revision ea6cd9133a2627a0973855fa4c94bb02079e967e)
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>
6*ea6cd913SJens Wiklander #include <rng_support.h>
76e954a6eSJens Wiklander #include <tee/tee_cryp_utl.h>
86e954a6eSJens Wiklander #include <types_ext.h>
96e954a6eSJens Wiklander 
106e954a6eSJens Wiklander TEE_Result __weak crypto_rng_init(const void *data __unused,
116e954a6eSJens Wiklander 				  size_t dlen __unused)
126e954a6eSJens Wiklander {
136e954a6eSJens Wiklander 	return TEE_SUCCESS;
146e954a6eSJens Wiklander }
156e954a6eSJens Wiklander 
166e954a6eSJens Wiklander void __weak crypto_rng_add_event(enum crypto_rng_src sid __unused,
176e954a6eSJens Wiklander 				 unsigned int *pnum __unused,
186e954a6eSJens Wiklander 				 const void *data __unused,
196e954a6eSJens Wiklander 				 size_t dlen __unused)
206e954a6eSJens Wiklander {
216e954a6eSJens Wiklander }
226e954a6eSJens Wiklander 
236e954a6eSJens Wiklander TEE_Result __weak crypto_rng_read(void *buf, size_t blen)
246e954a6eSJens Wiklander {
25*ea6cd913SJens Wiklander 	uint8_t *b = buf;
26*ea6cd913SJens Wiklander 	size_t n;
27*ea6cd913SJens Wiklander 
28*ea6cd913SJens Wiklander 	if (!b)
29*ea6cd913SJens Wiklander 		return TEE_ERROR_BAD_PARAMETERS;
30*ea6cd913SJens Wiklander 
31*ea6cd913SJens Wiklander 	for (n = 0; n < blen; n++)
32*ea6cd913SJens Wiklander 		b[n] = hw_get_random_byte();
33*ea6cd913SJens Wiklander 
34*ea6cd913SJens Wiklander 	return TEE_SUCCESS;
356e954a6eSJens Wiklander }
366e954a6eSJens Wiklander 
37