1、导入证书时在证书前后添加begin,end并添加换行。2、生成数字信封支持P
This commit is contained in:
@@ -89,7 +89,7 @@ public interface SydCertApi {
|
||||
);
|
||||
|
||||
/**
|
||||
* 从签名中获取证书
|
||||
* 从签名中获取证书并上载到加密机
|
||||
* @param orgData 待签名的原始数据
|
||||
* @param sign 签名数据
|
||||
* @return 证书信息(包含公钥字段)
|
||||
@@ -120,4 +120,12 @@ public interface SydCertApi {
|
||||
*/
|
||||
RetWrap importCert(byte[] certData, byte[] organizationId);
|
||||
|
||||
/**
|
||||
* 上传指定证书到加密设备,并在证书前后加上begin和end
|
||||
* @param certData 证书的字节数组
|
||||
* @param organizationId 机构号的字节数组
|
||||
* @return
|
||||
*/
|
||||
RetWrap importCertAddHT(String certData, byte[] organizationId);
|
||||
|
||||
}
|
||||
|
||||
@@ -216,6 +216,18 @@ public interface SydGenApi {
|
||||
*/
|
||||
RetWrap generateDEByDn(byte[] dn, int alg, int model) throws Exception;
|
||||
|
||||
/**
|
||||
* 产生对称密钥,通过公钥加密生成网联格式的数字信封。
|
||||
|
||||
* @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 generateDEbyGS(String certSerial, byte nAlg);
|
||||
|
||||
/**
|
||||
* 产生对称密钥,通过公钥加密生成网联格式的数字信封。
|
||||
|
||||
|
||||
@@ -34,21 +34,19 @@ public interface SydQNUCApi {
|
||||
/**
|
||||
* 用指定的证书私钥对指定的数据进行数字签名。使用外部公钥做hash
|
||||
* 最大签名原始数据为8161byte
|
||||
* @param publicKey 输入。公钥。
|
||||
* @param pCertSerial 输入。签名 X509 证书的序列号。
|
||||
* @param pOrgData 输入。 待签名的原始数据。
|
||||
* @return 签名数据(BASE64 编码)。
|
||||
*/
|
||||
String netGSSign(String publicKey, String pCertSerial, byte[] pOrgData);
|
||||
String netGSSign(String pCertSerial, byte[] pOrgData);
|
||||
|
||||
/**
|
||||
* 用指定证书对指定的原始数据进行数字签名验证。使用外部公钥做hash
|
||||
* @param publicKey 输入。公钥。
|
||||
* @param pCertSerial 输入。 签名 X509 证书的序列号。
|
||||
* @param pOrgData 输入。 待签名的原始数据。
|
||||
* @param pSignData 输入。 签名数据(BASE64 编码)。
|
||||
* @return true 表示验证正确;false 表示失败;
|
||||
*/
|
||||
boolean netGSVerify(String publicKey, String pCertSerial, byte[] pOrgData, String pSignData);
|
||||
boolean netGSVerify(String pCertSerial, byte[] pOrgData, String pSignData);
|
||||
|
||||
}
|
||||
|
||||
@@ -171,4 +171,33 @@ public class CoderUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将证书前后加上begin和end,中间添加换行
|
||||
* @param certData
|
||||
* @return
|
||||
*/
|
||||
public static String certAddHT(String certData) {
|
||||
final String head = "-----BEGIN CERTIFICATE-----\n";
|
||||
final String tail = "-----END CERTIFICATE-----";
|
||||
final String wrap = "\n";
|
||||
|
||||
int num = certData.length() % 64 == 0 ? certData.length() / 64: certData.length() / 64 + 1;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(head);
|
||||
|
||||
for (int i = 0; i < num; i++) {
|
||||
String substring;
|
||||
if (i == num - 1) {
|
||||
substring = certData.substring(i * 64);
|
||||
} else {
|
||||
substring = certData.substring(i * 64, (i + 1) * 64);
|
||||
}
|
||||
sb.append(substring).append(wrap);
|
||||
}
|
||||
sb.append(tail);
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user