diff --git a/Cargo.lock b/Cargo.lock index 2a4f9f9bd7..b8dfaf64a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -495,7 +495,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -509,7 +509,7 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -953,7 +953,7 @@ dependencies = [ "hmac 0.12.1", "percent-encoding", "rand 0.8.5", - "sha2 0.10.6", + "sha2 0.10.7", "subtle 2.4.1", "time 0.3.21", "version_check", @@ -1563,9 +1563,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", "crypto-common", @@ -2517,7 +2517,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -3668,7 +3668,7 @@ dependencies = [ "rand 0.7.3", "serde", "serde_json", - "sha2 0.10.6", + "sha2 0.10.7", "sqlx 0.6.3", "tap", "tempfile", @@ -3830,7 +3830,7 @@ dependencies = [ "bs58", "cipher 0.4.4", "ctr 0.9.2", - "digest 0.10.6", + "digest 0.10.7", "ed25519-dalek", "generic-array 0.14.7", "hkdf 0.12.3", @@ -4237,6 +4237,7 @@ dependencies = [ "log", "nym-topology", "pin-project", + "sha2 0.10.7", "snow", "tokio", ] @@ -5223,7 +5224,7 @@ checksum = "745a452f8eb71e39ffd8ee32b3c5f51d03845f99786fa9b68db6ff509c505411" dependencies = [ "once_cell", "pest", - "sha2 0.10.6", + "sha2 0.10.7", ] [[package]] @@ -6471,7 +6472,7 @@ checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -6482,7 +6483,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -6500,13 +6501,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest 0.10.7", ] [[package]] @@ -6630,7 +6631,7 @@ dependencies = [ "curve25519-dalek 4.0.0-rc.1", "rand_core 0.6.4", "rustc_version 0.4.0", - "sha2 0.10.6", + "sha2 0.10.7", "subtle 2.4.1", ] @@ -6769,7 +6770,7 @@ dependencies = [ "paste", "percent-encoding", "rustls 0.19.1", - "sha2 0.10.6", + "sha2 0.10.7", "smallvec", "sqlformat 0.1.8", "sqlx-rt 0.5.13", @@ -6817,7 +6818,7 @@ dependencies = [ "percent-encoding", "rustls 0.20.8", "rustls-pemfile", - "sha2 0.10.6", + "sha2 0.10.7", "smallvec", "sqlformat 0.2.1", "sqlx-rt 0.6.3", @@ -6840,7 +6841,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "sha2 0.10.6", + "sha2 0.10.7", "sqlx-core 0.5.13", "sqlx-rt 0.5.13", "syn 1.0.109", @@ -6859,7 +6860,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "sha2 0.10.6", + "sha2 0.10.7", "sqlx-core 0.6.3", "sqlx-rt 0.6.3", "syn 1.0.109", diff --git a/common/nymnoise/Cargo.toml b/common/nymnoise/Cargo.toml index a730ebe690..8199a1ea16 100644 --- a/common/nymnoise/Cargo.toml +++ b/common/nymnoise/Cargo.toml @@ -10,6 +10,7 @@ futures = "0.3" tokio = { version = "1.24.1", features = ["net","io-util"] } pin-project = "1" log = "0.4.19" +sha2 = "0.10.7" # internal diff --git a/common/nymnoise/src/lib.rs b/common/nymnoise/src/lib.rs index 25a0f2c52d..42c6a2e575 100644 --- a/common/nymnoise/src/lib.rs +++ b/common/nymnoise/src/lib.rs @@ -4,6 +4,7 @@ use log::*; use nym_topology::NymTopology; use pin_project::pin_project; +use sha2::{Digest, Sha256}; use snow::error::Prerequisite; use snow::Builder; use snow::Error as NoiseError; @@ -21,18 +22,7 @@ use tokio::{ const NOISE_HS_PATTERN: &str = "Noise_XKpsk3_25519_AESGCM_SHA256"; -static SECRET: &[u8] = b"i don't care for fidget spinners"; -static PRIV_KEY: &[u8] = &[ - 208, 217, 103, 180, 100, 15, 242, 137, 184, 247, 248, 193, 21, 66, 177, 79, 90, 131, 15, 134, - 145, 4, 45, 37, 215, 253, 227, 172, 113, 73, 97, 125, -]; -static PUB_KEY: &[u8] = &[ - 126, 100, 176, 138, 253, 249, 136, 187, 191, 200, 120, 5, 62, 218, 218, 73, 220, 60, 1, 179, - 49, 92, 253, 43, 91, 109, 18, 6, 88, 235, 123, 78, -]; - /// Wrapper around a TcpStream -//TODO SW : add psk3 to the protocol, requires topology at the receiver #[pin_project] pub struct NoiseStream { #[pin] @@ -138,15 +128,14 @@ pub async fn upgrade_noise_initiator( return Err(Prerequisite::RemotePublicKey.into()); } }; - let _secret = [local_public_key, &remote_pub_key].concat(); - - println!("Remote pub key : {:?}", remote_pub_key); + let secret = [local_public_key, &remote_pub_key].concat(); + let secret_hash = Sha256::digest(secret); let builder = Builder::new(NOISE_HS_PATTERN.parse().unwrap()); //This cannot fail, hardcoded pattern must be correct let mut handshake = builder .local_private_key(local_private_key) .remote_public_key(&remote_pub_key) - .psk(3, SECRET) + .psk(3, &secret_hash) .build_initiator()?; //Actual Handshake @@ -195,13 +184,13 @@ pub async fn upgrade_noise_responder( return Err(Prerequisite::RemotePublicKey.into()); } }; - let _secret = [&remote_pub_key, local_public_key].concat(); - println!("Secret key : {:?}", local_private_key); + let secret = [&remote_pub_key, local_public_key].concat(); + let secret_hash = Sha256::digest(secret); let builder = Builder::new(NOISE_HS_PATTERN.parse().unwrap()); //This cannot fail, hardcoded pattern must be correct let mut handshake = builder .local_private_key(local_private_key) - .psk(3, SECRET) + .psk(3, &secret_hash) .build_responder()?; //Actual Handshake