From 8de2305cc73920d838e11634dc9ec619c2608a78 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Fri, 21 Feb 2020 00:31:00 +0100 Subject: Fixed unit tests --- src/wireguard/tests.rs | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) (limited to 'src/wireguard/tests.rs') diff --git a/src/wireguard/tests.rs b/src/wireguard/tests.rs index 2ed2202..4cc441e 100644 --- a/src/wireguard/tests.rs +++ b/src/wireguard/tests.rs @@ -1,3 +1,7 @@ +use super::dummy; +use super::wireguard::WireGuard; + +use std::convert::TryInto; use std::net::IpAddr; use hex; @@ -8,43 +12,43 @@ use x25519_dalek::{PublicKey, StaticSecret}; use pnet::packet::ipv4::MutableIpv4Packet; use pnet::packet::ipv6::MutableIpv6Packet; -use super::dummy; -use super::wireguard::WireGuard; - pub fn make_packet(size: usize, src: IpAddr, dst: IpAddr, id: u64) -> Vec { // expand pseudo random payload let mut rng: _ = ChaCha8Rng::seed_from_u64(id); let mut p: Vec = vec![0; size]; - rng.fill_bytes(&mut p[..]); + rng.fill_bytes(&mut p); // create "IP packet" let mut msg = Vec::with_capacity(size); - msg.resize(size, 0); match dst { IpAddr::V4(dst) => { - let length = size - MutableIpv4Packet::minimum_packet_size(); + let length = size + MutableIpv4Packet::minimum_packet_size(); + msg.resize(length, 0); + let mut packet = MutableIpv4Packet::new(&mut msg[..]).unwrap(); packet.set_destination(dst); - packet.set_total_length(size as u16); + packet.set_total_length(length.try_into().expect("length too great for IPv4 packet")); packet.set_source(if let IpAddr::V4(src) = src { src } else { panic!("src.version != dst.version") }); - packet.set_payload(&p[..length]); + packet.set_payload(&p); packet.set_version(4); } IpAddr::V6(dst) => { - let length = size - MutableIpv6Packet::minimum_packet_size(); + let length = size + MutableIpv6Packet::minimum_packet_size(); + msg.resize(length, 0); + let mut packet = MutableIpv6Packet::new(&mut msg[..]).unwrap(); packet.set_destination(dst); - packet.set_payload_length(length as u16); + packet.set_payload_length(size.try_into().expect("length too great for IPv6 packet")); packet.set_source(if let IpAddr::V6(src) = src { src } else { panic!("src.version != dst.version") }); - packet.set_payload(&p[..length]); + packet.set_payload(&p); packet.set_version(6); } } @@ -83,7 +87,7 @@ fn test_pure_wireguard() { wg1.add_udp_reader(bind_reader1); wg2.add_udp_reader(bind_reader2); - // generate (public, private) key pairs + // configure (public, private) key pairs let sk1 = StaticSecret::from([ 0x3f, 0x69, 0x86, 0xd1, 0xc0, 0xec, 0x25, 0xa0, 0x9c, 0x8e, 0x56, 0xb5, 0x1d, 0xb7, 0x3c, @@ -107,7 +111,7 @@ fn test_pure_wireguard() { wg1.set_key(Some(sk1)); wg2.set_key(Some(sk2)); - // configure cryptkey router + // configure crypto-key router let peer2 = wg1.lookup_peer(&pk2).unwrap(); let peer1 = wg2.lookup_peer(&pk1).unwrap(); @@ -143,10 +147,13 @@ fn test_pure_wireguard() { let mut backup = packets.clone(); while let Some(p) = packets.pop() { + println!("send"); fake1.write(p); } while let Some(p) = backup.pop() { + println!("read"); + assert_eq!( hex::encode(fake2.read()), hex::encode(p), -- cgit v1.2.3-59-g8ed1b