From 764004cac0247abcde13f2e1fc5665750ff145df Mon Sep 17 00:00:00 2001 From: Eli Mallon Date: Fri, 10 Jul 2026 21:30:00 -0700 Subject: [PATCH] signers: use crypto.FromECDSA to dodge priv.D deprecation Go 1.26 deprecates direct access to ecdsa.PrivateKey.D, but the suggested replacement (PrivateKey.Bytes) rejects non-NIST curves like secp256k1. go-ethereum's crypto.FromECDSA does the same 32-byte left-padded scalar encoding and supports our curve. Co-Authored-By: Claude Fable 5 --- pkg/crypto/signers/signers.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/crypto/signers/signers.go b/pkg/crypto/signers/signers.go index 4340263b..11f58147 100644 --- a/pkg/crypto/signers/signers.go +++ b/pkg/crypto/signers/signers.go @@ -32,8 +32,9 @@ func MarshalES256KPrivateKeyPEM(signer gocrypto.Signer) ([]byte, error) { return nil, fmt.Errorf("expected *ecdsa.PrivateKey, got %T", signer) } - // 32-byte big-endian scalar, left-padded. - privBytes := priv.D.FillBytes(make([]byte, 32)) + // 32-byte big-endian scalar, left-padded. ecdsa.PrivateKey.Bytes would be + // the stdlib way, but it rejects non-NIST curves like secp256k1. + privBytes := crypto.FromECDSA(priv) pubBytes := elliptic.Marshal(crypto.S256(), priv.PublicKey.X, priv.PublicKey.Y) //nolint:all -- 2.51.2