Skip to content

Commit

Permalink
Make the signer constructor return an error if it fails (#1190)
Browse files Browse the repository at this point in the history
Signed-off-by: litt3 <[email protected]>
  • Loading branch information
litt3 authored Jan 31, 2025
1 parent d7fb87f commit a1fceb9
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 31 deletions.
8 changes: 3 additions & 5 deletions api/clients/v2/payload_disperser.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
21 changes: 14 additions & 7 deletions core/auth/v2/auth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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()
Expand All @@ -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)
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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()
Expand All @@ -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()
Expand Down
7 changes: 3 additions & 4 deletions core/auth/v2/signer.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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) {
Expand Down
9 changes: 6 additions & 3 deletions core/auth/v2/signer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
12 changes: 8 additions & 4 deletions disperser/apiserver/server_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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"),
Expand Down Expand Up @@ -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)

Expand Down
3 changes: 2 additions & 1 deletion inabox/tests/integration_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
3 changes: 2 additions & 1 deletion test/v2/test_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
9 changes: 3 additions & 6 deletions tools/traffic/generator_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down

0 comments on commit a1fceb9

Please sign in to comment.