123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #ifndef __CARD_ASSIST_H
- #define __CARD_ASSIST_H
- #pragma once
- #include "stdafx.h"
- #include "ICDataElement.h"
- #include "CardIssuerClass.h"
- #include "RFICClass.h"
- #include "../../Module/mod_CardIssuerStand/CardIssuerStand_UserErrorCode.h"
- #include "../../Module/mod_cardissuerstore/CardIssuerStore_UserErrorCode.h"
- #include "../../Module/mod_ContactlessCard/ContactlessCard_UserErrorCode.h"
- #include <vector>
- using namespace std;
- enum CardReadType
- {
- CARD_MACHINE_ISSUER = 0,
- CARD_MACHINE_RFIC,
- CARD_MACHINE_ISSUER_RF,
- CARD_MACHINE_ISSUER_STORE,
- CARD_MACHINE_ISSUER_STORE_RF
- };
- enum TagVectorType
- {
- TAG_VECTOR_IC,
- TAG_VECTOR_BUS,
- };
- struct FormUnit
- {
- int fstSize;
- int sndSize;
- char *pFst;
- char *pSnd;
- };
- //#ifdef __cplusplus
- //extern "C" {
- //#endif
- //#define CARDASSIST_API __declspec(dllexport)
- const int MAX_TEST_SHOW = 1024;
- const int MAX_SEND_BUF = 1024;
- bool IsDoubleByteFlag(BYTE data);
- bool IsForm(LPBYTE data,int flagLen);
- int SplitICData(vector<ICData>& vResult,LPBYTE* origData,int start,int dataLen,int level,int origDataLen);
- int StrBuf2HexBuf(LPCTSTR strBuf,PBYTE* hexBuf);
- int HexBuf2StrBuf(PBYTE hexBuf,char** strBuf,DWORD len);
- int SplitFormString(vector<FormUnit> &vResult,const char *pData,int size,char fstP,char sndP);
- int char2int(char ch);
- void DbgInfo(CSimpleStringA apiName, long beginTime, long endTime, ErrorCodeEnum errCode, CSimpleStringA msg);
- void DbgInfo(CSimpleStringA msg);
- void DbgWarn(CSimpleStringA apiName, long beginTime, long endTime, ErrorCodeEnum errCode, CSimpleStringA msg);
- void DbgWarn(CSimpleStringA msg);
- class CCardProcess
- {
- public:
- CCardProcess():m_pARPC(NULL),m_pARC(NULL),m_pScript(NULL),m_pTACReject(NULL),m_pIACOnline(NULL),
- m_pTACOnline(NULL),m_pIACDefault(NULL),m_pTACDefault(NULL),m_lastErrMsg(""), m_lastApiName("")
- {
- m_lastErrCode = Error_Succeed;
- }
- ~CCardProcess();
- void DataInit();
- //0: success
- //-1£ºContactIC failed
- //-2£ºActiveICCard failed
- //-3£ºActiveContactlessICCard failed
- int DetectIfICCard(CardReadType eType, DeviceBaseClass* pCardX, int& cardType, bool bIssue = false);//cardType:0x41'A',type A; 0x42'B',type B; 0x4d'M',type M
-
- //0: success
- //-1£ºContactIC failed
- //-2£ºActiveICCard failed
- //-3£ºActiveContactlessICCard failed
- //-4£ºICCommand failed
- //-5£ºRFTypeABCommand failed
- int DetectAndReadICData(CardReadType eType, DeviceBaseClass* pCardX, CAutoArray<CSimpleStringA>pAIDs, int& cardType, bool bIssue = false);
- bool GetICDataFromCard(CardReadType eType,DeviceBaseClass *pCardX,CAutoArray<CSimpleStringA> pAIDs);
- //int SplitICData(vector<ICData>& vResult,LPBYTE* origData,int start,int dataLen,int level);
- ErrorCodeEnum BuildSupportedAppList(CardReadType eType,DeviceBaseClass *pCardX,vector<AIDData>& vAIDFromTerm);
- ErrorCodeEnum BuildAppListByAIDs(CardReadType eType,DeviceBaseClass *pCardX,vector<AIDData>& vAIDFromTerm);
- void ProcessADFRecord(vector<ICData>& record,int start);
- void ProcessDDFRecord(CardReadType eType,DeviceBaseClass *pCardX,vector<AIDData>& vAIDFromTerm,LPBYTE pDDF,int length);
- void ProcessSFIRecord(LPBYTE* rec,int lenRec);
- void ProcessRestrict();
- void CardholderVerify();
- void TermRiskManage();
- int TermActionAnalyze(CardReadType eType,DeviceBaseClass *pCardX,CSimpleStringA &result,bool bOnlineOnly,bool bCDA,BYTE &d9f27);
- int IssueBankAuth(CardReadType eType,DeviceBaseClass *pCardX);
- void ExecuteIssuerScript(CardReadType eType,DeviceBaseClass *pCardX);
- int TransEnd(CardReadType eType,DeviceBaseClass *pCardX,bool bCDA);
- void SplitBusinessData(const char *pData,int size);
- int SplitOnlineReplyData(const char *pData,int size);
- void GetBaseInfoNotInRecord(CardReadType eType,DeviceBaseClass *pCardX);
-
- int ConstructARQCData(const char *pATC,char *&pDataToARQC,char *&pSomeICData);
- int FindTagValue(TagVectorType eType,ICData& data,bool bLevel,int start=0,int end=0);
- int ToFindTagValue(vector<ICData>& vData,ICData& data,bool bLevel,int start,int end);
- ErrorCodeEnum AppSelected(CardReadType eType,DeviceBaseClass *pCardX,LPBYTE aid,BYTE lenAID);
- ErrorCodeEnum ReadData(CardReadType eType,DeviceBaseClass *pCardX,LPBYTE data,DWORD len);
- bool FillPDOL(ICData& pdol,LPBYTE* ppBYTE,DWORD& lenPDOL);
- bool FillCDOL(ICData& cdol,PBYTE &pBYTE,DWORD &lenPDOL);
- void ConstructAPDU(BYTE cls,BYTE ins,BYTE p1,BYTE p2,BYTE lc,LPBYTE data,LPBYTE le);
- BYTE GetP1(){return m_P1;}
- CSimpleStringA m_lastErrMsg;
- ErrorCodeEnum m_lastErrCode;
- CSimpleStringA m_lastApiName;
- private:
- CardIssuerClass *pCardI;
- RFICClass *pCardR;
- HMODULE m_hVerdorDll;
- ErrorCodeEnum m_testResult;
- CardIssuerStatus devStatus;
- BYTE m_CPUType,m_AIP[2],m_appVersion[2],m_TSI[2],m_TVR[5],m_IACReject[5],m_IACOnline[5],m_IACDefault[5]
- ,m_P1,m_randData[4],m_CVR[4];
- LPBYTE m_pTACReject,m_pIACOnline,m_pTACOnline,m_pIACDefault,m_pTACDefault;
- char *m_pARPC,*m_pARC,*m_pScript;//*m_pDataToARQC
- long xxTest;
- BYTE m_APDUsendBuf[1024];
- //BYTE *m_pAPDUSendBuf;
- int m_lenAPDU;
- char m_AuthCode[2];
- //ICData gpoData;
- vector<ICData> m_vICData,m_vBusData;
- vector<ADFRecord> m_vADFRec;
- vector<FormUnit> m_vOnlineReplyData;
- //int SplitTrack2(CSimpleStringA pTrack2,Track2Data &decodeData);
- //int SplitUnionPayTrack2(CSimpleStringA pTrack2,Track2Data &decodeData);
- void LogErrInfo(const char*);
- };
- //#ifdef __cplusplus
- // }
- //#endif
- #endif//__CARD_ASSIST_H
|