From d78082f5e437f0fd8f45f2b115c9c724a237b722 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Sat, 24 Feb 2018 10:27:51 -0700 Subject: [PATCH] Test bad signature --- src/log.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/log.rs b/src/log.rs index 668fe55891..92be3cefcd 100644 --- a/src/log.rs +++ b/src/log.rs @@ -259,6 +259,34 @@ mod tests { .collect(); assert!(verify_slice(&entries, &zero)); } + + #[test] + fn test_bad_signature() { + use untrusted; + use ring::{rand, signature}; + let rng = rand::SystemRandom::new(); + let pkcs8_bytes = signature::Ed25519KeyPair::generate_pkcs8(&rng).unwrap(); + let key_pair = + signature::Ed25519KeyPair::from_pkcs8(untrusted::Input::from(&pkcs8_bytes)).unwrap(); + const MESSAGE: &'static [u8] = b"hello, world"; + let mut event0 = sign_hash(&hash(MESSAGE), &key_pair); + if let Event::Claim { key, sig, .. } = event0 { + const GOODBYE: &'static [u8] = b"goodbye cruel world"; + let data = hash(GOODBYE); + event0 = Event::Claim { key, data, sig }; + } + let zero = Sha256Hash::default(); + let mut end_hash = zero; + let entries: Vec = [event0] + .iter() + .map(|event| { + let entry = next_entry(&end_hash, 0, event.clone()); + end_hash = entry.end_hash; + entry + }) + .collect(); + assert!(!verify_slice(&entries, &zero)); + } } #[cfg(all(feature = "unstable", test))]