Changes to be committed:
modified: src/server.rs
This commit is contained in:
parent
23ddaf8c4b
commit
e76cb3ee11
@ -70,7 +70,7 @@ pub async fn server_mode(server_config: ServerConfiguration) {
|
|||||||
let mp = addrs_cl.lock().await;
|
let mp = addrs_cl.lock().await;
|
||||||
if let Some(peer) = mp.get(&ip) {
|
if let Some(peer) = mp.get(&ip) {
|
||||||
|
|
||||||
let aes = Aes256Gcm::new(peer.shared_secret.as_bytes().into());
|
let aes = Aes256Gcm::new(&peer.shared_secret.into());
|
||||||
let nonce = Aes256Gcm::generate_nonce(&mut OsRng);
|
let nonce = Aes256Gcm::generate_nonce(&mut OsRng);
|
||||||
|
|
||||||
let ciphered_data = aes.encrypt(&nonce, &buf[..n]);
|
let ciphered_data = aes.encrypt(&nonce, &buf[..n]);
|
||||||
@ -123,7 +123,7 @@ pub async fn server_mode(server_config: ServerConfiguration) {
|
|||||||
}
|
}
|
||||||
let shared_secret = StaticSecret::from(k1)
|
let shared_secret = StaticSecret::from(k1)
|
||||||
.diffie_hellman(&PublicKey::from(k));
|
.diffie_hellman(&PublicKey::from(k));
|
||||||
mp.insert(internal_ip, UDPeer { addr, shared_secret });
|
mp.insert(internal_ip, UDPeer { addr, shared_secret: *shared_secret.as_bytes() });
|
||||||
|
|
||||||
let handshake_response = UDPVpnHandshake{ public_key: server_config.interface.public_key.clone().into_bytes(), request_ip: handshake.request_ip };
|
let handshake_response = UDPVpnHandshake{ public_key: server_config.interface.public_key.clone().into_bytes(), request_ip: handshake.request_ip };
|
||||||
|
|
||||||
@ -136,7 +136,8 @@ pub async fn server_mode(server_config: ServerConfiguration) {
|
|||||||
1 => {
|
1 => {
|
||||||
let packet = UDPVpnPacket::deserialize(&(buf[..len].to_vec()));
|
let packet = UDPVpnPacket::deserialize(&(buf[..len].to_vec()));
|
||||||
mp.values().filter(| p | p.addr == addr).for_each(|p| {
|
mp.values().filter(| p | p.addr == addr).for_each(|p| {
|
||||||
let aes = Aes256Gcm::new(p.shared_secret.as_bytes().into());
|
info!("UDPeer addr == addr / {:?}", &p.shared_secret);
|
||||||
|
let aes = Aes256Gcm::new(&p.shared_secret.into());
|
||||||
let nonce = Nonce::clone_from_slice(&packet.nonce);
|
let nonce = Nonce::clone_from_slice(&packet.nonce);
|
||||||
match aes.decrypt(&nonce, &packet.data[..]) {
|
match aes.decrypt(&nonce, &packet.data[..]) {
|
||||||
Ok(decrypted) => { send2tun.send(decrypted); },
|
Ok(decrypted) => { send2tun.send(decrypted); },
|
||||||
@ -157,5 +158,5 @@ pub async fn server_mode(server_config: ServerConfiguration) {
|
|||||||
|
|
||||||
struct UDPeer {
|
struct UDPeer {
|
||||||
addr: SocketAddr,
|
addr: SocketAddr,
|
||||||
shared_secret: SharedSecret
|
shared_secret: [u8; 32]
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user