#ifndef __ICDATA_ELEMENT_H #define __ICDATA_ELEMENT_H #pragma once #include #include using namespace std; #include "DeviceBaseClass.h" #define TAGLENFLAG 0x1f #define DATALENFLAG 0x80 #define DATALENVALUE 0x7f #define CARDHOLDERVERIFYFLAG 0x10 //TVR #define TVR_IC_Data_Miss 0x20 #define TVR_CVM_Unkown 0x40 #define TVR_CVM_Failed 0x80 #define TVR_APP_VERSION_UNMATCH 0x80 const int TVR_ISSUER_BANK_AUTH_FAIL = 0x40; //TSI const int TSI_CARDHOLDER_VERIFY = 0x40; const int TSI_TERM_RISK_MANAGE = 0x08; const int TSI_ISSUER_BANK_AUTH = 0x10; //AIP const int AIP_CARDHOLDER_VERIFY =0x10; const int AIP_TERM_RISK_MANAGE = 0x08; const int AIP_ISSUER_BANK_AUTH = 0x04; //定义GAC指令参数 const BYTE CLS_GENAC = 0x80; const BYTE CLS_EX_AUTH = 0x00; const BYTE CLS_GET_RESPONSE = 0x00; const BYTE INS_GENAC = 0xAE; const BYTE INS_EX_AUTH = 0x82; const BYTE INS_GET_RESPONSE = 0xc0; #define P2_GENAC 0x00 #define P1_GENAC_AAC 0x00 #define P1_GENAC_TC 0x40 #define P1_GENAC_ARQC 0x80 #define P1_GENAC_CDA 0x10 struct CommandData { //CommandData(BYTE bCls,BYTE bIns,BYTE bP1,BYTE bP2,BYTE bLc,LPBYTE* bPData,LPBYTE bLe) //{ // cls = bCls; // ins = bIns; // p1 = bP1; // p2 = bP2; // lc = bLc; // pData = *bPData; // le = *bLe; //} BYTE cls; BYTE ins; BYTE p1; BYTE p2; BYTE lc; LPBYTE pData; BYTE le; }; struct AIDData { LPBYTE aid; BYTE len; BYTE asiFlag;//oiltest read from machine 0 partly;1 completed }; struct ADFRecord { ADFRecord() { name = appLabel = priName = NULL; appPriID = 0x00; nameLen=appLabelLen=priNameLen=appPriIDLen=0; } LPBYTE name; LPBYTE appLabel; LPBYTE priName; BYTE appPriID; int nameLen,appLabelLen,priNameLen,appPriIDLen; }; struct PSEData { int level; bool model; bool mandotory; string tag; string value; }; struct ICData { ICData(bool f,BYTE b0,BYTE b1,int lev=0,DWORD len = 0,int num = 0,LPBYTE pData=NULL) { level = lev; tag[0] = b0; tag[1] = b1; bForm = f; lenth = len; value = pData; } ICData() { lenth = 0; value = NULL; } int level; BYTE tag[2]; bool bForm; int num;//标签是模板时表示所含tag数目 DWORD lenth; LPBYTE value; }; #endif //