增加证书删除指令
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.sunyard.inf;
|
||||
|
||||
import com.sunyard.SydApiException;
|
||||
|
||||
/**
|
||||
* 不经过 CA 授信
|
||||
* 直接使用公私钥对签名验签
|
||||
@@ -92,6 +94,27 @@ interface SydNakedSVApi {
|
||||
byte[] sign,
|
||||
String sCertDN
|
||||
);
|
||||
|
||||
/**
|
||||
* 使用指定的证书 DN,对指定的原始数据编制裸验签(遵循PKCS#1) 安徽农信定制接口
|
||||
* @param cert 上传证书
|
||||
* @param rFlag 摘要算法 1—DIGEST_ALGO_MD5 M
|
||||
* * 2—DIGEST_ALGO_SHA1 S
|
||||
* * 3—DIGEST_ALGO_SHA256 R
|
||||
* 4-SM2 国密证书,SM3算法
|
||||
* * S代表RSA-SHA1进行签名,如果为R代表RSA-SHA256进行签名,如果为M代表RSA-MD5进行签名
|
||||
* @param orgData 待签名的原始数据
|
||||
* @param sign 签名数据
|
||||
* @param sCertDN 签名者证书 DN
|
||||
* @return 验签是否通过
|
||||
*/
|
||||
public boolean SYD_NakedVerifyAll4NX (
|
||||
String cert,
|
||||
int rFlag,
|
||||
byte[] orgData,
|
||||
byte[] sign,
|
||||
String sCertDN
|
||||
) ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -522,6 +522,25 @@ public class SydApi4j implements SydApi {
|
||||
|
||||
}
|
||||
|
||||
public boolean SYD_NakedVerifyAll4NX(String cert,int rFlag,byte[] orgData,byte[] sign, String sCertDN){
|
||||
boolean verify = false;
|
||||
try {
|
||||
//先导入证书
|
||||
importCert(cert.getBytes(),null);
|
||||
if( rFlag == 4 ){//SM2 国密算法
|
||||
verify = SYD_NakedVerify(orgData,sign,sCertDN);
|
||||
}else {
|
||||
verify = SYD_NakedVerify(rFlag,orgData,sign,sCertDN);
|
||||
}
|
||||
//删除导入的证书
|
||||
deleteCert(sCertDN);
|
||||
return verify;
|
||||
} catch ( SydApiException e) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public byte[] SYD_NakedSign(byte[] orgData, String sCertDN) {
|
||||
if (orgData == null) {
|
||||
throw new IllegalArgumentException("输入数据为 null");
|
||||
@@ -812,14 +831,14 @@ public class SydApi4j implements SydApi {
|
||||
) {
|
||||
throw new SydApiException("包序号不匹配", -4);
|
||||
}
|
||||
|
||||
ret = (Map<String, Object>) ret.get("data");
|
||||
PacketSection error = (PacketSection) ret.get("error");
|
||||
byte[] be = error.getBytes();
|
||||
if ((0 != (be[0] ^ be[1]))) {
|
||||
SydApiException e = new SydApiException(error.getInfo(), error.autoInt());
|
||||
println("验签失败=" + e.toString());
|
||||
return false;
|
||||
throw new SydApiException(error.getInfo(), error.autoInt());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1749,7 +1768,47 @@ public class SydApi4j implements SydApi {
|
||||
|
||||
@Override
|
||||
public boolean deleteCert(String dn) {
|
||||
return false;
|
||||
Proto8011 proto = new Proto8011();
|
||||
|
||||
// 填充数据
|
||||
HashMap<String, Object> packet = new HashMap<String, Object>();
|
||||
|
||||
HashMap<String, Object> data = new HashMap<String, Object>();
|
||||
packet.put("data", data);
|
||||
|
||||
PacketSN sn = PacketSN.gen();
|
||||
packet.put("header", sn.getSn().array());
|
||||
data.put("certDn", dn);
|
||||
|
||||
|
||||
|
||||
// 渲染发送
|
||||
ByteBuffer bb = proto.rend(packet);
|
||||
|
||||
|
||||
synchronized (this) {
|
||||
// 响应解析
|
||||
bb = syncRead(syncSend(bb));
|
||||
}
|
||||
|
||||
Packet p = proto.parse(bb, packet);
|
||||
Map<String, Object> ret = p.toMap();
|
||||
|
||||
if (
|
||||
!Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes())
|
||||
) {
|
||||
throw new SydApiException("包序号不匹配", -4);
|
||||
}
|
||||
ret = (Map<String, Object>) ret.get("data");
|
||||
PacketSection error = (PacketSection) ret.get("error");
|
||||
byte[] be = error.getBytes();
|
||||
if ((be[0] ^ be[1]) != 0) {
|
||||
SydApiException e = new SydApiException(error.getInfo(), error.autoInt());
|
||||
println("删除失败=" + e.toString());
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 测试通过
|
||||
|
||||
Reference in New Issue
Block a user