@@ -654,7 +654,9 @@ mod tests {
654
654
let sk = SigningKey :: gen ( & mut ChaCha20Rng :: from_seed( seed) ) ;
655
655
let vk = VerificationKey :: from( & sk) ;
656
656
let sig = sk. sign( & msg) ;
657
- assert!( sig. verify( & msg, & vk) . is_ok( ) ) ;
657
+
658
+ let result = sig. verify( & msg, & vk) ;
659
+ assert!( result. is_ok( ) , "verify {result:?}" ) ;
658
660
}
659
661
660
662
#[ test]
@@ -664,7 +666,9 @@ mod tests {
664
666
let vk1 = VerificationKey :: from( & sk1) ;
665
667
let sk2 = SigningKey :: gen ( & mut rng) ;
666
668
let fake_sig = sk2. sign( & msg) ;
667
- assert!( fake_sig. verify( & msg, & vk1) . is_err( ) ) ;
669
+
670
+ let result = fake_sig. verify( & msg, & vk1) ;
671
+ assert_eq!( result, Err ( MultiSignatureError :: SignatureInvalid ( fake_sig) ) ) ;
668
672
}
669
673
670
674
#[ test]
@@ -732,7 +736,8 @@ mod tests {
732
736
mvks. push( vk) ;
733
737
}
734
738
735
- assert!( Signature :: verify_aggregate( & msg, & mvks, & sigs) . is_ok( ) ) ;
739
+ let result = Signature :: verify_aggregate( & msg, & mvks, & sigs) ;
740
+ assert!( result. is_ok( ) , "Aggregate verification failed {result:?}" ) ;
736
741
}
737
742
738
743
#[ test]
@@ -748,14 +753,32 @@ mod tests {
748
753
fn serialize_deserialize_vk( seed in any:: <u64 >( ) ) {
749
754
let mut rng = rand_chacha:: ChaCha8Rng :: seed_from_u64( seed) ;
750
755
let sk = SigningKey :: gen ( & mut rng) ;
756
+
751
757
let vk = VerificationKey :: from( & sk) ;
752
758
let vk_bytes = vk. to_bytes( ) ;
753
- let vk2 = VerificationKey :: from_bytes( & vk_bytes) . unwrap( ) ;
754
- assert_eq!( vk, vk2) ;
759
+ let result = VerificationKey :: from_bytes( & vk_bytes) ;
760
+ match result {
761
+ Ok ( vk_from_bytes) => {
762
+ assert_eq!( vk, vk_from_bytes) ;
763
+ }
764
+ Err ( MultiSignatureError :: SerializationError ) => {
765
+ println!( "Verification key cannot be recovered from bytes." ) ;
766
+ }
767
+ _ => unreachable!( ) ,
768
+ }
769
+
755
770
let vkpop = VerificationKeyPoP :: from( & sk) ;
756
771
let vkpop_bytes = vkpop. to_bytes( ) ;
757
- let vkpop2: VerificationKeyPoP = VerificationKeyPoP :: from_bytes( & vkpop_bytes) . unwrap( ) ;
758
- assert_eq!( vkpop, vkpop2) ;
772
+ let result = VerificationKeyPoP :: from_bytes( & vkpop_bytes) ;
773
+ match result {
774
+ Ok ( vkpop_from_bytes) => {
775
+ assert_eq!( vkpop, vkpop_from_bytes) ;
776
+ }
777
+ Err ( MultiSignatureError :: SerializationError ) => {
778
+ println!( "VerificationKeyPoP cannot be recovered from bytes." ) ;
779
+ }
780
+ _ => unreachable!( ) ,
781
+ }
759
782
760
783
// Now we test serde
761
784
let encoded = bincode:: serialize( & vk) . unwrap( ) ;
@@ -772,8 +795,16 @@ mod tests {
772
795
let mut rng = rand_chacha:: ChaCha8Rng :: seed_from_u64( seed) ;
773
796
let sk = SigningKey :: gen ( & mut rng) ;
774
797
let sk_bytes: [ u8 ; 32 ] = sk. to_bytes( ) ;
775
- let sk2 = SigningKey :: from_bytes( & sk_bytes) . unwrap( ) ;
776
- assert_eq!( sk, sk2) ;
798
+ let result = SigningKey :: from_bytes( & sk_bytes) ;
799
+ match result {
800
+ Ok ( sk_from_bytes) => {
801
+ assert_eq!( sk, sk_from_bytes) ;
802
+ }
803
+ Err ( MultiSignatureError :: SerializationError ) => {
804
+ println!( "Signing key cannot be recovered from bytes." ) ;
805
+ }
806
+ _ => unreachable!( ) ,
807
+ }
777
808
778
809
// Now we test serde
779
810
let encoded = bincode:: serialize( & sk) . unwrap( ) ;
@@ -806,13 +837,23 @@ mod tests {
806
837
sigs. push( sig) ;
807
838
mvks. push( vk) ;
808
839
}
809
- assert!( Signature :: verify_aggregate( & msg, & mvks, & sigs) . is_ok( ) ) ;
810
- let ( agg_vk, agg_sig) = Signature :: aggregate( & mvks, & sigs) . unwrap( ) ;
811
- batch_msgs. push( msg. to_vec( ) ) ;
812
- batch_vk. push( agg_vk) ;
813
- batch_sig. push( agg_sig) ;
840
+ let verify_aggregate = Signature :: verify_aggregate( & msg, & mvks, & sigs) ;
841
+ assert!( verify_aggregate. is_ok( ) , "Aggregate verification {verify_aggregate:?}" ) ;
842
+
843
+ match Signature :: aggregate( & mvks, & sigs) {
844
+ Ok ( ( agg_vk, agg_sig) ) => {
845
+ batch_msgs. push( msg. to_vec( ) ) ;
846
+ batch_vk. push( agg_vk) ;
847
+ batch_sig. push( agg_sig) ;
848
+ }
849
+ Err ( MultiSignatureError :: AggregateSignatureInvalid ) => {
850
+ println!( "Aggregation failed." ) ;
851
+ }
852
+ _ => unreachable!( ) ,
853
+ }
814
854
}
815
- assert!( Signature :: batch_verify_aggregates( & batch_msgs, & batch_vk, & batch_sig) . is_ok( ) ) ;
855
+ let batch_verify_aggregates = Signature :: batch_verify_aggregates( & batch_msgs, & batch_vk, & batch_sig) ;
856
+ assert!( batch_verify_aggregates. is_ok( ) , "{batch_verify_aggregates:?}" ) ;
816
857
817
858
// If we have an invalid signature, the batch verification will fail
818
859
let mut msg = [ 0u8 ; 32 ] ;
@@ -821,7 +862,8 @@ mod tests {
821
862
let fake_sig = sk. sign( & msg) ;
822
863
batch_sig[ 0 ] = fake_sig;
823
864
824
- assert!( Signature :: batch_verify_aggregates( & batch_msgs, & batch_vk, & batch_sig) . is_err( ) ) ;
865
+ let batch_result = Signature :: batch_verify_aggregates( & batch_msgs, & batch_vk, & batch_sig) ;
866
+ assert_eq!( batch_result, Err ( MultiSignatureError :: BatchInvalid ) ) ;
825
867
}
826
868
}
827
869
0 commit comments