xref: /optee_os/ta/pkcs11/include/pkcs11_ta.h (revision f8a3a2c4c454c8559fa3110ccd3678abf893b7df)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) 2018-2020, Linaro Limited
4  */
5 
6 #ifndef PKCS11_TA_H
7 #define PKCS11_TA_H
8 
9 #define PKCS11_TA_UUID { 0xfd02c9da, 0x306c, 0x48c7, \
10 			 { 0xa4, 0x9c, 0xbb, 0xd8, 0x27, 0xae, 0x86, 0xee } }
11 
12 /*
13  * Note on PKCS#11 TA commands ABI
14  *
15  * For evolution of the TA API and to not mess with the GPD TEE 4 parameters
16  * constraint, all the PKCS11 TA invocation commands use a subset of available
17  * the GPD TEE invocation parameter types.
18  *
19  * Param#0 is used for the so-called control arguments of the invoked command
20  * and for providing a PKCS#11 compliant status code for the request command.
21  * Param#0 is an in/out memory reference (aka memref[0]). The input buffer
22  * stores the command arguments serialized inside. The output buffer will
23  * store the 32bit TA retrun code for the command. Client shall get this
24  * return code and override the GPD TEE Client API legacy TEE_Result value.
25  *
26  * Param#1 is used for input data arguments of the invoked command.
27  * It is unused or is a input memory reference, aka memref[1].
28  * Evolution of the API may use memref[1] for output data as well.
29  *
30  * Param#2 is mostly used for output data arguments of the invoked command
31  * and for output handles generated from invoked commands.
32  * Few commands uses it for a secondary input data buffer argument.
33  * It is unused or is a input/output/in-out memory reference, aka memref[2].
34  *
35  * Param#3 is currently unused and reserved for evolution of the API.
36  */
37 #endif /*PKCS11_TA_H*/
38