🎨 #3728 【微信支付】修复V3支付公钥转账出现的签名验证失败问题
This commit is contained in:
@@ -24,9 +24,17 @@ public class PublicCertificateVerifier implements Verifier{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean verify(String serialNumber, byte[] message, String signature) {
|
public boolean verify(String serialNumber, byte[] message, String signature) {
|
||||||
|
// 如果序列号不包含"PUB_KEY_ID"且有证书验证器,先尝试证书验证
|
||||||
if (!serialNumber.contains("PUB_KEY_ID") && this.certificateVerifier != null) {
|
if (!serialNumber.contains("PUB_KEY_ID") && this.certificateVerifier != null) {
|
||||||
return this.certificateVerifier.verify(serialNumber, message, signature);
|
try {
|
||||||
|
if (this.certificateVerifier.verify(serialNumber, message, signature)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 证书验证失败,继续尝试公钥验证
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// 使用公钥验证(兜底方案,适用于公钥转账等场景)
|
||||||
try {
|
try {
|
||||||
Signature sign = Signature.getInstance("SHA256withRSA");
|
Signature sign = Signature.getInstance("SHA256withRSA");
|
||||||
sign.initVerify(publicKey);
|
sign.initVerify(publicKey);
|
||||||
|
|||||||
Reference in New Issue
Block a user