ZT598MGFD_DevCtrl.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #pragma once
  2. /*
  3. Öмä½Ó¿ÚµÄʵÏÖ¡£
  4. */
  5. #include "stdafx.h"
  6. #include "ZT598MGFD_DevImpl.h"
  7. #include <unistd.h>
  8. #pragma pack(push,1)
  9. #define EPP_MAIN_KEY_CODE_COUNT 16
  10. #define EPP_FUNCTION_KEY_CODE_COUNT 8
  11. enum AuthenticationMode;
  12. enum PWDKeyID;
  13. enum KeyCheckMode;
  14. enum SwitchMode;
  15. enum ControlMode;
  16. enum KeyboardCodeMode;
  17. struct tag_EPPHWKeyInfo;
  18. typedef tag_EPPHWKeyInfo EPPHWKeyInfo, *LPEPPHWKeyInfo;
  19. struct tag_EPPLogicKeyInfo;
  20. typedef tag_EPPLogicKeyInfo EPPLogicKeyInfo, *LPEPPLogicKeyInfo;
  21. struct tag_GetKeyBoardCodeResponse;
  22. typedef tag_GetKeyBoardCodeResponse GetKeyBoardCodeResponse, *LPGetKeyBoardCodeResponse;
  23. typedef struct tag_VirtualKeyPressParam VirtualKeyPressParam, *LPVirtualKeyPressParam;
  24. static BYTE g_byDesHwKeyIndexMask[(MAX_HWKEY_COUNT + (8 - 1)) / 8];
  25. static BYTE g_bySMHwKeyIndexMask[(MAX_SM_HWKEY_COUNT + (8 - 1)) / 8];
  26. static BYTE g_byRSAHwKeyIndexMask[(MAX_RSA_HWKEY_COUNT + (8 - 1)) / 8];
  27. static WORD g_wKeyboardDisableCode = 0xFFFF;
  28. static WORD g_wFunKeyBoardDisableCode = 0xFFFF;
  29. class CZT598M1FD_DevCtrl
  30. {
  31. public:
  32. CZT598M1FD_DevCtrl();
  33. virtual ~CZT598M1FD_DevCtrl();
  34. public:
  35. LONG InitDevice(LPSTR lpszDevModel, WORD wModelBufSize, LPSTR lpszSMVer, WORD wSMVerBufSize, LPSTR LpszSN, WORD wSNSize);
  36. LONG SetDeviceConfigure(PinpadDevConfig devConfig, LPPinpadStatus lpPinpadStatus);
  37. BOOL CloseDevice();
  38. LONG GetDevStatus(LPPinpadStatus lpPinpadStatus);
  39. LONG GetSMVersion(LPCSTR lpszVersion, USHORT &usLen);
  40. LONG RemoveInstallAuthen(BYTE byMode, LPSYSTEMTIME lpSysTime, LPPinpadStatus lpPinpadStatus);
  41. LONG VirtualKeyPress(VirtualKeyPressParam virtualKeyPress);
  42. long DevReset(WORD wResetMode, LPPinpadStatus lpPinpadStatus);
  43. BOOL AuthenticateAllKeys(BOOL bSM = FALSE);
  44. BOOL AuthenticateAllKeys(BOOL bInitIfFailed, LPPinpadStatus lpPinpadStatus);
  45. LONG AuthenticateKey(WORD wKeyID, AuthenticationMode enMode);
  46. //LONG DeleteKey(WORD wKeyType, LPCSTR lpszKeyName, LPPinpadStatus lpPinpadStatus);
  47. LONG DeleteKey(WORD wId);
  48. VOID SetERRCode(LPCTSTR szFile, LONG lLine, BYTE byType, ULONG ulERRCode);
  49. BOOL ClearKeyInfo(BYTE byLogicKeyId, BOOL bSM = FALSE);
  50. LONG DeleteHWKey(BYTE byLogicKeyId, WORD wKeyId, BOOL bSM = FALSE);
  51. BOOL WriteKeyMapFile(BOOL bSM = FALSE);
  52. BOOL ReadKeyMapFile(BOOL bSM = FALSE);
  53. BOOL WriteKeyMapToEPP(BOOL bSM = FALSE);
  54. LONG ReadUserData(BYTE byUserBlock, BYTE byUserData[256]);
  55. LONG WriteUserData(BYTE byUserBlock, BYTE byUserData[256]);
  56. LONG SetControlMode(ControlMode enControlMode, BYTE byControlCode);
  57. BOOL ClearRSAKeyInfo(BYTE byRSAKeyId);
  58. LONG DeleteRSAHWKey(BYTE byRSAKeyId, WORD wKeyId);
  59. VOID GetKeyState();
  60. LONG LoadKey(WORD wKeyType, LPCSTR lpszKeyName, DWORD dwUse, LPBYTE lpbyKey, int nKeyLen, WORD wCheckMode, LPCSTR lpszEncKeyName,
  61. LPBYTE lpbyCheckValue, int nCheckValueLen, LPBYTE lpbyKCV, WORD& wKCVLen, LPPinpadStatus lpPinpadStatus);
  62. BOOL GetLogicKeyInfo(LPEPPLogicKeyInfo &lpEPPLogicKeyInfo, LPCSTR lpszKeyName, BOOL bSM/* = FALSE*/);
  63. BOOL GetHWKeyInfo(LPEPPHWKeyInfo &lpEPPHWKeyInfo, BYTE byLogicKeyId, WORD wAttribute, BOOL bSM/* = FALSE*/);
  64. BOOL SetKeyName(BYTE byLogicKeyId, LPCSTR lpszKeyName, BOOL bSM/* = FALSE*/);
  65. BOOL AllotLogicKeyInfo(LPEPPLogicKeyInfo &lpEPPLogicKeyInfo, LPCSTR lpszKeyName, BOOL bSM/* = FALSE*/);
  66. BOOL AllotHWKeyInfo(LPEPPHWKeyInfo &lpEPPHWKeyInfo, BYTE byLogicKeyId, WORD wAttribute, BOOL bSM/* = FALSE*/);
  67. LONG CryptData(WORD wKeyType, LPCSTR lpszKeyName, WORD wMode, BYTE byAlgorithm, BYTE byPattern, LPBYTE lpbyData, USHORT usDataLen,
  68. BYTE byPadding, LPBYTE lpbyStartValue, USHORT usStartValueLen, LPCSTR lpszStartKeyName, LPBYTE lpbyKeyEncKey, USHORT usEncKeyLen, LPBYTE lpbyResult,
  69. WORD& wResultLen, LPPinpadStatus lpPinpadStatus);
  70. LONG CryptData(WORD wKeyType, LPCSTR lpszKeyName,WORD wMode, BYTE byAlgorithm, BYTE byPattern, LPBYTE lpbyData, USHORT usDataLen,
  71. BYTE byPadding, LPBYTE lpbyStartValue, USHORT usStartValueLen, LPCSTR lpszStartKeyName, LPBYTE lpbyKeyEncKey, USHORT usEncKeyLen, LPBYTE lpbyResult,
  72. WORD& wResultLen, LPPinpadStatus lpPinpadStatus, BOOL bCheckUse);
  73. //LONG CryptData(LPCSTR lpszKeyName, WORD wMode, LPBYTE lpbyData, USHORT usDataLen, LPBYTE lpbyResult, WORD& wResultLen);
  74. LONG CalcMac(WORD wKeyType, LPCSTR lpszKeyName, BYTE byAlgorithm, LPBYTE lpbyData, USHORT usDataLen, BYTE byPadding, LPBYTE lpbyStartValue, USHORT usStartValueLen,
  75. LPCSTR lpszStartKeyName, LPBYTE lpbyKeyEncKey, USHORT usEncKeyLen, LPBYTE lpbyMAC, WORD& wMACLen, LPPinpadStatus lpPinpadStatus);
  76. LONG GetPinBlock(WORD wKeyType, LPCSTR lpszKeyName, WORD wFormat, BYTE byPadding, LPCSTR lpszCustomerData, LPCSTR lpszXORData, LPCSTR lpszEncKeyName,
  77. LPBYTE lpbyBlock, WORD& wBlockLen, LPPinpadStatus lpPinpadStatus);
  78. LONG SetEntryMode(SwitchMode enSwitchMode, WORD wKeybordDisCode, WORD wFuncKeybordDisCode);
  79. LONG SetKeyboardCode(KeyboardCodeMode enSetKeyboardCodeMode);
  80. char *_itoa_s(int value, char *string, int limit,int radix);
  81. BOOL WriteDesMapFile();
  82. BOOL ReadDesMapFile();
  83. BOOL WriteSM4MapFile();
  84. BOOL ReadSM4MapFile();
  85. LONG GetKeyboardCode(KeyboardCodeMode enGetKeyboardCodeMode, GetKeyBoardCodeResponse &stGetKeyBoardCodeResponse);
  86. VOID CheckKeyMap(BOOL bSM = FALSE);
  87. BOOL ReadKeyMapFromEPP(BOOL bSM = FALSE);
  88. public:
  89. LONG ExchangeKBPK();
  90. LONG LoadCTK();
  91. LONG ResetEpp();
  92. LONG GetEppSensorData(LPDWORD lpdwSensorData = NULL);
  93. WORD ReadEntryText(LPBYTE lpbyTxtBufer, WORD wBufSize);
  94. LONG SetEppParam();
  95. PinpadDevConfig m_stPinpadDevConfig;
  96. LONG DelEntryPinKey(BYTE byMode, LPPinpadStatus lpPinpadStatus);
  97. public:
  98. PinpadCap m_stDevCap;
  99. PinpadStatus m_stPinpadStatus;
  100. protected:
  101. WORD KeyTablePos(BYTE byKeyPressValue, BYTE &byKeyPressPos);
  102. LONG CheckRemoveInstallStatus(BYTE byMode);
  103. LONG AutoUpdatePsw(PWDKeyID enPWDKeyID, LPCSTR lpOldPSW, LPCSTR lpNewPSW);
  104. LONG AutoPswInput(LPBYTE lpbyPswTypeA, int nPswTypeALen, LPBYTE lpbyPswTypeB, int nPswTypeBLen);
  105. protected:
  106. CZT598M1FD_DevImpl * m_lpDevImpl;
  107. EPPKeyMap m_EPPDESKeyMap;
  108. EPPKeyMap m_EPPSMKeyMap;
  109. RSAKeyMap m_EPPRSAKeyMap;
  110. EPPExchangeDataField m_stExchangeSendData;
  111. EPPExchangeDataField m_stExchangeReceiveData;
  112. PinpadInputLimitInfo m_stPinpadInputLimitInfo;
  113. CHAR m_szErrMsg[MAX_DEV_ERROR_MSG_LEN];
  114. short m_shErrCode;
  115. SingleVer m_stDevFWVerList[MAX_FWVER_NUM];
  116. BYTE m_byEPPKeyCode[EPP_MAIN_KEY_CODE_COUNT];
  117. BYTE m_byFunKeyCode[EPP_FUNCTION_KEY_CODE_COUNT];
  118. BYTE m_byFunKeyCodePos[EPP_FUNCTION_KEY_CODE_COUNT];
  119. LPBYTE m_lpbyUAK;
  120. LPBYTE m_lpbyKBPK;
  121. WORD m_wUAKSize;
  122. WORD m_wKBPKSize;
  123. UINT_PTR m_uiTimerId;
  124. BOOL m_bTimerStarted;
  125. DevConnInfo m_devConnInfo;
  126. LONG m_lLastError;
  127. BYTE m_byMainChipSN[8];
  128. };
  129. #pragma pack(pop)