From 753ecf6b6a026127a39e91f1fd96461b38816e07 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Thu, 23 Jan 2020 15:06:10 +0000 Subject: [PATCH 01/21] crypto: replaced base64 with bs58 --- Cargo.lock | 8 +++++++- common/crypto/Cargo.toml | 2 +- common/crypto/src/identity/mod.rs | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 252451a01d0..86b41fd5459 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -213,6 +213,12 @@ dependencies = [ "byte-tools", ] +[[package]] +name = "bs58" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b170cd256a3f9fa6b9edae3e44a7dfdfc77e8124dbc3e2612d75f9c3e2396dae" + [[package]] name = "built" version = "0.3.2" @@ -460,7 +466,7 @@ dependencies = [ name = "crypto" version = "0.1.0" dependencies = [ - "base64 0.11.0", + "bs58", "curve25519-dalek", "log", "pretty_env_logger", diff --git a/common/crypto/Cargo.toml b/common/crypto/Cargo.toml index 23790a23c81..5e4de608161 100644 --- a/common/crypto/Cargo.toml +++ b/common/crypto/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -base64 = "0.11.0" +bs58 = "0.3.0" curve25519-dalek = "1.2.3" log = "0.4" pretty_env_logger = "0.3" diff --git a/common/crypto/src/identity/mod.rs b/common/crypto/src/identity/mod.rs index 5953581d6b4..2a580547bfe 100644 --- a/common/crypto/src/identity/mod.rs +++ b/common/crypto/src/identity/mod.rs @@ -2,6 +2,7 @@ use crate::encryption::{ MixnetEncryptionKeyPair, MixnetEncryptionPrivateKey, MixnetEncryptionPublicKey, }; use crate::{encryption, PemStorable}; +use bs58; use curve25519_dalek::scalar::Scalar; pub trait MixnetIdentityKeyPair @@ -100,12 +101,12 @@ impl PemStorable for DummyMixIdentityPublicKey { impl DummyMixIdentityPublicKey { pub fn to_b64_string(&self) -> String { - base64::encode_config(&self.to_bytes(), base64::URL_SAFE) + bs58::encode(&self.to_bytes()).into_string() } #[allow(dead_code)] fn from_b64_string(val: String) -> Self { - Self::from_bytes(&base64::decode_config(&val, base64::URL_SAFE).unwrap()) + Self::from_bytes(&bs58::decode(&val).into_vec().unwrap()) } } From d744fa587f5f72dcf5a5ca80f6aef57596e379f8 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 15:11:03 +0000 Subject: [PATCH 02/21] topology: removing curve25519_dalek crate, it's no longer needed --- Cargo.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index ba55ec418a8..2a639ed825a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2428,7 +2428,6 @@ version = "0.1.0" dependencies = [ "addressing", "base64 0.11.0", - "curve25519-dalek", "itertools", "log", "pretty_env_logger", From a4ead85a0145a4f4c256a0e2575e89f920e4be32 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 15:11:16 +0000 Subject: [PATCH 03/21] topology: added bs58 crate --- Cargo.lock | 1 + common/topology/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 2a639ed825a..c7f39eb1ef3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2428,6 +2428,7 @@ version = "0.1.0" dependencies = [ "addressing", "base64 0.11.0", + "bs58", "itertools", "log", "pretty_env_logger", diff --git a/common/topology/Cargo.toml b/common/topology/Cargo.toml index 905df9f2da2..dcebcd67964 100644 --- a/common/topology/Cargo.toml +++ b/common/topology/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" [dependencies] base64 = "0.11.0" -curve25519-dalek = "1.2.3" +bs58 = "0.3.0" itertools = "0.8.2" log = "0.4" pretty_env_logger = "0.3" From 0e85f6de0fd94dc8b39724c9492d950deff00ece Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 15:39:27 +0000 Subject: [PATCH 04/21] topology: using base58 for decoding keys --- common/topology/src/mix.rs | 3 +-- common/topology/src/provider.rs | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/common/topology/src/mix.rs b/common/topology/src/mix.rs index 5236e191fa2..4f5a9c2b2ed 100644 --- a/common/topology/src/mix.rs +++ b/common/topology/src/mix.rs @@ -14,9 +14,8 @@ pub struct Node { impl Node { pub fn get_pub_key_bytes(&self) -> [u8; 32] { - let decoded_key_bytes = base64::decode_config(&self.pub_key, base64::URL_SAFE).unwrap(); let mut key_bytes = [0; 32]; - key_bytes.copy_from_slice(&decoded_key_bytes[..]); + bs58::decode(&self.pub_key).into(&mut key_bytes).unwrap(); key_bytes } } diff --git a/common/topology/src/provider.rs b/common/topology/src/provider.rs index e9d4869e0e6..a4d268822be 100644 --- a/common/topology/src/provider.rs +++ b/common/topology/src/provider.rs @@ -20,9 +20,8 @@ pub struct Node { impl Node { pub fn get_pub_key_bytes(&self) -> [u8; 32] { - let decoded_key_bytes = base64::decode_config(&self.pub_key, base64::URL_SAFE).unwrap(); let mut key_bytes = [0; 32]; - key_bytes.copy_from_slice(&decoded_key_bytes[..]); + bs58::decode(&self.pub_key).into(&mut key_bytes).unwrap(); key_bytes } } From d6ce495e08901ad7ddab632056c45fe29b6f4f8b Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 15:42:27 +0000 Subject: [PATCH 05/21] git: ignoring local dictionary --- .gitignore | 1 + common/clients/directory-client/src/presence.rs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6ddcea9a0c9..74a82c4e13d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ .idea target .env +/.vscode/settings.json diff --git a/common/clients/directory-client/src/presence.rs b/common/clients/directory-client/src/presence.rs index f56305f1720..664274007ad 100644 --- a/common/clients/directory-client/src/presence.rs +++ b/common/clients/directory-client/src/presence.rs @@ -11,8 +11,8 @@ use topology::mix; use topology::provider; use topology::NymTopology; -// special version of 'PartialEq' that does not care about last_seen field (where applicable) -// or order of elements in vectors +// special version of 'PartialEq' that does not care about last_seen field +//(where applicable) or order of elements in vectors trait PresenceEq { fn presence_eq(&self, other: &Self) -> bool; } From a1af0b9345d2b0ac132aebc6baf054ef110c3dcc Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:18:22 +0000 Subject: [PATCH 06/21] directory-client: ripped presence apart a bit --- .../clients/directory-client/src/presence.rs | 392 ------------------ .../src/presence/coconodes.rs | 56 +++ .../directory-client/src/presence/mixnodes.rs | 72 ++++ .../directory-client/src/presence/mod.rs | 134 ++++++ .../src/presence/providers.rs | 149 +++++++ .../src/requests/presence_coconodes_post.rs | 4 +- .../src/requests/presence_mixnodes_post.rs | 4 +- .../src/requests/presence_providers_post.rs | 4 +- mixnode/src/node/presence.rs | 2 +- sfw-provider/src/provider/mod.rs | 2 +- sfw-provider/src/provider/presence.rs | 2 +- 11 files changed, 420 insertions(+), 401 deletions(-) delete mode 100644 common/clients/directory-client/src/presence.rs create mode 100644 common/clients/directory-client/src/presence/coconodes.rs create mode 100644 common/clients/directory-client/src/presence/mixnodes.rs create mode 100644 common/clients/directory-client/src/presence/mod.rs create mode 100644 common/clients/directory-client/src/presence/providers.rs diff --git a/common/clients/directory-client/src/presence.rs b/common/clients/directory-client/src/presence.rs deleted file mode 100644 index 664274007ad..00000000000 --- a/common/clients/directory-client/src/presence.rs +++ /dev/null @@ -1,392 +0,0 @@ -use crate::requests::presence_topology_get::PresenceTopologyGetRequester; -use crate::{Client, Config, DirectoryClient}; -use log::*; -use serde::{Deserialize, Serialize}; -use std::collections::HashSet; -use std::convert::TryInto; -use std::io; -use std::net::ToSocketAddrs; -use topology::coco; -use topology::mix; -use topology::provider; -use topology::NymTopology; - -// special version of 'PartialEq' that does not care about last_seen field -//(where applicable) or order of elements in vectors -trait PresenceEq { - fn presence_eq(&self, other: &Self) -> bool; -} - -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "camelCase")] -pub struct CocoPresence { - pub host: String, - pub pub_key: String, - pub last_seen: u64, - pub version: String, -} - -impl Into for CocoPresence { - fn into(self) -> topology::coco::Node { - topology::coco::Node { - host: self.host, - pub_key: self.pub_key, - last_seen: self.last_seen, - version: self.version, - } - } -} - -impl From for CocoPresence { - fn from(cn: coco::Node) -> Self { - CocoPresence { - host: cn.host, - pub_key: cn.pub_key, - last_seen: cn.last_seen, - version: cn.version, - } - } -} - -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "camelCase")] -pub struct MixNodePresence { - pub host: String, - pub pub_key: String, - pub layer: u64, - pub last_seen: u64, - pub version: String, -} - -impl TryInto for MixNodePresence { - type Error = io::Error; - - fn try_into(self) -> Result { - let resolved_hostname = self.host.to_socket_addrs()?.next(); - if resolved_hostname.is_none() { - return Err(io::Error::new( - io::ErrorKind::Other, - "no valid socket address", - )); - } - - Ok(topology::mix::Node { - host: resolved_hostname.unwrap(), - pub_key: self.pub_key, - layer: self.layer, - last_seen: self.last_seen, - version: self.version, - }) - } -} - -impl From for MixNodePresence { - fn from(mn: mix::Node) -> Self { - MixNodePresence { - host: mn.host.to_string(), - pub_key: mn.pub_key, - layer: mn.layer, - last_seen: mn.last_seen, - version: mn.version, - } - } -} - -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "camelCase")] -pub struct MixProviderPresence { - pub client_listener: String, - pub mixnet_listener: String, - pub pub_key: String, - pub registered_clients: Vec, - pub last_seen: u64, - pub version: String, -} - -impl PresenceEq for MixProviderPresence { - fn presence_eq(&self, other: &Self) -> bool { - if self.registered_clients.len() != other.registered_clients.len() { - return false; - } - - if self.client_listener != other.client_listener - || self.mixnet_listener != other.mixnet_listener - || self.pub_key != other.pub_key - || self.version != other.version - { - return false; - } - - let clients_self_set: HashSet<_> = - self.registered_clients.iter().map(|c| &c.pub_key).collect(); - let clients_other_set: HashSet<_> = other - .registered_clients - .iter() - .map(|c| &c.pub_key) - .collect(); - - clients_self_set == clients_other_set - } -} - -impl Into for MixProviderPresence { - fn into(self) -> topology::provider::Node { - topology::provider::Node { - client_listener: self.client_listener.parse().unwrap(), - mixnet_listener: self.mixnet_listener.parse().unwrap(), - pub_key: self.pub_key, - registered_clients: self - .registered_clients - .into_iter() - .map(|c| c.into()) - .collect(), - last_seen: self.last_seen, - version: self.version, - } - } -} - -impl From for MixProviderPresence { - fn from(mpn: provider::Node) -> Self { - MixProviderPresence { - client_listener: mpn.client_listener.to_string(), - mixnet_listener: mpn.mixnet_listener.to_string(), - pub_key: mpn.pub_key, - registered_clients: mpn - .registered_clients - .into_iter() - .map(|c| c.into()) - .collect(), - last_seen: mpn.last_seen, - version: mpn.version, - } - } -} - -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "camelCase")] -pub struct MixProviderClient { - pub pub_key: String, -} - -impl Into for MixProviderClient { - fn into(self) -> topology::provider::Client { - topology::provider::Client { - pub_key: self.pub_key, - } - } -} - -impl From for MixProviderClient { - fn from(mpc: topology::provider::Client) -> Self { - MixProviderClient { - pub_key: mpc.pub_key, - } - } -} - -impl PresenceEq for Vec { - fn presence_eq(&self, other: &Self) -> bool { - if self.len() != other.len() { - return false; - } - - // we can't take the whole thing into set as it does not implement 'Eq' and we can't - // derive it as we don't want to take 'last_seen' into consideration - let self_set: HashSet<_> = self - .iter() - .map(|c| (&c.host, &c.pub_key, &c.version)) - .collect(); - let other_set: HashSet<_> = other - .iter() - .map(|c| (&c.host, &c.pub_key, &c.version)) - .collect(); - - self_set == other_set - } -} - -impl PresenceEq for Vec { - fn presence_eq(&self, other: &Self) -> bool { - if self.len() != other.len() { - return false; - } - - // we can't take the whole thing into set as it does not implement 'Eq' and we can't - // derive it as we don't want to take 'last_seen' into consideration - let self_set: HashSet<_> = self - .iter() - .map(|m| (&m.host, &m.pub_key, &m.version, &m.layer)) - .collect(); - let other_set: HashSet<_> = other - .iter() - .map(|m| (&m.host, &m.pub_key, &m.version, &m.layer)) - .collect(); - - self_set == other_set - } -} - -impl PresenceEq for Vec { - fn presence_eq(&self, other: &Self) -> bool { - if self.len() != other.len() { - return false; - } - - // we can't take the whole thing into set as it does not implement 'Eq' and we can't - // derive it as we don't want to take 'last_seen' into consideration. - // We also don't care about order of registered_clients - - // since we're going to be getting rid of this very soon anyway, just clone registered - // clients vector and sort it - - let self_set: HashSet<_> = self - .iter() - .map(|p| { - ( - &p.client_listener, - &p.mixnet_listener, - &p.pub_key, - &p.version, - p.registered_clients - .iter() - .cloned() - .map(|c| c.pub_key) - .collect::>() - .sort(), - ) - }) - .collect(); - let other_set: HashSet<_> = other - .iter() - .map(|p| { - ( - &p.client_listener, - &p.mixnet_listener, - &p.pub_key, - &p.version, - p.registered_clients - .iter() - .cloned() - .map(|c| c.pub_key) - .collect::>() - .sort(), - ) - }) - .collect(); - - self_set == other_set - } -} - -// Topology shows us the current state of the overall Nym network -#[derive(Clone, Debug, Deserialize, Serialize)] -#[serde(rename_all = "camelCase")] -pub struct Topology { - pub coco_nodes: Vec, - pub mix_nodes: Vec, - pub mix_provider_nodes: Vec, -} - -impl PartialEq for Topology { - // we need a custom implementation as the order of nodes does not matter - // also we do not care about 'last_seen' when comparing topologies - fn eq(&self, other: &Self) -> bool { - if !self.coco_nodes.presence_eq(&other.coco_nodes) - || !self.mix_nodes.presence_eq(&other.mix_nodes) - || !self - .mix_provider_nodes - .presence_eq(&other.mix_provider_nodes) - { - return false; - } - - true - } -} - -impl NymTopology for Topology { - fn new(directory_server: String) -> Self { - debug!("Using directory server: {:?}", directory_server); - let directory_config = Config { - base_url: directory_server, - }; - let directory = Client::new(directory_config); - - let topology = directory - .presence_topology - .get() - .expect("Failed to retrieve network topology."); - topology - } - - fn new_from_nodes( - mix_nodes: Vec, - mix_provider_nodes: Vec, - coco_nodes: Vec, - ) -> Self { - Topology { - coco_nodes: coco_nodes.into_iter().map(|node| node.into()).collect(), - mix_nodes: mix_nodes.into_iter().map(|node| node.into()).collect(), - mix_provider_nodes: mix_provider_nodes - .into_iter() - .map(|node| node.into()) - .collect(), - } - } - - fn mix_nodes(&self) -> Vec { - self.mix_nodes - .iter() - .filter_map(|x| x.clone().try_into().ok()) - .collect() - } - - fn providers(&self) -> Vec { - self.mix_provider_nodes - .iter() - .map(|x| x.clone().into()) - .collect() - } - - fn coco_nodes(&self) -> Vec { - self.coco_nodes.iter().map(|x| x.clone().into()).collect() - } -} - -#[cfg(test)] -mod converting_mixnode_presence_into_topology_mixnode { - use super::*; - - #[test] - fn it_returns_error_on_unresolvable_hostname() { - let unresolvable_hostname = "foomp.foomp.foomp:1234"; - - let mix_presence = MixNodePresence { - host: unresolvable_hostname.to_string(), - pub_key: "".to_string(), - layer: 0, - last_seen: 0, - version: "".to_string(), - }; - - let result: Result = mix_presence.try_into(); - assert!(result.is_err()) - } - - #[test] - fn it_returns_resolved_ip_on_resolvable_hostname() { - let resolvable_hostname = "nymtech.net:1234"; - - let mix_presence = MixNodePresence { - host: resolvable_hostname.to_string(), - pub_key: "".to_string(), - layer: 0, - last_seen: 0, - version: "".to_string(), - }; - - let result: Result = mix_presence.try_into(); - assert!(result.is_ok()) - } -} diff --git a/common/clients/directory-client/src/presence/coconodes.rs b/common/clients/directory-client/src/presence/coconodes.rs new file mode 100644 index 00000000000..ff1d6c80f0b --- /dev/null +++ b/common/clients/directory-client/src/presence/coconodes.rs @@ -0,0 +1,56 @@ +use super::PresenceEq; +use serde::{Deserialize, Serialize}; +use std::collections::HashSet; +use topology::coco; + +#[derive(Clone, Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct CocoPresence { + pub host: String, + pub pub_key: String, + pub last_seen: u64, + pub version: String, +} + +impl Into for CocoPresence { + fn into(self) -> topology::coco::Node { + topology::coco::Node { + host: self.host, + pub_key: self.pub_key, + last_seen: self.last_seen, + version: self.version, + } + } +} + +impl From for CocoPresence { + fn from(cn: coco::Node) -> Self { + CocoPresence { + host: cn.host, + pub_key: cn.pub_key, + last_seen: cn.last_seen, + version: cn.version, + } + } +} + +impl PresenceEq for Vec { + fn presence_eq(&self, other: &Self) -> bool { + if self.len() != other.len() { + return false; + } + + // we can't take the whole thing into set as it does not implement 'Eq' and we can't + // derive it as we don't want to take 'last_seen' into consideration + let self_set: HashSet<_> = self + .iter() + .map(|c| (&c.host, &c.pub_key, &c.version)) + .collect(); + let other_set: HashSet<_> = other + .iter() + .map(|c| (&c.host, &c.pub_key, &c.version)) + .collect(); + + self_set == other_set + } +} diff --git a/common/clients/directory-client/src/presence/mixnodes.rs b/common/clients/directory-client/src/presence/mixnodes.rs new file mode 100644 index 00000000000..aba2d73cf96 --- /dev/null +++ b/common/clients/directory-client/src/presence/mixnodes.rs @@ -0,0 +1,72 @@ +use super::PresenceEq; +use serde::{Deserialize, Serialize}; +use std::collections::HashSet; +use std::convert::TryInto; +use std::io; +use std::net::ToSocketAddrs; +use topology::mix; + +#[derive(Clone, Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct MixNodePresence { + pub host: String, + pub pub_key: String, + pub layer: u64, + pub last_seen: u64, + pub version: String, +} + +impl TryInto for MixNodePresence { + type Error = io::Error; + + fn try_into(self) -> Result { + let resolved_hostname = self.host.to_socket_addrs()?.next(); + if resolved_hostname.is_none() { + return Err(io::Error::new( + io::ErrorKind::Other, + "no valid socket address", + )); + } + + Ok(topology::mix::Node { + host: resolved_hostname.unwrap(), + pub_key: self.pub_key, + layer: self.layer, + last_seen: self.last_seen, + version: self.version, + }) + } +} + +impl From for MixNodePresence { + fn from(mn: mix::Node) -> Self { + MixNodePresence { + host: mn.host.to_string(), + pub_key: mn.pub_key, + layer: mn.layer, + last_seen: mn.last_seen, + version: mn.version, + } + } +} + +impl PresenceEq for Vec { + fn presence_eq(&self, other: &Self) -> bool { + if self.len() != other.len() { + return false; + } + + // we can't take the whole thing into set as it does not implement 'Eq' and we can't + // derive it as we don't want to take 'last_seen' into consideration + let self_set: HashSet<_> = self + .iter() + .map(|m| (&m.host, &m.pub_key, &m.version, &m.layer)) + .collect(); + let other_set: HashSet<_> = other + .iter() + .map(|m| (&m.host, &m.pub_key, &m.version, &m.layer)) + .collect(); + + self_set == other_set + } +} diff --git a/common/clients/directory-client/src/presence/mod.rs b/common/clients/directory-client/src/presence/mod.rs new file mode 100644 index 00000000000..10d8b1a5e48 --- /dev/null +++ b/common/clients/directory-client/src/presence/mod.rs @@ -0,0 +1,134 @@ +use crate::requests::presence_topology_get::PresenceTopologyGetRequester; +use crate::{Client, Config, DirectoryClient}; +use log::*; +use serde::{Deserialize, Serialize}; +use std::collections::HashSet; +use std::convert::TryInto; +use std::io; +use std::net::ToSocketAddrs; +use topology::coco; +use topology::mix; +use topology::provider; +use topology::NymTopology; + +pub mod coconodes; +pub mod mixnodes; +pub mod providers; + +// special version of 'PartialEq' that does not care about last_seen field +//(where applicable) or order of elements in vectors +trait PresenceEq { + fn presence_eq(&self, other: &Self) -> bool; +} + +// Topology shows us the current state of the overall Nym network +#[derive(Clone, Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct Topology { + pub coco_nodes: Vec, + pub mix_nodes: Vec, + pub mix_provider_nodes: Vec, +} + +impl PartialEq for Topology { + // we need a custom implementation as the order of nodes does not matter + // also we do not care about 'last_seen' when comparing topologies + fn eq(&self, other: &Self) -> bool { + if !self.coco_nodes.presence_eq(&other.coco_nodes) + || !self.mix_nodes.presence_eq(&other.mix_nodes) + || !self + .mix_provider_nodes + .presence_eq(&other.mix_provider_nodes) + { + return false; + } + + true + } +} + +impl NymTopology for Topology { + fn new(directory_server: String) -> Self { + debug!("Using directory server: {:?}", directory_server); + let directory_config = Config { + base_url: directory_server, + }; + let directory = Client::new(directory_config); + + let topology = directory + .presence_topology + .get() + .expect("Failed to retrieve network topology."); + topology + } + + fn new_from_nodes( + mix_nodes: Vec, + mix_provider_nodes: Vec, + coco_nodes: Vec, + ) -> Self { + Topology { + coco_nodes: coco_nodes.into_iter().map(|node| node.into()).collect(), + mix_nodes: mix_nodes.into_iter().map(|node| node.into()).collect(), + mix_provider_nodes: mix_provider_nodes + .into_iter() + .map(|node| node.into()) + .collect(), + } + } + + fn mix_nodes(&self) -> Vec { + self.mix_nodes + .iter() + .filter_map(|x| x.clone().try_into().ok()) + .collect() + } + + fn providers(&self) -> Vec { + self.mix_provider_nodes + .iter() + .map(|x| x.clone().into()) + .collect() + } + + fn coco_nodes(&self) -> Vec { + self.coco_nodes.iter().map(|x| x.clone().into()).collect() + } +} + +#[cfg(test)] +mod converting_mixnode_presence_into_topology_mixnode { + use super::*; + + #[test] + fn it_returns_error_on_unresolvable_hostname() { + let unresolvable_hostname = "foomp.foomp.foomp:1234"; + + let mix_presence = mixnodes::MixNodePresence { + host: unresolvable_hostname.to_string(), + pub_key: "".to_string(), + layer: 0, + last_seen: 0, + version: "".to_string(), + }; + + let result: Result = mix_presence.try_into(); + assert!(result.is_err()) + } + + #[test] + fn it_returns_resolved_ip_on_resolvable_hostname() { + let resolvable_hostname = "nymtech.net:1234"; + + let mix_presence = mixnodes::MixNodePresence { + host: resolvable_hostname.to_string(), + pub_key: "".to_string(), + layer: 0, + last_seen: 0, + version: "".to_string(), + }; + + let result: Result = mix_presence.try_into(); + assert!(result.is_ok()) + } +} diff --git a/common/clients/directory-client/src/presence/providers.rs b/common/clients/directory-client/src/presence/providers.rs new file mode 100644 index 00000000000..b96bcf6a9e4 --- /dev/null +++ b/common/clients/directory-client/src/presence/providers.rs @@ -0,0 +1,149 @@ +use super::PresenceEq; +use serde::{Deserialize, Serialize}; +use std::collections::HashSet; +use topology::provider; + +#[derive(Clone, Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct MixProviderPresence { + pub client_listener: String, + pub mixnet_listener: String, + pub pub_key: String, + pub registered_clients: Vec, + pub last_seen: u64, + pub version: String, +} + +impl PresenceEq for MixProviderPresence { + fn presence_eq(&self, other: &Self) -> bool { + if self.registered_clients.len() != other.registered_clients.len() { + return false; + } + + if self.client_listener != other.client_listener + || self.mixnet_listener != other.mixnet_listener + || self.pub_key != other.pub_key + || self.version != other.version + { + return false; + } + + let clients_self_set: HashSet<_> = + self.registered_clients.iter().map(|c| &c.pub_key).collect(); + let clients_other_set: HashSet<_> = other + .registered_clients + .iter() + .map(|c| &c.pub_key) + .collect(); + + clients_self_set == clients_other_set + } +} + +impl Into for MixProviderPresence { + fn into(self) -> topology::provider::Node { + topology::provider::Node { + client_listener: self.client_listener.parse().unwrap(), + mixnet_listener: self.mixnet_listener.parse().unwrap(), + pub_key: self.pub_key, + registered_clients: self + .registered_clients + .into_iter() + .map(|c| c.into()) + .collect(), + last_seen: self.last_seen, + version: self.version, + } + } +} + +impl From for MixProviderPresence { + fn from(mpn: provider::Node) -> Self { + MixProviderPresence { + client_listener: mpn.client_listener.to_string(), + mixnet_listener: mpn.mixnet_listener.to_string(), + pub_key: mpn.pub_key, + registered_clients: mpn + .registered_clients + .into_iter() + .map(|c| c.into()) + .collect(), + last_seen: mpn.last_seen, + version: mpn.version, + } + } +} + +#[derive(Clone, Debug, Deserialize, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct MixProviderClient { + pub pub_key: String, +} + +impl Into for MixProviderClient { + fn into(self) -> topology::provider::Client { + topology::provider::Client { + pub_key: self.pub_key, + } + } +} + +impl From for MixProviderClient { + fn from(mpc: topology::provider::Client) -> Self { + MixProviderClient { + pub_key: mpc.pub_key, + } + } +} + +impl PresenceEq for Vec { + fn presence_eq(&self, other: &Self) -> bool { + if self.len() != other.len() { + return false; + } + + // we can't take the whole thing into set as it does not implement 'Eq' and we can't + // derive it as we don't want to take 'last_seen' into consideration. + // We also don't care about order of registered_clients + + // since we're going to be getting rid of this very soon anyway, just clone registered + // clients vector and sort it + + let self_set: HashSet<_> = self + .iter() + .map(|p| { + ( + &p.client_listener, + &p.mixnet_listener, + &p.pub_key, + &p.version, + p.registered_clients + .iter() + .cloned() + .map(|c| c.pub_key) + .collect::>() + .sort(), + ) + }) + .collect(); + let other_set: HashSet<_> = other + .iter() + .map(|p| { + ( + &p.client_listener, + &p.mixnet_listener, + &p.pub_key, + &p.version, + p.registered_clients + .iter() + .cloned() + .map(|c| c.pub_key) + .collect::>() + .sort(), + ) + }) + .collect(); + + self_set == other_set + } +} diff --git a/common/clients/directory-client/src/requests/presence_coconodes_post.rs b/common/clients/directory-client/src/requests/presence_coconodes_post.rs index 40fe4bd2e2c..cc34c13272f 100644 --- a/common/clients/directory-client/src/requests/presence_coconodes_post.rs +++ b/common/clients/directory-client/src/requests/presence_coconodes_post.rs @@ -1,4 +1,4 @@ -use crate::presence::CocoPresence; +use crate::presence::coconodes::CocoPresence; use reqwest::Response; pub struct Request { @@ -73,7 +73,7 @@ mod metrics_get_request { #[cfg(test)] mod fixtures { - use crate::presence::CocoPresence; + use crate::presence::coconodes::CocoPresence; pub fn new_presence() -> CocoPresence { CocoPresence { diff --git a/common/clients/directory-client/src/requests/presence_mixnodes_post.rs b/common/clients/directory-client/src/requests/presence_mixnodes_post.rs index 3b5d9423323..df110c2fead 100644 --- a/common/clients/directory-client/src/requests/presence_mixnodes_post.rs +++ b/common/clients/directory-client/src/requests/presence_mixnodes_post.rs @@ -1,4 +1,4 @@ -use crate::presence::MixNodePresence; +use crate::presence::mixnodes::MixNodePresence; use reqwest::Response; pub struct Request { @@ -73,7 +73,7 @@ mod metrics_get_request { #[cfg(test)] mod fixtures { - use crate::presence::MixNodePresence; + use crate::presence::mixnodes::MixNodePresence; pub fn new_presence() -> MixNodePresence { MixNodePresence { diff --git a/common/clients/directory-client/src/requests/presence_providers_post.rs b/common/clients/directory-client/src/requests/presence_providers_post.rs index f5f522fa935..d9267003347 100644 --- a/common/clients/directory-client/src/requests/presence_providers_post.rs +++ b/common/clients/directory-client/src/requests/presence_providers_post.rs @@ -1,4 +1,4 @@ -use crate::presence::MixProviderPresence; +use crate::presence::providers::MixProviderPresence; use reqwest::Response; pub struct Request { @@ -72,7 +72,7 @@ mod metrics_get_request { } #[cfg(test)] mod fixtures { - use crate::presence::MixProviderPresence; + use crate::presence::providers::MixProviderPresence; pub fn new_presence() -> MixProviderPresence { MixProviderPresence { diff --git a/mixnode/src/node/presence.rs b/mixnode/src/node/presence.rs index 283a6a3afe9..b017bacdea0 100644 --- a/mixnode/src/node/presence.rs +++ b/mixnode/src/node/presence.rs @@ -1,5 +1,5 @@ use crate::node; -use directory_client::presence::MixNodePresence; +use directory_client::presence::mixnodes::MixNodePresence; use directory_client::requests::presence_mixnodes_post::PresenceMixNodesPoster; use directory_client::DirectoryClient; use log::{debug, error}; diff --git a/sfw-provider/src/provider/mod.rs b/sfw-provider/src/provider/mod.rs index bc32073da86..539ecbe4633 100644 --- a/sfw-provider/src/provider/mod.rs +++ b/sfw-provider/src/provider/mod.rs @@ -2,7 +2,7 @@ use crate::provider::client_handling::{ClientProcessingData, ClientRequestProces use crate::provider::mix_handling::{MixPacketProcessor, MixProcessingData}; use crate::provider::storage::ClientStorage; use crypto::identity::{DummyMixIdentityPrivateKey, DummyMixIdentityPublicKey}; -use directory_client::presence::MixProviderClient; +use directory_client::presence::providers::MixProviderClient; use futures::io::Error; use futures::lock::Mutex as FMutex; use log::*; diff --git a/sfw-provider/src/provider/presence.rs b/sfw-provider/src/provider/presence.rs index 567b0a56dca..d2ec3c19701 100644 --- a/sfw-provider/src/provider/presence.rs +++ b/sfw-provider/src/provider/presence.rs @@ -1,6 +1,6 @@ use crate::provider::ClientLedger; use crypto::identity::DummyMixIdentityPublicKey; -use directory_client::presence::MixProviderPresence; +use directory_client::presence::providers::MixProviderPresence; use directory_client::requests::presence_providers_post::PresenceMixProviderPoster; use directory_client::DirectoryClient; use futures::lock::Mutex as FMutex; From 8cf37e10cec6b3ff6d7bdb46bc40ffd516cbc355 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:21:23 +0000 Subject: [PATCH 07/21] directory-client: removing unused imports --- common/clients/directory-client/src/presence/mod.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/common/clients/directory-client/src/presence/mod.rs b/common/clients/directory-client/src/presence/mod.rs index 10d8b1a5e48..1c45b394456 100644 --- a/common/clients/directory-client/src/presence/mod.rs +++ b/common/clients/directory-client/src/presence/mod.rs @@ -2,10 +2,8 @@ use crate::requests::presence_topology_get::PresenceTopologyGetRequester; use crate::{Client, Config, DirectoryClient}; use log::*; use serde::{Deserialize, Serialize}; -use std::collections::HashSet; use std::convert::TryInto; use std::io; -use std::net::ToSocketAddrs; use topology::coco; use topology::mix; use topology::provider; From 80537045b47c5937c60e80ed60860daecb528460 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:22:44 +0000 Subject: [PATCH 08/21] directory-client: fullpath on std::io::Error needed for some reason --- common/clients/directory-client/src/presence/mod.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/clients/directory-client/src/presence/mod.rs b/common/clients/directory-client/src/presence/mod.rs index 1c45b394456..b759f576e79 100644 --- a/common/clients/directory-client/src/presence/mod.rs +++ b/common/clients/directory-client/src/presence/mod.rs @@ -3,7 +3,6 @@ use crate::{Client, Config, DirectoryClient}; use log::*; use serde::{Deserialize, Serialize}; use std::convert::TryInto; -use std::io; use topology::coco; use topology::mix; use topology::provider; @@ -110,7 +109,7 @@ mod converting_mixnode_presence_into_topology_mixnode { version: "".to_string(), }; - let result: Result = mix_presence.try_into(); + let result: Result = mix_presence.try_into(); assert!(result.is_err()) } @@ -126,7 +125,7 @@ mod converting_mixnode_presence_into_topology_mixnode { version: "".to_string(), }; - let result: Result = mix_presence.try_into(); + let result: Result = mix_presence.try_into(); assert!(result.is_ok()) } } From aa7ff75be71b89636bb233cfa1818112cb2384f6 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:29:02 +0000 Subject: [PATCH 09/21] mixnode: replaced base64 with base58 --- Cargo.lock | 2 +- mixnode/Cargo.toml | 2 +- mixnode/src/node/mod.rs | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7f39eb1ef3..5f15a919932 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1382,7 +1382,7 @@ name = "nym-mixnode" version = "0.3.3" dependencies = [ "addressing", - "base64 0.11.0", + "bs58", "built", "clap", "curve25519-dalek", diff --git a/mixnode/Cargo.toml b/mixnode/Cargo.toml index 52db3fa9b6b..e7e7282f92a 100644 --- a/mixnode/Cargo.toml +++ b/mixnode/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -base64 = "0.11.0" +bs58 = "0.3.0" clap = "2.33.0" curve25519-dalek = "1.2.3" dotenv = "0.15.0" diff --git a/mixnode/src/node/mod.rs b/mixnode/src/node/mod.rs index c8ce9ae7831..70f69ce80e3 100644 --- a/mixnode/src/node/mod.rs +++ b/mixnode/src/node/mod.rs @@ -31,7 +31,7 @@ pub struct Config { impl Config { pub fn public_key_string(&self) -> String { let key_bytes = self.public_key.to_bytes().to_vec(); - base64::encode_config(&key_bytes, base64::URL_SAFE) + bs58::encode(&key_bytes).into_string() } } @@ -232,8 +232,7 @@ impl MixNode { let directory_cfg = directory_client::Config { base_url: self.directory_server.clone(), }; - let pub_key_str = - base64::encode_config(&self.public_key.to_bytes().to_vec(), base64::URL_SAFE); + let pub_key_str = bs58::encode(&self.public_key.to_bytes().to_vec()).into_string(); rt.spawn({ let presence_notifier = presence::Notifier::new(&config); From d71d2effe65dc73879b7a0a2c7d32ee51a9c27c3 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:29:41 +0000 Subject: [PATCH 10/21] topology: removing base64 crate --- Cargo.lock | 1 - common/topology/Cargo.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f15a919932..f3fa287c2df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2427,7 +2427,6 @@ name = "topology" version = "0.1.0" dependencies = [ "addressing", - "base64 0.11.0", "bs58", "itertools", "log", diff --git a/common/topology/Cargo.toml b/common/topology/Cargo.toml index dcebcd67964..d7d1b455017 100644 --- a/common/topology/Cargo.toml +++ b/common/topology/Cargo.toml @@ -7,7 +7,6 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -base64 = "0.11.0" bs58 = "0.3.0" itertools = "0.8.2" log = "0.4" From da6aac176b4842bcc473878cf171b64f9d88d03c Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:34:55 +0000 Subject: [PATCH 11/21] nym-client: adding bs58 crate --- Cargo.lock | 1 + nym-client/Cargo.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f3fa287c2df..cca62e24956 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1350,6 +1350,7 @@ version = "0.3.3" dependencies = [ "addressing", "base64 0.11.0", + "bs58", "built", "clap", "crypto", diff --git a/nym-client/Cargo.toml b/nym-client/Cargo.toml index eade92dd4b0..a33d6ede32e 100644 --- a/nym-client/Cargo.toml +++ b/nym-client/Cargo.toml @@ -13,6 +13,7 @@ path = "src/lib.rs" [dependencies] base64 = "0.11.0" +bs58 = "0.3.0" clap = "2.33.0" curve25519-dalek = "1.2.3" dirs = "2.0.2" From 559cffdb560c0691a2191e4b7077a9542ee23266 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:37:35 +0000 Subject: [PATCH 12/21] sfw-provider: swapping out base64 for base58 --- Cargo.lock | 2 +- sfw-provider/Cargo.toml | 2 +- sfw-provider/src/provider/mod.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cca62e24956..3fe3eea9b42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1400,7 +1400,7 @@ dependencies = [ name = "nym-sfw-provider" version = "0.3.3" dependencies = [ - "base64 0.11.0", + "bs58", "built", "clap", "crypto", diff --git a/sfw-provider/Cargo.toml b/sfw-provider/Cargo.toml index 7bea6173d0e..8fccc112323 100644 --- a/sfw-provider/Cargo.toml +++ b/sfw-provider/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -base64 = "0.11.0" +bs58 = "0.3.0" clap = "2.33.0" curve25519-dalek = "1.2.3" dotenv = "0.15.0" diff --git a/sfw-provider/src/provider/mod.rs b/sfw-provider/src/provider/mod.rs index 539ecbe4633..368b0dd64bb 100644 --- a/sfw-provider/src/provider/mod.rs +++ b/sfw-provider/src/provider/mod.rs @@ -87,7 +87,7 @@ impl ClientLedger { fn current_clients(&self) -> Vec { self.0 .iter() - .map(|(_, v)| base64::encode_config(v, base64::URL_SAFE)) + .map(|(_, v)| bs58::encode(v).into_string()) .map(|pub_key| MixProviderClient { pub_key }) .collect() } From e1b3a22bc57438b5a2edeee63e5e8c91d93a9f50 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:45:40 +0000 Subject: [PATCH 13/21] nym-client: removed the hex crate --- Cargo.lock | 1 - nym-client/Cargo.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3fe3eea9b42..2c59310c353 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1360,7 +1360,6 @@ dependencies = [ "dotenv", "futures 0.3.1", "healthcheck", - "hex", "log", "mix-client", "pem", diff --git a/nym-client/Cargo.toml b/nym-client/Cargo.toml index a33d6ede32e..7f31d211112 100644 --- a/nym-client/Cargo.toml +++ b/nym-client/Cargo.toml @@ -19,7 +19,6 @@ curve25519-dalek = "1.2.3" dirs = "2.0.2" dotenv = "0.15.0" futures = "0.3.1" -hex = "0.4.0" log = "0.4" pem = "0.7.0" pretty_env_logger = "0.3" From a1982680092d37a68779fba0adb1a51371667cd4 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:46:12 +0000 Subject: [PATCH 14/21] nym-client: renamed suspicious hex variable (which contains bytes) --- nym-client/src/sockets/ws.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nym-client/src/sockets/ws.rs b/nym-client/src/sockets/ws.rs index 8840e6f95e0..e2c2267414e 100644 --- a/nym-client/src/sockets/ws.rs +++ b/nym-client/src/sockets/ws.rs @@ -205,7 +205,7 @@ impl ClientRequest { message: e.to_string(), }; } - Ok(hex) => hex, + Ok(bytes) => bytes, }; if address_vec.len() != 32 { From 83aa0a37b16bb5036e630cfc5ef5066a77af21e3 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Fri, 24 Jan 2020 16:50:06 +0000 Subject: [PATCH 15/21] sfw-provider: changed on-disk storage location from hex to base58 --- Cargo.lock | 7 ------- sfw-provider/Cargo.toml | 1 - sfw-provider/src/provider/client_handling/mod.rs | 2 +- sfw-provider/src/provider/storage/mod.rs | 4 ++-- 4 files changed, 3 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2c59310c353..ef7e4a13a5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -876,12 +876,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hex" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023b39be39e3a2da62a94feb433e91e8bcd37676fbc8bea371daf52b7a769a3e" - [[package]] name = "hkdf" version = "0.8.0" @@ -1407,7 +1401,6 @@ dependencies = [ "directory-client", "dotenv", "futures 0.3.1", - "hex", "hmac", "log", "pretty_env_logger", diff --git a/sfw-provider/Cargo.toml b/sfw-provider/Cargo.toml index 8fccc112323..f590ece1878 100644 --- a/sfw-provider/Cargo.toml +++ b/sfw-provider/Cargo.toml @@ -12,7 +12,6 @@ bs58 = "0.3.0" clap = "2.33.0" curve25519-dalek = "1.2.3" dotenv = "0.15.0" -hex = "0.4.0" futures = "0.3.1" log = "0.4" pretty_env_logger = "0.3" diff --git a/sfw-provider/src/provider/client_handling/mod.rs b/sfw-provider/src/provider/client_handling/mod.rs index 034e946152e..e3b9dcf86ed 100644 --- a/sfw-provider/src/provider/client_handling/mod.rs +++ b/sfw-provider/src/provider/client_handling/mod.rs @@ -148,7 +148,7 @@ impl ClientRequestProcessor { client_address: sphinx::route::DestinationAddressBytes, store_dir: &Path, ) -> io::Result<()> { - let client_dir_name = hex::encode(client_address); + let client_dir_name = bs58::encode(client_address).into_string(); let full_store_dir = store_dir.join(client_dir_name); std::fs::create_dir_all(full_store_dir) } diff --git a/sfw-provider/src/provider/storage/mod.rs b/sfw-provider/src/provider/storage/mod.rs index d19d427b550..73c32a84a3c 100644 --- a/sfw-provider/src/provider/storage/mod.rs +++ b/sfw-provider/src/provider/storage/mod.rs @@ -60,7 +60,7 @@ impl ClientStorage { } pub fn store_processed_data(store_data: StoreData, store_dir: &Path) -> io::Result<()> { - let client_dir_name = hex::encode(store_data.client_address); + let client_dir_name = bs58::encode(store_data.client_address).into_string(); let full_store_dir = store_dir.join(client_dir_name); let full_store_path = full_store_dir.join(ClientStorage::generate_random_file_name()); debug!( @@ -81,7 +81,7 @@ impl ClientStorage { client_address: DestinationAddressBytes, store_dir: &Path, ) -> Result>, StoreError> { - let client_dir_name = hex::encode(client_address); + let client_dir_name = bs58::encode(client_address).into_string(); let full_store_dir = store_dir.join(client_dir_name); trace!("going to lookup: {:?}!", full_store_dir); From c94691d68e4eea12f2313d525dda50de3beedb42 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 27 Jan 2020 11:35:11 +0000 Subject: [PATCH 16/21] nym-client: swapping bs58 for base64 --- nym-client/src/sockets/tcp.rs | 4 +--- nym-client/src/sockets/ws.rs | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/nym-client/src/sockets/tcp.rs b/nym-client/src/sockets/tcp.rs index 69440809d33..2b2b3090701 100644 --- a/nym-client/src/sockets/tcp.rs +++ b/nym-client/src/sockets/tcp.rs @@ -142,9 +142,7 @@ impl ClientRequest { .providers() .iter() .flat_map(|provider| provider.registered_clients.iter()) - .filter_map(|client| { - base64::decode_config(&client.pub_key, base64::URL_SAFE).ok() - }) + .filter_map(|client| bs58::decode(&client.pub_key).into_vec().ok()) .collect(); ServerResponse::GetClients { clients } } diff --git a/nym-client/src/sockets/ws.rs b/nym-client/src/sockets/ws.rs index e2c2267414e..15dedb37c9c 100644 --- a/nym-client/src/sockets/ws.rs +++ b/nym-client/src/sockets/ws.rs @@ -199,7 +199,7 @@ impl ClientRequest { }; } - let address_vec = match base64::decode_config(&recipient_address, base64::URL_SAFE) { + let address_vec = match bs58::decode(&recipient_address).into_vec() { Err(e) => { return ServerResponse::Error { message: e.to_string(), @@ -280,7 +280,7 @@ impl ClientRequest { } async fn handle_own_details(self_address_bytes: DestinationAddressBytes) -> ServerResponse { - let self_address = base64::encode_config(&self_address_bytes, base64::URL_SAFE); + let self_address = bs58::encode(&self_address_bytes).into_string(); ServerResponse::OwnDetails { address: self_address, } From bdda6e2cf59bf4f51b7bba2bd48c2b025d2f2127 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 27 Jan 2020 11:52:44 +0000 Subject: [PATCH 17/21] Removed base64 in favour of base58. --- Cargo.lock | 159 ++++++++++++++++++++---------------------- nym-client/Cargo.toml | 1 - 2 files changed, 74 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef7e4a13a5b..d2857ab45ff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -74,9 +74,9 @@ checksum = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" [[package]] name = "arrayref" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" @@ -119,9 +119,9 @@ checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "backtrace" -version = "0.3.40" +version = "0.3.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" +checksum = "b4b1549d804b6c73f4817df2ba073709e96e426f12987127c48e6745568c350b" dependencies = [ "backtrace-sys", "cfg-if", @@ -256,9 +256,9 @@ dependencies = [ [[package]] name = "bytes" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10004c15deb332055f7a4a208190aed362cf9a7c2f6ab70a305fba50e1105f38" +checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" [[package]] name = "c2-chacha" @@ -340,9 +340,9 @@ dependencies = [ [[package]] name = "colored" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f930f8b286023ed451756fe2527d73484d667adf9e905e9932e81d52996a343a" +checksum = "8815e2ab78f3a59928fc32e141fbeece88320a240e43f47b2fd64ea3a88a5b3d" dependencies = [ "atty", "lazy_static", @@ -351,9 +351,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "cookie" @@ -470,7 +470,7 @@ dependencies = [ "curve25519-dalek", "log", "pretty_env_logger", - "rand 0.7.2", + "rand 0.7.3", "rand_os", ] @@ -863,7 +863,7 @@ dependencies = [ "serde_derive", "sfw-provider-requests", "sphinx", - "tokio 0.2.9", + "tokio 0.2.10", "topology", ] @@ -1001,11 +1001,11 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" +checksum = "0b54058f0a6ff80b6803da8faf8997cde53872b38f4023728f6830b06cd3c0dc" dependencies = [ - "autocfg 0.1.7", + "autocfg 1.0.0", ] [[package]] @@ -1037,15 +1037,15 @@ dependencies = [ [[package]] name = "itoa" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" [[package]] name = "jobserver" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "230ae9adf468173aecd4176c7233bddc84a15871a586c5971ace9a55f881c075" +checksum = "67b06c1b455f1cf4269a8cfc320ab930a810e2375a42af5075eb8a8b36405ce0" dependencies = [ "libc", ] @@ -1146,9 +1146,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" +checksum = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223" [[package]] name = "memoffset" @@ -1255,10 +1255,10 @@ dependencies = [ "addressing", "log", "pretty_env_logger", - "rand 0.7.2", + "rand 0.7.3", "rand_distr", "sphinx", - "tokio 0.2.9", + "tokio 0.2.10", "topology", ] @@ -1275,7 +1275,7 @@ dependencies = [ "lazy_static", "log", "percent-encoding 1.0.1", - "rand 0.7.2", + "rand 0.7.3", "regex", "serde_json", ] @@ -1330,9 +1330,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" +checksum = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" dependencies = [ "hermit-abi", "libc", @@ -1343,7 +1343,6 @@ name = "nym-client" version = "0.3.3" dependencies = [ "addressing", - "base64 0.11.0", "bs58", "built", "clap", @@ -1365,7 +1364,7 @@ dependencies = [ "serde_json", "sfw-provider-requests", "sphinx", - "tokio 0.2.9", + "tokio 0.2.10", "tokio-tungstenite", "topology", "tungstenite", @@ -1386,7 +1385,7 @@ dependencies = [ "log", "pretty_env_logger", "sphinx", - "tokio 0.2.9", + "tokio 0.2.10", ] [[package]] @@ -1404,13 +1403,13 @@ dependencies = [ "hmac", "log", "pretty_env_logger", - "rand 0.7.2", + "rand 0.7.3", "serde", "serde_json", "sfw-provider-requests", "sha2", "sphinx", - "tokio 0.2.9", + "tokio 0.2.10", ] [[package]] @@ -1426,7 +1425,7 @@ dependencies = [ "pretty_env_logger", "serde", "serde_derive", - "tokio 0.2.9", + "tokio 0.2.10", "toml", ] @@ -1530,18 +1529,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b90146c7216e4cb534069fb91366de4ea0ea353105ee45ed297e2d1619e469" +checksum = "75fca1c4ff21f60ca2d37b80d72b63dab823a9d19d3cda3a81d18bc03f0ba8c5" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44ca92f893f0656d3cba8158dd0f2b99b94de256a4a54e870bd6922fcc6c8355" +checksum = "6544cd4e4ecace61075a6ec78074beeef98d58aa9a3d07d053d993b2946a90d6" dependencies = [ "proc-macro2", "quote", @@ -1550,9 +1549,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8822eb8bb72452f038ebf6048efa02c3fe22bf83f76519c9583e47fc194a422" +checksum = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" [[package]] name = "pin-utils" @@ -1602,9 +1601,9 @@ checksum = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" [[package]] name = "proc-macro2" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc" +checksum = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548" dependencies = [ "unicode-xid", ] @@ -1618,7 +1617,7 @@ dependencies = [ "pretty_env_logger", "sfw-provider-requests", "sphinx", - "tokio 0.2.9", + "tokio 0.2.10", ] [[package]] @@ -1670,9 +1669,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ "getrandom", "libc", @@ -1731,7 +1730,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2" dependencies = [ - "rand 0.7.2", + "rand 0.7.3", ] [[package]] @@ -1822,12 +1821,11 @@ checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" [[package]] name = "redox_users" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" +checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" dependencies = [ - "failure", - "rand_os", + "getrandom", "redox_syscall", "rust-argon2", ] @@ -1895,13 +1893,14 @@ dependencies = [ [[package]] name = "rust-argon2" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" +checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" dependencies = [ - "base64 0.10.1", + "base64 0.11.0", "blake2b_simd", - "crossbeam-utils 0.6.6", + "constant_time_eq", + "crossbeam-utils 0.7.0", ] [[package]] @@ -1999,9 +1998,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.44" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7" +checksum = "eab8f15f15d6c41a154c1b128a22f2dfabe350ef53c40953d84e36155c91192b" dependencies = [ "itoa", "ryu", @@ -2110,7 +2109,7 @@ dependencies = [ "hmac", "lioness", "log", - "rand 0.7.2", + "rand 0.7.3", "rand_distr", "rand_os", "sha2", @@ -2154,9 +2153,9 @@ checksum = "7c65d530b10ccaeac294f349038a597e435b18fb456aadd0840a623f83b9e941" [[package]] name = "syn" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8" +checksum = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5" dependencies = [ "proc-macro2", "quote", @@ -2183,7 +2182,7 @@ checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ "cfg-if", "libc", - "rand 0.7.2", + "rand 0.7.3", "redox_syscall", "remove_dir_all", "winapi 0.3.8", @@ -2191,11 +2190,11 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" +checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" dependencies = [ - "wincolor", + "winapi-util", ] [[package]] @@ -2209,9 +2208,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ddf1ad580c7e3d1efff877d972bcc93f995556b9087a5a259630985c88ceab" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ "lazy_static", ] @@ -2248,11 +2247,11 @@ dependencies = [ [[package]] name = "tokio" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffa2fdcfa937b20cb3c822a635ceecd5fc1a27a6a474527e5516aa24b8c8820a" +checksum = "c1fc73332507b971a5010664991a441b5ee0de92017f5a0e8b00fd684573045b" dependencies = [ - "bytes 0.5.3", + "bytes 0.5.4", "fnv", "futures-core", "iovec", @@ -2402,15 +2401,15 @@ dependencies = [ "futures 0.3.1", "log", "pin-project", - "tokio 0.2.9", + "tokio 0.2.10", "tungstenite", ] [[package]] name = "toml" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" +checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" dependencies = [ "serde", ] @@ -2424,7 +2423,7 @@ dependencies = [ "itertools", "log", "pretty_env_logger", - "rand 0.7.2", + "rand 0.7.3", "serde", "sphinx", "version-checker", @@ -2459,7 +2458,7 @@ dependencies = [ "input_buffer", "log", "native-tls", - "rand 0.7.2", + "rand 0.7.3", "sha-1", "url 2.1.1", "utf-8", @@ -2491,9 +2490,9 @@ dependencies = [ [[package]] name = "unicode-normalization" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf" +checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" dependencies = [ "smallvec 1.1.0", ] @@ -2633,9 +2632,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" +checksum = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80" dependencies = [ "winapi 0.3.8", ] @@ -2646,16 +2645,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "wincolor" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" -dependencies = [ - "winapi 0.3.8", - "winapi-util", -] - [[package]] name = "winreg" version = "0.6.2" diff --git a/nym-client/Cargo.toml b/nym-client/Cargo.toml index 7f31d211112..6b614006597 100644 --- a/nym-client/Cargo.toml +++ b/nym-client/Cargo.toml @@ -12,7 +12,6 @@ name = "nym_client" path = "src/lib.rs" [dependencies] -base64 = "0.11.0" bs58 = "0.3.0" clap = "2.33.0" curve25519-dalek = "1.2.3" From 416e1f19e0a5d3874d9bd1d04bcaea9816858820 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 27 Jan 2020 12:09:39 +0000 Subject: [PATCH 18/21] cargo: updating sphinx to latest pinned version --- Cargo.lock | 4 ++-- common/clients/mix-client/Cargo.toml | 2 +- common/clients/provider-client/Cargo.toml | 2 +- common/topology/Cargo.toml | 2 +- mixnode/Cargo.toml | 2 +- nym-client/Cargo.toml | 2 +- sfw-provider/sfw-provider-requests/Cargo.toml | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d2857ab45ff..c7566bb6e6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2096,12 +2096,12 @@ dependencies = [ [[package]] name = "sphinx" version = "0.1.0" -source = "git+https://github.com/nymtech/sphinx?rev=c3ba1447d61d6eb900fcdea0c20b3070a22bf11a#c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" +source = "git+https://github.com/nymtech/sphinx?rev=8424f4b0933b4a7f64ae828b2edefc5ba43a9e79#8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" dependencies = [ "aes-ctr", "arrayref", - "base64 0.11.0", "blake2", + "bs58", "byteorder", "chacha", "curve25519-dalek", diff --git a/common/clients/mix-client/Cargo.toml b/common/clients/mix-client/Cargo.toml index dcd16d33d5d..ae7091c62cd 100644 --- a/common/clients/mix-client/Cargo.toml +++ b/common/clients/mix-client/Cargo.toml @@ -18,6 +18,6 @@ addressing = {path = "../../addressing"} topology = {path = "../../topology"} ## will be moved to proper dependencies once released -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } # sphinx = { path = "../../../../sphinx"} diff --git a/common/clients/provider-client/Cargo.toml b/common/clients/provider-client/Cargo.toml index 1c1d87b7b11..786b3c2a29c 100644 --- a/common/clients/provider-client/Cargo.toml +++ b/common/clients/provider-client/Cargo.toml @@ -16,4 +16,4 @@ tokio = { version = "0.2", features = ["full"] } sfw-provider-requests = { path = "../../../sfw-provider/sfw-provider-requests" } ## will be moved to proper dependencies once released -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } diff --git a/common/topology/Cargo.toml b/common/topology/Cargo.toml index d7d1b455017..c3c23e733de 100644 --- a/common/topology/Cargo.toml +++ b/common/topology/Cargo.toml @@ -19,5 +19,5 @@ addressing = {path = "../addressing"} version-checker = {path = "../version-checker" } ## will be moved to proper dependencies once released -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } # sphinx = { path = "../../../sphinx"} diff --git a/mixnode/Cargo.toml b/mixnode/Cargo.toml index e7e7282f92a..23c9e7324f0 100644 --- a/mixnode/Cargo.toml +++ b/mixnode/Cargo.toml @@ -22,7 +22,7 @@ addressing = {path = "../common/addressing" } directory-client = { path = "../common/clients/directory-client" } ## will be moved to proper dependencies once released -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } [build-dependencies] built = "0.3.2" diff --git a/nym-client/Cargo.toml b/nym-client/Cargo.toml index 6b614006597..52f5cb89da9 100644 --- a/nym-client/Cargo.toml +++ b/nym-client/Cargo.toml @@ -39,7 +39,7 @@ sfw-provider-requests = { path = "../sfw-provider/sfw-provider-requests" } topology = {path = "../common/topology" } ## will be moved to proper dependencies once released -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } # sphinx = { path = "../../sphinx"} # putting this explicitly below everything and most likely, the next time we look into it, it will already have a proper release diff --git a/sfw-provider/sfw-provider-requests/Cargo.toml b/sfw-provider/sfw-provider-requests/Cargo.toml index 9b207791e38..12a8343bba4 100644 --- a/sfw-provider/sfw-provider-requests/Cargo.toml +++ b/sfw-provider/sfw-provider-requests/Cargo.toml @@ -7,4 +7,4 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } From b009eb0a4d1fc064dfffa7a129c43473424e5429 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 27 Jan 2020 12:09:50 +0000 Subject: [PATCH 19/21] ibid --- common/healthcheck/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/healthcheck/Cargo.toml b/common/healthcheck/Cargo.toml index aaacb88d660..6e61e177076 100644 --- a/common/healthcheck/Cargo.toml +++ b/common/healthcheck/Cargo.toml @@ -25,7 +25,7 @@ sfw-provider-requests = { path = "../../sfw-provider/sfw-provider-requests" } topology = {path = "../topology" } ## will be moved to proper dependencies once released -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } # sphinx = { path = "../../../sphinx"} [dev-dependencies] From 1ab4e3efeb72ea23175658ccd3f3492e079f7e3f Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 27 Jan 2020 12:09:57 +0000 Subject: [PATCH 20/21] ibid --- sfw-provider/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sfw-provider/Cargo.toml b/sfw-provider/Cargo.toml index f590ece1878..3d7e39f7b5b 100644 --- a/sfw-provider/Cargo.toml +++ b/sfw-provider/Cargo.toml @@ -28,7 +28,7 @@ directory-client = { path = "../common/clients/directory-client" } sfw-provider-requests = { path = "./sfw-provider-requests" } ## will be moved to proper dependencies once released -sphinx = { git = "https://github.com/nymtech/sphinx", rev="c3ba1447d61d6eb900fcdea0c20b3070a22bf11a" } +sphinx = { git = "https://github.com/nymtech/sphinx", rev="8424f4b0933b4a7f64ae828b2edefc5ba43a9e79" } [build-dependencies] built = "0.3.2" From a55b87809e4be139c166087150f063e4babb56d5 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 27 Jan 2020 12:10:18 +0000 Subject: [PATCH 21/21] encoding: updating all remaining usages of base64 to base58 --- common/crypto/src/identity/mod.rs | 4 ++-- common/healthcheck/src/result.rs | 4 ++-- common/healthcheck/src/score.rs | 6 +++--- nym-client/src/commands/tcpsocket.rs | 2 +- nym-client/src/commands/websocket.rs | 2 +- sfw-provider/src/provider/presence.rs | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/common/crypto/src/identity/mod.rs b/common/crypto/src/identity/mod.rs index 2a580547bfe..3a2253813b4 100644 --- a/common/crypto/src/identity/mod.rs +++ b/common/crypto/src/identity/mod.rs @@ -100,12 +100,12 @@ impl PemStorable for DummyMixIdentityPublicKey { } impl DummyMixIdentityPublicKey { - pub fn to_b64_string(&self) -> String { + pub fn to_base58_string(&self) -> String { bs58::encode(&self.to_bytes()).into_string() } #[allow(dead_code)] - fn from_b64_string(val: String) -> Self { + fn from_base58_string(val: String) -> Self { Self::from_bytes(&bs58::decode(&val).into_vec().unwrap()) } } diff --git a/common/healthcheck/src/result.rs b/common/healthcheck/src/result.rs index de70873e38d..1b0121f5fbf 100644 --- a/common/healthcheck/src/result.rs +++ b/common/healthcheck/src/result.rs @@ -61,7 +61,7 @@ impl HealthCheckResult { .mix_nodes() .into_iter() .filter(|node| { - match self.node_score(NodeAddressBytes::from_b64_string(node.pub_key.clone())) { + match self.node_score(NodeAddressBytes::from_base58_string(node.pub_key.clone())) { None => { error!("Unknown node in topology - {:?}", node); false @@ -75,7 +75,7 @@ impl HealthCheckResult { .providers() .into_iter() .filter(|node| { - match self.node_score(NodeAddressBytes::from_b64_string(node.pub_key.clone())) { + match self.node_score(NodeAddressBytes::from_base58_string(node.pub_key.clone())) { None => { error!("Unknown node in topology - {:?}", node); false diff --git a/common/healthcheck/src/score.rs b/common/healthcheck/src/score.rs index 4d29e8f5b6e..7262d4ee0de 100644 --- a/common/healthcheck/src/score.rs +++ b/common/healthcheck/src/score.rs @@ -95,7 +95,7 @@ impl NodeScore { pub(crate) fn from_mixnode(node: mix::Node) -> Self { NodeScore { typ: NodeType::Mix, - pub_key: NodeAddressBytes::from_b64_string(node.pub_key), + pub_key: NodeAddressBytes::from_base58_string(node.pub_key), addresses: vec![node.host], version: node.version, layer: format!("layer {}", node.layer), @@ -107,7 +107,7 @@ impl NodeScore { pub(crate) fn from_provider(node: provider::Node) -> Self { NodeScore { typ: NodeType::MixProvider, - pub_key: NodeAddressBytes::from_b64_string(node.pub_key), + pub_key: NodeAddressBytes::from_base58_string(node.pub_key), addresses: vec![node.mixnet_listener, node.client_listener], version: node.version, layer: format!("provider"), @@ -149,7 +149,7 @@ impl std::fmt::Display for NodeScore { return Err(std::fmt::Error); } }; - let stringified_key = self.pub_key.to_b64_string(); + let stringified_key = self.pub_key.to_base58_string(); write!( f, "({})\t{}/{}\t({}%)\t|| {}\tv{} <{}> - {}", diff --git a/nym-client/src/commands/tcpsocket.rs b/nym-client/src/commands/tcpsocket.rs index 87901f55437..a050e78832e 100644 --- a/nym-client/src/commands/tcpsocket.rs +++ b/nym-client/src/commands/tcpsocket.rs @@ -32,7 +32,7 @@ pub fn execute(matches: &ArgMatches) { .unwrap(); // TODO: reading auth_token from disk (if exists); - println!("Public key: {}", keypair.public_key.to_b64_string()); + println!("Public key: {}", keypair.public_key.to_base58_string()); let mut temporary_address = [0u8; 32]; let public_key_bytes = keypair.public_key().to_bytes(); diff --git a/nym-client/src/commands/websocket.rs b/nym-client/src/commands/websocket.rs index 5359c10871f..82437514a20 100644 --- a/nym-client/src/commands/websocket.rs +++ b/nym-client/src/commands/websocket.rs @@ -33,7 +33,7 @@ pub fn execute(matches: &ArgMatches) { // TODO: reading auth_token from disk (if exists); - println!("Public key: {}", keypair.public_key.to_b64_string()); + println!("Public key: {}", keypair.public_key.to_base58_string()); let mut temporary_address = [0u8; 32]; let public_key_bytes = keypair.public_key().to_bytes(); diff --git a/sfw-provider/src/provider/presence.rs b/sfw-provider/src/provider/presence.rs index d2ec3c19701..adfcebaddcf 100644 --- a/sfw-provider/src/provider/presence.rs +++ b/sfw-provider/src/provider/presence.rs @@ -34,7 +34,7 @@ impl Notifier { net_client, client_listener: client_listener.to_string(), mixnet_listener: mixnet_listener.to_string(), - pub_key: pub_key.to_b64_string(), + pub_key: pub_key.to_base58_string(), client_ledger, } }