1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3 * Copyright (c) 2021 Rockchip Electronics Co. Ltd.
4 */
5 #include <stdio.h>
6 #include <tee_internal_api.h>
7 #include "rktest_handle.h"
8 #include "../rk_public_api/rk_trng_api.h"
9
10
ta_dump_hex(const char * name,const uint8_t * array,uint32_t len)11 void ta_dump_hex(const char *name, const uint8_t *array, uint32_t len)
12 {
13 uint32_t i;
14 char buffer[256];
15 char *p;
16
17 IMSG("=================== %s [%u] ================", name, len);
18
19 p = buffer;
20 for (i = 0; i < len; i++) {
21 if (i % 16 == 0 && i != 0) {
22 IMSG("%s", buffer);
23 p = buffer;
24 TEE_MemFill(buffer, 0x00, sizeof(buffer));
25 }
26 p += snprintf(p, 256, "%02x ", array[i]);
27 }
28 IMSG("%s\n", buffer);
29 }
30
handle_trng_read(void)31 TEE_Result handle_trng_read(void)
32 {
33 TEE_Result res = TEE_SUCCESS;
34 uint32_t read_len = 256;
35 uint8_t *read_data;
36
37 read_data = TEE_Malloc(read_len, 0);
38 if (!read_data) {
39 EMSG("Malloc context memory FAILED!");
40 return TEE_ERROR_OUT_OF_MEMORY;
41 }
42
43 res = rk_get_trng(read_data, read_len);
44 if (res != TEE_SUCCESS)
45 EMSG("rk_get_trng failed with code 0x%x", res);
46 else
47 ta_dump_hex("rk_get_trng success with data:", read_data, read_len);
48
49 TEE_Free(read_data);
50 return res;
51 }
52
53