From 1fd3b1f002e95b95b12f5fef223164ef63444df6 Mon Sep 17 00:00:00 2001 From: Vitaly Drogan Date: Mon, 28 Oct 2024 12:26:37 +0100 Subject: [PATCH] signer helper --- signature/signature.go | 16 ++++++++++++++++ signature/signature_test.go | 7 +------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/signature/signature.go b/signature/signature.go index 2b258f8..24154d4 100644 --- a/signature/signature.go +++ b/signature/signature.go @@ -87,6 +87,22 @@ func NewSigner(privateKey *ecdsa.PrivateKey) Signer { } } +// NewSignerFromHexPrivateKey creates new signer from 0x-prefixed hex-encoded private key +func NewSignerFromHexPrivateKey(hexPrivateKey string) (*Signer, error) { + privateKeyBytes, err := hexutil.Decode(hexPrivateKey) + if err != nil { + return nil, err + } + + privateKey, err := crypto.ToECDSA(privateKeyBytes) + if err != nil { + return nil, err + } + + signer := NewSigner(privateKey) + return &signer, nil +} + func NewRandomSigner() (*Signer, error) { privateKey, err := crypto.GenerateKey() if err != nil { diff --git a/signature/signature_test.go b/signature/signature_test.go index 4960621..97e64ad 100644 --- a/signature/signature_test.go +++ b/signature/signature_test.go @@ -147,14 +147,9 @@ func TestSignatureCreateCompareToCastAndEthers(t *testing.T) { // This purposefully uses the already highly compromised keypair from the go-ethereum book: // https://goethereumbook.org/transfer-eth/ // privateKey = fad9c8855b740a0b7ed4c221dbad0f33a83a49cad6b3fe8d5817ac83d38b6a19 - privateKeyBytes, err := hexutil.Decode("0xfad9c8855b740a0b7ed4c221dbad0f33a83a49cad6b3fe8d5817ac83d38b6a19") + signer, err := signature.NewSignerFromHexPrivateKey("0xfad9c8855b740a0b7ed4c221dbad0f33a83a49cad6b3fe8d5817ac83d38b6a19") require.NoError(t, err) - privateKey, err := crypto.ToECDSA(privateKeyBytes) - require.NoError(t, err) - - signer := signature.NewSigner(privateKey) - address := signer.Address() body := []byte("Hello")