Skip to content

Commit 885d1d8

Browse files
committed
Validate signature early
1 parent afcd6bd commit 885d1d8

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

block/internal/syncing/da_retriever.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,9 +238,9 @@ func (r *daRetriever) tryDecodeHeader(bz []byte, daHeight uint64) *types.SignedH
238238
return nil
239239
}
240240

241-
// Basic validation
242-
if err := header.Header.ValidateBasic(); err != nil {
243-
r.logger.Debug().Err(err).Msg("invalid header structure")
241+
// Basic validation (including signature check)
242+
if err := header.ValidateBasic(); err != nil {
243+
r.logger.Debug().Err(err).Msg("invalid header structure or signature")
244244
return nil
245245
}
246246

block/internal/syncing/da_retriever_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,21 @@ func TestDARetriever_tryDecodeData_InvalidSignatureOrProposer(t *testing.T) {
220220
assert.Nil(t, r.tryDecodeData(db, 55))
221221
}
222222

223+
func TestDARetriever_tryDecodeHeader_InvalidSignature(t *testing.T) {
224+
addr, pub, signer := buildSyncTestSigner(t)
225+
gen := genesis.Genesis{ChainID: "tchain", InitialHeight: 1, StartTime: time.Now().Add(-time.Second), ProposerAddress: addr}
226+
r := newTestDARetriever(t, nil, config.DefaultConfig(), gen)
227+
228+
_, sh := makeSignedHeaderBytes(t, gen.ChainID, 10, addr, pub, signer, nil, nil, nil)
229+
sh.Signature = []byte("invalid-signature")
230+
231+
hbInvalid, err := sh.MarshalBinary()
232+
require.NoError(t, err)
233+
234+
gotH := r.tryDecodeHeader(hbInvalid, 123)
235+
assert.Nil(t, gotH, "Header with invalid signature should be rejected (returned nil)")
236+
}
237+
223238
func TestDARetriever_validateBlobResponse(t *testing.T) {
224239
r := &daRetriever{logger: zerolog.Nop()}
225240
// StatusSuccess -> nil

0 commit comments

Comments
 (0)