From c15d6783c66e71220acd77d4905e3a37106ca4ef Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Wed, 29 Oct 2025 21:10:03 +0800 Subject: [PATCH] refactor: clean code --- internal/certificate/service.go | 3 +- internal/domain/acme_account.go | 2 +- internal/workflow/engine/executor_bizapply.go | 3 +- .../workflow/engine/executor_bizupload.go | 5 +- pkg/utils/cert/parser.go | 70 +------------------ 5 files changed, 7 insertions(+), 76 deletions(-) diff --git a/internal/certificate/service.go b/internal/certificate/service.go index f6936c99d..c2fdf1e7b 100644 --- a/internal/certificate/service.go +++ b/internal/certificate/service.go @@ -9,7 +9,6 @@ import ( "strings" "time" - "github.com/go-acme/lego/v4/certcrypto" "github.com/pocketbase/dbx" "github.com/certimate-go/certimate/internal/app" @@ -181,7 +180,7 @@ func (s *CertificateService) ValidateCertificate(ctx context.Context, req *dtos. } func (s *CertificateService) ValidatePrivateKey(ctx context.Context, req *dtos.CertificateValidatePrivateKeyReq) (*dtos.CertificateValidatePrivateKeyResp, error) { - _, err := certcrypto.ParsePEMPrivateKey([]byte(req.PrivateKey)) + _, err := xcert.ParsePrivateKeyFromPEM(req.PrivateKey) if err != nil { return nil, err } diff --git a/internal/domain/acme_account.go b/internal/domain/acme_account.go index e15c40cc5..04c7477d0 100644 --- a/internal/domain/acme_account.go +++ b/internal/domain/acme_account.go @@ -41,6 +41,6 @@ func (a *ACMEAccount) GetPrivateKey() crypto.PrivateKey { return nil } - rs, _ := xcert.ParseECPrivateKeyFromPEM(a.PrivateKey) + rs, _ := xcert.ParsePrivateKeyFromPEM(a.PrivateKey) return rs } diff --git a/internal/workflow/engine/executor_bizapply.go b/internal/workflow/engine/executor_bizapply.go index ca926b9b5..306b90f7d 100644 --- a/internal/workflow/engine/executor_bizapply.go +++ b/internal/workflow/engine/executor_bizapply.go @@ -10,7 +10,6 @@ import ( "strings" "time" - "github.com/go-acme/lego/v4/certcrypto" legocertifier "github.com/go-acme/lego/v4/certificate" "github.com/go-acme/lego/v4/lego" legolog "github.com/go-acme/lego/v4/log" @@ -300,7 +299,7 @@ func (ne *bizApplyNodeExecutor) executeObtain(execCtx *NodeExecutionContext, nod return "" } - oldCertX509, err := certcrypto.ParsePEMCertificate([]byte(lastCertificate.Certificate)) + oldCertX509, err := xcert.ParseCertificateFromPEM(lastCertificate.Certificate) if err != nil { return "" } diff --git a/internal/workflow/engine/executor_bizupload.go b/internal/workflow/engine/executor_bizupload.go index 10d680963..d17da8ce5 100644 --- a/internal/workflow/engine/executor_bizupload.go +++ b/internal/workflow/engine/executor_bizupload.go @@ -12,7 +12,6 @@ import ( "strings" "time" - "github.com/go-acme/lego/v4/certcrypto" "github.com/go-resty/resty/v2" "github.com/certimate-go/certimate/internal/domain" @@ -127,7 +126,7 @@ func (ne *bizUploadNodeExecutor) Execute(execCtx *NodeExecutionContext) (*NodeEx } // 验证证书 - certX509, err := certcrypto.ParsePEMCertificate([]byte(certPEM)) + certX509, err := xcert.ParseCertificateFromPEM(certPEM) if err != nil { return execRes, err } else if certX509.NotAfter.Before(time.Now()) { @@ -135,7 +134,7 @@ func (ne *bizUploadNodeExecutor) Execute(execCtx *NodeExecutionContext) (*NodeEx } // 验证私钥 - privkey, err := certcrypto.ParsePEMPrivateKey([]byte(privkeyPEM)) + privkey, err := xcert.ParsePrivateKeyFromPEM(privkeyPEM) if err != nil { return nil, err } else { diff --git a/pkg/utils/cert/parser.go b/pkg/utils/cert/parser.go index 698bf7e99..1202db39a 100644 --- a/pkg/utils/cert/parser.go +++ b/pkg/utils/cert/parser.go @@ -2,12 +2,7 @@ package cert import ( "crypto" - "crypto/ecdsa" - "crypto/rsa" "crypto/x509" - "encoding/pem" - "errors" - "fmt" "github.com/go-acme/lego/v4/certcrypto" ) @@ -22,19 +17,7 @@ import ( // - cert: x509.Certificate 对象。 // - err: 错误。 func ParseCertificateFromPEM(certPEM string) (_cert *x509.Certificate, _err error) { - pemData := []byte(certPEM) - - block, _ := pem.Decode(pemData) - if block == nil { - return nil, errors.New("failed to decode PEM block") - } - - cert, err := x509.ParseCertificate(block.Bytes) - if err != nil { - return nil, fmt.Errorf("failed to parse certificate: %w", err) - } - - return cert, nil + return certcrypto.ParsePEMCertificate([]byte(certPEM)) } // 从 PEM 编码的私钥字符串解析并返回一个 crypto.PrivateKey 对象。 @@ -46,54 +29,5 @@ func ParseCertificateFromPEM(certPEM string) (_cert *x509.Certificate, _err erro // - privkey: crypto.PrivateKey 对象,可能是 rsa.PrivateKey、ecdsa.PrivateKey 或 ed25519.PrivateKey。 // - err: 错误。 func ParsePrivateKeyFromPEM(privkeyPEM string) (_privkey crypto.PrivateKey, _err error) { - pemData := []byte(privkeyPEM) - return certcrypto.ParsePEMPrivateKey(pemData) -} - -// 从 PEM 编码的私钥字符串解析并返回一个 ecdsa.PrivateKey 对象。 -// -// 入参: -// - privkeyPEM: 私钥 PEM 内容。 -// -// 出参: -// - privkey: ecdsa.PrivateKey 对象。 -// - err: 错误。 -func ParseECPrivateKeyFromPEM(privkeyPEM string) (_privkey *ecdsa.PrivateKey, _err error) { - pemData := []byte(privkeyPEM) - - block, _ := pem.Decode(pemData) - if block == nil { - return nil, errors.New("failed to decode PEM block") - } - - privkey, err := x509.ParseECPrivateKey(block.Bytes) - if err != nil { - return nil, fmt.Errorf("failed to parse private key: %w", err) - } - - return privkey, nil -} - -// 从 PEM 编码的私钥字符串解析并返回一个 rsa.PrivateKey 对象。 -// -// 入参: -// - privkeyPEM: 私钥 PEM 内容。 -// -// 出参: -// - privkey: rsa.PrivateKey 对象。 -// - err: 错误。 -func ParsePKCS1PrivateKeyFromPEM(privkeyPEM string) (_privkey *rsa.PrivateKey, _err error) { - pemData := []byte(privkeyPEM) - - block, _ := pem.Decode(pemData) - if block == nil { - return nil, errors.New("failed to decode PEM block") - } - - privkey, err := x509.ParsePKCS1PrivateKey(block.Bytes) - if err != nil { - return nil, fmt.Errorf("failed to parse private key: %w", err) - } - - return privkey, nil + return certcrypto.ParsePEMPrivateKey([]byte(privkeyPEM)) }