xref: /optee_os/core/crypto/rng_hw.c (revision 391a38544bcf9f4989b96cc5cfd47e557893394f)
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