diff options
author | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2020-02-12 21:38:25 +0100 |
---|---|---|
committer | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2020-02-12 21:38:25 +0100 |
commit | 5e6edb280e588397c3420d08cf46a52b34b58740 (patch) | |
tree | dee5854adb5adce3549e53d96b48f0ef16886f04 /src/wireguard/handshake | |
parent | Squashed commit of the following: (diff) | |
download | wireguard-rs-5e6edb280e588397c3420d08cf46a52b34b58740.tar.xz wireguard-rs-5e6edb280e588397c3420d08cf46a52b34b58740.zip |
Bumped crate versions.
Diffstat (limited to 'src/wireguard/handshake')
-rw-r--r-- | src/wireguard/handshake/device.rs | 37 | ||||
-rw-r--r-- | src/wireguard/handshake/tests.rs | 2 |
2 files changed, 38 insertions, 1 deletions
diff --git a/src/wireguard/handshake/device.rs b/src/wireguard/handshake/device.rs index 4b5d8f6..91f2b80 100644 --- a/src/wireguard/handshake/device.rs +++ b/src/wireguard/handshake/device.rs @@ -193,6 +193,7 @@ impl<O> Device<O> { opaque, ), ); + Ok(()) } @@ -474,3 +475,39 @@ impl<O> Device<O> { } } } + +#[cfg(test)] +mod tests { + use super::*; + use proptest::prelude::*; + use std::collections::HashSet; + + proptest! { + #[test] + fn unique_shared_secrets(sk_bs: [u8; 32], pk1_bs: [u8; 32], pk2_bs: [u8; 32]) { + let sk = StaticSecret::from(sk_bs); + let pk1 = PublicKey::from(pk1_bs); + let pk2 = PublicKey::from(pk2_bs); + + assert_eq!(pk1.as_bytes(), &pk1_bs); + assert_eq!(pk2.as_bytes(), &pk2_bs); + + let mut dev : Device<u32> = Device::new(); + dev.set_sk(Some(sk)); + + dev.add(pk1, 1).unwrap(); + if dev.add(pk2, 0).is_err() { + assert_eq!(pk1_bs, pk2_bs); + assert_eq!(*dev.get(&pk1).unwrap(), 1); + } + + + // every shared secret is unique + let mut ss: HashSet<[u8; 32]> = HashSet::new(); + for peer in dev.pk_map.values() { + ss.insert(peer.ss); + } + assert_eq!(ss.len(), dev.len()); + } + } +} diff --git a/src/wireguard/handshake/tests.rs b/src/wireguard/handshake/tests.rs index bfdc5ab..fca8751 100644 --- a/src/wireguard/handshake/tests.rs +++ b/src/wireguard/handshake/tests.rs @@ -5,7 +5,7 @@ use std::net::SocketAddr; use std::thread; use std::time::Duration; -use rand::prelude::*; +use rand::prelude::{CryptoRng, RngCore}; use x25519_dalek::PublicKey; use x25519_dalek::StaticSecret; |