lcd/INCLUDE/define.h
2026-05-22 17:19:03 +08:00

1507 lines
46 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __DEFINE__H__
#define __DEFINE__H__
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include "asc16.h"
#include "asc8.h"
#include "hzk16.h"
#include "lcddisplay.h"
#include <signal.h>
#include "utils.h"
#include "sham.h"
#include "serial.h"
#include <unistd.h>
#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