#pragma once #include "DeviceBaseClass.h" #include "Dongle_API.h" #include "stdio.h" #include "logfile.h" #include #define NORMAL_RIGHT 0 //最小匿名权限 #define USER_RIGHT 1 //最小用户权限 #define ADMIN_RIGHT 2 //最小开发商权限 #define ROCKEYARM_DEFAULT_ADMIN_PIN "FFFFFFFF" //默认开发商PIN码 #define ROCKEYARM_DEFAULT_USER_PIN "12345678" //默认用户PIN码 #define MAX_DATAFILE_SIZE 4096 //数据文件最大长度 //可执行文件路径 #define ROCARM_READ_DATAFILE_EXE "readDataFile.bin" #define ROCARM_WRITE_DATAFILE_EXE "writeDataFile.bin" #define ROCARM_WRITE_TDESKEY_EXE "writeTDESKey.bin" //文件ID定义 #define PRIVATE_KEY_ID 0x0001 //私钥文件ID #define USER_CERT_ID 0x0002 //用户证书ID #define WRITE_TDES_EXE_ID 0x0010 //写TDES密钥的exe文件ID #define WRITE_DATA_FILE_EXE_ID 0x0012 //写数据文件的exe文件ID #define READ_DATA_FILE_EXE_ID 0x0013 //读数据文件可执行文件ID #define READ_LOG_FILE_EXE_ID 0x0014 //读日志文件可执行文件ID #define ROOT_CA_CERT_ID 0x0021 //总行根证书 #define SUB_CA_CERT_ID 0x0022 //分行证书 #define DEVICE_ID_LIST 0x0031 //准入设备列表 #define TDES_KEY_ID 0x3333 //3DES通信密钥ID #define INPUT_NULL_ERR 0xF1000001 // 输入参数为空 #define NEW_MEM_ERR 0xF100000e // 申请内存失败 #define OPEN_EXE_FILE_ERR 0xF000001a //打开本地exe文件错误 using namespace std; class RocArmTime : public DeviceBaseClass { public: RocArmTime(void); ~RocArmTime(void); DWORD FindUsbKey(USBKEY_INFO* pKeyInfo, unsigned int* pCount); DWORD OpenUsbKey(USBKEY_HANDLE *pHandle,unsigned int Item); DWORD CloseUsbKey(USBKEY_HANDLE hHandle); DWORD VerifyAdminPIN(USBKEY_HANDLE hHandle, char* pPIN); DWORD ChangeAdminPIN(USBKEY_HANDLE hHandle,char* pOldPin, char* pNewPin); DWORD CreateDataFile(USBKEY_HANDLE hHandle, unsigned int nFileLength, unsigned int nFileID); DWORD WriteDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int wOffset, BYTE * pInData, unsigned int nDataLen, unsigned int nFileSize); DWORD ReadDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int wOffset, BYTE * pOutData, unsigned int nDataLen); DWORD DeleteDataFile(USBKEY_HANDLE hHandle, unsigned int nFileID); DWORD GetFileLen(USBKEY_HANDLE hHandle, unsigned int nFileID, unsigned int* pFileLen); DWORD WriteExeFile(USBKEY_HANDLE hHandle, unsigned int nFileID, BYTE * pInData, unsigned int nDataLen, unsigned int nFileSize); DWORD GetLogFileLength(USBKEY_HANDLE hHandle, int* pFileLen); DWORD ReadLogFile(USBKEY_HANDLE hHandle, BYTE* pOutData, int nDataLen); DWORD WriteLogFile(USBKEY_HANDLE hHandle, BYTE* pInData, int nDataLen); DWORD DeleteLogFile(USBKEY_HANDLE hHandle); DWORD WritePrivateKey(USBKEY_HANDLE hHandle, BYTE * pInData, int nDataLen); DWORD CreatePrivateKey(USBKEY_HANDLE hHandle, int nFileLen); DWORD DeletePrivateKey(USBKEY_HANDLE hHandle); DWORD DeleteAllFile(USBKEY_HANDLE hHandle); DWORD GenUniqueKey(USBKEY_HANDLE hHandle,char* pAdminPin, char* pUserPin); DWORD ProtocolSwitch(USBKEY_HANDLE hHandle, int nFlag); DWORD GetHIDFromUKey(char *strHID); USBKEY_HANDLE m_hHandle; DONGLE_INFO m_stDongleInfo; string m_strAdminPIN; CLogFile* m_log; };