aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-06-01 15:41:47 -0500
committerJake McGinty <me@jake.su>2018-06-01 15:41:47 -0500
commitbf960c2dd0beea1c512c67a2e18f00cdce1d514a (patch)
treec69d70e7efdca194e06d69361eb47fe84b11efb6
parentmanage nonces locally (diff)
downloadwireguard-rs-bf960c2dd0beea1c512c67a2e18f00cdce1d514a.tar.xz
wireguard-rs-bf960c2dd0beea1c512c67a2e18f00cdce1d514a.zip
finish up nonce rework
-rw-r--r--src/interface/peer_server.rs2
-rw-r--r--src/peer.rs7
2 files changed, 7 insertions, 2 deletions
diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs
index 5d10406..d03fa58 100644
--- a/src/interface/peer_server.rs
+++ b/src/interface/peer_server.rs
@@ -256,6 +256,7 @@ impl PeerServer {
.ok_or_else(|| format_err!("unknown our_index ({})", our_index))?
.clone();
let mut peer = peer_ref.borrow_mut();
+ debug!("processing incoming handshake response");
let dead_index = peer.process_incoming_handshake_response(addr, packet)?;
if let Some(index) = dead_index {
let _ = state.index_map.remove(&index);
@@ -268,6 +269,7 @@ impl PeerServer {
self.send_to_peer(peer.handle_outgoing_transport(packet.payload())?)?;
}
} else {
+ debug!("sending empty keepalive");
self.send_to_peer(peer.handle_outgoing_transport(&[])?)?;
}
} else {
diff --git a/src/peer.rs b/src/peer.rs
index 8538e2c..c0b21eb 100644
--- a/src/peer.rs
+++ b/src/peer.rs
@@ -95,6 +95,7 @@ impl Session {
}
pub fn into_transport_mode(self) -> Result<Session, Error> {
+ debug!("converting to async transport mode");
Ok(Session {
noise : self.noise.into_async_transport_mode()?,
our_index : self.our_index,
@@ -202,7 +203,7 @@ impl Peer {
return true;
}
if let Some(ref session) = self.sessions.current {
- if session.noise.sending_nonce().unwrap() >= REKEY_AFTER_MESSAGES {
+ if session.nonce >= REKEY_AFTER_MESSAGES {
debug!("needs new handshake: nonce >= REKEY_AFTER_MESSAGES");
return true;
}
@@ -213,7 +214,7 @@ impl Peer {
pub fn ready_for_transport(&self) -> bool {
if let Some(ref current) = self.sessions.current {
current.birthday.elapsed() < *REJECT_AFTER_TIME &&
- current.noise.sending_nonce().unwrap() < REJECT_AFTER_MESSAGES
+ current.nonce < REJECT_AFTER_MESSAGES
} else {
false
}
@@ -319,8 +320,10 @@ impl Peer {
pub fn process_incoming_handshake_response(&mut self, addr: Endpoint, packet: &Response) -> Result<Option<u32>, Error> {
let mut session = mem::replace(&mut self.sessions.next, None).ok_or_else(|| err_msg("no next session"))?;
+ debug!("reading handshake message");
let _ = session.noise.read_message(packet.noise_bytes(), &mut [])?;
+ debug!("converting to transport mode");
session = session.into_transport_mode()?;
session.their_index = packet.sender_index();
session.birthday = Timestamp::now();