From 2364fbdc093869518d23187e5fee0171f3e05a2d Mon Sep 17 00:00:00 2001 From: Jedrzej Stuczynski Date: Wed, 22 Jan 2020 10:50:03 +0000 Subject: [PATCH] Moved sphinx packet encapsulation and poisson delay sampling to mix client --- Cargo.lock | 6 ++++-- common/clients/mix-client/Cargo.toml | 7 +++++++ common/clients/mix-client/src/lib.rs | 3 +++ .../sphinx.rs => common/clients/mix-client/src/packet.rs | 8 ++++---- .../utils => common/clients/mix-client/src}/poisson.rs | 0 nym-client/src/lib.rs | 9 +++------ nym-client/src/main.rs | 3 --- nym-client/src/utils/mod.rs | 2 -- 8 files changed, 21 insertions(+), 17 deletions(-) rename nym-client/src/utils/sphinx.rs => common/clients/mix-client/src/packet.rs (89%) rename {nym-client/src/utils => common/clients/mix-client/src}/poisson.rs (100%) delete mode 100644 nym-client/src/utils/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 3e9d9da323..66d9693e54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1256,9 +1256,13 @@ dependencies = [ name = "mix-client" version = "0.1.0" dependencies = [ + "addressing", "log", + "rand 0.7.2", + "rand_distr", "sphinx", "tokio 0.2.9", + "topology", ] [[package]] @@ -1358,8 +1362,6 @@ dependencies = [ "pem", "pemstore", "provider-client", - "rand 0.7.2", - "rand_distr", "reqwest", "serde", "serde_json", diff --git a/common/clients/mix-client/Cargo.toml b/common/clients/mix-client/Cargo.toml index 89b497375d..362fad3f0a 100644 --- a/common/clients/mix-client/Cargo.toml +++ b/common/clients/mix-client/Cargo.toml @@ -8,7 +8,14 @@ edition = "2018" [dependencies] log = "0.4.8" +rand = "0.7.2" +rand_distr = "0.2.2" tokio = { version = "0.2", features = ["full"] } +## internal +addressing = {path = "../../addressing"} +topology = {path = "../../topology"} + ## will be moved to proper dependencies once released sphinx = { git = "https://github.com/nymtech/sphinx", rev="1d8cefcb6a0cb8e87d00d89eb1ccf2839e92aa1f" } + diff --git a/common/clients/mix-client/src/lib.rs b/common/clients/mix-client/src/lib.rs index bbdfa9bc0b..fd883a54a4 100644 --- a/common/clients/mix-client/src/lib.rs +++ b/common/clients/mix-client/src/lib.rs @@ -3,6 +3,9 @@ use sphinx::SphinxPacket; use std::net::SocketAddr; use tokio::prelude::*; +pub mod packet; +pub mod poisson; + pub struct MixClient {} impl MixClient { diff --git a/nym-client/src/utils/sphinx.rs b/common/clients/mix-client/src/packet.rs similarity index 89% rename from nym-client/src/utils/sphinx.rs rename to common/clients/mix-client/src/packet.rs index 0f3e69f36b..356d2bbd2e 100644 --- a/nym-client/src/utils/sphinx.rs +++ b/common/clients/mix-client/src/packet.rs @@ -5,6 +5,7 @@ use std::net::SocketAddr; use topology::NymTopology; pub const LOOP_COVER_MESSAGE_PAYLOAD: &[u8] = b"The cake is a lie!"; +pub const LOOP_COVER_MESSAGE_AVERAGE_DELAY: f64 = 2.0; pub fn loop_cover_message( our_address: DestinationAddressBytes, @@ -13,21 +14,20 @@ pub fn loop_cover_message( ) -> (SocketAddr, SphinxPacket) { let destination = Destination::new(our_address, surb_id); - encapsulate_message(destination, LOOP_COVER_MESSAGE_PAYLOAD.to_vec(), topology) + encapsulate_message(destination, LOOP_COVER_MESSAGE_PAYLOAD.to_vec(), topology, LOOP_COVER_MESSAGE_AVERAGE_DELAY) } pub fn encapsulate_message( recipient: Destination, message: Vec, topology: &T, + average_delay: f64, ) -> (SocketAddr, SphinxPacket) { let mut providers = topology.get_mix_provider_nodes(); let provider = providers.pop().unwrap().into(); let route = topology.route_to(provider).unwrap(); - - // Set average packet delay to an arbitrary but at least not super-slow value for testing. - let average_delay = 0.1; + let delays = sphinx::header::delays::generate(route.len(), average_delay); // build the packet diff --git a/nym-client/src/utils/poisson.rs b/common/clients/mix-client/src/poisson.rs similarity index 100% rename from nym-client/src/utils/poisson.rs rename to common/clients/mix-client/src/poisson.rs diff --git a/nym-client/src/lib.rs b/nym-client/src/lib.rs index a79f75bf0c..477c106b34 100644 --- a/nym-client/src/lib.rs +++ b/nym-client/src/lib.rs @@ -1,8 +1,5 @@ -#![recursion_limit = "256"] - pub mod built_info; -pub mod config; pub mod client; -pub mod commands; -pub mod sockets; -pub mod utils; +mod commands; +pub mod config; +mod sockets; diff --git a/nym-client/src/main.rs b/nym-client/src/main.rs index d1e12a85d4..a3f20596b0 100644 --- a/nym-client/src/main.rs +++ b/nym-client/src/main.rs @@ -1,5 +1,3 @@ -#![recursion_limit = "256"] - use clap::{App, Arg, ArgMatches, SubCommand}; pub mod built_info; @@ -7,7 +5,6 @@ pub mod client; mod commands; pub mod config; mod sockets; -pub mod utils; fn main() { env_logger::init(); diff --git a/nym-client/src/utils/mod.rs b/nym-client/src/utils/mod.rs deleted file mode 100644 index 3e2ed40a1b..0000000000 --- a/nym-client/src/utils/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod poisson; -pub mod sphinx;