Add a test to ensure witness data continues to be hashed

This commit is contained in:
Greg Fitzgerald 2018-04-02 21:07:38 -06:00
parent 07aa2e1260
commit fe32159673
1 changed files with 18 additions and 0 deletions

View File

@ -113,6 +113,7 @@ pub fn next_tick(start_hash: &Hash, num_hashes: u64) -> Entry {
#[cfg(test)]
mod tests {
use super::*;
use chrono::prelude::*;
use entry::create_entry;
use event::Event;
use hash::hash;
@ -146,6 +147,23 @@ mod tests {
assert!(!e0.verify(&zero));
}
#[test]
fn test_witness_reorder_attack() {
let zero = Hash::default();
// First, verify entries
let keypair = KeyPair::new();
let tr0 = Event::new_timestamp(&keypair, Utc::now());
let tr1 = Event::new_signature(&keypair, Default::default());
let mut e0 = create_entry(&zero, 0, vec![tr0.clone(), tr1.clone()]);
assert!(e0.verify(&zero));
// Next, swap two witness events and ensure verification fails.
e0.events[0] = tr1; // <-- attack
e0.events[1] = tr0;
assert!(!e0.verify(&zero));
}
#[test]
fn test_next_tick() {
let zero = Hash::default();