#ifndef PINPADIMPL_H #define PINPADIMPL_H #define FILE_VERSION 1 #include "PinPadClass.h" #include "pinpadxzf31.h" #define JT_SUCCESS 0 // command succeeded #define JT_HARDWARE_ERROR -1 // command failed because of hardware error #define JT_TIMEOUT -2 // wait for user interaction timed out #define JT_PARA_ERR -3 // #define MK_HEAD 0x1 #define WK_HEAD 0x07 // #define class PinPadImpl : public PinPadClass { public: PinPadImpl(); ~PinPadImpl(); ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory); ErrorCodeEnum Reset(); ErrorCodeEnum DevClose(); ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo); ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate); ErrorCodeEnum KeyRead(BYTE &ch); ErrorCodeEnum SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue); ErrorCodeEnum SetAccNo(AccountInfo accInfo); //* // Load master key. (in plain text) // [key]:byte value in string type. ex. 0x123456FF --> "123456FF" ErrorCodeEnum LoadMasterKey(MasterKeyParam masterKey); // Load working key. (encrypted data) // Use the according master key to decrypt the key,then load result into pinpad // [key]:byte value in string type. ex. 0x123456FF --> "123456FF" ErrorCodeEnum LoadWorkingKey(WorkKeyParam wkKey); // - dwMkSN:master key serial number // - dwWkSN:working key serial number // - ActiveWorkingKey(主密钥序号,99)表示激活“主密钥序号”的主密钥作为当前工作密钥 ErrorCodeEnum ActiveWorkingKey(DWORD dwMkSN,DWORD dwWkSN); // Start key press(pin mode). // byLen:输入密码长度,键盘检测到用户输入确认键后结束输入,计算pinblock ErrorCodeEnum StartPinInputConfirm(BYTE byLen); // byLen:输入密码长度,键盘检测到用户输入byLen位有效!!长度时自动结束输入,计算pinblock ErrorCodeEnum StartPinInput(BYTE byLen); // Start key press(plain text mode). ErrorCodeEnum StartPlainInput(); ErrorCodeEnum StopInput(); ErrorCodeEnum GetPinBlock(PinBlock &block); // - srcInfo.data:source plain text data // (byte value in string type. ex. 0x123456FF --> "123456FF") // - destInfo.data:destination encrypted data ErrorCodeEnum EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo); // - srcInfo.data:source plain text data // (byte value in string type. ex. 0x123456FF --> "123456FF") // - destInfo.data:destination encrypted data ErrorCodeEnum MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo); // Get the encrypt method supported. // return value: // 0x1:3des only; 0x2:sm4 only; 0x3:both 3des and sm4 int GetEncryptFunc(); //*/ protected: // char m_sKeyAttr[33]; PinPadXZF31* m_pPinpad; bool m_bIsOPen; int m_iPinLen, m_iKeyGot; bool m_bAutoEnd, m_bPinMode; char m_sCardNo[16]; int m_iWorkKey; bool m_bSMMode; ErrorCodeEnum StartPinInput(int iLen, bool bAutoEnd); ErrorCodeEnum GetErrorInfo(int iCode, char* sErr, ...); DevErrorInfo m_DevErrInfo; SetParamValueEnum m_EncType, m_MacType, m_PinType, m_Ecb_Cbc; }; #endif // PINPADIMPL_H