fix:attachedVerifyAndGetAll call detachedVerify set flag$option=1 whitch check cert usefull always

This commit is contained in:
cheney 2025-08-15 14:43:33 +08:00
parent c516397ad6
commit c90bb3ea0f

View File

@ -1049,9 +1049,7 @@ public class SydApi4j implements SydApi {
} }
// 测试通过 public boolean detachedVerify(int dataType, byte[] orgData, String sign, Boolean checkCert) {
@Override
public boolean detachedVerify(int dataType, byte[] orgData, String sign) {
Proto8006 proto = new Proto8006(); Proto8006 proto = new Proto8006();
// 填充数据 // 填充数据
HashMap<String, Object> packet = new HashMap<String, Object>(); HashMap<String, Object> packet = new HashMap<String, Object>();
@ -1071,7 +1069,7 @@ public class SydApi4j implements SydApi {
data.put("signData", sign.getBytes()); data.put("signData", sign.getBytes());
data.put("flag$option", 0); data.put("flag$option", checkCert ? 1 : 0);
// 渲染发送 // 渲染发送
ByteBuffer bb = proto.rend(packet); ByteBuffer bb = proto.rend(packet);
@ -1102,6 +1100,12 @@ public class SydApi4j implements SydApi {
return true; return true;
} }
// 测试通过
@Override
public boolean detachedVerify(int dataType, byte[] orgData, String sign) {
return detachedVerify(dataType, orgData, sign, false);
}
public boolean detachedVerifyAll(int rFlag,byte[] orgData, String sign){ public boolean detachedVerifyAll(int rFlag,byte[] orgData, String sign){
try { try {
boolean sm2Cert = CertUtil.isSignedBySM2Cert(sign); boolean sm2Cert = CertUtil.isSignedBySM2Cert(sign);
@ -12120,7 +12124,7 @@ public class SydApi4j implements SydApi {
byte[] pk = (byte[]) ret.get("pk"); byte[] pk = (byte[]) ret.get("pk");
byte[] hash = this.SM3Hash(Util.bytes2HexString(pk), orgData); byte[] hash = this.SM3Hash(Util.bytes2HexString(pk), orgData);
String sign2 = (String) ret.get("sign"); String sign2 = (String) ret.get("sign");
boolean pass = this.detachedVerify(0, hash, sign2); boolean pass = this.detachedVerify(0, hash, sign2, true);
if (pass) { if (pass) {
ret.put("oData", orgData); ret.put("oData", orgData);
String certInfo = (String) ret.get("cert"); String certInfo = (String) ret.get("cert");