123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- #ifndef __ACCESSAUTHCONN_H
- #define __ACCESSAUTHCONN_H
- #pragma once
- #include "SpSecureClient.h"
- #include "AccessAuthorization_def_g.h"
- #include "IHttpFunc.h"
- #include "publicFunExport.h"
- using namespace AccessAuthorization;
- #pragma pack(1)
- // 请求TOKEN时附带设备信息(未加密) 102 byte
- struct RequestTokenInfo
- {
- char szTerminalNo[16]; // 终端号 字符数字 16
- char szPadDeviceID[32]; // 外设ID 字符数字 32
- char szMachineType[16]; // 设备型号 字符 16
- BYTE machineVersion[4]; // 设备版本,低两位为小版本号,高两位为大版本号 Binary 4
- BYTE installVersion[8]; // 安装版本,其中包含软件框架版本 binary 8
- BYTE ip[4]; // 终端IP地址 binary 4
- char szSites[16]; // 设备部署场所代码 字符 16
- BYTE currentGPS[8]; // 当前终端的GPS坐标点 binary 8
- char chTerminalState; // 终端生命阶段状态 char 1
- char chRunState; // 系统状态 char 1
- };
- //判断是否进行了国密改造
- struct RequestTokenReq0
- {
- int isSM;
- int isFirst;//是否国密改造之后的第一次准入
- BYTE FingerPrintSM[16];
- };
- // 请求Token设备信息加密后结构(使用密码键盘加密)
- // [StructName("TOKEN_R1")]
- struct RequestTokenReq1
- {
- char szTerminalNo[16]; // 终端号
- BYTE tpk[140]; // 临时公钥 binary 140
- BYTE encTerminalInfo[112]; // 加密设备信息,包括头部4字节ASCII长度及右补0
- };
- // 请求Token附带实体信息
- // [StructName("TOKEN_R2")]
- struct RequestTokenReq2
- {
- char szType[32]; // 设备类型
- char szModal[32]; // 设备型号
- char szFactory[32]; // 厂家名称
- BYTE version[8]; // 硬件版本号
- };
- // 请求Token时,附带需要验证信息
- // [StructName("TOKEN_R3")]
- struct RequestTokenReq3
- {
- char szSignCertHash[40]; // 签名证书SHA1 Hash
- char szUKeyRootHash[40]; // UKEY证书SHA1 Hash
- BYTE nAuthVersion; // 准入请求版本: 1 借助KMC密钥验证;2 借助终端密钥动态生成会话密钥验证
- BYTE FingerPrint[16]; // 硬件指纹, @AuthVersion为1时有效, 上报指纹信息,解决生产中已初始化终端指纹收集问题
- BYTE PublicKey[148]; // 终端公钥, @AuthVersion为1时有效, 上报公钥信息,解决生产中已初始化终端公钥收集问题
- BYTE Reserved[11]; // 保留字段
- };
- // 请求TOKEN附加信息: PinPadID
- // [StructName("TOKEN_R4")]
- struct RequestTokenReq4
- {
- char szPinPadID[32]; // PinPadID
- char terminalNo[16];
- BYTE Reserved[240];
- };
- // 请求TOKEN附加信息: 密码键盘是否存在
- // [StructName("TOKEN_R5")]
- struct RequestTokenReq5
- {
- char chExistPinPad; // 是否有链接密码键盘,0:没有;1:有 char 1
- };
- // 令牌定义见RvcCommEntityBase中 TokenInfo
- // [StructName("TOKEN_RT")]
- struct RequestTokenRet
- {
- BYTE enToken[256]; // 使用准入服务签名后的TOKEN
- BYTE sharedSK[16]; // 共享会话密钥
- BYTE retHash[4]; // 返回结构Hash
- };
- //国密
- struct RequestTokenRet2
- {
- BYTE enToken[256]; // 使用准入服务签名后的TOKEN
- BYTE retHash[32]; // 返回结构Hash
- };
- // 退出准入上报
- // [StructName("EXIT_REQ")]
- struct TerminalExitReq
- {
- char szTerminalNo[16]; // 终端号 字符数字 16
- BYTE nTriggerReason; // 触发原因 Byte 1: 1) 准入到期; 2) IP改变; 3) 远程指令重新准入; 4) 本地控制退出准入; 5) 本地控制重新准入
- BYTE nRebootWay; // 将要重启方式,框架/操作系统/电源 byte 1
- char chTerminalStage; // 终端生命阶段状态 char 1
- };
- // 生命阶段改变上报
- // [StructName("STAGEREP")]
- struct TerminalStageReport
- {
- char szTerminalNo[16]; // 终端号
- BYTE IP[4]; // 终端IP地址
- char szSites[16]; // 设备部署场所代码
- BYTE LifeID[4]; // 生命标识
- BYTE CurrentGPS[8]; // 当前终端的GPS坐标点
- char cRunState; // 系统状态
- char cNewStage; // 当前终端生命阶段
- DWORD dwNewStageTime; //当前生命阶段设置时间
- char cLastStage; // 上一个终端生命阶段
- DWORD dwLastStageTime; //上一个终端生命阶段设置时间
- };
- // 时间同步请求
- // [StructName("SYNC_R1")]
- struct SyncTimeReq
- {
- char szTerminalNo[16]; // 终端号
- DWORD dwCurTime; // 终端当前时间
- BYTE byReserved[64]; // 保留字段
- };
- //是否进行国密改造
- struct SyncTimeReq2
- {
- int isSm;
- };
- // [StructName("SYNC_A1")]
- struct SyncTimeAns
- {
- int nTimeDiff; // 服务器与终端时间差
- BYTE nAuthVersion; // 准入请求版本: 1 借助KMC密钥验证;2 借助终端密钥动态生成会话密钥验证
- BYTE SessionKey[140]; // @nAuthVersion为1时有效,交换会话密钥,用于加密准入信息
- BYTE byReserved[64]; // 保留字段
- };
- struct InitDeviceReq0
- {
- int isSM;
- };
- // 外设加密握手包
- //[StructName("InitDevR")]
- struct InitDeviceReq
- {
- char CR1[256];
- char CR3[256];
- char R2[64];
- char CDevPubKey[360];
- char Verdor[64]; // @20170124: 厂商名称:nantian(南天); yotap(skyui)
- };
- //[StructName("InitDevA")]
- struct InitDeviceAns
- {
- char R1[64];
- char R3[64];
- char CR2[256];
- };
- // 状态上报
- // [REPSTA_R]
- struct ReportStateReq
- {
- char EventType[16]; // InitMK:初始化;UpdateWK:工作密钥更新;AccessAuth:准入
- char TerminalNo[32];
- char UserID[16]; // 初始化用户
- DWORD ErrorCode;
- char ErrorMsg[512]; // 错误描述
- };
- // 获取锁定状态
- // [StructName("LockStateReq")]
- struct LockStateReq
- {
- char TerminalNo[32]; // 终端号
- };
- //[StructName("LockStateAns")]
- struct LockStateAns
- {
- BYTE LockState;
- };
- // 获取MD5校验请求
- // [StructName("MD5REQ")]
- struct CheckMD5Req
- {
- char TerminalNo[32]; // 终端号
- char MD5Value[16]; // MD5值
- };
- #pragma pack()
- #ifdef RVC_OS_LINUX
- class CAccessAuthFSM;
- class CAccessAuthGetTokenReq;
- #endif // RVC_OS_LINUX
- #endif // !__ACCESSAUTHCONN_H
|