@@ -156,13 +156,14 @@ func TestSignatureVerification(t *testing.T) {
156156 }
157157
158158 tests := []struct {
159- name string
160- networkID uint32
161- stateF func (* gomock.Controller ) validators.State
162- quorumNum uint64
163- quorumDen uint64
164- msgF func (* require.Assertions ) * Message
165- err error
159+ name string
160+ networkID uint32
161+ stateF func (* gomock.Controller ) validators.State
162+ quorumNum uint64
163+ quorumDen uint64
164+ msgF func (* require.Assertions ) * Message
165+ verifyErr error
166+ canonicalErr error
166167 }{
167168 {
168169 name : "can't get subnetID" ,
@@ -189,7 +190,7 @@ func TestSignatureVerification(t *testing.T) {
189190 require .NoError (err )
190191 return msg
191192 },
192- err : errTest ,
193+ canonicalErr : errTest ,
193194 },
194195 {
195196 name : "can't get validator set" ,
@@ -217,7 +218,7 @@ func TestSignatureVerification(t *testing.T) {
217218 require .NoError (err )
218219 return msg
219220 },
220- err : errTest ,
221+ canonicalErr : errTest ,
221222 },
222223 {
223224 name : "weight overflow" ,
@@ -252,7 +253,7 @@ func TestSignatureVerification(t *testing.T) {
252253 },
253254 }
254255 },
255- err : ErrWeightOverflow ,
256+ canonicalErr : ErrWeightOverflow ,
256257 },
257258 {
258259 name : "invalid bit set index" ,
@@ -283,7 +284,7 @@ func TestSignatureVerification(t *testing.T) {
283284 require .NoError (err )
284285 return msg
285286 },
286- err : ErrInvalidBitSet ,
287+ verifyErr : ErrInvalidBitSet ,
287288 },
288289 {
289290 name : "unknown index" ,
@@ -317,7 +318,7 @@ func TestSignatureVerification(t *testing.T) {
317318 require .NoError (err )
318319 return msg
319320 },
320- err : ErrUnknownValidator ,
321+ verifyErr : ErrUnknownValidator ,
321322 },
322323 {
323324 name : "insufficient weight" ,
@@ -362,7 +363,7 @@ func TestSignatureVerification(t *testing.T) {
362363 require .NoError (err )
363364 return msg
364365 },
365- err : ErrInsufficientWeight ,
366+ verifyErr : ErrInsufficientWeight ,
366367 },
367368 {
368369 name : "can't parse sig" ,
@@ -397,7 +398,7 @@ func TestSignatureVerification(t *testing.T) {
397398 require .NoError (err )
398399 return msg
399400 },
400- err : ErrParseSignature ,
401+ verifyErr : ErrParseSignature ,
401402 },
402403 {
403404 name : "no validators" ,
@@ -433,7 +434,7 @@ func TestSignatureVerification(t *testing.T) {
433434 require .NoError (err )
434435 return msg
435436 },
436- err : bls .ErrNoPublicKeys ,
437+ verifyErr : bls .ErrNoPublicKeys ,
437438 },
438439 {
439440 name : "invalid signature (substitute)" ,
@@ -478,7 +479,7 @@ func TestSignatureVerification(t *testing.T) {
478479 require .NoError (err )
479480 return msg
480481 },
481- err : ErrInvalidSignature ,
482+ verifyErr : ErrInvalidSignature ,
482483 },
483484 {
484485 name : "invalid signature (missing one)" ,
@@ -519,7 +520,7 @@ func TestSignatureVerification(t *testing.T) {
519520 require .NoError (err )
520521 return msg
521522 },
522- err : ErrInvalidSignature ,
523+ verifyErr : ErrInvalidSignature ,
523524 },
524525 {
525526 name : "invalid signature (extra one)" ,
@@ -565,7 +566,7 @@ func TestSignatureVerification(t *testing.T) {
565566 require .NoError (err )
566567 return msg
567568 },
568- err : ErrInvalidSignature ,
569+ verifyErr : ErrInvalidSignature ,
569570 },
570571 {
571572 name : "valid signature" ,
@@ -610,7 +611,7 @@ func TestSignatureVerification(t *testing.T) {
610611 require .NoError (err )
611612 return msg
612613 },
613- err : nil ,
614+ verifyErr : nil ,
614615 },
615616 {
616617 name : "valid signature (boundary)" ,
@@ -655,7 +656,7 @@ func TestSignatureVerification(t *testing.T) {
655656 require .NoError (err )
656657 return msg
657658 },
658- err : nil ,
659+ verifyErr : nil ,
659660 },
660661 {
661662 name : "valid signature (missing key)" ,
@@ -717,7 +718,7 @@ func TestSignatureVerification(t *testing.T) {
717718 require .NoError (err )
718719 return msg
719720 },
720- err : nil ,
721+ verifyErr : nil ,
721722 },
722723 {
723724 name : "valid signature (duplicate key)" ,
@@ -777,13 +778,31 @@ func TestSignatureVerification(t *testing.T) {
777778 require .NoError (err )
778779 return msg
779780 },
780- err : nil ,
781+ verifyErr : nil ,
781782 },
782783 {
783784 name : "incorrect networkID" ,
784785 networkID : constants .UnitTestID ,
785786 stateF : func (ctrl * gomock.Controller ) validators.State {
786787 state := validatorsmock .NewState (ctrl )
788+ state .EXPECT ().GetSubnetID (gomock .Any (), sourceChainID ).Return (subnetID , nil )
789+ state .EXPECT ().GetValidatorSet (gomock .Any (), pChainHeight , subnetID ).Return (map [ids.NodeID ]* validators.GetValidatorOutput {
790+ testVdrs [0 ].nodeID : {
791+ NodeID : testVdrs [0 ].nodeID ,
792+ PublicKey : nil ,
793+ Weight : testVdrs [0 ].vdr .Weight ,
794+ },
795+ testVdrs [1 ].nodeID : {
796+ NodeID : testVdrs [1 ].nodeID ,
797+ PublicKey : testVdrs [1 ].vdr .PublicKey ,
798+ Weight : testVdrs [1 ].vdr .Weight ,
799+ },
800+ testVdrs [2 ].nodeID : {
801+ NodeID : testVdrs [2 ].nodeID ,
802+ PublicKey : testVdrs [2 ].vdr .PublicKey ,
803+ Weight : testVdrs [2 ].vdr .Weight ,
804+ },
805+ }, nil )
787806 return state
788807 },
789808 quorumNum : 1 ,
@@ -820,7 +839,7 @@ func TestSignatureVerification(t *testing.T) {
820839 require .NoError (err )
821840 return msg
822841 },
823- err : ErrWrongNetworkID ,
842+ verifyErr : ErrWrongNetworkID ,
824843 },
825844 }
826845
@@ -832,16 +851,25 @@ func TestSignatureVerification(t *testing.T) {
832851 msg := tt .msgF (require )
833852 pChainState := tt .stateF (ctrl )
834853
835- err := msg . Signature . Verify (
854+ validators , err := GetCanonicalValidatorSetFromChainID (
836855 context .Background (),
837- & msg .UnsignedMessage ,
838- tt .networkID ,
839856 pChainState ,
840857 pChainHeight ,
858+ msg .SourceChainID ,
859+ )
860+ require .ErrorIs (err , tt .canonicalErr )
861+ if tt .canonicalErr != nil {
862+ return
863+ }
864+
865+ err = msg .Signature .Verify (
866+ & msg .UnsignedMessage ,
867+ tt .networkID ,
868+ validators ,
841869 tt .quorumNum ,
842870 tt .quorumDen ,
843871 )
844- require .ErrorIs (err , tt .err )
872+ require .ErrorIs (err , tt .verifyErr )
845873 })
846874 }
847875}
0 commit comments