aboutsummaryrefslogtreecommitdiffstats
path: root/src/wireguard/handshake
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2020-02-12 21:38:25 +0100
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2020-02-12 21:38:25 +0100
commit5e6edb280e588397c3420d08cf46a52b34b58740 (patch)
treedee5854adb5adce3549e53d96b48f0ef16886f04 /src/wireguard/handshake
parentSquashed commit of the following: (diff)
downloadwireguard-rs-5e6edb280e588397c3420d08cf46a52b34b58740.tar.xz
wireguard-rs-5e6edb280e588397c3420d08cf46a52b34b58740.zip
Bumped crate versions.
Diffstat (limited to 'src/wireguard/handshake')
-rw-r--r--src/wireguard/handshake/device.rs37
-rw-r--r--src/wireguard/handshake/tests.rs2
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;