PinPadClassImpl_ZT598M.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. #pragma once
  2. #ifndef PINPADCLASSIMPL_ZT598M_H
  3. #define PINPADCLASSIMPL_ZT598M_H
  4. #pragma pack(push,1)
  5. #include "common.h"
  6. //招行公共头文件
  7. #include "stdafx.h"
  8. #include <string.h>
  9. #include "ZT598MGFD_DevCtrl.h"
  10. #include <assert.h>
  11. //#include "log4vendor.h"
  12. typedef struct tag_KeyReadData
  13. {
  14. DWORD dwSize; //本次StartInput到StopInput之间, ZT_PIN_ReadInputData所读取的所有按键数量
  15. DWORD dwCurrentRead; //当前传递给KeyRead函数的字符指针
  16. BYTE data[MAX_PIN_READ_SIZE]; //本次StartInput到StopInput之间, ZT_PIN_ReadInputData所读取的所有按键字符
  17. } KeyReadData, *LPKeyReadData;
  18. typedef struct tag_PinpadSPConfig
  19. {
  20. BYTE byRemoveInstall;
  21. BYTE byFKDefCodeList[SHORT_BUFF_SIZE_2];
  22. BYTE byFDKDefCodeList[SHORT_BUFF_SIZE_2];
  23. BYTE byFKKeybdEventCodeList[SHORT_BUFF_SIZE_2];
  24. BYTE byFDKKeybdEventCodeList[SHORT_BUFF_SIZE_2];
  25. WORD wKeybdEventMode;
  26. //FDKPosition fdkPosition[SHORT_BUFF_SIZE_2];
  27. BYTE byAlgorithmMac;
  28. BYTE bySM4AlgorithmMac;
  29. BYTE byDESTo3DES;
  30. BOOL bIsAsynCancelClearPins;
  31. BOOL bGetDataReturnNonNumericKeys;
  32. INT nGetPinEchoValue;
  33. BYTE byCustomerDataMode;
  34. BYTE byPaddingMode;
  35. LONG lLongPressStatus;
  36. BOOL bLongPressActualDevState;
  37. BOOL bStartValueUsingPos;
  38. BYTE byPinEnterLessThanMinLenMode;
  39. BYTE bySM4Mode;
  40. CHAR szSM4KeyNameKeyword[SHORT_BUFF_SIZE_3];
  41. BOOL bKeyDetailIncludeSM4KeyInfo;
  42. BOOL bInitializationDelSM4Key;
  43. WORD wAlgorithmDefCryptSMECB;
  44. WORD wAlgorithmDefCryptSMCBC;
  45. WORD wAlgorithmDefCryptSMMAC;
  46. WORD wUSEDefSM4;
  47. WORD wCapAlgorithms;
  48. int nAddress;
  49. WORD wFlash;
  50. int nRKLSupp;
  51. LONG lTerminalKeyInactiveErr;
  52. LONG lInvalidDataErr;
  53. CHAR sStatusExtra[MAX_COUNT];
  54. WORD wOfflineStatus;
  55. BOOL bGetDataBeep;
  56. BOOL bGetPinBeep;
  57. BOOL bRSAforABCTest;
  58. } PinpadSPConfig, *LPPinpadSPConfig;
  59. //class PINPAD_KEBA_7_1SHARED_EXPORT PinPadClassImpl:public PinPadClass
  60. class PinPadClassImpl:public PinPadClass
  61. {
  62. public:
  63. PinPadClassImpl();
  64. virtual ~PinPadClassImpl();
  65. //DeviceBaseClass
  66. virtual ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
  67. virtual ErrorCodeEnum Reset();
  68. virtual ErrorCodeEnum DevClose();
  69. virtual ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
  70. //PinPadClass#include "CkLog.h"
  71. virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate);
  72. virtual ErrorCodeEnum KeyRead(BYTE &ch);
  73. virtual ErrorCodeEnum PinRead(BYTE &ch);
  74. #ifdef DEVINC20151215
  75. virtual ErrorCodeEnum StartPinInput(BYTE byLen);
  76. #endif
  77. #ifdef DEVINC20160229
  78. virtual ErrorCodeEnum StartPinInput(BYTE byLen, bool bConfirm = false);
  79. #endif
  80. #ifdef DEVINC20160713
  81. virtual ErrorCodeEnum StartPinInput(BYTE byLen);
  82. virtual ErrorCodeEnum StartPinInputConfirm(BYTE byLen);
  83. #endif
  84. virtual ErrorCodeEnum StartPlainInput();
  85. virtual ErrorCodeEnum StopInput();
  86. virtual ErrorCodeEnum LoadMasterKey(MasterKeyParam masterKey);
  87. virtual ErrorCodeEnum LoadWorkingKey(WorkKeyParam wkKey);
  88. virtual ErrorCodeEnum ActiveWorkingKey(DWORD dwMkSN, DWORD dwWkSN);
  89. virtual ErrorCodeEnum SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue);
  90. virtual ErrorCodeEnum EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo);
  91. virtual ErrorCodeEnum MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo);
  92. virtual ErrorCodeEnum GetPinBlock(PinBlock &block);
  93. virtual ErrorCodeEnum SetAccNo(AccountInfo accInfo);
  94. virtual int GetEncryptFunc();
  95. private:
  96. bool m_bDevOpen;
  97. PinpadStatus* m_LPPinpadStatus;
  98. CHAR m_sDevModel[MID_BUFF_SIZE_1];
  99. CHAR m_sSMVer[MID_BUFF_SIZE_1];
  100. CHAR m_szMainChipSN[9];
  101. PinpadDevConfig m_cfgDev;
  102. PinpadSPConfig m_cfgSP;
  103. PinpadCap m_devCap;
  104. BOOL m_bNeedInitialization;
  105. CHAR m_szErrMsg[MAX_DEV_ERROR_MSG_LEN];
  106. short m_shErrCode;
  107. CHAR m_sIniPath[MAX_PATH];
  108. SetParamValueEnum m_enumEncryptMethod;
  109. SetParamValueEnum m_enumEcbCbcMode;
  110. SetParamValueEnum m_enumMacAlgrithm;
  111. SetParamValueEnum m_enumPinAlgrithm;
  112. WORD m_wCryptDataAlgorithm;
  113. WORD m_wMacMode;
  114. WORD m_wCryptMacAlgorithm;//暂未使用
  115. BYTE m_byPattern;
  116. WORD m_wPinFormat;//format of PinBlock; Set by SetParam(EPP_PT_SET_PIN_ALGORITH, EPP_PIN_ALGO_ISO9564_1_ANSI or EPP_PIN_ALGO_IBM3624)
  117. AccountInfo m_accountInfo;
  118. DWORD m_dwMasterKeySN;
  119. DWORD m_dwWorkingKeySN;
  120. CHAR m_szKeyName[32];
  121. CHAR m_szEncKeyName[32];
  122. BOOL m_bSM;
  123. public:
  124. CZT598M1FD_DevCtrl *ZT598M1FD_DevCtrl;
  125. protected:
  126. BOOL ReadPinpadConfig(/*LPCTSTR lpszSPIniPath, */LPPinpadDevConfig lpDevConfig, LPPinpadSPConfig lpSPConfig);
  127. ErrorCodeEnum SaveErrorInfo(int iErrCode);
  128. ErrorCodeEnum EncryptCommon(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo, bool bMac = false);
  129. protected://GetData GetPin GetPinBlock
  130. BOOL m_bPinMode;
  131. CHAR m_cEcho;
  132. ULONG m_ulTerminateKeys;
  133. ULONG m_ulTerminateFDKs;
  134. USHORT m_usInputLen;
  135. BOOL m_bHavePIN;
  136. ULONG m_ulFuncMask;
  137. ULONG m_ulFDKMask;
  138. UINT m_uiDetectKeyPress;
  139. USHORT m_usPinMinLen;
  140. WORD m_wLogicPort;
  141. BOOL m_bKeyboardStarted;
  142. bool m_bConfirm;
  143. SwitchMode m_nCurrentEntryMode; //保存当前输入方式,故障恢复重新打开设备也要恢复输入方式
  144. int m_nCurrentPinLen;
  145. int m_nMaxPinLen;
  146. KeyReadData m_pinpadReadData;
  147. LONG StartPinInputCommon(BYTE byLen);
  148. #ifdef WRITE_ENLARGE_KEY_INDEX_FILE
  149. HRESULT WriteEnlargeKeyIndexFile();//使用eEX_1_2_8时,为了方便查看秘钥映射关系而保存的文件
  150. #endif
  151. };
  152. ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&pBaseObj);
  153. ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj);
  154. #endif // PINPADCLASSIMPL_ZT598M_H
  155. #pragma pack(pop)