package auth import ( "crypto/ecdsa" "crypto/rand" "crypto/sha256" "encoding/base64" "fmt" ) // Sign ECDSA P-256 签名,返回 DER 编码的 Base64 签名。 func Sign(key *ecdsa.PrivateKey, data []byte) (string, error) { hash := sha256.Sum256(data) sig, err := ecdsa.SignASN1(rand.Reader, key, hash[:]) if err != nil { return "", fmt.Errorf("ecdsa sign: %w", err) } return base64.StdEncoding.EncodeToString(sig), nil } // Verify 验证 ECDSA P-256 签名。 // sigBase64 是 DER 编码的 Base64 签名。 func Verify(key *ecdsa.PublicKey, data []byte, sigBase64 string) bool { sig, err := base64.StdEncoding.DecodeString(sigBase64) if err != nil { return false } hash := sha256.Sum256(data) return ecdsa.VerifyASN1(key, hash[:], sig) }