整合其他分支的接口,并给没有注释的接口添加注释

This commit is contained in:
zhoubin
2021-08-10 16:01:09 +08:00
parent 1db7955ca7
commit 881e3f6445
24 changed files with 922 additions and 236 deletions
@@ -32,6 +32,12 @@ public interface SydCertApi {
byte[] dn
);
/**
* 通过索引获取公钥
* @param userId 16位机构号
* @param nKeyTypes 密钥类型
* @return 公钥
*/
String RSAGetPublicKeyC(
String userId,
int nKeyTypes
@@ -91,6 +97,12 @@ public interface SydCertApi {
* 查询所有证书
* @param dataFlag 数据包标志 0:起始包 1:中间包 2:结束包
* @return
* dataFlag: 数据包标志 0:起始包 1:中间包 2:结束包
* certAllNum: 证书总数
* realCertNum: 实际证书个数
* dataAttrFlag: 数据包属性标志
* certLenMax: 证书最大长度
* certDNs: 证书DN
*/
RetWrap getAllCert(int dataFlag) throws UnsupportedEncodingException;
+110 -38
View File
@@ -19,32 +19,32 @@ interface SydHashApi {
/**
* 输入对指定的原始数据和公钥,通过 SM3 算法计算数据的散列值。
*
* @param publicKey 公钥(可以为空)
* @param data 原始数据
* @param mac 上一轮 mac 值
* @param publicKey 公钥的 DER 编码(可以为空)
* @param msg 原始数据,二进制的消息块
* @param block 消息块标志
* @param mac 上一轮 mac 值,当 mac 不是 null,长度不为 0,则直接从第二包开始。
* @return HASH 值,32 个 Bytes.
*/
byte[] SM3Hash(String publicKey, byte[] data, int i, byte[] mac);
byte[] SM3Hash(String publicKey, byte[] msg, int block, byte[] mac);
/**
* 输入对指定的原始数据和公钥,通过 SM3 算法计算数据的散列值。
*
* @param publicKey 公钥(可以为空)
* @param data 原始数据
* @param msg 原始数据
* @return HASH 值,32 个 Bytes.
*/
byte[] SM3Hash(String publicKey, byte[] data);
byte[] SM3Hash(String publicKey, byte[] msg);
/**
* 输入对指定的原始数据 (无公钥),通过 SM3 算法计算数据的散列值。
*
* @param data 原始数据
* @param msg 原始数据
* @return HASH 值,32 个 Bytes.
*/
byte[] SM3Hash(byte[] data);
byte[] SM3Hash(byte[] msg);
public byte[] MACCalc(int alg, int keyType, int fullmode, int maclen, String key, byte[] infoData);
@@ -91,16 +91,13 @@ interface SydASYMApi {
* @param pEnData 加密的数据,base64 编码。
* @return 明文数据。
*/
byte[] SM2DecryptC(
String userId,
String pEnData
);
byte[] SM2DecryptC(String userId, String pEnData);
/**
* 使用外部私钥解密
* @param sk
* @param enData
* @return
* @param sk LMK下加密的私钥
* @param enData 密文数据(DER 编码)
* @return 公钥加密的密文的 DER 编码(对于 RSA 算法,数据类型为 BIT)
*/
byte[] SM2Decrypt(byte[] sk, String enData);
@@ -140,32 +137,31 @@ interface SydASYMApi {
/**
* 非对称公钥加密
* @param alg
* @param pk
* @param data
* @return
* @param alg 算法标识,0 = RSA 1 = SM2
* @param pk 公钥的 DER 编码
* @param data 数据
* @return 公钥加密的密文的 DER 编码(对于 RSA 算法,数据类型为 BIT).
*/
public byte[] encryptByPk(int alg, String pk, byte[] data);
/**
* 非对称私钥解密
* @param alg
* @param sk 私钥值
* @param data
* @return
* @param alg 算法标识:0 = RSA 1 = SM2
* @param sk 私钥值,LMK下加密的私钥
* @param data 密文数据(DER 编码)
* @return 公钥加密的密文的 DER 编码(对于 RSA 算法,数据类型为 BIT)
*/
public byte[] decryptBySk(int alg, String sk, byte[] data);
/**
* 非对称私钥解密
* @param alg
* @param user
* @param data
* @return
* @param alg 算法标识:0 = RSA 1 = SM2
* @param userId 16位机构号
* @param data 密文数据(DER 编码)
* @return 公钥加密的密文的 DER 编码(对于 RSA 算法,数据类型为 BIT).
*/
public byte[] decryptBySkC(int alg, String user, byte[] data);
public byte[] decryptBySkC(int alg, String userId, byte[] data);
}
@@ -174,26 +170,57 @@ interface SydASYMApi {
*/
interface SydSYMApi {
public RetWrap SYMEnDeData(Boolean isEn, int nAlg, String seesionKey, int roundmod, int fullMode, byte[] pInData, byte[] iv, int block);
/**
* E0 指令复合接口
* @param isEn 指定加解密,true为加密,false为解密
* @param nAlg 密钥模式,当isEn为true时,默认为SM4加密,0为DES加密,1为AES256 加密。当isEn为false时,默认为SM4解密,0为DES解密,1为AES256解密
* @param seesionKey 密钥
* @param roundmod 轮模式,密钥加密模式:1=ECB,2=CBC,3=CFB,4=OFB
* @param fullMode 填充模式:0为饥饿模式,1为贪婪模式
* @param pInData 消息数据
* @param iv IV
* @return
* iv: IV 数据域
* msg_all: 消息数据
*/
RetWrap SYMEnDeData(Boolean isEn, int nAlg, String seesionKey, int roundmod, int fullMode, byte[] pInData, byte[] iv, int block);
/**
* 用输入的会话密钥,对指定报文数据进行加密处理。填充模式为1
*
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
* @param pINdata 要加密的报文明文。必须是 8 或16 的倍数。
* @return 输出的报文密文, 长度为报文明文 + 16
*/
byte[] SYMEncryptData(int nAlg, String seesionKey, byte[] pINdata);
/**
* 用输入的会话密钥,对指定报文数据进行加密处理。
*
* @param nAlg  算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey  本地LMK 加密的会话密钥,HEX 格式
* @param pINdata  要加密的报文明文。必须是 8 或16 的倍数。
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
* @param fullmode 填充模式:0为饥饿模式,1为贪婪模式
* @param pINdata 要加密的报文明文。必须是 8 或16 的倍数。
* @return 输出的报文密文, 长度为报文明文 + 16
*/
byte[] SYMEncryptData(int nAlg, String seesionKey, byte[] pINdata);
byte[] SYMEncryptData(int nAlg, String seesionKey, int fullmode, byte[] pINdata);
/**
* 用输入的会话密钥,对指定报文数据进行加密处理。
*
* @param nAlg 算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
* @param pInData 要加密的报文明文。必须是 8 或16 的倍数。
* @return 输出的报文密文, 长度为报文明文 + 16
*/
byte[] SYMEncryptData_nofill(int nAlg, String seesionKey, byte[] pInData);
/**
* 用输入的会话密钥,对指定报文数据进行解密处理。
* 用输入的会话密钥,对指定报文数据进行解密处理。填充模式为1
*
* @param nAlg  算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
@@ -201,10 +228,36 @@ interface SydSYMApi {
* @return 输出的报文明文。
*/
byte[] SYMDecryptData(int nAlg, String seesionKey, byte[] pINdata);
/**
* 用输入的会话密钥,对指定报文数据进行解密处理。
*
* @param nAlg  算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
* @param fullmode 填充模式:0为饥饿模式,1为贪婪模式
* @param pINdata 要解密的报文密文。长度必须是8 或16 的倍数。
* @return 输出的报文明文。
*/
byte[] SYMDecryptData(int nAlg, String seesionKey, int fullmode, byte[] pINdata);
/**
* 用输入的会话密钥,对指定报文数据进行解密处理。
*
* @param nAlg  算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
* @param pInData 要解密的报文密文。长度必须是8 或16 的倍数。
* @return 输出的报文明文。
*/
byte[] SYMDecryptData_nofill(int nAlg, String seesionKey, byte[] pInData);
/**
* 加解密数据(E1)
* @param nAlg 密钥模式,默认为SM4解密,0:DES加密,1:AES256 解密
* @param seesionKey 密钥
* @param inputPath 输入消息数据的文件路径
* @param outputPath 输出消息数据的文件路径
* @return
*/
boolean SYMDecryptDataWithFile(int nAlg, String seesionKey, String inputPath, String outputPath) throws Exception;
/**
@@ -216,7 +269,17 @@ interface SydSYMApi {
* @return 输出的报文密文, 长度为报文明文 + 16
*/
byte[] SYMEncryptDataCBC(int nAlg, String seesionKey, byte[] pINdata);
public byte[] SYMEncryptDataCBC(int nAlg, String seesionKey, int fullmode, byte[] pInData);
/**
* 用输入的会话密钥,对指定报文数据进行加密处理。
*
* @param nAlg  算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey  本地LMK 加密的会话密钥,HEX 格式
* @param fullmode  填充模式:0为饥饿模式,1为贪婪模式
* @param pInData  要加密的报文明文。必须是 8 或16 的倍数。
* @return 输出的报文密文, 长度为报文明文 + 16
*/
byte[] SYMEncryptDataCBC(int nAlg, String seesionKey, int fullmode, byte[] pInData);
/**
* 用输入的会话密钥,对指定报文数据进行解密处理。
@@ -227,7 +290,16 @@ interface SydSYMApi {
* @return 输出的报文明文。
*/
byte[] SYMDecryptDataCBC(int nAlg, String seesionKey, byte[] pINdata);
public byte[] SYMDecryptDataCBC(int nAlg, String seesionKey, int fullmode, byte[] pInData);
/**
* 用输入的会话密钥,对指定报文数据进行解密处理。
*
* @param nAlg  算法标识.,0x00:3DES,0x01:SM4。
* @param seesionKey 本地LMK 加密的会话密钥,HEX 格式
* @param fullmode 填充模式:0为饥饿模式,1为贪婪模式
* @param pInData 要解密的报文密文。长度必须是8 或16 的倍数。
* @return 输出的报文明文。
*/
byte[] SYMDecryptDataCBC(int nAlg, String seesionKey, int fullmode, byte[] pInData);
/**
* 用输入的会话密钥,对指定报文数据进行解密处理。
+52 -2
View File
@@ -39,10 +39,53 @@ public interface SydGenApi {
*
*/
RetWrap genSymmetricKey(String keyType,char solution);
/**
* 生成一个对称密钥(*) -> pass (对比之前添加了可产生ZMK加密下的密钥)
* @param mode 是否产生ZMK加密下的密钥
* @param keyType 密钥类型
* @param solution 密钥方案(LMK) 密钥长度/LMK下加密密钥的方案。
* @param zmk zmk
* @return RetWrap 包含
* lmkKey LMK LMK加密密钥
* zmkKey ZMK加密密钥
* keyCheck 密钥校验值
*/
RetWrap genSymKey(int mode, String keyType, char solution, String zmk);
/**
* 生成一个密钥并以分开的成份形式打印(=)
* @param keyType 密钥类型
* @param solution 密钥长度/LMK 下加密密钥的方案。
* @return RetWrap
* lmkKey LMK 加密下的密钥。
* keyCheck 密钥校验值
*/
RetWrap genAndPrintSplit(String keyType,char solution);
/**
* 输出一个ZMK下加密的密钥
* @param keyType 密钥类型
* @param solution 密钥方案(ZMK) 加密输出密钥的密钥方案
* @param zmk 27 位的索引号: 16 位机构号+3 位密钥类型+8 位密钥索引号
* @param key LMK 加密的密钥。
* @return
* key lmk 头 + LMK 加密下的密钥。
* keyCheck 密钥校验值
*/
public RetWrap outputKey(String keyType, char solution, String zmk, String key);
/**
* 输入一个ZMK下加密的密钥。转换为LMK下加密
* @param keyType 密钥类型
* @param solution 加密输出密钥的密钥方案
* @param zmk zmk 27 位的索引号: 16 位机构号+3 位密钥类型+8 位密钥索引号
* @param key ZMK 加密下的密钥。
* @return RetWrap
* key lmk 头 + LMK 加密下的密钥。
* keyCheck 密钥校验值
*/
public RetWrap inputKey(String keyType, char solution, String zmk, String key);
/**
@@ -56,6 +99,13 @@ public interface SydGenApi {
*
*/
RetWrap genComposeKey(String keyType,char keySolution,String keyClearPattern);
/**
* 由2到9个加密的成份组成一个密钥,同时返回一个LMK对(04-05)下加密的ZMK以及校验值
* @param keys 已加密的多个ZMK成份
* @return
*
*/
RetWrap genComposeKey(String[] keys);
/**
* SM2 非对称密钥产生和存储
@@ -68,7 +118,7 @@ public interface SydGenApi {
/**
* 此函数用于会话密钥的产生,用发起端。
* 此函数用于会话密钥的产生,用于发起端。
* 加密机产生随机会话密钥,输出两类密文:
* 1、 公钥加密的密文,用于密钥的传递。
* 2、 本地 LMK 加密,用于本地应用数据的加解密。
@@ -104,7 +154,7 @@ public interface SydGenApi {
* @param certSerial 对*方 X509 证书的序列号。
* @param nAlg 算法标识,0:AES,1:SM4
* @return RetWrap 包含 CipherKey SessionKey KCV
* @return RetWrap 包含 CipherKey, SessionKey, KCV
* CipherKey 公钥加密的会话密钥 ,BASE64 编码
* SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。
* KCV 会话密钥的检验值,HEX 格式,长度为 32H。
+3 -3
View File
@@ -8,7 +8,7 @@ public interface SydPledge {
* @param Alg SydApi.NALG_3DES/SydApi.NALG_SM4
* @param Version 版本号
* @param Data 原始数据
* @return MAC 长度为 8 的 HEX字符串
* @return 所计算出的MAC。MAC 长度为 8 的 HEX字符串
*/
String GenerateMIYA(String AreaCode, int Version, int Alg, byte[] Data);
@@ -16,11 +16,11 @@ public interface SydPledge {
*
* @param AreaCode 地区代码 6 位
* @param Version 版本号
* @param Alg SydApi.NALG_3DES/SydApi.NALG_SM4
* @param Alg MAC 算法,0:3DES,1:SM4
* @param Data 原始数据
* @param fullFlag 填充类型
* @param macLenFlag MAC 长度标识
* @return
* @return 所计算出的MAC。MAC 长度为 8 的 HEX字符串
*/
String GenerateMIYA(String AreaCode, int Version, int Alg, byte[] Data, byte fullFlag, byte macLenFlag);
+36 -4
View File
@@ -211,7 +211,7 @@ interface SydDetachedSVApi {
* 通过指定的私钥对指定的原始数据编制带公钥证书的数字签名(遵循PKCS#7)
* 数据模式可选 DATA_HASH 或 DATA_ORIGIN
*
* @param dataType 输入的数据为 HASH 后的数据 DATA_HASH = 0 ,输入的数据为原始数据库 DATA_ORIGIN = 1
* @param dataType 数据模式,输入的数据为 HASH 后的数据 DATA_HASH = 0 ,输入的数据为原始数据库 DATA_ORIGIN = 1
* @param orgData 输入的数据
* @param sCertDN 签名者证书 DN
* @return 签名数据
@@ -221,13 +221,27 @@ interface SydDetachedSVApi {
byte[] orgData,
String sCertDN
);
//8024
/**
* 带公钥证书与签名属性的数字签名(遵循 PKCS#7)
* @param dataType 数据类型:0,hash 模式,1为非hash模式
* @param orgData 当为hash模式时,值为hash值,当为非hash模式时,值为数据
* @param keyTag 密钥对应的索引号
* @return 签名的 DER 编码
*/
public byte[] detachedSign(
int dataType,
byte[] orgData,
int sCertDN
int keyTag
);
/**
* 带公钥证书的PKCS#7数字签名(序列号)
* @param dataType 数据类型:0,hash 模式,1为非hash模式
* @param orgData 当为hash模式时,值为hash值,当为非hash模式时,值为要签名的信息
* @param certificateNo X509证书序号
* @return 符合PKCS7标准的签名结果
*/
public String detachedSignbysn(
int dataType,
byte[] orgData,
@@ -247,12 +261,30 @@ interface SydDetachedSVApi {
int dataType,
byte[] orgData,
String sign);
//8025
/**
* 带公钥证书与签名属性的数字签名验签(遵循 PKCS#7)
* @param dataType 数据类型:0,hash 模式,1为非hash模式
* @param orgData 当为hash模式时,值为hash值,当为非hash模式时,值为数据
* @param sign 已签名数据
* @return 是否正确
*/
boolean detachedVerify(
int dataType,
byte[] orgData,
byte[] sign);
/**
* 计算SM3散列值
* @param packSn 消息块号,0=仅一块,1=第一块,2=中间块,3=最后块
* @param userId 用户 ID,只对“消息块号”为 0、1 时有效
* @param publicKey 公钥的 DER 编码
* @param msg 二进制的消息块
* @param filterData 过渡消息数据,只对“消息块号”为 2、3 时有效
* @return
* filterData: 过渡消息数据,只对“消息块号”为 2、1 时有效
* hash: hash
*/
RetWrap SM3Hash(int packSn, String userId, byte[] publicKey, byte[] msg, byte[] filterData);
}
@@ -99,15 +99,27 @@ public interface SydHAApi {
);
// 外部私钥
/**
* 用私钥签名(外部私钥)
* @param nOrgDataType 签名数据类型,0 : hash 1 : 原数据
* @param privateKey LMK34-35 下加密的私钥
* @param orgData “签名数据类型”为 0 时:HASH 值。“签名数据类型”为 1 时:要签名的信息
* @return 签名的 base64 编码
*/
public String SM2Sign(
int nOrgDataType,
byte[] privateKey,
byte[] orgData
);
// SYD_SM2_Verify_HA
/**
* 用指定的公钥对指定的原始数据进行数字签名验证(PKCS#1)
* @param nOrgDataType 签名数据类型,SydApi.DATA_ORIGIN(1) 原始数据 SydApi.DATA_HASH(0) : hash 后的类型
* @param publicKey 公钥串,DER编码,HEX格式
* @param orgData 待签名的原始数据,“签名数据类型”为 0 时:HASH 值。“签名数据类型”为 1 时:要签名的信息
* @param base64Sign 签名数据 (DER 编码 + Base64 编码)
* @return 验签是否通过
*/
public boolean SM2Verify(
int nOrgDataType,
byte[] publicKey,