From dd85201c15244fbd380eef8ee359a535335b7250 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Fri, 8 Nov 2019 19:00:12 +0100 Subject: Removal of secret key in the handshake module --- src/wireguard/peer.rs | 37 ++++++++----------------------------- 1 file changed, 8 insertions(+), 29 deletions(-) (limited to 'src/wireguard/peer.rs') diff --git a/src/wireguard/peer.rs b/src/wireguard/peer.rs index b77e8c6..4f9d19f 100644 --- a/src/wireguard/peer.rs +++ b/src/wireguard/peer.rs @@ -5,6 +5,7 @@ use super::HandshakeJob; use super::bind::Bind; use super::tun::Tun; +use super::wireguard::WireguardInner; use std::fmt; use std::ops::Deref; @@ -19,13 +20,16 @@ use x25519_dalek::PublicKey; pub struct Peer { pub router: Arc, T::Writer, B::Writer>>, - pub state: Arc>, + pub state: Arc>, } -pub struct PeerInner { +pub struct PeerInner { // internal id (for logging) pub id: u64, + // wireguard device state + pub wg: Arc>, + // handshake state pub walltime_last_handshake: Mutex, pub last_handshake_sent: Mutex, // instant for last handshake @@ -50,7 +54,7 @@ impl Clone for Peer { } } -impl PeerInner { +impl PeerInner { #[inline(always)] pub fn timers(&self) -> RwLockReadGuard { self.timers.read() @@ -69,7 +73,7 @@ impl fmt::Display for Peer { } impl Deref for Peer { - type Target = PeerInner; + type Target = PeerInner; fn deref(&self) -> &Self::Target { &self.state } @@ -91,28 +95,3 @@ impl Peer { self.start_timers(); } } - -impl PeerInner { - /* Queue a handshake request for the parallel workers - * (if one does not already exist) - * - * The function is ratelimited. - */ - pub fn packet_send_handshake_initiation(&self) { - // the function is rate limited - - { - let mut lhs = self.last_handshake_sent.lock(); - if lhs.elapsed() < REKEY_TIMEOUT { - return; - } - *lhs = Instant::now(); - } - - // create a new handshake job for the peer - - if !self.handshake_queued.swap(true, Ordering::SeqCst) { - self.queue.lock().send(HandshakeJob::New(self.pk)).unwrap(); - } - } -} -- cgit v1.2.3-59-g8ed1b