#ifndef __DEFINE__H__ #define __DEFINE__H__ #include #include #include #include #include #include "asc16.h" #include "asc8.h" #include "hzk16.h" #include "lcddisplay.h" #include #include "utils.h" #include "sham.h" #include "serial.h" #include #include "IC_API.h" #define OPEN_HYK16_FAIL 0x10 //打开并初始化HYK16卡失败 #define RESET_HYK16_FAIL 0x11 //重置核验卡失败 #define CHECK_HYK16_SELF_FAIL 0x12 //卡自检失败 #define GET_HYK16_ID_FAIL 0x13 //获取卡的序列号失败 #define GET_HYK16_MK_FAIL 0x14 //生成银行MK失败 #define READ_HYK16_MK_FAIL 0x15 //读入银行MK失败 #define HYK16_Check_Key_Pay_FAIL 0x16 //card 核验失败 #define HYK16_Add_Key_Pay_FAIL 0x17 //增发支付密码器失败 #define HYK16_Update_MK_FAIL 0x18 //更新主密钥失败 #define HYK16_Conver_MK_FAIL 0x19 //转换银行主密钥失败 //#define thread_num 64 #define thread_num 20 #define thread_num_speedtest 64 //#define EX_thread_num 32 #define EX_thread_num 16 #define EX_thread_num_speedtest 64 #define EX_SM4_NUM 8 #define EX_AES_NUM 4 #define EX_DES_NUM 4 //DES 3DES公用 #define FUNC_MODE 0 //function test mode #define DIAG_MODE 1 #define SN_TEST 0 #define HRNG_FAST_TEST 1 #define HRNG_ALL_TEST 2 #define ALG_TEST 3 #define SDRAM_TEST 4 #define SRAM_RD_TEST 5 #define SRAM_WR_TEST 6 #define FLASH_RD_TEST 7 #define FLASH_WR_TEST 8 #define ALG_SM1_TEST 10 #define ALG_SSF33_TEST 11 #define ALG_SM4_TEST 12 #define ALG_AES_TEST 13 #define ALG_DES_TEST 14 #define ALG_TDES_TEST 15 #define ALG_IDEA_TEST 16 #define ALG_RSA_TEST 17 #define ALG_SM2_TEST 18 #define ALG_SM3_TEST 19 #define _ECCref_MAX_BITS 512 #define _ECCref_MAX_LEN ((_ECCref_MAX_BITS+7)/8) #define _ECCref_MAX_DATALEN 5120 //接口相关的定义 typedef struct _version_struct{ unsigned char software_version[64]; unsigned char check[8]; unsigned char hardware_version[32]; unsigned char SN_id[32]; }version_struct; typedef struct _S_TRAN_ARG{ unsigned char *idata; unsigned char*odata; unsigned int ilen; unsigned int olen; unsigned int rlen; unsigned int chan; }S_TRAN_ARG; typedef struct _cos_struct{ unsigned char HSC32K1Number; unsigned char SSX1510Number; unsigned char FreeData1; unsigned char FreeData2; }cos_struct; typedef struct _EXAR_STRUCT{ uint8_t bridge0; uint8_t bridge1; uint8_t SM4; uint8_t AES; uint8_t DES; }exar_struct; typedef struct _THREAD_ARG{ int fd; unsigned int thread_no; unsigned int Arith; unsigned int arith_mode; unsigned int datalen; }THREAD_ARG; #define STANDARD_919 0x00 #define STANDARD_99 0x01 #define STANDARD_UNIONPAY 0x02 #define MAX_PCIBUF_SIZE (8192*2) #define PCI_PACKAGE_HEAD_LEN (32) //----算法定义----// #define ARITH_SM1_SPEED 0x01 #define ARITH_SSF33_SPEED 0x02 #define ARITH_SM4_SPEED 0x03 #define ARITH_DES_SPEED 0x04 #define ARITH_3DES_SPEED 0x05 //soft arith #define ARITH_IDEA_SPEED 0x06 #define ARITH_AES_SPEED 0x07 //----算法定义----// #define ARITH_DES 0x01 #define ARITH_3DES 0x02 #define ARITH_IDEA 0x03 #define ARITH_SM1 0x04 #define ARITH_AES 0x05 #define ARITH_SM4 0x06 #define ARITH_SSF33 0x07 #define W_NET ARITH_SM1 #define W_NET_2 ARITH_3DES #define S_NET ARITH_SM1 #define S_NET_2 ARITH_3DES #define N_NET 0x00 #define ARITH_DES_LEN 0x04 #define ARITH_3DES_LEN 0x05 #define CMD_SM4 0x801 #define CMD_AES 0x802 #define CMD_DES 0x803 #define CMD_TDES 0x804 /* Cmd1 命令类型*/ #define PCI_SYMMETRY_ED 0x01//对称算法加解密 #define PCI_ASYMMETRY_ED 0x02//非对称算法加解密 #define PCI_HASH 0x03//哈希算法 #define PCI_SYMTOSYM_ENC 0x04//对称算法转加密 #define PCI_SYMTOASYM_ENC 0x05//对称与非对称算法转加密 #define PCI_ARITHMETIC_TEST 0x06//算法正确性检验 #define PCI_SYMKEY_GENERATION 0x07//对称密钥随机生成 #define PCI_ASYMKEY_GENERATION 0x08//非对称密钥随机生成 #define PCI_SYMKEY_INPORT_EXPORT 0x09//对称密钥导入导出 #define PCI_ASYMKEY_INPORT_EXPORT 0x0A//非对称密钥导入导出 #define PCI_SIGN_SIGNCHECK 0x0B//雷卡体系签名验签 #define PCI_PIN_DEAL 0x0C//PIN处理 #define PCI_DEVICE_MANAGE 0x0D//设备管理 #define PCI_LMK_MANAGE 0x0E//主密钥管理 #define PCI_HARDWARE_DETECTION 0x0F//硬件自检 #define PCI_SM2_SYNC 0x13//密钥协商 #define PCI_AN_PIN 0x81//专用指令:AN_PIN #define PCI_ICBC 0x82//工总行指令 /* Cmd2 对称算法加解密*/ #define PCI_DES_ENCRYPT 0x11 //DES加密 #define PCI_DES_DECRYPT 0x12 //DES解密 #define PCI_DES3_ENCRYPT 0x13 // 3DES加密 #define PCI_DES3_DECRYPT 0x14 // 3DES解密 #define PCI_IDEA_ENCRYPT 0x15 //IDEA加密 #define PCI_IDEA_DECRYPT 0x16 //IDEA解密 #define PCI_AES_ENCRYPT 0x17 //AES加密 #define PCI_AES_DECRYPT 0x18 //AES解密 #define PCI_SM4_ENCRYPT 0x19 //SM4加密 #define PCI_SM4_DECRYPT 0x1A //SM4解密 #define PCI_SM1_ENCRYPT 0x1B //SM1加密 #define PCI_SM1_DECRYPT 0x1C //SM1解密 /* Cmd2 非对称算法加解密*/ #define SM2_ENCRYPT 0x21//SM2公钥加密 #define SM2_DECRYPT 0x22//SM2私钥解密 #define RSA_ENCRYPT 0x23//RSA公钥加密 #define RSA_DECRYPT 0x24//RSA 私钥解密 /* Cmd2 哈希*/ #define SM3_HASH 0x31//用SM3做哈希 #define SHA1_HASH 0x32 #define SHA256_HASH 0x33 #define MD5_HASH 0x34 #define SM3_USERID_HASH 0x35 /* Cmd2 对称算法转加密*/ #define SYMTOSYM_ENC 0x41 /* Cmd2 对称与非对称算法转加密*/ #define SYMTOSM2_ENC 0x51//对称算法到SM2算法转加密 #define SYMTORSA_ENC 0x52//对称算法到RSA算法转加密 #define SM2TOSYM_ENC 0x53//SM2到对称算法 #define RSATOSYM_ENC 0x54//RSA到对称算法 /* Cmd2 */ #define SM4_ENCRYPT_TEST 0x61//SM4加密测试 #define SM4_DECRYPT_TEST 0x62//SM4解密测试 /* Cmd2 对称密钥随机生成*/ #define SYMKEY_GENERATION 0x71 /* Cmd2 非对称密钥随机生成*/ #define SM2KEY_GENERATION 0x81//SM2公私钥对生成 #define RSAKEY_GENERATION 0x82//RSA公私钥对生成 /* Cmd2 对称密钥导入导出*/ #define SYMKEY_CIPHER_INPORT 0x91//对称密钥密文导入 #define SYMKEY_CIPHER_EXPORT 0x92//对称密钥密文导出 /* Cmd2 非对称密钥导入导出*/ #define SM2PUBCKEY_CLEAR_INPORT 0xA1//SM2公钥明文导入 #define SM2PUBKEY_CLEAR_EXPORT 0xA2//SM2公钥明文导出 #define SM2PRIKEY_CIPHER_INPORT 0xA3//SM2私钥密文导入 #define SM2PRIKEY_CIPHER_EXPORT 0xA4//SM2私钥密文导出 #define SM2KEY2_INPORT 0xA5//SM2密钥对导入 #define SM2KEY2_EXPORT 0xA6//SM2密钥对导出 #define RSAPUBCKEY_CLEAR_INPORT 0xA7//RSA公钥明文导入 #define RSAPUBKEY_CLEAR_EXPORT 0xA8//RSA公钥明文导出 #define RSAPRIKEY_CIPHER_INPORT 0xA9//RSA私钥密文导入 #define RSAPRIKEY_CIPHER_EXPORT 0xAA//RSA私钥密文导出 #define RSAKEY2_INPORT 0xAB//RSA密钥对导入 #define RSAKEY2_EXPORT 0xAC//RSA密钥对导出 /* Cmd2 雷卡体系签名验签*/ #define RSA_SIGN_GENERATION 0xB1//RSA签名 #define RSA_SIGN_CHECK 0xB2//RSA验签 #define SM2_SIGN_GENERATION 0xB3//SM2签名 #define SM2_SIGN_CHECK 0xB4//SM2验签 /* Cmd2 PIN处理*/ #define PINBLOCK_CHANGE_ENC 0xC1//PINBLOCK转加密 #define PVV_CALCULATION 0xC2//PVV计算 #define CVV_CHCEK 0xC3//PVV验证 #define PIN_OFFSET_CALCULATION 0xC4//PIN offset计算 #define PIN_OFFSET_CHECK 0xC5//PIN offset验证 #define PIN_PINBLOCK_CALCULATION 0xC6//生成PIN及PINBLOCK #define PIN_PRINT 0xC7//PIN打印 /* Cmd2 设备管理*/ #define DEVICE_INITIALIZE 0xD1//设备初始化 #define DEVICE_ACCESS_LIMIT 0xD2//设备访问权限 #define DEVICE_DETECTION 0xD3//设备自检 #define SM2_CURVE_NITIALIZE 0xD4//SM2曲线初始化 #define RANDOM_GENERATION 0xD5//生成随机数 #define WRITE_DEVICE_INFORMATION 0xD6//写设备信息 #define READ_DEVICE_INFORMATION 0xD7//读设备信息 #define READ_VERSION_INFORMATION 0xD8//读版本信息 #define READ_COS_INFORMATION 0xDF//读硬件设备信息 /* Cmd2 主密钥管理*/ #define GENERATE_COMPONENT 0XE0 #define LMK_GENERATION 0xE1//生成系统主密钥 #define LMK_LOAD 0xE2//装载系统主密钥 #define LMK_BACKUP 0xE3//备份系统主密钥 #define LMK_RECOVER 0xE4//恢复系统主密钥 #define LMK_SEED_DESTORY 0xE5//销毁系统主密钥种子 #define CKEY_DISPERSE 0xE6//通信密钥分散成n个分量 #define DISFACTOR_KEY_DISPERSE 0xE7//带分散因子密钥分散 #define CKEY_CLEARCOMPONENT_COMBINE 0xE8//通信密钥n个明文分量合成 #define COMBINEFACTOR_COMPONENT_COMBINE 0xE9//带合成因子分量合成 #define S_COMPONENT_DFACTOR_DISPERSE 0xEA//单分量带分散因子分散 #define LMK_REPLACE 0xEB//主密钥更新 #define TEST_LMK_LOAD 0xEC//加载测试主密钥 #define WORKSPACE_LMKSTATUS_CHECK 0xED//工作区主密钥自检 #define TEMPAREA_LMKSTATUS_CHECK 0xEE//临时区主密钥自检 #define LMK_DESTORY 0xEF//销毁主密钥 /* AN_PIN */ #define AN_PIN_GENERATION 0X01//AN-PIN生成 #define AN_PIN_DECRYPT 0X02//AN-PIN解密 /* Cmd2 硬件自检*/ #define HARDWARE_DETECTION 0xF1//硬件自检 #define ARITHINTERFACE_SYMM 0xF2//对称算法接口 #define ARITHINTERFACE_SM2 0xF3//SM2算法接口 #define ARITHINTERFACE_RSA 0xF4//RSA算法接口 #define PCICOMMUNICATION 0xF5//PCI通讯测试 #define STORE_TESET_CMD2 0xF6//存储设备读写测 /* Cmd2 工总行指令*/ // 20141107 add by sgf #define ICBC_CALC_KCV 0x01 //计算KCV #define ICBC_TRANSTOICBC 0x02 //转加密到ICBC格式 #define ICBC_TRANSFROMICBC 0x03 //从ICBC转加密到自有格式 #define ICBC_IMPORTDISP 0x04 //导入分量 #define ICBC_IMPORTLMK 0x05 //导入ICBC主密钥 #define ICBC_LMKTEST_CUR 0x06 //ICBC主密钥检测 /*加密或者解密*/ #define ENCRYPT 1 #define DENCRYPT 0 /*加密模式*/ #define INVALID 0x00 //无效模式 #define ECB 0x01 //ECB模式 #define CBC 0x02 //CBC 模式 #define CFB 0x03 //CFB 模式 #define OFB 0x04 //OFB模式 #define _Rotl(_x, _y) (((_x) << (_y)) | ((_x) >> (32 - (_y)))) //20141008 sgf //----模式定义----// // for SymmArithinterface #define ECB_ENC 0x00 #define ECB_DEC 0x01 #define CBC_ENC 0x02 #define CBC_DEC 0x03 #define CFB_ENC 0x04 #define CFB_DEC 0x05 #define OFB_ENC 0x06 #define OFB_DEC 0x07 #define _RSAref_MAX_BITS 2048 #define _RSAref_MAX_LEN ((_RSAref_MAX_BITS + 7)/8) #define _RSAref_MAX_PBITS ((_RSAref_MAX_BITS + 1)/2) #define _RSAref_MAX_PLEN ((_RSAref_MAX_PBITS + 7)/8) typedef struct { unsigned int bits; unsigned char modulus[_RSAref_MAX_LEN]; unsigned char exponent[_RSAref_MAX_LEN]; }RSArefPubKey_st; typedef struct { unsigned int bits; unsigned char modulus[_RSAref_MAX_LEN]; unsigned char publicExponent[_RSAref_MAX_LEN]; unsigned char exponent[_RSAref_MAX_LEN]; unsigned char prime[2][_RSAref_MAX_PLEN]; unsigned char primeExponent[2][_RSAref_MAX_PLEN]; unsigned char coefficient[_RSAref_MAX_PLEN]; }RSArefPriKey_st; typedef struct { RSArefPubKey_st PubKey; RSArefPriKey_st PriKey; }RSArefKeyPair_st; typedef struct tTransSymmAsymm { unsigned char LMKIndex; // 主密钥索引 unsigned char ProtectArith; // 保护算法 unsigned char *SymmKeyOrIndex; // 指向对称密钥或其索引(SymmKeyLen=4) unsigned char SymmKeyLen; // 对称密钥长度 unsigned char SymmArith; // 对称算法 unsigned char AppMode; unsigned char Scheme; unsigned char *AsymmKeyOrIndex; unsigned char AsymmKeyLen; unsigned char *DataIn; unsigned int DataInLen; unsigned char *IV; unsigned char *DataOut; unsigned int DataOutLen; }tTransSymmAsymm; typedef struct // ECC(SM2)签名 { unsigned int len; unsigned char r[_ECCref_MAX_LEN]; // 签名的r部分 unsigned char s[_ECCref_MAX_LEN]; // 签名的s部分 }ECCSignnature_st; typedef struct // RSA签名 { unsigned int Len; unsigned char SignValue[_RSAref_MAX_LEN]; }RSArefSignData_st; /*Device Managing*/ typedef struct _DEVICEINFO{ unsigned char IssuerName[40]; unsigned char DeviceName[16]; unsigned char DeviceSerial[16]; unsigned int DeviceVersion; unsigned int StandardVersion; unsigned int AsymAlgAbility[2]; unsigned int SymAlgAbility; unsigned int HashAlgAbility; unsigned int BufferSize; }DEVICEINFO; //------------------------------------------------// typedef struct _S_DES_ARG{ unsigned char *key; unsigned char *idata; unsigned char *odata; unsigned char *iv; unsigned int key_len; unsigned int len; unsigned int rlen; unsigned int key_index; //for key in key ram of card when 0 key form outside, when 1-256 key from key ram unsigned int enc; // 1 enc : 0 dec unsigned int mode; // 1 CBC : 0 ECB unsigned int chan; }S_EX_ARG; //结构体定义 typedef struct { unsigned int bits; unsigned char x[_ECCref_MAX_LEN]; // ECC公钥参数x unsigned char y[_ECCref_MAX_LEN]; // ECC公钥参数y }ECCrefPublicKey_st; typedef struct { unsigned int bits; // 密钥位长(256位) unsigned char K[_ECCref_MAX_LEN]; // ECC私钥 }ECCrefPrivateKey_st; typedef struct // ECC(SM2)密钥对 { ECCrefPublicKey_st PubKey; ECCrefPrivateKey_st PriKey; }ECCrefKeyPair_st; // sgf 2014.5.7 增加SM2算法密文结构体 typedef struct { unsigned char x[_ECCref_MAX_LEN]; unsigned char y[_ECCref_MAX_LEN]; unsigned char M[32]; unsigned int L; unsigned char C[_ECCref_MAX_DATALEN]; // C不 能 大 于 1 36字节 }ECCCipher_st; // 曲线定义 #define _USER_Fp 0x0000 // 用户指定的曲线参数,存放于RAM接口 #define _ISTECC_Fp_160 0x0001 // 信安推荐的160位曲线 #define _NIST_Fp_192 0x0002 // NIST推荐的192位曲线 #define _NIST_Fp_224 0x0003 // NIST推荐的224位曲线 #define _NIST_Fp_256 0x0004 // NIST推荐的256位曲线 #define _OSCCA_Fp_192 0x0005 // 国家密码局针对WAPI推荐的192位曲线 #define _OSCCA_Fp_256_Old 0x0006 // 国家密码局较早推荐的256位曲线 #define _OSCCA_Fp_256_New 0x0007 // 国家密码局最新推荐的256位曲线 /*错误代码*/ #define RET_PCI_SUCCESS (0x00) #define ERR_PCI_CARDTIMEOUT (0x6A) //密押卡处理超时 #define ERR_CARDWRITE 0x6B //写密押卡错误 #define ERR_CARDREAD 0x6C //读密押卡错误 #define ERR_CARDBANKNO 0x6D //行号已满 #define ERR_OPENPCI 0x6E //密押卡打开失败 #define ERR_CARDLEN 0x6F //卡数据长度错误 #define ERR_DATACRC 0x68 //数据包CRC错误 #define ERR_API_INPARA 0x69 //API输入参数错误 #define ERR_MODE_OR_IVLEN 0x6A //模式与向量长度不匹配 #define ERR_HW_TEST 0x67 //自检 // 随机数头文件 #define RANDOM_RANDOMNESS_CIRCLE 1000 #define RANDOM_RANDOMNESS_LEN 1024 //1024bit #define RANDOM_RANDOMNESS_BLOCK 977 //8*8 //8*8*1024bit #define RANDOM_RANDOMNESS_TOTAL_LEN (RANDOM_RANDOMNESS_LEN*RANDOM_RANDOMNESS_BLOCK) #define RANDOM_SPEED_CIRCLE 10000 #define RANDOM_SPEED_LEN 128 #define RANDOM_SPEED_BUFF_LEN (1024*124) //判断是否是雷卡体系与金卡体系 #define RACAL_CARD #define LMK_GC_DEFAULT_PROTECT_INDEX 1 //本地保护LMK金卡默认索引号 extern int g_hPCI1; extern int g_hPCI2; extern int mutual_speedtest_card0; extern int mutual_speedtest_card1; //define ErrCode #define ERR_RLEN -11 //rlen from api err but it should not happen #define ERR_DATA -12 //data cmp err #define ERR_STD -13 //standard test fail #define ERR_SPD -14 //speed too low #define ERR_RAND -15 //randomness not ok #define RANDOM_RANDOMNESS_LEVEL 0.97 //0.97 for factory 0.981 for GM test #define SYMALG_RUN_CIRCLE 50 //#define SYMALG_RUN_CIRCLE 10000 #define SYMALG_SPEED_CIRCLE 2000 #define EX_SYMALG_SPEED_CIRCLE 20000 #define SYMALG_MAX_CIRCLE 5000 //#define SYMALG_MAX_LEN (0x800-256) //modify by grn 0321 #define SYMALG_MAX_LEN (1024*11+512) //modify by grn #define SYMALG_MAX_MOD (SYMALG_MAX_LEN+1) //#define EX_SYMALG_MAX_LEN (4096-128) #define EX_SYMALG_MAX_LEN (8192) #define RSA_RUN_CIRCLE 1000 #define RSA_SPEED_CIRCLE 1000 #ifdef CARD_DEBUG #define RSA_MAX_CIRCLE 5000 #else #define RSA_MAX_CIRCLE 3000 //modify by grn 0321 #endif #define SM2_RUN_CIRCLE 500 #define SM2_SPEED_CIRCLE 5000 //#define SM2_SPEED_CIRCLE 10000 #ifdef CARD_DEBUG #define SM2_MAX_CIRCLE 10000 #else #define SM2_MAX_CIRCLE 10000 //modify by grn 0321 #endif #define HASHALG_MAX_LEN (4096) #define HASHALG_MAX_MOD (HASHALG_MAX_LEN+1) #define HASHALG_RUN_CIRCLE 1000 #ifdef CARD_DEBUG #define HASHALG_MAX_CIRCLE 1000 #else #define HASHALG_MAX_CIRCLE 1000000 #endif #define HASHALG_SPEED_CIRCLE 1000 /* ----------SPEED_TH-------------- */ #define RSA1024_DEC_SPEED_TH 5700//5703//2300.0 //2600 | need to set this param to 2300 when SSX41 working at 105MHz #define RSA1024_ENC_SPEED_TH 35000//37501//5500.0 #define RSA1408_DEC_SPEED_TH 1000//1094//30.0 #define RSA1408_ENC_SPEED_TH 29000//30042//700.0 #define RSA1536_DEC_SPEED_TH 2400//2470//25.0 #define RSA1536_ENC_SPEED_TH 25000//26276//600.0 #define RSA1984_DEC_SPEED_TH 0//10.0 #define RSA1984_ENC_SPEED_TH 0//350.0 #define RSA2048_DEC_SPEED_TH 1200//1254//400.0 //450.0 | need to set this param to 400 when SSX41 working at 105MHz #define RSA2048_ENC_SPEED_TH 14000//15916//300.0 #define SM2_DEC_SPEED_TH 8000 #define SM2_ENC_SPEED_TH 8000 #define SM2_SIGN_SPEED_TH 30000 #define SM2_VERIFY_SPEED_TH 30000 #define SM3_SPEED_TH 0 //软算法 #define IDEA_SPEED_TH 60 //95 #define AES_SPEED_TH 110 //204 //0个盾芯片 #define SM1_SPEED_TH_0 0 // 0 #define SM4_SPEED_TH_0 100 // 120 #define DES_SPEED_TH_0 110 // 130 #define TDES_SPEED_TH_0 50 // 60 #define SSF33_SPEED_TH_0 0 // 0 //32盾芯片 #define SM1_SPEED_TH_32 180 //220 #define SM4_SPEED_TH_32 180 //220 #define DES_SPEED_TH_32 180 //220 #define TDES_SPEED_TH_32 180 //200 #define SSF33_SPEED_TH_32 180 //220 //64盾芯片 #define SM1_SPEED_TH_64 265 //4//337 #define SM4_SPEED_TH_64 265 //341 #define DES_SPEED_TH_64 265 //345 #define TDES_SPEED_TH_64 265 //343 #define SSF33_SPEED_TH_64 265 //337 //EX_ARITH #define EX_SM4_SPEED_7035 4212 //4680.98*0.9//5800 #define EX_AES_SPEED_7035 2157 //2930*0.9//4000 #define EX_DES_SPEED_7035 4115 //5513.18*0.9//5800 #define EX_TDES_SPEED_7035 3328 //3698*0.9//4400 #define EX_SM4_SPEED_7030 3000 //33340*0.9//3200 #define EX_AES_SPEED_7030 2049 //2277*0.9//2500 #define EX_DES_SPEED_7030 2440 //2399*0.9//2600 #define EX_TDES_SPEED_7030 990 //951*0.9//1000 #define WORD "=" #define PING1 "ping -I 192.168.1.1 192.168.1.11 -c 5 -w 30" #define PING2 "ping -I 192.168.1.2 192.168.1.22 -c 5 -w 30" #define PING3 "ping -I 192.168.2.1 192.168.2.11 -c 5 -w 30" #define PING4 "ping -I 192.168.2.2 192.168.2.22 -c 5 -w 30" #define PING5 "ping -I 192.168.3.1 192.168.3.11 -c 5 -w 30" #define PING6 "ping -I 192.168.3.2 192.168.3.22 -c 5 -w 30" #define PING7 "ping -I 192.168.4.1 192.168.4.11 -c 5 -w 30" #define PING8 "ping -I 192.168.4.2 192.168.4.22 -c 5 -w 30" #define PING9 "ping -I 192.168.5.1 192.168.5.11 -c 5 -w 30" #define PING10 "ping -I 192.168.5.2 192.168.5.22 -c 5 -w 30" #define PING11 "ping -I 192.168.6.1 192.168.6.11 -c 5 -w 30" #define PING12 "ping -I 192.168.6.2 192.168.6.22 -c 5 -w 30" #define PING1_IPV6 "ping6 ::192.168.10.8 -c 5 -w 30" #define PING2_IPV6 "ping6 ::192.168.11.8 -c 5 -w 30" #define PING3_IPV6 "ping6 ::192.168.12.8 -c 5 -w 30" #define PING4_IPV6 "ping6 ::192.168.13.8 -c 5 -w 30" #define PING5_IPV6 "ping6 ::192.168.14.8 -c 5 -w 30" #define PING6_IPV6 "ping6 ::192.168.15.8 -c 5 -w 30" #define PING7_IPV6 "ping6 ::192.168.16.8 -c 5 -w 30" #define PING8_IPV6 "ping6 ::192.168.17.8 -c 5 -w 30" #define PING9_IPV6 "ping6 ::192.168.18.8 -c 5 -w 30" #define PING10_IPV6 "ping6 ::192.168.19.8 -c 5 -w 30" #define PING11_IPV6 "ping6 ::192.168.20.8 -c 5 -w 30" #define PING12_IPV6 "ping6 ::192.168.21.8 -c 5 -w 30" /***********************单片机处理出现的错误,非密押机发送过来的错误***********/ #define R_ACK_PWD_ERROR 0xC1 //确认口令错误 // #define CHECK_IP_RESULT_ERROR 0xC2 //IP地址格式错误 // #define CHECK_MASK_RESULT_ERROR 0xC6 //掩码格式错误 // #define CHECK_GATEWAY_RESULT_ERROR 0xC7 //网关格式错误 // #define CHECK_DNS_RESULT_ERROR 0xC8 //DNS格式错误 // #define CHECK_TIME_RESULT_ERROR 0xC9 //日期格式错误 // #define INIT_IC_CARD_FAILURE 0xCA //初始化IC卡失败 #define R_ACK_SYSTEM_BANK_KEY_ERROR 0xCB //确认系统行号错误 #define IP_SET_ERROR 0xff //网关错误 #define INIT_IC_CARD_FAILURE 0xCA //初始化IC卡失败 #define CHECK_IP_SAME 0xCC //不能设置为本机IP #define OPT_NUM_TWO 2 #define OPT_NUM_FOUR 4 #define BUFFISZE 1024 #define KEYVALLEN 100 //常用变量的宏定义 #define NO_ERROR 0 #define ERROR_FALSE -1 #define ERROR_SYSTEM -2 #define MAX_PATH_LEN 128 #define MAX_STR_LEN 128 #define MAX_BUFFER_LEN 8192 #define MAX_SEPERATE_NUM 100 #define MSG_LEN_MAX 4096 #define MSG_HEAD_L 8 #define MSG_LEN_L 2 #define MSG_CMD_L 2 #define MSG_TAIL_L 2 #define MSG_CRC_L 2 #define MSG_NODATA_L (MSG_HEAD_L+MSG_TAIL_L+MSG_LEN_L+MSG_CMD_L+MSG_CRC_L) //减去数据位长度的报文长度 #define SYS_IP_LEN 16 #define KEY_COUNT 24 #define SYS_SN_LEN 13 #define PCI_DEVNO_LEN 32 #define INQ_REPLY_LEN 96 #define INQ_CMD_CODE 0x12 #define INQ_CMD_LEN 6 #define MAX_FILE_DESCRPT 20000 /** 最大文件描述符个数,也即可以处理的最大设备连接数*/ #define MAX_ONLINE_CLIENT 6000 /** 最大在线客户端连接数*/ #define MAX_THREAD_PRIORITY 5 /*线程优先级*/ #define REFRESH_CLIENT_TIME (36*60*60) /** 刷新客户端连接时间间隔*/ #define TCP_DATA_LENGTH 8192 #define PRINT_DATA_LENGTH 2048 #define PRINTER_READY 0 #define PRINTER_NOT_READY 1 #define E_TYPE_SYS 0x01 //系统错误 #define MAX_MSG_COUNT 600 #define MAX_ICBCCOMMAND_COUNT 11 #define ICBCCOMMAND_LENGTH 7 #define ICBC_HEAD_LENTH 32 #define HSM_HEAD_LENGTH 32 #define COMMON_MSG 0 #define ICBC_MSG 1 #define HIGH_PROPERTY 1 #define LISTEN_FD 1 #define SOCKET_FD 2 //#define THREAD_NUM 20 #define MAX_MACDATA_LENGTH 1024 //最大MAC数据长度 #define MAX_INPUTDATA_LENGTH 1024 //最大输入数据长度 #define MAX_OUTPUTDATA_LENGTH 1024 //最大输出数据长度 #define SCSI_TIMEOUT 2000 #define SCSI_WRITE10_CMD 0x2A #define SCSI_READ10_CMD 0x28 #define KEY_INPUT_ERROR 0x02 #define KEY_0 0x00 #define KEY_1 0x01 #define KEY_2 0x02 #define KEY_3 0x03 #define KEY_4 0x04 #define KEY_5 0x05 #define KEY_6 0x06 #define KEY_7 0x07 #define KEY_8 0x08 #define KEY_9 0x09 #define KEY_A 0x0A #define KEY_B 0x0B #define KEY_C 0x0C #define KEY_D 0x0D #define KEY_E 0x0E #define KEY_F 0x0F #define KEY_POWER 0x11 #define KEY_FUNC 0x12 #define KEY_DEL 0x13 #define KEY_UP 0x04 #define KEY_DOWN 0x01 #define KEY_ESC 0x02 #define KEY_ENTER 0x03 #define KEY_FUNC_3S 0x18 #define KEY_ERROR 0xFF #define BANDRATE 115200 //波特率 #define RESEND 5 //未收到的重发次数 #define PRE_DELAY 4 //每次发送接收之间的时间间隔,4ms //报文层 #define STX 0x02 #define ETX 0x03 //应用层 #define REQUEST 0x00 //请求 #define RESPONSE 0x80 //响应 // TAG #define TAG_GENERATE_LMK 0x01 //生成系统主密钥 #define TAG_SYSTEM_SHUTDOWN 0x02 //系统关机 #define TAG_DISP_INFO 0x03 //显示警告、错误信息 #define TAG_QUERY_STATUS 0x04 //查询程序、密押机状态 #define TAG_IC_STATUS_QUERY 0x05 //IC卡状态查询 #define TAG_CHECK_PWD_STATUS 0x06 //密码核对状态 #define TAG_LOGIN_SYSTEM 0x07 //登录系统 #define TAG_ACK_INIT 0x08 //确认初始化 #define TAG_BACK_N_IC 0x09 //备份n号IC卡 #define TAG_START_MOR_SERVER 0x0A //进入编核压服务 #define TAG_N_OPER_LOGIN 0x0B //n号安控员登陆 #define TAG_OPER_LOGIN 0x0C //管理员登陆 #define TAG_AUTHORIZATION_LOGIN 0x3F //授权登录 #define TAG_CHECK_INT 0x0D //初始化... #define TAG_QUERY_CONN_NO 0x0E //查询编核押连接数 #define TAG_GOTO_ADMIN 0x0F //从编核压返回管理模式 #define TAG_QUERY_CONN_STATUS 0x10 //查询编核押连接状态 #define TAG_MYJ_MONIOR 0x65 //查询密押机状态 #define TAG_LOGOUT 0x11 //退出登录 #define TAG_IC_COPY 0x12 //IC卡拷贝 #define TAG_CHANGE_IC_CARD_PWD 0x13 //更改管理员IC口令 #define TAG_INIT_IC_CARD 0x14 //初始化IC卡 #define TAG_SET_SYS_PARA 0x15 //系统参数设置 #define TAG_SET_SYS_VERIFYCODE 0x16 //远程控制标识设置 #define TAG_ADD_CLIENT_IP 0x17 //增加客户IP #define TAG_DELETE_CLIENT_IP 0x18 //删除客户IP #define TAG_GET_CLIENT_IP 0x19 //获取客户IP列表 #define TAG_MODIFY_ETH_N 0x1A //网卡n参数设置 #define TAG_RESTORE_FACTORY_SETTINGS 0x1B //恢复出厂设置 #define TAG_MODIFY_SYS_PWD 0x1C //更改系统口令 #define TAG_SERIALPORT_SETTINGS 0x1D //密钥管理端串口设置 #define TAG_SERIALPORT_GETTINGS 0x43 #define TAG_ADD_SYNC_IP 0x1E //增加同步IP #define TAG_DELETE_SYNC_IP 0x1F //删除同步IP #define TAG_GET_SYNC_IP 0x20 //获取同步IP列表 #define TAG_RESTORE_N_IC_MASK_KEY 0x21 //恢复nIC卡系统主密钥 #define TAG_ENTER_RES_POWERON 0x22 //按确认键重新启动 #define TAG_GET_ETH_N_PARAM 0x23 //网卡n参数获取 #define TAG_GET_SYS_PARAM 0x24 //获取系统参数 #define TAG_OUT_WORK_FLIE 0x25 //导出工作日志 #define TAG_GET_SYSTEM_TIME 0x26 //获取系统时间 #define TAG_SET_SYSTEM_TIME 0x27 //设置系统时间 #define TAG_IC_CARD_UPDATE 0X28 //管理员IC卡升级 #define TAG_GET_VERIFYCODE 0x29 //获取远程控制标识 #define TAG_UPDATE_SYSTEM_BYUSB 0x2A //USB系统升级 #define TAG_GENERATE_DEVKEY 0x2B //产生设备密钥 #define TAG_DEVKEY_BACK 0x2C //备份设备密钥 //#define TAG_IC_STATUS_QUERY 0x2D //判断IC卡状态 #define TAG_PORT_SETTINGS 0x2E //设置端口号 #define TAG_SERIALPORT_SERVICE_START 0x2F //开启PC端串口服务 #define TAG_SERIALPORT_SERVICE_STOP 0x30 //关闭PC端串口服务 #define TAG_SYSTEM_UPGRADE 0x31 //系统升级 #define TAG_IC_MAKE_NET 0x32 //制作网络管理员IC卡 #define TAG_IC_MAKE_OPERATOR 0x33 //制作串口管理员IC卡 #define TAG_IC_MAKE_WINDICATE 0x34 //制作普通操作员IC卡 #define TAG_IC_PASTE 0x35 //IC卡粘贴 #define TAG_IC_HSM_REGISTER 0x36 //IC卡注册加密机 #define TAG_IC_HSM_CANCEL 0x45 //IC卡注销加密机 #define TAG_GET_SYS_PORT 0x37 //获取网络交易端口号 #define TAG_SET_SYS_PORT 0x38 //设置网络交易端口号 #define TAG_GET_SYS_LOG 0x39 //获取系统日志 #define TAG_SET_SYS_LOG 0x3A //设置系统日志 #define TAG_DISPERSE_LMK 0x3B //分散系统主密钥种子 #define TAG_LMK_BACK 0x3C //备份系统主密钥种子分量 #define TAG_LMK_RECOVER 0x3D //恢复系统主密钥种子分量 #define TAG_MOVE_LMK 0x3E //加载主密钥 #define TAG_LMK_TEST 0x41 //加载主密钥 #define TAG_GET_HSMCODE 0x40 //获取加密机设备号 #define TAG_GET_LMK_GENERATE_FLAG 0x42 //获取加密机产生主密钥状态 #define TAG_WORK_TO_TMP 0x44 //工作密钥由工作区主密钥到临时去主密钥转加密 #define TAG_KEY_ORGAN_ADD 0x46 //增加机构 #define TAG_KEY_ORGAN_DEL 0x47 //删除机构 #define TAG_KEY_ORGAN_QUE 0x48 //查看机构 #define TAG_KEY_TYPE_ADD 0x49 //增加类型 #define TAG_KEY_TYPE_DEL 0x4A //删除类型 #define TAG_KEY_TYPE_QUE 0x4B //查看类型 #define TAG_KEY_QUERY_BYMORE 0x4C //查看批量密钥 #define TAG_KEY_QUERY_BYONE 0x4D //查看单个密钥 #define TAG_KEY_ISSUE2 0x4E //密钥分发中的密钥合成 #define TAG_KEY_BACKUPS 0x4F //密钥备份 #define TAG_KEY_RECOVER 0x50 //密钥恢复 #define TAG_KEY_STOP_BYMORE 0x51 //停用批量密钥 #define TAG_KEY_STOP_BYONE 0x52 //停用单个密钥 #define TAG_KEY_DEL_BYMORE 0x53 //删除批量密钥 #define TAG_KEY_DEL_BYONE 0x54 //删除单个密钥 #define TAG_CARDKEY_MOVE 0x55 //加载卡片主控密钥 #define TAG_PACKET_FIELD_SET 0x56 //报文域设置 #define TAG_SET_OLD_KEYNUM 0x57 //设置保留老密钥的个数 #define TAG_KEY_CHANGE_BYMORE 0x58 //批量更新密钥 #define TAG_KEY_CHANGE_BYONE 0x59 //单个更新密钥 #define TAG_KEY_PRINT 0x60 //打印对称密钥分量 #define TAG_KEY_GENERATE_SYMMETRY 0x61 //产生对称密钥 #define TAG_KEY_GENERATE_RSA 0x62 //产生RSA密钥 #define TAG_KEY_GENERATE_SM2 0x63 //产生SM2密钥 #define TAG_KEY_ISSUE 0x64 //先锋主控密钥合成 #define TAG_UMAKE_MANAGE_FIRST 0x70 //制作管理员一级盾 #define TAG_UMAKE_MANAGE_SECOND 0x71 //制作管理员二级盾 #define TAG_UMAKE_MANAGE_THIRD 0x72 //制作管理员三级盾 #define TAG_UMAKE_BACKUP 0x73 //备份盾制作 #define TAG_UMAKE_ISSUE 0x74 //发行盾制作 #define TAG_ICMAKE_ISSUE 0x75 //发行卡制作 #define TAG_ICCARD_DEBLOCK 0x77 //IC卡解锁 #define TAG_UKEY_DEBLOCK 0x78 //U盾解锁 #define TAG_UKEY_CHANGE_PWD 0x76 //更改U盾口令 #define TAG_UKEY_CHANGE_MPWD 0x7D //更改U盾管理口令 #define TAG_IC_CHANGE_MPWD 0x7E //更改IC卡管理口令 #define TAG_UKEY_OUT_SYMMETRY 0x79 //U盾导出对称密钥分量 #define TAG_UKEY_IN_SYMMETRY 0x7A //U盾分量合成对称密钥 #define TAG_UKEY_OUT_DENVELOPE 0x7B //U盾导出数字信封 #define TAG_UKEY_IN_DENVELOPE 0x7C //U盾导入数字信封 #define TAG_ADD_ROUTE 0x80 //添加路由 #define TAG_DELETE_ROUTE 0x81 //删除路由 #define TAG_QUERY_ROUTE 0x82 //查询路由 #define TAG_LMK_ISSUE 0x83 //LMK固定分量录入 #define TAG_LMK_ISSUE3 0x84 //LMK固定分量录入 #define TAG_PACKET_TYPE_SET 0x85 //报文类型设置 #define TAG_PACKET_TYPE_GET 0x86 //获取报文类型 #define TAG_INIT_FUNCMANAGEUSER 0x87 //本地用户状态初始化 //U盾备份所有应用密钥 //U盾恢复所有应用密钥 //表2:错误类别定义 #define E_TYPE_SYS 0x01 //系统错误 #define E_TYPE_IC 0x02 //IC卡操作错误 #define E_TYPE_IC_RW 0x03 //IC卡读写错误 #define E_TYPE_TRANS 0x04 //传输错误 #define E_TYPE_HANDLE 0x05 //处理错误 #define E_TYPE_ENCRYPT_CARD 0x06 //密押卡操作错误 #define E_TYPE_ENCRYPT_RW 0x07 //密押卡读写错误 #define E_TYPE_FILE_RW 0x08 //文件读写错误 //(1)运行、处理结果 #define R_NO_RESPONSE 0xFC //无响应 #define R_TX_ERR 0xFB //STX ETX 错误 #define R_LEN_ERR 0xFA //LEN 错误 #define R_ERROR 0xF9 //处理出错,错误码在数据域中 #define R_SUCCESS 0xF8 //成功处理请求数据 #define R_BUSY 0xF7 //程序/设备忙 #define R_SYS_ERR 0xF6 //系统错误 #define R_PWD_ERR 0xF5 //密码错误 #define R_LRC_ERR 0xF4 //LRC错误 #define R_TAG_ERR 0xF3 //TAG不匹配 #define R_PWD_LOCK 0xF2 //口令已锁 //(2)警告信息 #define W_SYS_FAILURE 0xEF //系统故障警告 #define W_CONFIG_FILE_LOST 0xEE //配置文件丢失警告 #define W_PROGRAM_FAILURE 0xED //程序运行异常 //(3)IC状态 #define IC_NOT_EXIST 0xE9 //IC卡不存在 #define IC_EXIST 0xE8 //IC卡存在 #define IC_READ_ERR 0xE7 //读取IC卡错误 #define IC_WRITE_ERR 0xE6 //写IC卡失败 #define IC_NO_ERR 0xE5 //登陆号码不对 //(4)主密钥生成 #define KEY_MASTER_BUILD_FAILED 0xE0 //系统主密钥生成失败 #define KEY_MASTER_NOT_BUILD_INT 0xDF //未生成主密钥 //(5)程序运行状态 #define S_PROGRAM_OK_CARD_OK 0xDE //程序运行正常,密押机正常 #define S_PROGRAM_OK_CARD_UNINIT 0xDD //程序运行正常,密押机未初始化 #define S_PROGRAM_ERR_CARD_UNKNOW 0xDC //程序运行异常,需重启。密押机状态未知 //(6)安控员登陆 #define S_ADMIN_NO_ERR 0xD5 //管理员号错误 #define S_ADMIN_AGAIN 0xD4 //管理员已登录 #define S_ADMIN_ERROR_TIMEOUT 0xD3 //登录失败( 卡处理超时 ) #define S_ADMIN_SYS_ERROR 0xD2 //登录失败( 系统错误 ) #define S_IC_NOT_INVALID 0xD1 //IC卡无效 #define S_ADMIN_PWD_LEN_ERR 0xD0 //密码长度错误 //(7) 查询连接状态 #define S_WAIT_CONN 0x01 //等待连接 #define S_SERVERING 0x02 //服务中 #define S_CONN_ON 0x03 //有连接数 //(8)动作标识 #define IC_COPY_TO 0x01 //复制 #define IC_PASTE_TO 0x02 //粘贴 #define IC_COPY_CANCEL 0x03 //取消本次拷贝 #define IC_COPY_AUTH 0X04 //复制管理员IC卡时验证口令 //(9)更改管理员IC口令 #define R_IC_MODIFY_ERR 0xC5 //更改失败 #define R_IC_NOT_OPER 0xC4 //非管理员IC卡 #define R_IC_OLD_PIN_ERR 0xC3 //原口令错误 //(10)IC卡类型 #define IC_TYPE_OPER 0x01 //系统管理员卡 #define IC_TYPE_ENCRYPT_BACK 0x02 //密钥备份卡 //(11) 客户IP设置 #define R_CLIENT_IP_EXIST 0xbf //IP地址已存在 #define R_CLIENT_IP_NOT_EXIST 0xbc //IP地址不存在 #define R_CLIENT_IP_FOMATE 0xbb //IP地址格式错误 #define R_CLIENT_IP_LIST_START 0xaf //下标超过范围 #define R_CLIENT_IP_FULL 0xb9 //客户IP已满(当前已存的IP>=MAX_CLIENT_IP(99)) #define CHECK_IP_SAME 0xCC //不能设置为本机IP //(12) 网卡n参数设置 #define R_NEC_PARAM 0xb7 //网卡参数错误 #define R_NEC_PARAM_SET_ERR 0xb6 //网卡参数设置失败 #define R_NEC_BUSY 0xb5 //网卡设备忙 #define R_IMPORT_KEY2 0xb1 //密钥生成失败 #define SET_IP_SAME 0xb4 //IP不能设置同一网段 #define R_GRENTE_KEY_CMD_ERR 0xb0 //密钥生成失败,命令非法 #define R_GRENTE_KEY_LINE_FULL 0xaf //行号已满 #define R_IC_NOT_THIS_SYS 0xae //非本系统IC卡 #define R_KEYINFO_NOT_EXIST 0xac //KeyInfo文件不存在 #define R_IC_NO_ERR 0xab //卡号错误 #define R_NEC_ROUTE_EXITE 0x16 //该目标IP路由已存在 #define R_NEC_ROUTE_ADD 0x17 //路由添加失败 #define R_NEC_ROUTE_DEL 0x18 //路由删除失败 #define R_NEC_ROUTE_QUE 0x19 //路由删除失败 //(15) //定义见err_no.h //(16) #define R_PORT_ERR 0x99 //端口号错误 #define R_WORK_LOG_FLAG_ERR 0x98 //工作日志标识错误 //(17) #define R_ISSUE_KEY_ERR_NO 0x96 //密钥发行失败(无此行号) //(18) #define R_LOWER_BANK_KEY_FILE_NO_ERR 0x95 //下级行密钥文件行号错误 #define R_ENCRYPT_IC_NO_ERR 0x94 //密钥发行IC卡行号错误 //(19) #define R_BANK_NO_ERR 0x93 //银行号不存在 #define R_OPEN_BACK_FILE_ERR 0x92 //打开备份文件失败 #define R_UPDATE_KEY_INFO_ERR 0x91 //KeyInfo文件更新失败 //(20) #define R_START_OVER_FLOW 0x90 //下标超过范围 #define R_PARAM_ERR 0x89 //参数错误 //(21) #define R_IC_NOT_1_OPER 0x85 //非系统管理员一卡 #define R_IC_NOT_2_OPER 0x84 //非系统管理员二卡 #define R_IC_NOT_3_OPER 0x83 //非系统管理员三卡 #define R_RESTORE_MASTER_KEY_3_FAILED 0x82 //恢复主密钥分量三失败 //0x61 命令失败只会返回此错误码!! #define R_SET_TIME_ERR 0x79//设置系统时间失败 //单位 #define UNIT_T 5 #define UNIT_G 4 #define UNIT_M 3 #define UNIT_K 2 #define UNIT_B 1 #define ACCNUM 64 #define BATCHNUM 99 #define MANNUM 23 #define MANSIZE 22 #define ACCSIZE 96 #define RECSIZE 44 #define NORMAL 0 //正显 #define REVERSE 1 //反显 /******************用于6*8字符的上下位置显示***************/ #define CENTER 0x02 //6*8点阵的字符串上下对中到6*16的中间位置 #define UPHALF 0x02 #define DOWNHALF 0x04 /********************************************************/ #define MY_DATE_NUM_1 0x20 #define MY_DATE_NUM_2 0x40 #define MY_DATE_NUM_3 0x60 #define MY_DATE_NUM_4 0x80 // 数据查询中密钥X启用/停用日期 #define INPUT_OR_OUTPUT_MY_NUM 0x10 //导入或导出多少个行密钥 #define USB_UPDATE_OPT_DIR "/opt" #define HSM_TEST_DIR "/opt/hsm_test/bin" /**************** 用于格式化字符串显示********************/ #define INPUT 0xC0 //前加"请输入" 在圈存时作为收到结果数据的返回值 #define SELECT 0xD0 //前加"请选择" #define COLON 0x08 //后加冒号 第4位 #define CLAIM 0x04 //后加叹号 第3位 /*******************************************************/ #define MAX_PARTITIONS 64 #define MAX_PARTITIONS_NAME 20 #define PREFIX "/dev/" #define PREFIX_LEN strlen(PREFIX) //(22) #define R_LOG_NO_EXIST 0x7e //log不存在或者大小为0 #define R_UPAN_NO_EXIST 0x7d //U盘不存在 #define R_UPAN_READ_ERR 0x7c //写U盘失败 #define R_UPAN_FULL 0x7b //U盘已满 #define R_OUT_ERR 0x7a //导出失败 #define MOUNT_POINT "/mnt/usb" /* Start Modify by yt.chen 2016-09-12 SN:88888888 Des:SJJ1316-B拷机兼容性修改 */ #define USB_UPDATE_BIN_DIR "/home/sunyard_tmp" #define LOG_NAME "log" #define USB_START_NAME "start.sh" #define USB_CONFIG_NAME "config.sh" /* End Modify by yt.chen 2016-09-12 SN:88888888 */ #define CONFINE_SYS "Encrypt.ini" #define CONFINE_CLIENT_IP "ListIp.ini" #define CONFINE_SYNC_IP "SyncIp.ini" #define CONFINE_MYJ_IP "MYJIP.ini" #define CONFINE_COMMUNICATION_KEY "CommunicationKey" #define CONFINE_Packet_Field_Set "Packet.ini" //log file define #define LOG_FILE_ERR "ServerTrace.log" #define LOG_FILE_TCP "Tcp.log" #define MONTER_TYPE_TTY 1 #define MONTER_TYPE_WEB 2 #define MONTER_TYPE_CLIENT 1 //获取交易IP #define MONTER_TYPE_MYJ 0 //获取管理IP #define KEY_DIR "manage_key" #define KEYMANAGE_DB_PATH "./db/keymanage.db" #define ORGAN_INFO "Organization.ini" #define TYPE_INFO "Type.ini" #define TYPE_NUM "TypeKeyNum.ini" /****************************************** * 管理员权限状态1 ******************************************/ #define ADMIN_CFG 0x0001 // 配置管理员 #define ADMIN_KEY1 0x0002 // 密钥管理员一 #define ADMIN_KEY2 0x0004 // 密钥管理员二 #define ADMIN_SUPPER1 0x0008 // 超级管理员一 #define ADMIN_SUPPER2 0x0010 // 超级管理员二 #define ADMIN_SUPPER3 0x0020 // 超级管理员三 #define ADMIN_RELEASE 0x0040 // 发行状态 #define ADMIN_BACKUP 0x0080 // 备份状态 #define ADMIN_SUPPER 0x0038 // 超级权限(ADMIN_SUPPER1 & ADMIN_SUPPER2 & ADMIN_SUPPER3) #define ADMIN_KEY 0x0006 // 密钥权限(ADMIN_KEY1 & ADMIN_KEY2) /***************************************** * 管理员权限状态2 ******************************************/ #define LEVEL_CFG0 0x0000 // 无配置管理员登录 #define LEVEL_KEY0 0x0000 // 无密钥管理员登录 #define LEVEL_SUPPER0 0x0000 // 无超级管理员登录 #define LEVEL_SUPPER12 0x0018 // 超级管理员一二登录 #define LEVEL_SUPPER23 0x0030 // 超级管理员二三登录 #define LEVEL_SUPPER13 0x0028 // 超级管理员一三登录 #define MAX_ADMIN_NUMBER 6 #define MAX_NO_LENGTH 9 /***************************************** * 日志相关定义 ******************************************/ #define OPERLOG_SUPPER 0x31 // 超级管理员日志 #define OPERLOG_KEY 0x32 // 密钥管理员日志 #define OPERLOG_CFG 0x33 // 配置管理员日志 #define OPERLOG_FLAG_C 0 // IC 卡日志 #define OPERLOG_FLAG_U 1 // U 盾日志 #define UKEY_LEVEL_KEY1 0 #define UKEY_LEVEL_KEY2 1 #define UKEY_LEVEL_SUPPER1 2 #define UKEY_LEVEL_SUPPER2 3 #define UKEY_LEVEL_SUPPER3 4 #define UKEY_LEVEL_CFG1 5 /**************************************************************** * 用户管理状态: 远端管理,本地管理,交易管理 * semid_ManageUser 记录该状态 *****************************************************************/ #define MANAGE_USER_NONE 0 // 无用户状态 #define MANAGE_USER_LOCAL 1 // 本地管理用户状态 #define MANAGE_USER_REMOTE 2 // 远端管理用户状态 #define MANAGE_USER_TRADE 3 // 交易管理用户状态 //数据定义区 #define MAXKEYLEN 32 //参数的宏定义 //#define IC_DEBUG #define default_pin_str "\x08\x08\x08\x08\x08\x08\x08\x08" #define TAG 'T' #define INFO_END 0x100 #define INDEX_END 0x1000 #define DATA_END 0x3000 /*命令*/ #define ASC_MSG_ST "ST" #define ASC_MSG_ED "ED" /*响应*/ #define ASC_MSG_SO "SO" #define ASC_MSG_SU "SU" #define PREFIX "/dev/" #define PREFIX_LEN strlen(PREFIX) #define DEBUG1 //配置文件的宏定义 #define CONFIG_INI "./Encrypt.ini" //配置文件 #define SERIAL_INI "./Serial.ini" //串口参数配置 #define CHECK_LOG "./check.log" #define CARD_INI "./card.ini" #define CLOCK_INI "./clock.ini" /* * 基本类型定义 */ #ifndef MFC typedef void VOID; typedef const void CVOID; #endif typedef void * PVOID; typedef const void * PCVOID; typedef char CHAR; typedef CHAR * PCHAR; typedef const CHAR CCHAR; typedef const CHAR * PCCHAR; typedef int INT; typedef INT * PINT; typedef const INT CINT; typedef const INT * PCINT; typedef short SHORT; typedef SHORT * PSHORT; typedef const SHORT CSHORT; typedef const SHORT * PCSHORT; typedef long LONG; typedef LONG * PLONG; typedef const LONG CLONG; typedef const LONG * PCLONG; typedef float FLOAT; typedef FLOAT * PFLOAT; typedef const FLOAT CFLOAT; typedef const FLOAT * PCFLOAT; typedef double DOUBLE; typedef DOUBLE * PDOUBLE; typedef const DOUBLE CDOUBLE; typedef const DOUBLE * PCDOUBLE; typedef unsigned char UCHAR; typedef UCHAR * PUCHAR; typedef const UCHAR CUCHAR; typedef const UCHAR * PCUCHAR; typedef unsigned int UINT; typedef UINT * PUINT; typedef const UINT CUINT; typedef const UINT * PCUINT; typedef unsigned short USHORT; typedef USHORT * PUSHORT; typedef const USHORT CUSHORT; typedef const USHORT * PCUSHORT; typedef unsigned long ULONG; typedef ULONG * PULONG; typedef const ULONG CULONG; typedef const ULONG * PCULONG; typedef char STR; typedef STR * PSTR; typedef const STR CSTR; typedef const STR * PCSTR; typedef unsigned char BYTE; typedef BYTE * PBYTE; typedef const BYTE CBYTE; typedef const BYTE * PCBYTE; /* typedef unsigned short WORD; typedef WORD * PWORD; typedef const WORD CWORD; typedef const WORD * PCWORD; */ typedef int RESULT; typedef RESULT * PRESULT; typedef const RESULT CRESULT; typedef const RESULT * PCRESULT; typedef void * HANDLE; typedef HANDLE * PHANDLE; typedef const HANDLE CHANDLE; typedef const HANDLE * PCHANDLE; typedef unsigned char uchar; /*串口*/ typedef struct _sys_serial { int com; int baudrate; //波特率 char parity; //校验位 int databits; //数据位 int stopbits; //停止位 } sys_serial; typedef struct card_config { int h; int HYK16; int SYD1308; int e; int n_w; int n_w_1; int n_s; int r; }card_t; typedef struct _sys_config { int LMK_check_enable; //是否启用加密卡主密钥检测功能 int pci_checkself_enable; //是否启用加密卡自检功能 int pci_getdevNO_enable; //是否启用获取机具号功能 int clock_check_enable; //是否启用时钟校验功能 int ip_check_enable; //是否启用IP校验功能 int sdf_enable; int stress_enable; int sys_perf_enable; int pcicard_check_enable; // int exar_card_check_enable;//是否启动外购卡校验功能 char stress_duration[8]; char perf_duration[8]; int ratio_throughput; unsigned char sn1[SYS_SN_LEN]; //机具号1 unsigned char sn2[SYS_SN_LEN]; //机具号2 int netnum_start; //网络测试循环的开始值 struct timeval clock_set; //时钟检验设置的时间(从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止) long switch_time_sec; //加密机重启一次所花时间(时间限制:秒) char ip_set_eth0[SYS_IP_LEN]; //网卡一默认设置IP char ip_set_eth1[SYS_IP_LEN]; //网卡二默认设置IP char ip_set_eth2[SYS_IP_LEN]; //网卡三默认设置IP char ip_set_eth3[SYS_IP_LEN]; //网卡四默认设置IP char ip_set_eth4[SYS_IP_LEN]; //网卡五默认设置IP char ip_set_eth5[SYS_IP_LEN]; //网卡六默认设置IP char ip_set_eth6[SYS_IP_LEN]; //网卡七默认设置IP char ip_set_eth7[SYS_IP_LEN]; //网卡八默认设置IP char ip_set_eth8[SYS_IP_LEN]; //网卡八默认设置IP char ip_set_eth9[SYS_IP_LEN]; //网卡八默认设置IP char ip_set_eth10[SYS_IP_LEN]; //网卡八默认设置IP char ip_set_eth11[SYS_IP_LEN]; //网卡八默认设置IP } sys_config; typedef struct _test_type{ unsigned char name[20]; int (*func)(int); }test_type; typedef struct _key_type{ unsigned char name[10]; int id; }key_type; typedef struct _T_PCCmd { unsigned char CLA; unsigned char INS; unsigned char P1; unsigned char P2; unsigned short LC; unsigned short LE; }TPCCmd; //respond typedef struct _T_Respond { short SW; }TRespond; #define CMD_HEAD_LEN sizeof(TPCCmd) struct my_msg{ long mtype; char mtext[TCP_DATA_LENGTH]; }; typedef struct struDataPA { unsigned short commandcode; int len; int FormatDefined; unsigned char data[MAX_INPUTDATA_LENGTH]; }struDataPA; typedef struct struPrintBuf { char pin_key1[49]; char pin_key2[49]; char reference1[17]; char reference2[13]; char account1[17]; char account2[7]; char field[16][81]; }struPrintBuf; //布尔量 typedef enum _BOOL { FALSE=0, TRUE, } BOOL; /* **Hash 算法标准数据 */ #define SM3_MESSAGE 0x61,0x62,0x63 #define SM3_RESULT 0x66,0xc7,0xf0,0xf4,0x62,0xee,0xed,0xd9,0xd1,0xf2,0xd4,0x6b,0xdc,0x10,0xe4,0xe2, \ 0x41,0x67,0xc4,0x87,0x5c,0xf2,0xf7,0xa2,0x29,0x7d,0xa0,0x2b,0x8f,0x4b,0xa8,0xe0 #define SHA1_MESSAGE 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46, \ 0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56 #define SHA1_RESULT 0x12,0x06,0xe0,0xc0,0x23,0xdc,0x4b,0x25,0x5b,0x24,0xc6,0x80,0xf1,0x79,0x49,0x52,0x6d,0xf2,0x8e,0xd9 #define MD5_MESSAGE 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46, \ 0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56 #define MD5_RESULT 0x6a,0x46,0x26,0x9d,0xba,0xdd,0xec,0x9f,0xfe,0xa3,0xeb,0xe1,0xd4,0x4c,0x28,0x01 \ #define SHA256_MESSAGE 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46, \ 0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56 #define SHA256_RESULT 0x41,0xba,0x69,0x6b,0xc2,0x82,0x29,0x24,0xf7,0xcb,0xa0,0xce,0x21,0x1b,0xfd,0xdf, \ 0xe6,0x53,0xce,0xb3,0xc9,0x81,0x25,0x5a,0x17,0x75,0xbe,0xbf,0x11,0x0b,0xf4,0x2d #endif