This commit is contained in:
Simon Wicky
2023-07-25 09:23:51 +02:00
parent dc77e3f962
commit 5d26fefaaa
3 changed files with 28 additions and 37 deletions
Generated
+20 -19
View File
@@ -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",
+1
View File
@@ -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
+7 -18
View File
@@ -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