| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #ifndef PINPADXZF31_H
- #define PINPADXZF31_H
- #include "serial.h"
- #include "public.h"
- #include "smutex.h"
- #include "sunsonStatusInfo.h"
- #include "DevErrorCode.h"
- #include "ErrorCode.h"
- #define MAX_CMD_LEN 2080
- #define MAX_RSP_LEN 1024
- class PinPadXZF31
- {
- public:
- PinPadXZF31();
- ~PinPadXZF31();
- bool Open(const char* sPort, int iBaud);
- //close com
- void closeDevice();
- //reset Epp
- int resetEpp();
- //get sankey
- int scankeyPress(unsigned char& ucKeyValue);
- //允许/禁止系统键盘模式
- int SysKeyEnable(bool b);
- // 取产品版本号
- int getEppVersion(unsigned char *version);
- // 取产品序列号
- int getSerialNo(unsigned char *version);
- // 描述:按照约定的方式下载主密钥和工作密钥。可以是明文也可是密文。
- int LoadUserKey(int ucKeyId, int ucDecryptKeyId,
- unsigned char KeyAttribute, unsigned char ucKeyLen,
- unsigned char* KeyValue, unsigned char* ReturnInfo);
- // 描述:按键按下时是否产生蜂鸣。
- int SetBuzzerEnabled(unsigned char ucBuzzerStatus, unsigned char* ReturnInfo);
- // 描述:设定 CBC 数据时的 8 字节初始向量。
- int SetStartValue(unsigned char* StartValue, unsigned char* ReturnInfo);
- int DataCompute(int KeyId, unsigned char JM_mode,
- unsigned char SF_mode, unsigned char padchar,
- int datalen, unsigned char* data,
- unsigned char* ReturnInfo, int& iOutLen);
- int GetPin(unsigned char ucPinMinLen, unsigned char ucPinMaxLen,
- unsigned char AutoReturnFlag, unsigned char* ReturnInfo);
- int GetPinBlock(int UserKeyId, int JM_mode, unsigned char padchar, unsigned char ucCardLen,
- unsigned char* ucCardNumber, unsigned char* ReturnInfo, int& iOutLen);
- int MakeMac(int UserKeyId, int Mac_mode, int nMacDataLen,
- unsigned char* ucMacData, unsigned char* ReturnInfo, int& iOutLen);
- int UseEppPlainTextMode(unsigned char PlaintextLength, unsigned char AutoEnd, unsigned char* ReturnInfo);
- // 描述:任何时候只要发送该命令就关闭键盘,禁止输入。
- int CloseEppPlainTextMode(unsigned char* ReturnInfo);
- // 描述:获取当前键盘算法。
- int GetEPPSMMode(unsigned char* ReturnInfo);
- int SetEPPSMMode(unsigned char ucSMMode);
- int CheckEPPSMMode(bool bSM);
- int SM4MakeMac(int UserKeyId, int Mac_mode, int nMacDataLen,
- unsigned char* ucMacData, unsigned char* ReturnInfo);
- int SM4DataCompute(int KeyId, unsigned char JM_mode,
- int SF_mode, unsigned char padchar,
- int datalen, unsigned char* data,
- unsigned char* ReturnInfo);
- int SM4GetPinBlock(int UserKeyId, int JM_mode,
- unsigned char padchar, unsigned char ucCardLen,
- unsigned char* ucCardNumber, unsigned char* ReturnInfo);
- int EnableLoadSameKey(unsigned char Mode, unsigned char* ReturnInfo);
- int GetKCV(int keyId, unsigned char ucCheckMode, unsigned char* ReturnInfo);
- int GetKeyAttInfo(int UserKeyId, unsigned char* ReturnInfo);
- protected:
- SSerial m_cSerial;
- SMutex* m_pMutex;
- SUNSON_F31_CMD m_SendCmd;
- SUNSON_RSP m_CmdRecv;
- int executeCmd(SUNSON_F31_CMD *cmd, SUNSON_RSP* rsp = NULL, unsigned long timeout = 1000);
- unsigned char bccCalculator(const unsigned char* data, int len);
- bool sendRecv(const SUNSON_F31_CMD* cmd, unsigned long timeout);
- void packMessage(unsigned char* cmdSend, unsigned int& cmdSendLen);
- };
- #endif // PINPADXZF31_H
|