diff --git a/api/clients/v2/payload_disperser.go b/api/clients/v2/payload_disperser.go index e285cb61bc..68997af691 100644 --- a/api/clients/v2/payload_disperser.go +++ b/api/clients/v2/payload_disperser.go @@ -36,11 +36,9 @@ func BuildPayloadDisperser(log logging.Logger, payloadDispCfg PayloadDisperserCo kzgConfig *kzg.KzgConfig, encoderCfg *encoding.Config) (*PayloadDisperser, error) { // 1 - verify key semantics and create signer - var signer core.BlobRequestSigner - if len(payloadDispCfg.SignerPaymentKey) == 64 { - signer = auth.NewLocalBlobRequestSigner(payloadDispCfg.SignerPaymentKey) - } else { - return nil, fmt.Errorf("invalid length for signer private key") + signer, err := auth.NewLocalBlobRequestSigner(payloadDispCfg.SignerPaymentKey) + if err != nil { + return nil, fmt.Errorf("new local blob request signer: %w", err) } // 2 - create prover diff --git a/core/auth/v2/auth_test.go b/core/auth/v2/auth_test.go index 3d22b66c3f..da8dedeea6 100644 --- a/core/auth/v2/auth_test.go +++ b/core/auth/v2/auth_test.go @@ -19,7 +19,8 @@ var ( ) func TestAuthentication(t *testing.T) { - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) authenticator := auth.NewAuthenticator() accountId, err := signer.GetAccountID() @@ -36,7 +37,8 @@ func TestAuthentication(t *testing.T) { } func TestAuthenticationFail(t *testing.T) { - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) authenticator := auth.NewAuthenticator() accountId, err := signer.GetAccountID() @@ -45,7 +47,8 @@ func TestAuthenticationFail(t *testing.T) { header := testHeader(t, accountId) wrongPrivateKeyHex := "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcded" - signer = auth.NewLocalBlobRequestSigner(wrongPrivateKeyHex) + signer, err = auth.NewLocalBlobRequestSigner(wrongPrivateKeyHex) + assert.NoError(t, err) // Sign the header signature, err := signer.SignBlobRequest(header) @@ -113,7 +116,8 @@ func testHeader(t *testing.T, accountID string) *corev2.BlobHeader { } func TestAuthenticatePaymentStateRequestValid(t *testing.T) { - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) authenticator := auth.NewAuthenticator() signature, err := signer.SignPaymentStateRequest() @@ -143,11 +147,13 @@ func TestAuthenticatePaymentStateRequestInvalidPublicKey(t *testing.T) { } func TestAuthenticatePaymentStateRequestSignatureMismatch(t *testing.T) { - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) authenticator := auth.NewAuthenticator() // Create a different signer with wrong private key - wrongSigner := auth.NewLocalBlobRequestSigner("0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcded") + wrongSigner, err := auth.NewLocalBlobRequestSigner("0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcded") + assert.NoError(t, err) // Sign with wrong key accountId, err := signer.GetAccountID() @@ -162,7 +168,8 @@ func TestAuthenticatePaymentStateRequestSignatureMismatch(t *testing.T) { } func TestAuthenticatePaymentStateRequestCorruptedSignature(t *testing.T) { - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) authenticator := auth.NewAuthenticator() accountId, err := signer.GetAccountID() diff --git a/core/auth/v2/signer.go b/core/auth/v2/signer.go index bbfef3eca9..6314d5c7a2 100644 --- a/core/auth/v2/signer.go +++ b/core/auth/v2/signer.go @@ -4,7 +4,6 @@ import ( "crypto/ecdsa" "crypto/sha256" "fmt" - "log" core "github.com/Layr-Labs/eigenda/core/v2" "github.com/ethereum/go-ethereum/common" @@ -17,16 +16,16 @@ type LocalBlobRequestSigner struct { var _ core.BlobRequestSigner = &LocalBlobRequestSigner{} -func NewLocalBlobRequestSigner(privateKeyHex string) *LocalBlobRequestSigner { +func NewLocalBlobRequestSigner(privateKeyHex string) (*LocalBlobRequestSigner, error) { privateKeyBytes := common.FromHex(privateKeyHex) privateKey, err := crypto.ToECDSA(privateKeyBytes) if err != nil { - log.Fatalf("Failed to parse private key: %v", err) + return nil, fmt.Errorf("create ECDSA private key: %w", err) } return &LocalBlobRequestSigner{ PrivateKey: privateKey, - } + }, nil } func (s *LocalBlobRequestSigner) SignBlobRequest(header *core.BlobHeader) ([]byte, error) { diff --git a/core/auth/v2/signer_test.go b/core/auth/v2/signer_test.go index b17022bcd3..0fa0f99a8e 100644 --- a/core/auth/v2/signer_test.go +++ b/core/auth/v2/signer_test.go @@ -20,7 +20,8 @@ func TestGetAccountID(t *testing.T) { expectedAccountID := "0x1aa8226f6d354380dDE75eE6B634875c4203e522" // Create signer instance - signer := NewLocalBlobRequestSigner(privateKey) + signer, err := NewLocalBlobRequestSigner(privateKey) + require.NoError(t, err) // Get account ID accountID, err := signer.GetAccountID() @@ -30,7 +31,8 @@ func TestGetAccountID(t *testing.T) { func TestSignBlobRequest(t *testing.T) { privateKey := "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcded" - signer := NewLocalBlobRequestSigner(privateKey) + signer, err := NewLocalBlobRequestSigner(privateKey) + require.NoError(t, err) accountID, err := signer.GetAccountID() require.NoError(t, err) require.Equal(t, "0x1aa8226f6d354380dDE75eE6B634875c4203e522", accountID) @@ -99,7 +101,8 @@ func TestSignBlobRequest(t *testing.T) { func TestSignPaymentStateRequest(t *testing.T) { privateKey := "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcded" - signer := NewLocalBlobRequestSigner(privateKey) + signer, err := NewLocalBlobRequestSigner(privateKey) + require.NoError(t, err) expectedAddr := "0x1aa8226f6d354380dDE75eE6B634875c4203e522" accountID, err := signer.GetAccountID() require.NoError(t, err) diff --git a/disperser/apiserver/server_v2_test.go b/disperser/apiserver/server_v2_test.go index 8dc267ac4d..fbe13c094a 100644 --- a/disperser/apiserver/server_v2_test.go +++ b/disperser/apiserver/server_v2_test.go @@ -72,7 +72,8 @@ func TestV2DisperseBlob(t *testing.T) { } blobHeader, err := corev2.BlobHeaderFromProtobuf(blobHeaderProto) assert.NoError(t, err) - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) sig, err := signer.SignBlobRequest(blobHeader) assert.NoError(t, err) @@ -121,7 +122,8 @@ func TestV2DisperseBlobRequestValidation(t *testing.T) { data := make([]byte, 50) _, err := rand.Read(data) assert.NoError(t, err) - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) data = codec.ConvertByPaddingEmptyByte(data) commitments, err := prover.GetCommitmentsForPaddedLength(data) assert.NoError(t, err) @@ -530,7 +532,8 @@ func newTestServerV2(t *testing.T) *testComponents { err = s.RefreshOnchainState(context.Background()) assert.NoError(t, err) - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) p := &peer.Peer{ Addr: &net.TCPAddr{ IP: net.ParseIP("0.0.0.0"), @@ -581,7 +584,8 @@ func TestInvalidLength(t *testing.T) { } blobHeader, err := corev2.BlobHeaderFromProtobuf(blobHeaderProto) assert.NoError(t, err) - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + assert.NoError(t, err) sig, err := signer.SignBlobRequest(blobHeader) assert.NoError(t, err) diff --git a/inabox/tests/integration_v2_test.go b/inabox/tests/integration_v2_test.go index e4e539b0fd..35b6b28ff9 100644 --- a/inabox/tests/integration_v2_test.go +++ b/inabox/tests/integration_v2_test.go @@ -32,7 +32,8 @@ var _ = Describe("Inabox v2 Integration", func() { defer cancel() privateKeyHex := "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcded" - signer := auth.NewLocalBlobRequestSigner(privateKeyHex) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyHex) + Expect(err).To(BeNil()) disp, err := clients.NewDisperserClient(&clients.DisperserClientConfig{ Hostname: "localhost", diff --git a/test/v2/test_client.go b/test/v2/test_client.go index c1fade82f8..bcbd894422 100644 --- a/test/v2/test_client.go +++ b/test/v2/test_client.go @@ -97,7 +97,8 @@ func NewTestClient(t *testing.T, config *TestClientConfig) *TestClient { privateKeyString = strings.Trim(privateKeyString, "\n \t") privateKeyString, _ = strings.CutPrefix(privateKeyString, "0x") - signer := auth.NewLocalBlobRequestSigner(privateKeyString) + signer, err := auth.NewLocalBlobRequestSigner(privateKeyString) + require.NoError(t, err) signerAccountId, err := signer.GetAccountID() require.NoError(t, err) accountId := gethcommon.HexToAddress(signerAccountId) diff --git a/tools/traffic/generator_v2.go b/tools/traffic/generator_v2.go index 5772a3502d..330af46def 100644 --- a/tools/traffic/generator_v2.go +++ b/tools/traffic/generator_v2.go @@ -57,12 +57,9 @@ func NewTrafficGeneratorV2(config *config.Config) (*Generator, error) { return nil, err } - var signer *auth.LocalBlobRequestSigner - if config.SignerPrivateKey != "" { - signer = auth.NewLocalBlobRequestSigner(config.SignerPrivateKey) - } else { - logger.Error("signer private key is required") - return nil, fmt.Errorf("signer private key is required") + signer, err := auth.NewLocalBlobRequestSigner(config.SignerPrivateKey) + if err != nil { + return nil, fmt.Errorf("new local blob request signer: %w", err) } signerAccountId, err := signer.GetAccountID()