武汉人行指令整合
This commit is contained in:
@@ -5,6 +5,7 @@ import com.sunyard.inf.*;
|
||||
import com.sunyard.inf.customize.SydHAApi;
|
||||
import com.sunyard.inf.customize.SydQNUCApi;
|
||||
import com.sunyard.inf.customize.SydSDNXApi;
|
||||
import racal.sunyard.main.SydApiBuilder;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
@@ -12,7 +13,7 @@ import java.io.InputStream;
|
||||
* Created by Cheney on 2017/11/11.
|
||||
* 程序调用接口
|
||||
*/
|
||||
public interface SydApi extends SydRawApi, SydCertApi, SydCryptionApi, SydGenApi, SydSVApi, SydHAApi, SydQNUCApi, SydPledge, SydPINOpt {
|
||||
public interface SydApi extends SydRawApi, SydCertApi, SydCryptionApi, SydGenApi, SydSVApi, SydHAApi, SydQNUCApi, SydPledge, SydPINOpt, SydManufactureApi {
|
||||
|
||||
byte ALG_AES = 0x30;
|
||||
byte ALG_SM4 = 0x31;
|
||||
@@ -67,7 +68,7 @@ public interface SydApi extends SydRawApi, SydCertApi, SydCryptionApi, SydGenApi
|
||||
*/
|
||||
SydApi connect(String ip, int port, String pwd, int connectTimeout, int readTimeout);
|
||||
|
||||
|
||||
void init(SydApiBuilder builder);
|
||||
|
||||
/**
|
||||
* 断开连接
|
||||
|
||||
@@ -352,5 +352,25 @@ interface SydSYMApi {
|
||||
*/
|
||||
byte[] SYD_MAC_Data(String key, String infoData, byte[] factor, String IV, int disperseNum, int disperseAlg);
|
||||
|
||||
/**
|
||||
* 对称加密数据
|
||||
* @param key 索引地址,指示用户密钥存储区的27位地址
|
||||
* @param intPutData 消息数据
|
||||
* @return
|
||||
* iv: IV 数据域
|
||||
* msg_all: 消息数据
|
||||
*/
|
||||
public String SYMEncrytByKeyIndex( String key, String intPutData);
|
||||
|
||||
/**
|
||||
* 对称解密数据
|
||||
* @param key 索引地址,指示用户密钥存储区的27位地址
|
||||
* @param intPutData 消息数据
|
||||
* @return 消息数据
|
||||
*/
|
||||
public String SYMDecrytByKeyIndex(String key,String intPutData);
|
||||
|
||||
//通过索引读取对称秘钥
|
||||
String readKey(String index);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.sunyard.inf;
|
||||
|
||||
import com.sunyard.RetWrap;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
|
||||
|
||||
/**
|
||||
* 密钥生成相关接口
|
||||
@@ -128,6 +130,57 @@ public interface SydGenApi {
|
||||
*/
|
||||
RetWrap SM2GenSessionKey(String publicKey);
|
||||
|
||||
/**
|
||||
* 生成数字信封
|
||||
* @param publicKey 公钥
|
||||
* @return
|
||||
* CipherKey: 公钥加密的会话密钥,DER 编码,HEX 格式,
|
||||
* SessionKey: 本地LMK 加密的会话密钥,HEX 格式 ,
|
||||
* KCV: 会话密钥的检验值,HEX 格式,长度为 16H。
|
||||
*/
|
||||
RetWrap genDigitalEnvelope(String publicKey);
|
||||
|
||||
/**
|
||||
* 解密数字信封
|
||||
*
|
||||
* @param sk 私钥索引
|
||||
* @param cipherKey 密文
|
||||
* @return sessionKey LMK加密下的密钥
|
||||
*/
|
||||
String deDigitalEnvelope(String sk, String cipherKey);
|
||||
|
||||
/**
|
||||
* @Description: 数字信封加密数据,会员专用
|
||||
* @Param: [pk, inPutData,msgId]
|
||||
* @return: byte[] 格式:sessionByPk+\r\n+头+\r\n+密文
|
||||
* @Author: wp
|
||||
* @Date: 2020/11/20
|
||||
*/
|
||||
String genDigitalEnvelopeWithDM(String pk, String inPutDataStr,String msgId) throws UnsupportedEncodingException;
|
||||
/**
|
||||
* 数字信封加密数据,票价所定制格式
|
||||
* @param pk 公钥值
|
||||
* @param inPutData 报文明文
|
||||
* @return 报文密文 格式:sessionByPk(base64)+\r\n+密文(base64)
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
String genDigitalEnvelopeWithData(String pk,String inPutData) throws UnsupportedEncodingException;
|
||||
/**
|
||||
* 解密数字信封,解密数据
|
||||
* @param sk 私钥索引
|
||||
* @param inPutData 报文密文
|
||||
* @return 报文明文
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
String deDigitalEnvelopeWithData(String sk, String inPutData) throws UnsupportedEncodingException;
|
||||
|
||||
/**
|
||||
* 将秘钥从 PK 加密转为 LMK 加密
|
||||
* @param skIndex 私钥索引
|
||||
* @param sessionKey 会话秘钥密文
|
||||
* @return 会话秘钥密文
|
||||
*/
|
||||
String transKeyFromPkToLmk(String skIndex, String sessionKey);
|
||||
|
||||
/**
|
||||
* 此函数用于会话密钥的接收,用于接收端。
|
||||
@@ -148,6 +201,17 @@ public interface SydGenApi {
|
||||
*/
|
||||
RetWrap SM2ConfirmSessionKey(String sk, String cipherKey);
|
||||
|
||||
/**
|
||||
* 产生对称密钥,通过公钥加密生成网联格式的数字信封。
|
||||
|
||||
* @param dn 对*方 X509 证书DN。
|
||||
* @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 generateDEByDn(byte[] dn, byte nAlg) throws Exception;
|
||||
|
||||
/**
|
||||
* 产生对称密钥,通过公钥加密生成网联格式的数字信封。
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.sunyard.inf;
|
||||
|
||||
import com.sunyard.RetWrap;
|
||||
|
||||
/**
|
||||
* @program: ssphsm
|
||||
* @description:
|
||||
* @author: wp
|
||||
* @create: 2021-03-09 19:25
|
||||
**/
|
||||
public interface SydManufactureApi {
|
||||
/**
|
||||
* 设置设备证书信息
|
||||
* @param equipType 设备型号
|
||||
* @param equipNo 设备序号
|
||||
* @param equipSk 设备密钥私钥
|
||||
* @param equipPk 设备密钥公钥
|
||||
* @param manuPk 厂商公钥
|
||||
* @param authSign 授权签名
|
||||
* @return 是否设置成功
|
||||
*/
|
||||
boolean setDevCert(String equipType, String equipNo, byte[] equipSk, byte[] equipPk, byte[] manuPk, byte[] authSign);
|
||||
|
||||
/**
|
||||
* 更换设备证书信息
|
||||
* @param equipSk 设备密钥私钥
|
||||
* @param equipPk 设备密钥公钥
|
||||
* @param authSign 授权签名
|
||||
* @return 是否设置成功
|
||||
*/
|
||||
boolean changeDevCert(byte[] equipSk, byte[] equipPk, byte[] authSign);
|
||||
|
||||
|
||||
/**
|
||||
* @Description 查询设备证书信息 -> pass
|
||||
* @Param
|
||||
* @Return com.sunyard.RetWrap
|
||||
* @Author wp
|
||||
* @Date 2020/9/30 16:42
|
||||
**/
|
||||
RetWrap getDeviceCertiInfo();
|
||||
|
||||
/**
|
||||
* @Description 加密机版本号 -> pass
|
||||
* @Param [num]
|
||||
* @Return com.sunyard.RetWrap
|
||||
* @Author wp
|
||||
* @Date 2020/9/30 16:42
|
||||
**/
|
||||
RetWrap getVersion(String num);
|
||||
|
||||
/**
|
||||
* 设备签名
|
||||
* @param orgData 哈希数据
|
||||
* @return 签名的 DER 编码
|
||||
*/
|
||||
String deviceSignC(byte[] orgData);
|
||||
|
||||
/**
|
||||
* TOKEN导入
|
||||
* @param token 设备公钥加密的 Token 密文
|
||||
* @return 是否导入成功
|
||||
*/
|
||||
boolean setToken(byte[] token);
|
||||
|
||||
/**
|
||||
* 计算设备认证码
|
||||
* @param certiContent 认证内容
|
||||
* @return 认证码
|
||||
*/
|
||||
byte[] calcAuthHead(byte[] certiContent);
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.sunyard.inf;
|
||||
|
||||
|
||||
import com.sunyard.RetWrap;
|
||||
import com.sunyard.cert.X509;
|
||||
|
||||
/**
|
||||
* 签名验签相关接口
|
||||
@@ -274,6 +275,19 @@ interface SydDetachedSVApi {
|
||||
byte[] orgData,
|
||||
byte[] sign);
|
||||
|
||||
/**
|
||||
* 对指定的原始数据核验其带公钥证书签名(PKCS#7)返回证书信息
|
||||
* 数据模式可选 DATA_HASH 或 DATA_ORIGIN
|
||||
*
|
||||
* @param dataType 输入的数据为 HASH 后的数据 DATA_HASH = 0 ,输入的数据为原始数据库 DATA_ORIGIN = 1
|
||||
* @param orgData 待签名的原始数据
|
||||
* @param sign 签名数据
|
||||
* @return 证书
|
||||
*/
|
||||
X509 detachedVerifyAndGetX509(int dataType,
|
||||
byte[] orgData,
|
||||
String sign);
|
||||
|
||||
/**
|
||||
* 计算SM3散列值
|
||||
* @param packSn 消息块号,0=仅一块,1=第一块,2=中间块,3=最后块
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,15 @@ public class SydApiBuilder {
|
||||
private boolean useEBCDMode = false;
|
||||
private boolean useETEncrypt = false;
|
||||
private ClassLoader classLoader;
|
||||
private String encode="UTF-8";
|
||||
|
||||
public String getEncode() {
|
||||
return encode;
|
||||
}
|
||||
|
||||
public void setEncode(String encode) {
|
||||
this.encode = encode;
|
||||
}
|
||||
|
||||
|
||||
public SydApi build() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
|
||||
|
||||
Reference in New Issue
Block a user