03b4c87115
* Kernel wg mode in gateway * Cleanup boringtun code * Fix clippy * Fix feature flag missing * Remove even more and get rid of boringtun * Fix bad merge
57 lines
1.9 KiB
Rust
57 lines
1.9 KiB
Rust
use std::net::IpAddr;
|
|
|
|
use base64::{engine::general_purpose, Engine as _};
|
|
use log::info;
|
|
|
|
// The wireguard UDP listener
|
|
pub const WG_ADDRESS: &str = "0.0.0.0";
|
|
|
|
// The private key of the listener
|
|
// Corresponding public key: "WM8s8bYegwMa0TJ+xIwhk+dImk2IpDUKslDBCZPizlE="
|
|
pub(crate) const PRIVATE_KEY: &str = "AEqXrLFT4qjYq3wmX0456iv94uM6nDj5ugp6Jedcflg=";
|
|
|
|
// The AllowedIPs for the connected peer, which is one a single IP and the same as the IP that the
|
|
// peer has configured on their side.
|
|
const ALLOWED_IPS: &str = "10.1.0.2";
|
|
|
|
fn decode_base64_key(base64_key: &str) -> [u8; 32] {
|
|
general_purpose::STANDARD
|
|
.decode(base64_key)
|
|
.unwrap()
|
|
.try_into()
|
|
.unwrap()
|
|
}
|
|
|
|
pub fn server_static_private_key() -> x25519_dalek::StaticSecret {
|
|
// TODO: this is a temporary solution for development
|
|
let static_private_bytes: [u8; 32] = decode_base64_key(PRIVATE_KEY);
|
|
let static_private = x25519_dalek::StaticSecret::from(static_private_bytes);
|
|
let static_public = x25519_dalek::PublicKey::from(&static_private);
|
|
info!(
|
|
"wg public key: {}",
|
|
general_purpose::STANDARD.encode(static_public)
|
|
);
|
|
static_private
|
|
}
|
|
|
|
pub fn peer_static_public_key() -> x25519_dalek::PublicKey {
|
|
// A single static public key is used during development
|
|
|
|
// Read from NYM_PEER_PUBLIC_KEY env variable
|
|
let peer = std::env::var("NYM_PEER_PUBLIC_KEY").expect("NYM_PEER_PUBLIC_KEY must be set");
|
|
|
|
let peer_static_public_bytes: [u8; 32] = decode_base64_key(&peer);
|
|
let peer_static_public = x25519_dalek::PublicKey::from(peer_static_public_bytes);
|
|
info!(
|
|
"Adding wg peer public key: {}",
|
|
general_purpose::STANDARD.encode(peer_static_public)
|
|
);
|
|
peer_static_public
|
|
}
|
|
|
|
pub fn peer_allowed_ips() -> ip_network::IpNetwork {
|
|
let key: IpAddr = ALLOWED_IPS.parse().unwrap();
|
|
let cidr = 32u8;
|
|
ip_network::IpNetwork::new_truncate(key, cidr).unwrap()
|
|
}
|