From bb26adfe619e9ece6821c5f6ffd11fef07523229 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Wed, 8 Jul 2026 16:27:30 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=80=A7=E8=83=BD=E4=BC=98=E5=8C=96):?= =?UTF-8?q?=20=E6=8F=90=E5=8D=87=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ofdgo_sign_ses.go | 2 ++ ofdgo_sign_verify.go | 14 +++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/ofdgo_sign_ses.go b/ofdgo_sign_ses.go index 129b3ad..ae7790f 100644 --- a/ofdgo_sign_ses.go +++ b/ofdgo_sign_ses.go @@ -79,6 +79,7 @@ type sesVerifyResult struct { SealCert SignatureCertInfo SignCertRaw []byte SealCertRaw []byte + SealRaw []byte Certs [][]byte SealType string } @@ -193,6 +194,7 @@ func verifySESSignature(data, signedData []byte, options *signatureVerifyOptions result.SealCert = signatureCertInfo(sig.Seal.Cert) result.SignCertRaw = sig.Cert result.SealCertRaw = sig.Seal.Cert + result.SealRaw = sig.Seal.Raw result.Certs = append(result.Certs, sig.Seal.CertList.Certs...) result.Certs = append(result.Certs, options.SignCerts...) result.SealType = sig.Seal.PicType diff --git a/ofdgo_sign_verify.go b/ofdgo_sign_verify.go index f84384b..5ddf060 100644 --- a/ofdgo_sign_verify.go +++ b/ofdgo_sign_verify.go @@ -95,6 +95,8 @@ type signatureVerifyOptions struct { VerifyTime *time.Time } +var signatureMethodReplacer = strings.NewReplacer("-", "", "_", "", " ", "") + // SignatureVerifyOption 签名验证选项函数 type SignatureVerifyOption func(*signatureVerifyOptions) @@ -295,12 +297,7 @@ func (r *Reader) verifySignature(sigListPath string, sigRef Signature, options * report.Error = err.Error() return report } - sig, err := parseSESSignature(signedValue) - if err != nil { - report.Error = err.Error() - return report - } - report.SealMatchOK = bytes.Equal(sealData, sig.Seal.Raw) + report.SealMatchOK = bytes.Equal(sealData, sesResult.SealRaw) } report.Valid = report.DigestOK && report.DataHashOK && report.SignedValueOK && report.SealOK && report.SealMatchOK && report.CertOK && report.certificatePolicyOK() return report @@ -498,15 +495,14 @@ func isECDSASignatureMethod(method string) bool { // 返回: string 规范化算法标识 func signatureMethodText(method string) string { method = strings.TrimSpace(method) - if strings.HasPrefix(strings.ToLower(method), "urn:oid:") { + if len(method) >= len("urn:oid:") && strings.EqualFold(method[:len("urn:oid:")], "urn:oid:") { method = method[len("urn:oid:"):] } if idx := strings.LastIndexAny(method, "#/"); idx >= 0 && idx+1 < len(method) { method = method[idx+1:] } method = strings.ToUpper(method) - method = strings.NewReplacer("-", "", "_", "", " ", "").Replace(method) - return method + return signatureMethodReplacer.Replace(method) } // verifyPublicKeySignature 验证公钥签名