diff --git a/floodsub_test.go b/floodsub_test.go index 8f2d83c..df01076 100644 --- a/floodsub_test.go +++ b/floodsub_test.go @@ -900,6 +900,16 @@ func assertPeerList(t *testing.T, peers []peer.ID, expected ...peer.ID) { } } +func TestNonsensicalSigningOptions(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + hosts := getNetHosts(t, ctx, 1) + _, err := NewFloodSub(ctx, hosts[0], WithMessageSigning(false), WithStrictSignatureVerification(true)) + if err == nil { + t.Error("expected constructor to fail on nonsensical options") + } +} + func TestWithSigning(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() diff --git a/pubsub.go b/pubsub.go index 2d137ac..6dbf0a0 100644 --- a/pubsub.go +++ b/pubsub.go @@ -177,6 +177,10 @@ func NewPubSub(ctx context.Context, h host.Host, rt PubSubRouter, opts ...Option } } + if ps.signStrict && ps.signKey == nil { + return nil, fmt.Errorf("strict signature verification enabled but message signing is disabled") + } + rt.Attach(ps) for _, id := range rt.Protocols() {