init files

This commit is contained in:
Cheney
2021-06-29 11:32:24 +08:00
commit bbf0cb2fb9
337 changed files with 167274 additions and 0 deletions
@@ -0,0 +1,144 @@
package com.sunyard.inf;
import com.sunyard.RetWrap;
/**
* 密钥生成相关接口
*/
public interface SydGenApi {
/**
* RSA、SM2 非对称密钥产生
*
* @return RetWrap 包含 privateKey 和 publicKey
* privateKey LMK 加密下的私钥
* publicKey 公钥的 DER 编码
*/
RetWrap SM2GenKeyPair();
/**
* RSA、SM2 非对称密钥产生
* @param keyType 算法标识 0:RSA 1:SM2
* @param index 27位数字,以此索引存储生成的密钥
* @param length 长度
* @return RetWrap 包含 privateKey 和 publicKey
* privateKey LMK 加密下的私钥
* publicKey 公钥的 DER 编码
* 再之前的接口上添加了索引参数
*/
RetWrap SM2OrRSAGenKeyPair(int keyType,String index,int length);
/**
* 对称密钥产生
* @param keyType 密钥类型
* @param solution 密钥方案(LMK) 密钥长度/LMK下加密密钥的方案。
* @return RetWrap 包含
* lmkKey LMK LMK加密密钥
* keyCheck 密钥校验值
*
*/
RetWrap genSymmetricKey(String keyType,char solution);
RetWrap genAndPrintSplit(String keyType,char solution);
public RetWrap outputKey(String keyType, char solution, String zmk, String key);
public RetWrap inputKey(String keyType, char solution, String zmk, String key);
/**
* 密钥合成
* @param keyType 密钥类型
* @param keySolution 密钥方案(LMK) 密钥长度/LMK下加密密钥的方案。
* @param keyClearPattern 两个明文分量异或合成
* @return RetWrap 包含
* lmkKey LMK LMK加密密钥
* keyCheck 密钥校验值
*
*/
RetWrap genComposeKey(String keyType,char keySolution,String keyClearPattern);
RetWrap genComposeKey(String[] keys);
/**
* SM2 非对称密钥产生和存储
*
* @return RetWrap 包含 privateKey 和 publicKey
* privateKey LMK 加密下的私钥
* publicKey 公钥的 DER 编码
*/
RetWrap SYD_SM2GenKeyPair();
/**
* 此函数用于会话密钥的产生,用发起端。
* 加密机产生随机会话密钥,输出两类密文:
* 1、 公钥加密的密文,用于密钥的传递。
* 2、 本地 LMK 加密,用于本地应用数据的加解密。
*
* @param publicKey 公钥串,DER 编码,HEX 格式。
* @return CipherKey 公钥加密的会话密钥,DER 编码,HEX 格式, SessionKey 本地LMK 加密的会话密钥,HEX 格式 , KCV 会话密钥的检验值,HEX 格式,长度为 16H
*/
RetWrap SM2GenSessionKey(String publicKey);
/**
* 此函数用于会话密钥的接收,用于接收端。
* 加密机通过使用者 ID 所对应的私钥解密对方公钥加密的密文,输出本地 LMK 加密的会话密钥,用于本地应用数据的加解密。
*
* @param userId 使用者的 ID,最大长度为 16 位数字,右对齐。
* @param cipherKey 公钥加密的会话密钥,DER 编码,HEX 格式
* @return SessionKey : 本地LMK 加密的会话密钥,HEX 格式 ; KCV 会话密钥的检验值,HEX 格式,长度为 16H。
*/
RetWrap SM2ConfirmSessionKeyC(String userId, String cipherKey);
/**
* 此函数用于会话密钥的接收,用于接收端。
* 加密机通过使用者 ID 所对应的私钥解密对方公钥加密的密文,输出本地 LMK 加密的会话密钥,用于本地应用数据的加解密。
*
* @param sk 私钥
* @param cipherKey 公钥加密的会话密钥,DER 编码,HEX 格式
* @return SessionKey : 本地LMK 加密的会话密钥,HEX 格式 ; KCV 会话密钥的检验值,HEX 格式,长度为 16H。
*/
RetWrap SM2ConfirmSessionKey(String sk, String cipherKey);
/**
* 产生对称密钥,通过公钥加密生成网联格式的数字信封。
* @param certSerial 对*方 X509 证书的序列号。
* @param nAlg 算法标识,0:AES,1:SM4
* @return RetWrap 包含 CipherKey SessionKey KCV
* CipherKey 公钥加密的会话密钥 ,BASE64 编码
* SessionKey 本地LMK 加密的会话密钥,HEX 格式, 本地 LMK 加密的会话密钥长度,HEX 格式(不包括第 1 个字符),一般为 33 个 Bytes。默认输入值为缓冲区的大小。
* KCV 会话密钥的检验值,HEX 格式,长度为 32H。
*/
RetWrap generateDE(
String certSerial,
byte nAlg
);
/**
* 接收用私钥解密数字信封,还原对称密钥。
*
* @param pCertSerial 输入。 对方 X509 证书的序列号。
* @param pCipherKey 输入。 公钥加密的会话密钥,BASE64 编码
* @return RetWrap 包含 SessionKey KCV
* SessionKey 输出。 本地LMK 加密的会话密钥,格式为:密钥类型|密钥密文,比如:02|密钥密文
* KCV 会话密钥的检验值,HEX 格式,长度为 36H。
*/
RetWrap decryptDE(
String pCertSerial,
String pCipherKey
);
/**
* 产生要求长度的随即数据串,可用于身份认证
*
* @param nRandomSize 需要输出的随机串的长度
* @return 未抛出异常表示成功, 返回 HEX 格式的密钥
*
*/
String GenerateRandom(
int nRandomSize
);
}