Skip to content

Commit f804282

Browse files
committed
Add tests for the new SharedSecret::new_with_hash() function
1 parent af8fa21 commit f804282

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

src/ecdh.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,36 @@ mod tests {
180180
assert_eq!(sec1, sec2);
181181
assert!(sec_odd != sec2);
182182
}
183+
184+
#[test]
185+
fn ecdh_with_hash() {
186+
let s = Secp256k1::signing_only();
187+
let (sk1, pk1) = s.generate_keypair(&mut thread_rng());
188+
let (sk2, pk2) = s.generate_keypair(&mut thread_rng());
189+
190+
let sec1 = SharedSecret::new_with_hash(&pk1, &sk2, |x,_| x.into());
191+
let sec2 = SharedSecret::new_with_hash(&pk2, &sk1, |x,_| x.into());
192+
let sec_odd = SharedSecret::new_with_hash(&pk1, &sk1, |x,_| x.into());
193+
assert_eq!(sec1, sec2);
194+
assert_ne!(sec_odd, sec2);
195+
}
196+
197+
#[test]
198+
fn ecdh_with_hash_callback() {
199+
let s = Secp256k1::signing_only();
200+
let (sk1, pk1) = s.generate_keypair(&mut thread_rng());
201+
let expect_result: [u8; 64] = [123; 64];
202+
let mut x_out = [0u8; 32];
203+
let mut y_out = [0u8; 32];
204+
let result = SharedSecret::new_with_hash(&pk1, &sk1, | x, y | {
205+
x_out = x;
206+
y_out = y;
207+
expect_result.into()
208+
});
209+
assert_eq!(&expect_result[..], &result[..]);
210+
assert_ne!(x_out, [0u8; 32]);
211+
assert_ne!(y_out, [0u8; 32]);
212+
}
183213
}
184214

185215
#[cfg(all(test, feature = "unstable"))]

0 commit comments

Comments
 (0)