blob: 5955f0ec6fc7fb87354ca8e9589bd203de6b7fe6 [file] [log] [blame]
Igor Opaniuk7ddaa782018-05-25 15:14:05 +03001// SPDX-License-Identifier: BSD-2-Clause
2/*
3 * Copyright (c) 2018, Linaro Limited
4 */
5
6#include <tee_internal_api.h>
7
8#include "seed_rng_taf.h"
9
10TEE_Result seed_rng_pool(uint32_t param_types, TEE_Param params[4])
11{
12 static const TEE_UUID system_uuid = PTA_SYSTEM_UUID;
13 TEE_TASessionHandle sess = TEE_HANDLE_NULL;
14 TEE_Result res;
15 uint32_t ret_orig;
16
17 if (param_types !=
18 TEE_PARAM_TYPES(TEE_PARAM_TYPE_MEMREF_INPUT,
19 TEE_PARAM_TYPE_NONE,
20 TEE_PARAM_TYPE_NONE,
21 TEE_PARAM_TYPE_NONE)) {
22 return TEE_ERROR_BAD_PARAMETERS;
23 }
24
25 if (!params[0].memref.size)
26 return TEE_ERROR_BAD_PARAMETERS;
27
28 res = TEE_OpenTASession(&system_uuid, 0, 0, NULL, &sess, &ret_orig);
29 if (res != TEE_SUCCESS) {
30 EMSG("TEE_OpenTASession failed");
31 goto cleanup_return;
32 }
33
34 res = TEE_InvokeTACommand(sess, 0, PTA_SYSTEM_ADD_RNG_ENTROPY,
35 param_types, params, &ret_orig);
36 if (res != TEE_SUCCESS) {
37 EMSG("TEE_InvokeTACommand failed");
38 goto cleanup_return;
39 }
40
41
42cleanup_return:
43 TEE_CloseTASession(sess);
44 return res;
45}