keyCmd.h
10.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/*
* Copyright (c) 2011, 广州江南科友union
* All rights reserved.
* 文件名称: keyCmd.h
* 摘 要: 应用加密机和密钥指令接口的定义
* 当前版本: 1.0, 编写者: 杨武,修改时间: 2011-11-22 修改内容: 创建
*
*/
extern "C"
{
//生成密钥 0090
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeout socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:lenOfKey 密钥长度
//输入参数:indexOfKey FFFF:不保存密钥 0000-03E8:将密钥保存到该位置 其他:非法
//输出参数:keyValByMK 用MK加密后的密文
//输出参数:chkVal 密钥校验值
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_genKey(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,int lenOfKey,char * indexOfKey,char* keyValByMK,char * chkVal);
//生成密钥 S090
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeout socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:indexOfKey FFFF:不保存密钥 0000-03E8:将密钥保存到该位置 其他:非法
//输出参数:keyValByMK 用MK加密后的密文
//输出参数:chkVal 密钥校验值
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_genKey_SM1(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,char * indexOfKey,char* keyValByMK,char * chkVal);
//打印密钥 0060
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeOut socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:elementNo 所需拆分的成份数(2~9合法)
//输入参数:accNo 密钥编号
//输出参数:keyValByMK 用MK加密后的密文
//输出参数:chkVal 密钥校验值
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_printKey(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,int lenOfKey,int elementNo,char* accNo,char* keyValByMK,char * chkVal);
//打印密钥 S060
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeOut socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:elementNo 所需拆分的成份数(2~9合法)
//输入参数:accNo 密钥编号
//输出参数:keyValByMK 用MK加密后的密文
//输出参数:chkVal 密钥校验值
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_printKey_SM1(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,int elementNo,char* accNo,char* keyValByMK,char * chkVal);
//对指定密钥进行转加密 0018
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeOut socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:typeOfTranslate 转换方式 01:从MK加密到KEK加密 02:从KEK加密到MK加密 03: 从KEK1加密到KEK2加密
//输入参数:indexOfSKey 源密钥索引 仅当转换方式为02、03时有此域。FFFF:使用指令中带入的源KEK密钥 0000-03E8:源KEK索引 其他:非法
//输入参数:SKeyValByMK MK加密的源密钥值 仅当源保护密钥索引为FFFF、转换方式为2或3时有此域。MK加密下的源KEK
//输入参数:indexOfDKey 目标密钥索引 仅当转换方式为01、03时有此域。 FFFF:使用指令中带入的KEK密钥 0000-03E8:KEK索引 其他:非法
//输入参数:DKeyValByMK MK加密的目标密钥值 仅当目标保护密钥索引为FFFF、转换方式为1或3时有此域。MK加密下的KEK
//输入参数:lenOfPKey 待加密密钥长度 16,32,48
//输入参数:PKeyVal 源保护密钥加密下的密文
//输入参数:PchkVal 待加密密钥校验值
//输出参数:outKeyVal 转加密后目标保护密钥加密的密钥密文
//输出参数:outChkVal 密钥校验值
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_translateKey(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,char* typeOfTranslate,char* indexOfSKey,char* SKeyValByMK,char* indexOfDKey,char* DKeyValByMK,int lenOfPKey,char* PKeyVal,char* PchkVal,char* outKeyVal,char* outChkVal);
//对指定密钥进行转加密 S018
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeOut socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:typeOfTranslate 转换方式 01:从MK加密到KEK加密 02:从KEK加密到MK加密 03: 从KEK1加密到KEK2加密
//输入参数:indexOfSKey 源密钥索引 仅当转换方式为02、03时有此域。FFFF:使用指令中带入的源KEK密钥 0000-03E8:源KEK索引 其他:非法
//输入参数:SKeyValByMK MK加密的源密钥值 仅当源保护密钥索引为FFFF、转换方式为2或3时有此域。MK加密下的源KEK
//输入参数:indexOfDKey 目标密钥索引 仅当转换方式为01、03时有此域。 FFFF:使用指令中带入的KEK密钥 0000-03E8:KEK索引 其他:非法
//输入参数:DKeyValByMK MK加密的目标密钥值 仅当目标保护密钥索引为FFFF、转换方式为1或3时有此域。MK加密下的KEK
//输入参数:lenOfPKey 待加密密钥长度 16,32,48
//输入参数:PKeyVal 源保护密钥加密下的密文
//输入参数:PchkVal 待加密密钥校验值
//输出参数:outKeyVal 转加密后目标保护密钥加密的密钥密文
//输出参数:outChkVal 密钥校验值
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_translateKey_SM1(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,char* typeOfTranslate,char* indexOfSKey,char* SKeyValByMK,char* indexOfDKey,char* DKeyValByMK,char* PKeyVal,char* PchkVal,char* outKeyVal,char* outChkVal);
//读取密钥 0016
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeOut socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:indexOfKey 0000-03E8:KEK索引 其他:非法
//输出参数:keyValByMK 用MK加密后的密文
//输出参数:chkVal 密钥校验值
//返回值: <0:失败;>0成功 密钥长度
_declspec(dllexport) int union_syj1001_readKeyFromIndex(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,char *indexOfKey,char *keyValByMK,char *chkVal);
//读取密钥 S016
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeOut socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:indexOfKey 0000-03E8:KEK索引 其他:非法
//输出参数:keyValByMK 用MK加密后的密文
//输出参数:chkVal 密钥校验值
//返回值: <0:失败;>0成功 密钥长度
_declspec(dllexport) int union_syj1001_readKeyFromIndex_SM1(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,char *indexOfKey,char *keyValByMK,char *chkVal);
//将密钥密文写入指定密钥索引 0014
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeout socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:lenOfKey
//输入参数:keyValByMK 用MK加密后的密文
//输入参数:chkVal 密钥校验值
//输入参数:indexOfKey 0000-03E8:KEK索引 其他:非法
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_storeKey(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,int lenOfKey,char* keyValByMK,char* chkVal,char* indexOfKey);
//将密钥密文写入指定密钥索引 S014
//输入参数:hsmIp 加密机IP地址
//输入参数:hsmPort 加密机对外服务端口
//输入参数:timeout socket超时等待时间 ms单位
//输入参数:isCfg 0:不从配置文件读取lenOfMsg、hsmIp、hsmPort、timeOut、hsmLenOfMsgHeader、isLenOfHsmMsg 启用输入参数中的这些信息 1:从配置文件中读取上述信息
//输入参数:clientSocket -1:采用的是短连接方式,需要在函数体完成socket的创建和释放 >0:采用长连接方式,复用该套接字句柄
//输入参数:hsmLenOfMsgHeader 消息头长度
//输入参数:isLenOfHsmMsg 报文长度(两字节)
//输入参数:keyValByMK 用MK加密后的密文
//输入参数:chkVal 密钥校验值
//输入参数:indexOfKey 0000-03E8:KEK索引 其他:非法
//返回值: <0:失败;=0成功
_declspec(dllexport) int union_syj1001_storeKey_SM1(char* hsmIp,int hsmPort,int timeout,int isCfg,int hsmLenOfMsgHeader,int isLenOfHsmMsg,int clientSocket,char* keyValByMK,char* chkVal,char* indexOfKey);
};