Skip to content

Commit bbc3b2e

Browse files
committed
tests for signature restored
1 parent 394746b commit bbc3b2e

File tree

1 file changed

+50
-0
lines changed
  • mithril-stm/src/signature_scheme/schnorr_signature

1 file changed

+50
-0
lines changed

mithril-stm/src/signature_scheme/schnorr_signature/signature.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,56 @@ impl SchnorrSignature {
139139

140140
#[cfg(test)]
141141
mod tests {
142+
use rand_chacha::ChaCha20Rng;
143+
use rand_core::SeedableRng;
144+
145+
use crate::signature_scheme::{SchnorrSignature, SchnorrSigningKey, SchnorrVerificationKey};
146+
147+
#[test]
148+
fn invalid_sig() {
149+
let msg = vec![0, 0, 0, 1];
150+
let msg2 = vec![0, 0, 0, 2];
151+
let seed = [0u8; 32];
152+
let mut rng = ChaCha20Rng::from_seed(seed);
153+
let sk = SchnorrSigningKey::generate(&mut rng).unwrap();
154+
let vk = SchnorrVerificationKey::new_from_signing_key(sk.clone()).unwrap();
155+
let sk2 = SchnorrSigningKey::generate(&mut rng).unwrap();
156+
let vk2 = SchnorrVerificationKey::new_from_signing_key(sk2).unwrap();
157+
158+
let sig = sk.sign(&msg, &mut rng).unwrap();
159+
let sig2 = sk.sign(&msg2, &mut rng).unwrap();
160+
161+
// Wrong verification key is used
162+
let result1 = sig.verify(&msg, &vk2);
163+
let result2 = sig2.verify(&msg, &vk);
164+
165+
result1.expect_err("Wrong verification key used, test should fail.");
166+
// Wrong message is verified
167+
result2.expect_err("Wrong message used, test should fail.");
168+
}
169+
170+
#[test]
171+
fn serialize_deserialize_signature() {
172+
let mut rng = ChaCha20Rng::from_seed([0u8; 32]);
173+
174+
let msg = vec![0, 0, 0, 1];
175+
let sk = SchnorrSigningKey::generate(&mut rng).unwrap();
176+
177+
let sig = sk.sign(&msg, &mut rng).unwrap();
178+
let sig_bytes: [u8; 96] = sig.to_bytes();
179+
let sig2 = SchnorrSignature::from_bytes(&sig_bytes).unwrap();
180+
181+
assert_eq!(sig, sig2);
182+
}
183+
184+
#[test]
185+
fn from_bytes_signature_not_enough_bytes() {
186+
let msg = vec![0u8; 95];
187+
188+
let result = SchnorrSignature::from_bytes(&msg);
189+
190+
result.expect_err("Not enough bytes.");
191+
}
142192

143193
mod golden {
144194

0 commit comments

Comments
 (0)