xref: /optee_os/lib/libutee/include/pta_apdu.h (revision b0e1c5e485b7f19870af461662a127f39a793e72)
1*b0e1c5e4SJorge Ramirez-Ortiz /* SPDX-License-Identifier: BSD-3-Clause */
2*b0e1c5e4SJorge Ramirez-Ortiz /*
3*b0e1c5e4SJorge Ramirez-Ortiz  * Copyright (C) 2021, Foundries Limited
4*b0e1c5e4SJorge Ramirez-Ortiz  * Author: Jorge Ramirez <jorge@foundries.io>
5*b0e1c5e4SJorge Ramirez-Ortiz  */
6*b0e1c5e4SJorge Ramirez-Ortiz 
7*b0e1c5e4SJorge Ramirez-Ortiz #ifndef __PTA_APDU_H
8*b0e1c5e4SJorge Ramirez-Ortiz #define __PTA_APDU_H
9*b0e1c5e4SJorge Ramirez-Ortiz 
10*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_UUID { 0x3f3eb880, 0x3639, 0x11ec, \
11*b0e1c5e4SJorge Ramirez-Ortiz 			{ 0x9b, 0x9d, 0x0f, 0x3f, 0xc9, 0x46, 0x8f, 0x50 } }
12*b0e1c5e4SJorge Ramirez-Ortiz 
13*b0e1c5e4SJorge Ramirez-Ortiz /*
14*b0e1c5e4SJorge Ramirez-Ortiz  * ADPU based communication with the Secure Element
15*b0e1c5e4SJorge Ramirez-Ortiz  *
16*b0e1c5e4SJorge Ramirez-Ortiz  * [in]  value[0].a           Use APDU TXRX hints: PTA_APDU_TXRX_CASE_*
17*b0e1c5e4SJorge Ramirez-Ortiz  * [in]  memref[1].buffer     APDU header.
18*b0e1c5e4SJorge Ramirez-Ortiz  * [in]  memref[1].size       APDU header length.
19*b0e1c5e4SJorge Ramirez-Ortiz  * [in]  memref[2].buffer     request (APDU raw frame).
20*b0e1c5e4SJorge Ramirez-Ortiz  * [in]  memref[2].size       request length.
21*b0e1c5e4SJorge Ramirez-Ortiz  * [out] memref[3].buffer     response (APDU raw frame).
22*b0e1c5e4SJorge Ramirez-Ortiz  * [out] memref[3].size       response length.
23*b0e1c5e4SJorge Ramirez-Ortiz  *
24*b0e1c5e4SJorge Ramirez-Ortiz  * Result:
25*b0e1c5e4SJorge Ramirez-Ortiz  * TEE_SUCCESS - Invoke command success
26*b0e1c5e4SJorge Ramirez-Ortiz  * TEE_ERROR_BAD_PARAMETERS - Incorrect input param
27*b0e1c5e4SJorge Ramirez-Ortiz  * TEE_ERROR_NOT_IMPLEMENTED - Invoke command not implemented
28*b0e1c5e4SJorge Ramirez-Ortiz  * TEE_ERROR_GENERIC - Invoke command failure
29*b0e1c5e4SJorge Ramirez-Ortiz  */
30*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_CMD_TXRX_APDU_RAW_FRAME		0
31*b0e1c5e4SJorge Ramirez-Ortiz 
32*b0e1c5e4SJorge Ramirez-Ortiz /*
33*b0e1c5e4SJorge Ramirez-Ortiz  * Type identifier for the APDU message as described by Smart Card Standard
34*b0e1c5e4SJorge Ramirez-Ortiz  * ISO7816-4 about ADPU message bodies decoding convention:
35*b0e1c5e4SJorge Ramirez-Ortiz  *
36*b0e1c5e4SJorge Ramirez-Ortiz  * https://cardwerk.com/smart-card-standard-iso7816-4-section-5-basic-organizations/#chap5_3_2
37*b0e1c5e4SJorge Ramirez-Ortiz  */
38*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_NO_HINT	0
39*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_1		1
40*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_2		2
41*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_2E		3
42*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_3		4
43*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_3E		5
44*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_4		6
45*b0e1c5e4SJorge Ramirez-Ortiz #define PTA_APDU_TXRX_CASE_4E		7
46*b0e1c5e4SJorge Ramirez-Ortiz 
47*b0e1c5e4SJorge Ramirez-Ortiz #endif /* __PTA_APDU_H */
48