keyCmd.h 10.5 KB
/* 
 *  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);
};