From 16b36f18e1bfeb34c6a325243d0103a802de23fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Ci=C4=99=C5=BCarkiewicz?= Date: Fri, 8 Jan 2016 19:45:20 -0800 Subject: [PATCH] key: Add PubKey hashing test. --- src/key.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/key.rs b/src/key.rs index a25ac8f..3b9704e 100644 --- a/src/key.rs +++ b/src/key.rs @@ -609,6 +609,29 @@ mod test { assert!(pk2.add_exp_assign(&s, &sk1).is_ok()); assert_eq!(PublicKey::from_secret_key(&s, &sk2).unwrap(), pk2); } + + #[test] + fn pubkey_hash() { + use std::hash::{Hash, SipHasher, Hasher}; + use std::collections::HashSet; + + fn hash(t: &T) -> u64 { + let mut s = SipHasher::new(); + t.hash(&mut s); + s.finish() + } + + let s = Secp256k1::new(); + let mut set = HashSet::new(); + const COUNT : usize = 1024; + let count = (0..COUNT).map(|_| { + let (_, pk) = s.generate_keypair(&mut thread_rng()).unwrap(); + let hash = hash(&pk); + assert!(!set.contains(&hash)); + set.insert(hash); + }).count(); + assert_eq!(count, COUNT); + } }