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