Skip to content

Commit 9ae1aff

Browse files
committed
error handling for multi sig tests
1 parent 4490c8e commit 9ae1aff

File tree

1 file changed

+58
-16
lines changed

1 file changed

+58
-16
lines changed

mithril-stm/src/multi_sig.rs

Lines changed: 58 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,9 @@ mod tests {
654654
let sk = SigningKey::gen(&mut ChaCha20Rng::from_seed(seed));
655655
let vk = VerificationKey::from(&sk);
656656
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:?}");
658660
}
659661

660662
#[test]
@@ -664,7 +666,9 @@ mod tests {
664666
let vk1 = VerificationKey::from(&sk1);
665667
let sk2 = SigningKey::gen(&mut rng);
666668
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)));
668672
}
669673

670674
#[test]
@@ -732,7 +736,8 @@ mod tests {
732736
mvks.push(vk);
733737
}
734738

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:?}");
736741
}
737742

738743
#[test]
@@ -748,14 +753,32 @@ mod tests {
748753
fn serialize_deserialize_vk(seed in any::<u64>()) {
749754
let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(seed);
750755
let sk = SigningKey::gen(&mut rng);
756+
751757
let vk = VerificationKey::from(&sk);
752758
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+
755770
let vkpop = VerificationKeyPoP::from(&sk);
756771
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+
}
759782

760783
// Now we test serde
761784
let encoded = bincode::serialize(&vk).unwrap();
@@ -772,8 +795,16 @@ mod tests {
772795
let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(seed);
773796
let sk = SigningKey::gen(&mut rng);
774797
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+
}
777808

778809
// Now we test serde
779810
let encoded = bincode::serialize(&sk).unwrap();
@@ -806,13 +837,23 @@ mod tests {
806837
sigs.push(sig);
807838
mvks.push(vk);
808839
}
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+
}
814854
}
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:?}");
816857

817858
// If we have an invalid signature, the batch verification will fail
818859
let mut msg = [0u8; 32];
@@ -821,7 +862,8 @@ mod tests {
821862
let fake_sig = sk.sign(&msg);
822863
batch_sig[0] = fake_sig;
823864

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));
825867
}
826868
}
827869

0 commit comments

Comments
 (0)