| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054 |
- #pragma once
- #include "PinpadDef.h"
- #pragma pack(push,1)
- #define READ_A980_FW_VERSION 0x62
- /*
- 硬件命令相关的数据结构和宏定义。
- */
- #define EXCHANGE_DATA_MAX_LEN (65) //The maximum length for exchanging data.
- #define EXCHANGE_SIGNATURE_HEAD 0x02
- #define EXCHANGE_SIGNATURE_END 0x03
- #define EXCHANGE_TRNB 0x00
- #define SECURE_COMM_HEAD EXCHANGE_SIGNATURE_HEAD
- #define SECURE_COMM_END EXCHANGE_SIGNATURE_END
- #define SECURE_COMM_DEVICE_NO 0x00
- #define SECURE_COMM_COMMAND_FEATURE 0x545A //0x5A54
- #define SECURE_COMM_COMMAND_TYPE 0x60
- #define START_MAIN_FW_UPDATE 0x20
- #define UPDATING_MAIN_FW 0x21
- #define FINISH_MAIN_FW_UPDATE 0x22
- #define HW_VERSION_NUMBER_SECTION_COUNT 3
- #define HW_VERSION_NUMBER_MAIN_VERSION_LENGTH 3
- #define CHECK_KEY_INPUT_TIMER_ID 10001
- //命令宏定义
- #define SET_ENTRY_MODE 0x10
- #define READ_ENTRY_TEXT 0x11
- #define VIRTUAL_KEY_PRESS 0x12
- #define DEL_ENTRY_BUFFER 0x13
- #define SET_KEYBOARD_CODE 0x14
- #define SET_CONTROL_MODE 0x15
- #define READ_EPP_INFO 0x16
- #define WRITE_USER_DATA 0x17
- #define READ_USER_DATA 0x18
- #define REMOVE_INSTALL_AUTH 0x19
- #define UPDATE_PASSWORD 0x20
- #define STORE_KEY 0x21
- #define LOAD_KEY 0x22
- #define EXCHANGE_KEY 0x23
- #define GENERATE_RANDOM_DATA 0x24
- #define AUTHENTICATION 0x25
- #define FIRMWARE_AUTH 0x26
- #define DELETE_KEY 0x27
- #define READ_KEY_ATTRIBUTES 0x28
- #define IMPORT_RSA_KEY 0x30
- #define IMPORT_EPP_SERIAL_NUMBER 0x31
- #define EXP_EPP_SERIAL_NUMBER 0x32
- #define EXP_EPP_PUBLIC_KEY 0x33
- #define GET_EPP_RANDOM_DATA 0x36
- #define IMPORT_DES_KEY 0x34
- #define ENCTYPT_PIN_BLOCK 0x41
- #define LOCAL_IBM_PIN_OFFSET 0x42
- #define LOCAL_VISA_PIN_OFFSET 0x43
- #define RAW_DES_CRYPT 0x44
- #define RAW_RSA_CRYPT_PKCS15 0x45
- #define DES_CRYPT_DATA 0x46
- #define RSA_CRYPT_DATA 0x47
- #define MAC_ENCRYPT_DATA 0x48
- #define RAW_RSA_SIGNATURE_PKCS15 0x49
- #define RAW_RSA_VERI_SIGNATURE_PKCS15 0x4A
- #define RAW_HASH 0x4B
- #define RAW_MAC_CRYPT 0x4C
- #define CONFIG_EPP_SENSOR 0xE0
- #define GET_EPP_SENSOR_DATA 0xE1
- #define CLEAR_EPP_SENSOR_STATE 0xE2
- #define WRITE_EPP_HW_VERSION 0xE3
- #define GET_KEYBOARD_CODE 0xE4
- #define SET_SYSTEM_TIME 0xE5
- #define GET_SYSTEM_TIME 0xE6
- #define CLEAR_SET_SYSTEM_FLAG 0xE7
- //国密
- #define SM4_LOAD_TEXT_KEY 0x5B
- #define SM4_EXCHANGE_KEY 0x5C
- #define SM4_CRYPT 0x5D
- #define SM4_MAC 0x5E
- #define SM4_GET_PIN_BLOCK 0x5F
- #define SM_DELETE_KEY 0x61
- #define SM_GET_VERSION 0xA2
- #define SM_READ_KEY_ATTRIBUTES 0x63
- //国密固件下载
- #define START_GM_FW_LOAD 0xAD
- #define LOADING_GM_FW_CODE 0xAE
- #define END_GM_FW_LOAD 0xAF
- //其他扩展命令
- #define GENERATE_RSA_KEYPAIR 0xEA
- #define DELETE_ALL_DES_KEY 0
- #define DELETE_ALL_RSA_KEY 600
- #define DELETE_PSW123_AND_ALL_DES 900
- #define DELETE_ALL 999
- #define DELETE_ALL_SM4_KEY 800
- #define ECB_ENCRYPT 0x31
- #define CBC_ENCRYPT 0x32
- #define ECB_DECRYPT 0x41
- #define CBC_DECRYPT 0x42
- #define PIN_UAK_ID 0 //用于秘钥认证
- #define PIN_SPECIAL_KEY_OFFSET 1 //参考厂家SDK预留16个特殊秘钥区
- #define PIN_SPECIAL_KEY_NUM 16
- #define PIN_KPK_ID (PIN_SPECIAL_KEY_OFFSET + 12) //特殊秘钥 用于加密秘钥
- #define PIN_USER_KEY_OFFSET (PIN_SPECIAL_KEY_OFFSET + PIN_SPECIAL_KEY_NUM)
- #define PIN_KBPK_ID 888 //用于MAC计算(0x378)
- #define PIN_INVALID_KEY_ID 0xFFFF
- #define PIN_INVALID_LOGIC_KEY_ID 0x00
- #define PIN_USER_KEY_OFFSET (PIN_SPECIAL_KEY_OFFSET + PIN_SPECIAL_KEY_NUM)
- #define PIN_SM_ID_OFFSET 1000
- #define PIN_SM_SPECIAL_KEY_OFFSET PIN_SM_ID_OFFSET //参考DES预留特殊秘钥区
- #define PIN_SM_SPECIAL_KEY_NUM 0 //国密暂时不考虑特殊秘钥区
- #define PIN_SM_KPK_ID (PIN_SM_SPECIAL_KEY_OFFSET + 12)
- #define PIN_SM_USER_KEY_OFFSET (PIN_SM_SPECIAL_KEY_OFFSET + PIN_SM_SPECIAL_KEY_NUM)
- #define PIN_RSA_ID_OFFSET 600
- #define PIN_RSA_SPECIAL_KEY_OFFSET 0
- #define PIN_RSA_SPECIAL_KEY_NUM 6
- #define PIN_RSA_USER_KEY_OFFSET (PIN_RSA_SPECIAL_KEY_OFFSET + PIN_RSA_SPECIAL_KEY_NUM)
- #define INDEX_SAVE2EPP_BEGIN 0
- #define MAX_DES_CRYPT_DATA_SIZE 2048
- #define MAX_DES_MAC_DATA_SIZE MAX_DES_CRYPT_DATA_SIZE
- #define MAX_SM_CRYPT_DATA_SIZE 2048
- #define MAX_SM_MAC_DATA_SIZE MAX_SM_CRYPT_DATA_SIZE
- #define PWD_DEFAULT "0000000000000000"
- #define PWD1_INPUT "1111111111111111"
- #define PWD2_INPUT "2222222222222222"
- #define PWD3_INPUT "3333333333333333"
- #define PWD1_INSTALL "4444444444444444"
- #define PWD2_INSTALL "5555555555555555"
- #define MAX_HWKEY_COUNT 600
- #define MAX_SM_HWKEY_COUNT 600
- #define MAX_RSA_HWKEY_COUNT 20
- #define PIN_FK_1 0x31
- #define PIN_FK_2 0x32
- #define PIN_FK_3 0x33
- #define PIN_FK_4 0x34
- #define PIN_FK_5 0x35
- #define PIN_FK_6 0x36
- #define PIN_FK_7 0x37
- #define PIN_FK_8 0x38
- #define PIN_FK_9 0x39
- #define PIN_FK_0 0x30
- #define PIN_FK_00 0x4F
- #define PIN_FK_CANCEL 0x1B
- #define PIN_FK_BACKSPACE 0x08
- #define PIN_FK_CLEAR 0x0C
- #define PIN_FK_ENTER 0x0D
- #define GET_INPUT_TIME 10
- //国密需要的宏定义
- #define UNION_PAY_STANDARD 0x40
- #define PBOC_MODE 0x43
- #define MAX_DES_HW_KCV_LENGTH (m_stPinpadDevConfig.byHWDESKCVMaxLen)/*3*/
- #define MAX_SM_HW_KCV_LENGTH 8
- #define KEY_VARIATION_INDEX_BYTE1(keyid) ((keyid << 1) & 0xFF);
- #define KEY_VARIATION_INDEX_BYTE2(keyid) (((keyid >> 7) << 1) & 0xFF)
- #define RSA_KEY_ID_PK_VND 600
- #define RSA_KEY_ID_SERIAL_NUMBER 601
- #define RSA_KEY_ID_SK_CEPP 602
- #define RSA_KEY_ID_PK_CEPP 603
- #define RSA_KEY_ID_SK_SEPP 604
- #define RSA_KEY_ID_PK_SEPP 605
- #define RSA_KEY_ID_PK_HOST 606
- #define RSA_DER_TAG_FIELD_TYPE_SEQUENCE 0x30
- #define RSA_DER_TAG_FIELD_TYPE_INTEGER 0x02
- #define RSA_DER_TAG_LENGTH_TYPE_SHORT 0x00
- #define RSA_DER_TAG_LENGTH_TYPE_LONG_ONE 0x81
- #define RSA_DER_TAG_LENGTH_TYPE_LONG_TWO 0x82
- #define KEY_ATTRIBUTES_TYPE_VND_PK 0x01
- #define KEY_ATTRIBUTES_TYPE_EPP_PK_OR_SK 0x02
- #define KEY_ATTRIBUTES_TYPE_HOST_PK 0x03
- #define KEY_ATTRIBUTES_TYPE_RSA_PK 0x00
- #define KEY_ATTRIBUTES_TYPE_RSA_SK 0x01
- #define KEY_ATTRIBUTES_LENGTH_RSA_1024 0x01
- #define KEY_ATTRIBUTES_LENGTH_RSA_2048 0x02
- #define KEY_ATTRIBUTES_LENGTH_DES_8 0x01
- #define KEY_ATTRIBUTES_LENGTH_DES_16 0x02
- #define KEY_ATTRIBUTES_LENGTH_DES_24 0x03
- #define RSA_KEY_DER_MAX_LEN (4 + 4 + 257 + 4 + 257)
- #define RSA_KEY_SIG_DER_MAX_LEN (4 + 256)
- #define RSA_EXPONENT_1 (3)
- #define RSA_EXPONENT_4 (17)
- #define RSA_EXPONENT_16 (65537)
- #define PIN_DEL_ONE (0x30)
- #define PIN_DEL_ALL (0x31)
- enum SwitchMode
- {
- CLOSE_ENTRY = 0x30,
- PIN_ENTRY,
- KEY_ENTRY,
- TEXT_ENTRY
- };
- enum DeleteEntryBufferMode
- {
- DELETE_LAST_ENTERED = 0x30,
- DELETE_ALL_ENTERED
- };
- enum KeyboardCodeMode
- {
- INPUT_TEXT = 0x31,
- INPUT_PIN,
- INPUT_KEY
- };
- enum ControlMode
- {
- CONTROL_MODE_RESET = 0x30,
- CONTROL_MODE_SBR,
- CONTROL_MODE_SDID,
- CONTROL_MODE_SWDT,
- CONTROL_MODE_SBL,
- CONTROL_MODE_POT,
- CONTROL_MODE_PKT,
- CONTROL_MODE_UDPC,
- CONTROL_MODE_KCVL,
- CONTROL_MODE_MACL,
- CONTROL_MODE_PSC,
- CONTROL_MODE_SBS,
- CONTROL_MODE_TBT,
- CONTROL_MODE_WTIK,
- CONTROL_MODE_STT,
- CONTROL_MODE_PIC,
- CONTROL_MODE_SCM,
- CONTROL_MODE_SCA,
- CONTROL_MODE_BDM,
- CONTROL_MODE_RKCV,
- CONTROL_MODE_FKSM,
- CONTROL_MODE_SCP,
- CONTROL_MODE_SCHK,
- CONTROL_MODE_HID_KEYBOARD,
- CONTROL_MODE_HID_KEYBOARD_DELAY_TIME
- };
- enum ControlCodeBeep
- {
- CLOSE_BEEP_SOUND = 0x30,
- OPEN_BEEP_SOUND
- };
- enum ResetModeCode
- {
- NORMAL_RESET = 0x30,
- SET_DEF_PARA_AND_RESET
- };
- enum CryptographicAlgorithm
- {
- DES_OR_TDES_ALGORITHM = 0x30,
- AES_ALGORITHM,
- SM4_ALGORITHM
- };
- enum BeepSound
- {
- BEEP_SOUND_CLOSE = 0x30,
- BEEP_SOUND_OPEN
- };
- enum InstallMode
- {
- AUTH_REMOVE = 0x31,
- AUTH_INSTALL
- };
- enum PWDKeyID
- {
- PWD1 = 901, //PWD1 for manual input DES-KEY
- PWD2, //PWD2 for manual input DES-KEY
- PWD3, //PWD3 for manual input DES-KEY
- PWD4, //Password1 for install remove auth EPP
- PWD5 //Password2 for install remove auth EPP
- };
- enum LoadKeyWriteMode
- {
- DIRECT_LOAD_KEY = 0x30,
- XOR_WITH_EXISTING_KEY
- };
- enum LoadKeyVerifyMode
- {
- DO_NOT_CHECK_KCV = 0x30,
- CHECK_KCV
- };
- enum KeyCheckMode
- {
- CHECK_ITSELF = 0x30,
- CHECK_ZERO
- };
- enum AuthenticationMode
- {
- AUTHENTICATION_FOR_LOADING_KEY = 0x31,
- AUTHENTICATION_FOR_USED_KEY
- };
- enum CryptCryptionMode
- {
- DES = 0x31,
- TDES
- };
- enum IVMode
- {
- IV_KEY_AS_IV = 0x30,
- IV_DATA_AS_IV,
- DECRYPT_IV_AS_IV
- };
- enum MACMode
- {
- MAC_99 = 0x41,
- MAC_919,
- MAC_CBC,
- MAC_PBOC,
- MAC_UNION_PAY
- };
- enum MACCryptionMode
- {
- WITHOUT_IV = 0x31,
- WITH_IV
- };
- enum PinBlockEnctryptionMode
- {
- SINGLE_ENCRYPT_RSA = 0x00,
- SINGLE_ENCRYPT_DES,
- DOUBLE_ENCRYPT_DES
- };
- enum PinFormat
- {
- FREE_MODE = 0x00,
- IBM3624,
- ANSI98,
- ISO0,
- ISO1,
- ECI2,
- ECI3,
- VISA2,
- DIEBOLD,
- DIEBOLDCO,
- VISA3,
- BANKSYS,
- ISO2,
- ISO3,
- ASCII
- };
- //国密SM
- enum WriteModeSM
- {
- SET_MODE = 0x00,
- XOR_MODE
- };
- enum CryptMode
- {
- SM4_ENCRYPT = 0x31,
- SM4_DECRYPT
- };
- enum CryptSM4Mode
- {
- ECB_MODE = 0x41,
- CBC_MODE,
- };
- enum EncryptionMode
- {
- SINGLE_ENCRYPT_SM2 = 0x00,
- SINGLE_ENCRYPT_SM4,
- DOUBLE_ENCRYPT_SM4
- };
- enum SM4MACMode
- {
- SM4_MAC_UNION_PAY = 0x40,
- SM4_MAC_PBOC = 0x43
- };
- enum SignatureAlgorithm
- {
- SIGN_NA = 0x30,
- SIGN_RSASSA_PKCS1_V1_5,
- //SIGN_RSASSA_PSS
- };
- enum RsaEncipherAlgorithm
- {
- CRYPT_RSASSA_PKCS1_V1_5 = 0x31,
- };
- enum RandomMode
- {
- DoWithoutRandom = 0x30,
- DoWithRandom
- };
- enum DerTagType
- {
- DER_TAG_INTEGER,
- DER_TAG_RSA_KEY,
- DER_TAG_RSA_KEY_WITH_SIG,
- DER_TAG_ENCRYPTED_DES_KEY,
- DER_TAG_EPP_SERIAL_NUMBER
- };
- enum RsaKeyCheckMode
- {
- RSA_NOT_KCV = 0x00,
- RSA_KCV_SHA256
- };
- enum GMFWType
- {
- A980_BOOTLOADER_FW = 0x30,
- A980_APPLICATION_FW
- };
- typedef enum {
- ATTR_SPECIAL = (0x0000) //special key(UID | UAK | KBPK | IMK)
- , ATTR_DK = (0x0001) //DATA KEY(WFS_PIN_USECRYPT)
- , ATTR_PK = (0x0002) //PIN KEY(WFS_PIN_USEFUNCTION)
- , ATTR_AK = (0x0004) //MAC KEY(WFS_PIN_USEMACING)
- , ATTR_MK = (0x0020) //MASTER KEY / MK only for MK(WFS_PIN_USEKEYENCKEY)
- , ATTR_IV = (0x0080) //IV KEY(WFS_PIN_USESVENCKEY)
- , ATTR_ANSTR31 = (0x0400) //ANSTR31 MASTER KEY(WFS_PIN_USEANSTR31MASTER)
- , ATTR_RESTRICTED = (0x0800) //Restricted MASTER KEY(WFS_PIN_USERESTRICTEDKEYENCKEY)
- , ATTR_SM4 = (0x8000) //China Secure Encryption Algorithm(SM4)
- , ATTR_PINLOCAL = (0x10000) //PIN local offset(WFS_PIN_USEPINLOCAL)
- , ATTR_RSAPUBLIC = (0x20000) //RSA public(WFS_PIN_USERSAPUBLIC)
- , ATTR_RSAPRIVATE = (0x40000) //RSA private(WFS_PIN_USERSAPRIVATE)
- , ATTR_CHIPINFO = (0x100000) //WFS_PIN_USECHIPINFO
- , ATTR_CHIPPIN = (0x200000) //WFS_PIN_USECHIPPIN
- , ATTR_CHIPPS = (0x400000) //WFS_PIN_USECHIPPS
- , ATTR_CHIPMAC = (0x800000) //WFS_PIN_USECHIPMAC
- , ATTR_CHIPLT = (0x1000000) //WFS_PIN_USECHIPLT
- , ATTR_CHIPMACLZ = (0x2000000) //WFS_PIN_USECHIPMACLZ
- , ATTR_CHIPMACAZ = (0x4000000) //WFS_PIN_USECHIPMACAZ
- , ATTR_RSA_VERIFY = (0x8000000) //RSA public verify(WFS_PIN_USERSAPUBLICVERIFY)
- , ATTR_RSA_SIGN = (0x10000000) //RSA private sign(WFS_PIN_USERSAPRIVATESIGN)
- , ATTR_PINREMOTE = (0x20000000) //PIN remote(WFS_PIN_USEPINREMOTE)
- , ATTR_SM2 = (0x80000000) //China Secure Encryption Algorithm(SM2)
- , ATTR_MPK = (ATTR_MK | ATTR_PK) //MASTER KEY only for PIN KEY
- , ATTR_MDK = (ATTR_MK | ATTR_DK) //MASTER KEY only for DATA KEY
- , ATTR_MAK = (ATTR_MK | ATTR_AK) //MASTER KEY only for MAC KEY
- , ATTR_MIV = (ATTR_MK | ATTR_IV) //MASTER KEY only for IV KEY
- , ATTR_WK = (ATTR_PK | ATTR_DK | ATTR_AK)
- , ATTR_MWK = (ATTR_MK | ATTR_PK | ATTR_DK | ATTR_AK)
- } EKEYATTR;
- typedef struct tag_KeyAttributes
- {
- BYTE bitLock : 1;
- BYTE bitParity : 1;
- BYTE bitLength : 2;
- BYTE bitType : 2;
- BYTE bitRSA : 1;
- BYTE bitBK : 1;
- BYTE bitEPK : 1;
- BYTE bitCPK : 1;
- BYTE bitIV : 1;
- BYTE bitTDK : 1;
- BYTE bitTAK : 1;
- BYTE bitTPK : 1;
- BYTE bitMK : 1;
- BYTE bitExist : 1;
- } KeyAttributes, * LPKeyAttributes;
- typedef struct tag_GetEPPSensorExSensor
- {
- BYTE bitLogicallyInstallStu :1; //(1 = Remove, 0 = Install)
- BYTE bitPhysicallySwitch :1; //(1 = Open, 0 = Close)
- BYTE bitSensor1Switch :1;
- BYTE bitSensor2Switch :1;
- BYTE bitSensor3Switch :1;
- BYTE bitSensor4Switch :1;
- BYTE bitSensor5Switch :1;
- BYTE bitReserved :1;
- } GetEPPSensorExSensor, *LPGetEPPSensorExSensor;
- typedef struct tag_GetEPPSensorInternalSensorState
- {
- BYTE bitLowTamperature :1;
- BYTE bitHighTamperature :1;
- BYTE bitLowBattery :1;
- BYTE bitHighBattery :1;
- BYTE bitReserved1 :1;
- BYTE bitReserved2 :1;
- BYTE bitReserved3 :1;
- BYTE bitReserved4 :1;
- } GetEPPSensorInternalSensorState, *LPGetEPPSensorInternalSensorState;
- typedef struct tag_GetEPPSensorBatteryState
- {
- BYTE bitBattery1WeakOrDead :1; //(1 = weak)
- BYTE bitBattery2WeakOrDead :1;
- BYTE bitReserved1 :1;
- BYTE bitReserved2 :1;
- BYTE bitReserved3 :1;
- BYTE bitReserved4 :1;
- BYTE bitReserved5 :1;
- BYTE bitReserved6 :1;
- } GetEPPSensorBatteryState, *LPGetEPPSensorBatteryState;
- typedef struct tag_EPPExchangeDataHeadSection
- {
- BYTE bySignatureHead;
- BYTE byTRNB;
- BYTE byCmd;
- WORD wLen;
- } EPPExchangeDataHeadSection, *LPEPPExchangeDataHeadSection;
- typedef struct tag_EPPExchangeDataTailSection
- {
- BYTE bySignatureEnd;
- WORD wCRC;
- } EPPExchangeDataTailSection, *LPEPPExchangeDataTailSection;
- typedef struct tag_EPPExchangeDataField
- {
- union
- {
- BYTE byCmd;
- BYTE byStatus;
- } unHead;
- union
- {
- LPBYTE lpbyParamInfo;
- LPBYTE lpbyResInfo;
- } unBody;
- } EPPExchangeDataField, *LPEPPExchangeDataField;
- typedef struct tag_SetEntryModeParam
- {
- SwitchMode enSwitchMode;
- WORD wKeybordDisCode;
- WORD wFuncKeybordDisCode;
- } SetEntryModeParam, *LPSetEntryModeParam;
- typedef struct tag_ReadEntryTextResponse
- {
- BYTE byBytesCount;
- BYTE byDataOfGTB[8];
- } ReadEntryTextResponse, *LPReadEntryTextResponse;
- typedef struct tag_VirtualKeyPressParam
- {
- WORD wKeyTableLen;
- BYTE byKeyTable[8];
- } VirtualKeyPressParam, *LPVirtualKeyPressParam;
- typedef struct tag_DelEntryBufferParam
- {
- WORD wContrlParemeterlen;
- DeleteEntryBufferMode enControlParameter;
- } DelEntryBufferParam, *LPDelEntryBufferParam;
- typedef struct tag_SetKeyboardCodeParam
- {
- KeyboardCodeMode enSetKeyboardCodeMode;
- BYTE byEPPTableNaturalMode[16];
- BYTE byEPPTableShiftMode[16];
- BYTE byExFunKeyNaturalMode[16];
- BYTE byExFunKeyShiftMode[16];
- } SetKeyboardCodeParam, *LPSetKeyboardCodeParam;
- typedef struct tag_SetControlModeParam
- {
- ControlMode enControlMode;
- BYTE byControlCode;
- } SetControlModeParam, *LPSetControlModeParam;
- typedef struct tag_ReadEPPInfoResponse
- {
- BYTE byEPPType;
- WORD wDESKeyNumber;
- WORD wRSAKeyNumber;
- WORD wCertificateNumber;
- WORD wCryptAlgorithms;
- BYTE byDerivationAlgorithms;
- BYTE byPresentationAlgorithms;
- BYTE byValidationAlgorithms;
- WORD wPinFormat;
- BYTE byKeyCheckModes;
- WORD wUseDESKey;
- BYTE byICCard;
- BYTE byDisPlay;
- BYTE byPressKeyNumber;
- BYTE byVersionNumber[16];
- BYTE byProductModel[8];//标签下面ZT598后面的8位数字
- BYTE byMainChipSN[8];//键盘ID号
- } ReadEPPInfoResponse, *LPReadEPPInfoResponse;
- typedef struct tag_WriteUserDataParam
- {
- BYTE byUserBlockAdress;
- BYTE byUserData[256];
- } WriteUserDataParam, *LPWriteUserDataParam;
- typedef BYTE ReadUserDataParam, *LPReadUserDataParam;
- typedef BYTE ReadUserDataResponse[256];
- typedef InstallMode RemoveInstallAuthParam, *LPRemoveInstallAuthParam;
- typedef BYTE RemoveInstallAuthResponse[4];
- typedef struct tag_UpdatePasswordParam
- {
- PWDKeyID enPWDKey;
- BYTE byUpdataMode;
- tag_UpdatePasswordParam() :
- byUpdataMode(0x30)
- {}
- } UpdatePasswordParam, *LPUpdatePasswordParam;
- typedef struct tag_LoadKeyParam
- {
- WORD wKeyID;
- LoadKeyWriteMode enLoadKeyWriteMode;
- KeyAttributes Attributes;
- LoadKeyVerifyMode enLoadKeyVerifyMode;
- KeyCheckMode enLoadKeyCheckMode;
- WORD wKeyCheckValueLen;
- BYTE byKeyCheckValue[DES_DATA_GROUP_LENGTH];
- BYTE byPlainTextKey[24];
- BYTE byKeyBlockMACValue[4];
- } LoadKeyParam, *LPLoadKeyParam;
- typedef struct tag_LoadKeyResponse
- {
- WORD wKeyCheckValueLen;
- BYTE byKeyCheckValue[DES_DATA_GROUP_LENGTH];
- } LoadKeyResponse, *LPLoadKeyResponse;
- typedef struct tag_ExChangeKeyParam
- {
- WORD wKeyID1;
- WORD wVariationIndex1;
- WORD wKeyID2;
- LoadKeyWriteMode enKeyWriteMode;
- KeyAttributes Attributes2;
- LoadKeyVerifyMode enKeyVerifyMode;
- KeyCheckMode enKCVCheckMode;
- WORD wKeyCheckValueLen;
- BYTE byKeyCheckValue[DES_DATA_GROUP_LENGTH];
- WORD wKeyCipherTextLen;
- BYTE byKeyCipherText[24];
- BYTE byKeyBlockMACValue[4];
- } ExChangeKeyParam, *LPExChangeKeyParam;
- typedef struct tag_ExChangeKeyResponse
- {
- WORD wKCVLen;
- BYTE byKCV[DES_DATA_GROUP_LENGTH];
- } ExChangeKeyResponse, *LPExChangeKeyResponse;
- typedef BYTE GenerateRandomDataParam, *LPGenerateRandomDataParam;
- typedef struct tag_GenerateRandomDataResponse
- {
- WORD wGeneratedDataLen;
- BYTE byGeneratedData[255];
- } GenerateRandomDataResponse, *LPGenerateRandomDataResponse;
- typedef struct tag_AuthenticationParam
- {
- WORD wKeyID;
- AuthenticationMode enAuthenticationMode;
- BYTE byEPPRandomData[8];
- BYTE byHOSTRandomData[8];
- BYTE byMACData[4];
- } AuthenticationParam, *LPAuthenticationParam;
- typedef struct tag_AuthenticationResponse
- {
- BYTE byHOSTRandomData[8];
- BYTE byEPPRandomData[8];
- BYTE byMACData[4];
- } AuthenticationResponse, *LPAuthenticationResponse;
- typedef WORD DeleteKeyParam, *LPDeleteKeyParam;
- typedef struct tag_ReadKeyAttributesParam
- {
- WORD wKeyID;
- KeyCheckMode enKeyCheckMode;
- WORD wVariationIndex;
- } ReadKeyAttributesParam, *LPReadKeyAttributesParam;
- typedef struct tag_ReadKeyAttributesResponse
- {
- KeyAttributes Attributes;
- WORD wKCVLen;
- BYTE byKCV[DES_DATA_GROUP_LENGTH];
- } ReadKeyAttributesResponse, *LPReadKeyAttributesResponse;
- typedef struct tag_EncryptPinBlockParam
- {
- WORD wKeyID;
- WORD wVariationIndex;
- PinBlockEnctryptionMode enPinBlockEnctryptionMode;
- PinFormat enPinFormat;
- WORD wKeyID2;
- WORD wVariationIdex2;
- BYTE byInitialPINPattern[8];
- BYTE byPINOffset;
- BYTE byPINLength;
- BYTE byXORPINBlockPattern[8];
- BYTE byXORPINBlockPattern2[8];
- } EncryptPinBlockParam, *LPEncryptPinBlockParam;
- typedef BYTE EncryptPinBlockResponse[8];
- typedef struct tag_DesCryptDataParam
- {
- WORD wKeyID;
- WORD wVariationIndex;
- WORD wKeyID2;
- BYTE byIV[8];
- IVMode enIVMode;
- BYTE byDesMode;
- CryptCryptionMode enCryptionMode;
- WORD wInputDataLen;
- LPBYTE lpInputData;
- } DesCryptDataParam, *LPDesCryptDataParam;
- typedef struct tag_DesCryptDataResponse
- {
- WORD wOutputDataLen;
- LPBYTE lpOutputData;
- } DesCryptDataResponse, *LPDesCryptDataResponse;
- typedef struct tag_MACEnCryptDataParam
- {
- WORD wKeyID;
- WORD wVariationIndex;
- WORD wKeyID2;
- BYTE byIV[8];
- IVMode enIVMode;
- MACMode enMACMode;
- MACCryptionMode enCryptionMode;
- WORD wInputDataLen;
- LPBYTE lpInputData;
- } MACEnCryptDataParam, *LPMACEnCryptDataParam;
- typedef struct tag_MACEnCryptDataResponse
- {
- WORD wOutputDataLen;
- LPBYTE lpOutputData;
- } MACEnCryptDataResponse, *LPMACEnCryptDataResponse;
- typedef struct tag_GetEPPSensorDataResponse
- {
- GetEPPSensorExSensor ExternalSensor;
- GetEPPSensorInternalSensorState InternalSensorState;
- GetEPPSensorBatteryState BatteryState;
- } GetEPPSensorDataResponse, *LPGetEPPSensorDataResponse;
- typedef KeyboardCodeMode GetKeyBoardCodeParam, *LPGetKeyBoardCodeParam;
- typedef struct tag_GetKeyBoardCodeResponse
- {
- BYTE byEPPTableNaturalMode[16];
- BYTE byEPPTableShiftMode[16];
- BYTE byExFunKeyNaturalMode[16];
- BYTE byExFunKeyShiftMode[16];
- } GetKeyBoardCodeResponse, *LPGetKeyBoardCodeResponse;
- typedef BYTE SetSystemTimeParam[4];
- typedef BYTE GetSystemTimeResponse[4];
- //国密SM
- typedef struct tag_SM4LoadTextKeyParam
- {
- WORD wKeyIndex;
- WriteModeSM enWritrMode;
- BYTE byKeyData[16];
- KeyAttributes Attributes2;
- } SM4LoadTextKeyParam, *LPSM4LoadTextKeyParam;
- typedef BYTE SM4LoadTextKeyResponse[8];
- typedef struct tag_SM4ExchangeKeyParam
- {
- WORD wKeyID1;
- WORD wKeyID2;
- BYTE byCiphertextKey[16];
- KeyAttributes Attributes2;
- } SM4ExchangeKeyParam, *LPSM4ExchangeKeyParam;
- typedef BYTE SM4ExchangeKeyResponse[8];
- typedef struct tag_SM4CryptParam
- {
- WORD wKeyIndex;
- CryptMode enCryptMode;
- CryptSM4Mode enCryptSM4Mode;
- BYTE byIVData[16];
- WORD wInputDataLen;
- LPBYTE lpInputData;
- } SM4CryptParam, *LPSM4CryptParam;
- typedef struct tag_SM4CryptResponse
- {
- WORD wEncryptDataLen;
- LPBYTE lpEncryptData;
- } SM4CryptResponse, *LPSM4CryptResponse;
- typedef struct tag_SM4MACParam
- {
- WORD wKeyIndex;
- BYTE byIVData[16];
- SM4MACMode enMACMode;
- WORD wInputDataLen;
- LPBYTE lpInputData;
- } SM4MACParam, *LPSM4MACParam;
- typedef BYTE SM4MACResponse[16];
- typedef struct tag_SM4GetPinBlockParam
- {
- WORD wKeyID;
- EncryptionMode enEncryptionMode;
- WORD wKeyID2;
- BYTE byPinFormat;
- BYTE byInitialPinPattern[16];
- BYTE byPinOffset;
- BYTE byPinLength;
- BYTE byXORPinBlockPattern[16];
- BYTE byXORPinBlockPattern2[16];
- } SM4GetPinBlockParam, *LPSM4GetPinBlockParam;
- typedef BYTE SM4GetPinBlockResponse[16];
- typedef WORD SMDeleteKeyParam, *LPSMDeleteKeyParam;
- typedef BYTE SMGetVersionResponse[14];
- typedef struct tag_SMReadKeyAttributeParam
- {
- WORD wKeyID;
- KeyCheckMode enKeyCheckMode;
- } SMReadKeyAttributeParam, *LPSMReadKeyAttributeParam;
- typedef struct tag_SMReadKeyAttributeResponse
- {
- KeyAttributes Attributes;
- BYTE byKeyCheckValue[MAX_SM_HW_KCV_LENGTH];
- } SMReadKeyAttributeResponse, *LPSMReadKeyAttributeResponse;
- //RSA
- typedef struct tag_GenerateRsaKeyPairParam
- {
- WORD wPrivateKeyId;
- WORD wPublicKeyId;
- WORD wModulusLength;
- DWORD dwExponentData;
- } GenerateRsaKeyPairParam, *LPGenerateRsaKeyPairParam;
- typedef struct tag_DerTagHead
- {
- BYTE byFieldType;
- BYTE byLengthType;
- USHORT usLength;
- } DerTagHead, *LPDerTagHead;
- typedef struct tag_DerIntegerTag
- {
- DerTagHead stDerTagHead;
- LPBYTE lpbyValues;
- USHORT usLength;
- LPBYTE lpbyBuffer;
- } DerIntegerTag, *LPDerIntegerTag;
- typedef struct tag_DerRsaKeyTag
- {
- DerTagHead stDerTagHead;
- DerIntegerTag stModulusTag;
- DerIntegerTag stExponentTag;
- USHORT usLength;
- LPBYTE lpbyBuffer;
- } DerRsaKeyTag, *LPDerRsaKeyTag;
- typedef struct tag_DerRsaKeyWithSigTag
- {
- DerTagHead stDerTagHead;
- DerRsaKeyTag stDerRsaKeyTag;
- DerIntegerTag stSigTag;
- USHORT usLength;
- LPBYTE lpbyBuffer;
- } DerRsaKeyWithSigTag, *LPDerRsaKeyWithSigTag;
- typedef struct tag_DerEncDesKeytag
- {
- DerTagHead stDerTagHead;
- DerIntegerTag stEncDesKeyTag;
- DerIntegerTag stSigTag;
- USHORT usLength;
- LPBYTE lpbyBuffer;
- } DerEncDesKeytag, *LPDerEncDesKeytag;
- typedef struct tag_DerEppSNTag
- {
- DerTagHead stDerTagHead;
- DerIntegerTag stSNTag;
- DerIntegerTag stSigTag;
- USHORT usLength;
- LPBYTE lpbyBuffer;
- } DerEppSNTag, *LPDerEppSNTag;
- typedef struct tag_ExpEppPKParam
- {
- WORD wKeyId;
- WORD wSignatureId;
- } ExpEppPKParam, *LPExpEppPKParam;
- typedef struct tag_ExpEppPKResponse
- {
- SignatureAlgorithm enSigAlgorithm;
- DerRsaKeyWithSigTag stDerRsaKeyWithSigTag;
- } ExpEppPKResponse, *LPExpEppPKResponse;
- typedef struct tag_ImportDesKeyParam
- {
- WORD wDesKeyId;
- KeyAttributes stKeyAttributes;
- WORD wEppSkDecKeyId;
- SignatureAlgorithm enSigAlgorithm;
- LoadKeyVerifyMode enVerifyMode;
- KeyCheckMode enDesKCM;
- WORD wKCVLen;
- BYTE byKCV[DES_DATA_GROUP_LENGTH];
- WORD wVerifySigPkId;
- RsaEncipherAlgorithm enEncipherAlgorithm;
- RandomMode enRandomMode;
- DerEncDesKeytag stDerEncDesKeytag;
- } ImportDesKeyParam, *LPImportDesKeyParam;
- typedef struct tag_ImportDesKeyResponse
- {
- WORD wKCVLen;
- BYTE byKCV[DES_DATA_GROUP_LENGTH];
- } ImportDesKeyResponse, *LPImportDesKeyResponse;
- typedef struct tag_ImportRsaKeyParam
- {
- WORD wKeyId;
- KeyAttributes stKeyAttributes;
- WORD wSigKeyId;
- SignatureAlgorithm enSigAlgorithm;
- DerRsaKeyWithSigTag stDerRsaKeyWithSigTag;
- } ImportRsaKeyParam, *LPImportRsaKeyParam;
- typedef struct tag_ImportRsaKeyResponse
- {
- RsaKeyCheckMode enRsaKCM;
- BYTE byRsaKCV[32];
- } ImportRsaKeyResponse, *LPImportRsaKeyResponse;
- typedef struct tag_ImportEppSNParam
- {
- WORD wKeyId;
- KeyAttributes stKeyAttributes;
- WORD wSigKeyId;
- SignatureAlgorithm enSigAlgorithm;
- DerEppSNTag stDerEppSNTag;
- } ImportEppSNParam, *LPImportEppSNParam;
- typedef ImportRsaKeyResponse ImportEppSNResponse, *LPImportEppSNResponse;
- typedef ExpEppPKParam ExpEppSNParam, *LPExpEppSNParam;
- typedef struct tag_ExpEppSNResponse
- {
- SignatureAlgorithm enSigAlgorithm;
- DerEppSNTag stDerEppSNTag;
- } ExpEppSNResponse, *LPExpEppSNResponse;
- typedef struct tag_RSACryptDataParam
- {
- WORD wKeyId;
- USHORT usDataLen;
- BYTE byData[RSA_KEY_LENGTH_256_BYTE];
- } RSACryptDataParam, *LPRSACryptDataParam;
- typedef struct tag_RSACryptDataResponse
- {
- USHORT usDataLen;
- BYTE byData[RSA_KEY_LENGTH_256_BYTE];
- } RSACryptDataResponse, *LPRSACryptDataResponse;
- typedef struct tag_SecureCommunicationProtocolHead
- {
- BYTE byCommandHead;
- BYTE byDeviceNo;
- WORD wCommandFeature;
- BYTE byCommandLength[2];
- BYTE bySerialNumber;
- BYTE byCommandType;
- BYTE byCommand;
- } SecureCommProtocolHead, *LPSecureCommProtocolHead;
- typedef struct tag_FWBlockWithSig
- {
- BYTE byFWData[512];
- BYTE bySigData[64];
- } FWBlockWithSig, *LPFWBlockWithSig;
- typedef struct tag_UpdatingMainFWParam
- {
- WORD wFWBlockIndex;
- FWBlockWithSig stFWBlockWithSig;
- } UpdatingMainFWParam, *LPUpdatingMainFWParam;
- typedef EPPExchangeDataTailSection SecureCommProtocolTail, *LPSecureCommProtocolTail;
- #pragma pack(pop)
|