/*
 * TransmitApdu_tl.h
 */

#ifndef TRANSMIT_APDU_V2_TL_H_
#define TRANSMIT_APDU_V2_TL_H_

#include "TZ_Vendor_tl.h"
#include "tz_esecomm_transmit_apdu_v2_msg.h"
#include "tl_esecomm_ctx.h"

/* APDU CLA */
#define XMIT_APDU_CLA_JCE                   0x80

/* APDU INS */
#define XMIT_APDU_INS_saveKey               0x01
#define XMIT_APDU_INS_removeKey             0x02
#define XMIT_APDU_INS_encryptPKI            0x05
#define XMIT_APDU_INS_decryptPKI            0x07
#define XMIT_APDU_INS_generateKeyPair       0x09

/* APDU P1 */
#define XMIT_APDU_P1_NULL                   0x00
#define XMIT_APDU_P1_EVENT_EXP              0x01
#define XMIT_APDU_P1_EVENT_MOD              0x02
#define XMIT_APDU_P1_EVENT_TXT              0x03

/* APDU P2 */
#define XMIT_APDU_P2_NULL                   0x00

/* APDU LC */
#define XMIT_APDU_LC_DEFAULT                0x00
#define XMIT_APDU_LC_saveKey                0x80 //FIXME: sizeof privateKeyExponent

/* APDU CPDU TYPE */
#define XMIT_APDU_CPDUTYPE_DEFAULT          0x00

/* APDU LE */
#define XMIT_APDU_LE_DEFAULT                0x00

/* APDU LE TYPE */
#define XMIT_APDU_LETYPE_NO_EXPECT_RESPONSE 0x00
#define XMIT_APDU_LETYPE_EXPECT_RESPONSE    0x01

uint32_t process_TransmitApduV2(
	tl_esecomm_ctx_t * g_tl_esecomm_ctx,
	tz_esecomm_transmit_apdu_v2_payload_t * sendmsg,
	tz_esecomm_transmit_apdu_v2_payload_t * respmsg
);


#endif /* TRANSMIT_APDU_V2_TL_H_ */
