xref: /optee_os/core/pta/scp03.c (revision c84eee6397bb8ae0745d9aa24b5228a58793378b)
1 // SPDX-License-Identifier: BSD-3-Clause
2 /*
3  * Copyright (C) Foundries Ltd. 2020 - All Rights Reserved
4  * Author: Jorge Ramirez <jorge@foundries.io>
5  */
6 
7 #include <crypto/crypto.h>
8 #include <kernel/pseudo_ta.h>
9 #include <scp03_pta.h>
10 
11 #define PTA_NAME "scp03.pta"
12 
13 static TEE_Result invoke_command(void *pSessionContext __unused,
14 				 uint32_t nCommandID, uint32_t pt,
15 				 TEE_Param params[TEE_NUM_PARAMS])
16 {
17 	const uint32_t exp_pt = TEE_PARAM_TYPES(TEE_PARAM_TYPE_VALUE_INPUT,
18 						TEE_PARAM_TYPE_NONE,
19 						TEE_PARAM_TYPE_NONE,
20 						TEE_PARAM_TYPE_NONE);
21 
22 	FMSG("command entry point for pseudo-TA \"%s\"", PTA_NAME);
23 
24 	if (pt != exp_pt)
25 		return TEE_ERROR_BAD_PARAMETERS;
26 
27 	switch (nCommandID) {
28 	case PTA_CMD_ENABLE_SCP03:
29 		return crypto_enable_scp03(params[0].value.a);
30 	default:
31 		break;
32 	}
33 
34 	return TEE_ERROR_NOT_IMPLEMENTED;
35 }
36 
37 pseudo_ta_register(.uuid = PTA_SCP03_UUID, .name = PTA_NAME,
38 		   .flags = PTA_DEFAULT_FLAGS,
39 		   .invoke_command_entry_point = invoke_command);
40