8019添加一个返回Boolean类型的接口

This commit is contained in:
zhoubin
2022-01-05 18:37:51 +08:00
parent f06bb2a10c
commit 8a38108727
5 changed files with 168 additions and 6 deletions
+10 -1
View File
@@ -179,6 +179,15 @@ interface SydAttachedSVApi {
*/
String attachedSign(byte[] orgData, String sCertDN);
/**
* 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7)
* 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。
*
* @param sign 已签名数据
* @return true 验签通过 false 验签失败
*/
boolean attachedVerify(String sign);
/**
* 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7)
* 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。
@@ -188,7 +197,7 @@ interface SydAttachedSVApi {
* 若发送报文返回证书信息标志位为0,则返回已签名数据,
* 若发送报文返回证书信息标志位为1,则返回CERT_INFO结构的证书数据
*/
X509 attachedVerify(String sign);
X509 attachedVerifyAndGetX509(String sign);
}
+41 -2
View File
@@ -9726,6 +9726,46 @@ public class SydApi4j implements SydApi {
return ((PacketSection) ret.get("signature")).getString();
}
@Override
public boolean attachedVerify(String sign) {
Proto8019 proto = new Proto8019(); //pset.getProtocolReqRender("75");
// 填充数据
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("signData", sign.getBytes());
data.put("flag$option", 0);
// 渲染发送
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 ((0 != (be[0] ^ be[1]))) {
return false;
}
return true;
}
/**
* 带公钥证书与原始数据的数字签名验签(遵循 PKCS#7)
* 对指定的原始数据核验其带公钥证书签名。如签名有效(含证书无效)且需返回签名者公钥证书信息时,同时返回签名者公钥证书信息。
@@ -9734,8 +9774,7 @@ public class SydApi4j implements SydApi {
* @return
* 返回CERT_INFO结构的证书数据
*/
@Override
public X509 attachedVerify(String sign) {
public X509 attachedVerifyAndGetX509(String sign) {
Proto8019 proto = new Proto8019(); //pset.getProtocolReqRender("75");
// 填充数据