blob: cf2a6394038976ebc567ed53ef2f6f40334b0025 [file] [log] [blame]
/*
*
* Copyright 2016 NXP
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _APDUCOMM_H_
#define _APDUCOMM_H_
#include "sm_types.h"
/// @cond
#define APDU_OFFSET_CLA (0)
#define APDU_OFFSET_INS (1)
#define APDU_OFFSET_P1 (2)
#define APDU_OFFSET_P2 (3)
/// @endcond
#define APDU_OFFSET_LC (4) //!< Zero index based offset into the APDU of the LC field.
/**
* Contains APDU exchanged between Host and Secure Modulde.
*/
typedef struct
{
U8 cla;
U8 ins;
U8 p1;
U8 p2;
U8* pBuf;
U16 buflen;
U16 rxlen;
U8 extendedLength;
U8 hasData;
U16 lc;
U8 lcLength;
U8 hasLe;
U16 le;
U8 leLength;
U16 offset;
#ifdef TGT_A71CL
U8 txHasChkSum;
U16 txChkSum;
U16 txChkSumLength;
U8 rxHasChkSum;
U16 rxChkSum;
U16 rxChkSumLength;
#endif
} apdu_t;
/**
* Contains APDU TxRx case as described in ISO/IEC FDIS 7816-3 spec.
*/
typedef enum
{
APDU_TXRX_CASE_1 = 0x00,
APDU_TXRX_CASE_2 = 0x01,
APDU_TXRX_CASE_2E = 0x02,
APDU_TXRX_CASE_3 = 0x03,
APDU_TXRX_CASE_3E = 0x04,
APDU_TXRX_CASE_4 = 0x05,
APDU_TXRX_CASE_4E = 0x06,
APDU_TXRX_CASE_INVALID = 0xFF,
} apduTxRx_case_t;
#endif //_APDUCOMM_H_