整合其他分支的接口,并给没有注释的接口添加注释
This commit is contained in:
parent
1db7955ca7
commit
881e3f6445
@ -19,8 +19,6 @@
|
||||
|
||||
<key cn="密钥(LMK)">
|
||||
LMK 加密的密钥。
|
||||
27 位的索引号:16 位机构号+3 位密钥类型+8 位密钥
|
||||
索引号
|
||||
</key>
|
||||
|
||||
<keySolution len="1" cn="密钥方案(ZMK)" >
|
||||
|
||||
@ -84,10 +84,12 @@ public interface SydApi extends SydRawApi, SydCertApi, SydCryptionApi, SydGenApi
|
||||
// 单例可以不实现
|
||||
void error();
|
||||
|
||||
|
||||
/**
|
||||
* 获取加密机状态
|
||||
* @return CPU/MEM/DISK
|
||||
* 获取加密机cpu,内存,磁盘使用状况
|
||||
* @return
|
||||
* CPU: cpu 使用率,百分比状态
|
||||
* MEM: 内存使用率, 百分比状态
|
||||
* DISK: 磁盘使用率,单位 MB
|
||||
*/
|
||||
RetWrap getStatus();
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
/**
|
||||
* 用输入的会话密钥,对指定报文数据进行解密处理。
|
||||
|
||||
@ -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。
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -10,7 +10,7 @@ import java.util.Arrays;
|
||||
|
||||
public class ASYMEnDeTest {
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
System.out.println("非对称密钥加解密");
|
||||
byte[] testData = new byte[100];
|
||||
|
||||
@ -16,7 +16,7 @@ import java.util.Arrays;
|
||||
public class InputOutputKeyTest
|
||||
{
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
System.out.println("密钥导入导出功能测试");
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ import racal.sunyard.main.SydApiBuilder;
|
||||
|
||||
public class MACTest {
|
||||
|
||||
public static void main(String[] args) {
|
||||
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
SydApi api = new SydApiBuilder()
|
||||
.setIp("172.16.17.162")
|
||||
|
||||
@ -41,7 +41,7 @@ public class RSAP1SignVerify {
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
SydApi4j api = (SydApi4j) new SydApiBuilder()
|
||||
.setIp("192.168.1.226")
|
||||
.useDebugMode()
|
||||
|
||||
@ -13,7 +13,7 @@ import java.util.Arrays;
|
||||
public class Test
|
||||
{
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
System.out.println("工银亚洲测试功能测试");
|
||||
byte[] testData = new byte[17000];
|
||||
|
||||
@ -73,7 +73,7 @@ import java.util.Arrays;
|
||||
*/
|
||||
public class Test2 {
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
System.out.println("工银亚洲测试功能测试");
|
||||
byte[] testData = new byte[17000];
|
||||
|
||||
@ -11,7 +11,7 @@ import java.util.Arrays;
|
||||
public class TestKeyPair
|
||||
{
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
System.out.println("非对称密钥生成");
|
||||
byte[] testData = new byte[17000];
|
||||
|
||||
@ -8,7 +8,7 @@ import racal.sunyard.main.SydApiBuilder;
|
||||
import java.util.Arrays;
|
||||
|
||||
public class MACTest {
|
||||
public static void main(String[] args) {
|
||||
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
|
||||
System.out.println("MAC 测试");
|
||||
|
||||
@ -5,7 +5,7 @@ import racal.sunyard.main.SydApi4j;
|
||||
import racal.sunyard.main.SydApiBuilder;
|
||||
|
||||
public class PBOCTest {
|
||||
public static void main(String[] args) {
|
||||
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
|
||||
System.out.println("PBOC MAC 测试");
|
||||
|
||||
@ -9,7 +9,7 @@ public class PledgeTest {
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
byte[] testData = "1234567812345678".getBytes();
|
||||
//testData = new byte[8];
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ public class PledgeTest2 {
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
byte[] testData = "1234567812345678".getBytes();
|
||||
//testData = new byte[8];
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ import java.io.UnsupportedEncodingException;
|
||||
public class PrintTest {
|
||||
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
// 连接加密机
|
||||
SydApi4j api = (SydApi4j) new SydApiBuilder()
|
||||
.setIp("172.16.17.161")
|
||||
|
||||
@ -13,7 +13,7 @@ import java.io.UnsupportedEncodingException;
|
||||
public class TestCB
|
||||
{
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
System.out.println("SydApi 测试程序启动");
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ import java.util.Arrays;
|
||||
public class TestGongYin
|
||||
{
|
||||
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException, IllegalAccessException, InstantiationException, ClassNotFoundException {
|
||||
|
||||
System.out.println("工银亚洲测试功能测试");
|
||||
byte[] testData = new byte[17000];
|
||||
|
||||
@ -1,8 +1,14 @@
|
||||
package com.sunyard.sydapi.test;
|
||||
|
||||
import com.sunyard.trans.PacketSN;
|
||||
import org.junit.Test;
|
||||
import racal.sunyard.main.SydApi4j;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@ -42,4 +48,66 @@ public class TestUtil {
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有方法
|
||||
*/
|
||||
@Test
|
||||
public void getMethod() {
|
||||
Class<SydApi4j> jClass = SydApi4j.class;
|
||||
|
||||
Method[] dm = jClass.getDeclaredMethods();
|
||||
|
||||
System.out.println(dm.length);
|
||||
|
||||
for (int i = 0; i < dm.length; i++) {
|
||||
Type[] types = dm[i].getGenericParameterTypes();
|
||||
System.out.print(dm[i].getName() + "(");
|
||||
for (int j = 0; j < types.length; j++) {
|
||||
Type type = types[j];
|
||||
|
||||
System.out.print(getRealTypeName(type));
|
||||
if (j != types.length - 1) {
|
||||
System.out.print(", ");
|
||||
}
|
||||
}
|
||||
System.out.println(")");
|
||||
}
|
||||
}
|
||||
|
||||
public String getRealTypeName(Type type) {
|
||||
|
||||
String resultName = "";
|
||||
if (type instanceof ParameterizedType) {
|
||||
|
||||
resultName = getRealName(type.getTypeName()) + "<";
|
||||
|
||||
Type[] actualTypes = ((ParameterizedType) type).getActualTypeArguments();
|
||||
|
||||
for (int z = 0; z < actualTypes.length; z++) {
|
||||
resultName += getRealName(actualTypes[z].getTypeName());
|
||||
if (z != actualTypes.length - 1) {
|
||||
resultName += ", ";
|
||||
}
|
||||
}
|
||||
resultName += ">";
|
||||
} else {
|
||||
resultName = getRealName(type.getTypeName());
|
||||
}
|
||||
|
||||
return resultName.replace("$", ".");
|
||||
}
|
||||
|
||||
public String getRealName(String typeName) {
|
||||
if (typeName.contains(".") && typeName.contains("<")) {
|
||||
typeName = typeName.substring(0, typeName.indexOf("<"));
|
||||
return typeName.substring(typeName.lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
if (typeName.contains(".")) {
|
||||
return typeName.substring(typeName.lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
return typeName;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user