aboutsummaryrefslogtreecommitdiffstats
path: root/src/interface/mod.rs
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-02-12 23:56:38 +0000
committerJake McGinty <me@jake.su>2018-02-13 01:26:39 +0000
commit43c80f2489d429d168ec3e9c3664908971ffeac3 (patch)
treebc12f596c8a6633d9f597ecd62c090a4605e4d81 /src/interface/mod.rs
parentconsolidate more handshake crypto (diff)
downloadwireguard-rs-43c80f2489d429d168ec3e9c3664908971ffeac3.tar.xz
wireguard-rs-43c80f2489d429d168ec3e9c3664908971ffeac3.zip
verify mac1 for handshake messages
Diffstat (limited to 'src/interface/mod.rs')
-rw-r--r--src/interface/mod.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/interface/mod.rs b/src/interface/mod.rs
index 41b4a66..38c306c 100644
--- a/src/interface/mod.rs
+++ b/src/interface/mod.rs
@@ -18,6 +18,7 @@ use std::collections::HashMap;
use std::net::{Ipv4Addr, Ipv6Addr, IpAddr, SocketAddr};
use std::time::Duration;
use types::{InterfaceInfo};
+use x25519_dalek as x25519;
use pnet::packet::ipv4::Ipv4Packet;
@@ -190,7 +191,10 @@ impl Interface {
let mut state = state.borrow_mut();
match event {
UpdateEvent::PrivateKey(private_key) => {
+ let pub_key = x25519::generate_public(&private_key);
+ info!("our pubkey: {}", base64::encode(pub_key.as_bytes()));
state.interface_info.private_key = Some(private_key);
+ state.interface_info.pub_key = Some(*pub_key.as_bytes());
debug!("set new private key");
},
UpdateEvent::ListenPort(port) => {
@@ -202,7 +206,7 @@ impl Interface {
let mut peer = Peer::new(info.clone());
let private_key = &state.interface_info.private_key.expect("no private key!");
- let (init_packet, our_index) = peer.initiate_new_session(private_key).unwrap();
+ let (init_packet, our_index) = peer.initiate_new_session(private_key).expect("initiate_new_session");
let peer = Rc::new(RefCell::new(peer));
@@ -219,7 +223,7 @@ impl Interface {
future::ok(())
}
- }).map_err(|_| ());
+ }).map_err(|e| { warn!("error {:?}", e); () });
core.run(peer_server.join(utun_fut.join(config_fut.join(config_server)))).unwrap();
}