diff --git a/sfw-provider/Cargo.toml b/sfw-provider/Cargo.toml index aabea2e8fb..70e0385476 100644 --- a/sfw-provider/Cargo.toml +++ b/sfw-provider/Cargo.toml @@ -21,8 +21,8 @@ serde_json = "1.0.44" hmac = "0.7.1" ## internal +crypto = {path = "../common/crypto"} directory-client = { path = "../clients/directory-client" } -nym-client = { path = "../clients/nym-client" } sfw-provider-requests = { path = "./sfw-provider-requests" } ## will be moved to proper dependencies once released diff --git a/sfw-provider/src/provider/client_handling/mod.rs b/sfw-provider/src/provider/client_handling/mod.rs index 13289068bc..a9cff24ffa 100644 --- a/sfw-provider/src/provider/client_handling/mod.rs +++ b/sfw-provider/src/provider/client_handling/mod.rs @@ -1,5 +1,6 @@ use crate::provider::storage::{ClientStorage, StoreError}; use crate::provider::ClientLedger; +use crypto::identity::{DummyMixIdentityPrivateKey, MixnetIdentityPrivateKey}; use curve25519_dalek::scalar::Scalar; use futures::lock::Mutex as FMutex; use hmac::{Hmac, Mac}; @@ -53,14 +54,14 @@ impl From for ClientProcessingError { pub(crate) struct ClientProcessingData { store_dir: PathBuf, registered_clients_ledger: Arc>, - secret_key: Scalar, + secret_key: DummyMixIdentityPrivateKey, } impl ClientProcessingData { pub(crate) fn new( store_dir: PathBuf, registered_clients_ledger: Arc>, - secret_key: Scalar, + secret_key: DummyMixIdentityPrivateKey, ) -> Self { ClientProcessingData { store_dir, @@ -150,7 +151,7 @@ impl ClientRequestProcessor { std::fs::create_dir_all(full_store_dir) } - fn generate_new_auth_token(data: Vec, key: Scalar) -> AuthToken { + fn generate_new_auth_token(data: Vec, key: DummyMixIdentityPrivateKey) -> AuthToken { let mut auth_token_raw = HmacSha256::new_varkey(&key.to_bytes()).expect("HMAC can take key of any size"); auth_token_raw.input(&data); @@ -245,7 +246,7 @@ mod generating_new_auth_token { fn for_the_same_input_generates_the_same_auth_token() { let data1 = vec![1u8; 55]; let data2 = vec![1u8; 55]; - let key = Scalar::from_bytes_mod_order([1u8; 32]); + let key = DummyMixIdentityPrivateKey::from_bytes(&[1u8; 32]); let token1 = ClientRequestProcessor::generate_new_auth_token(data1, key); let token2 = ClientRequestProcessor::generate_new_auth_token(data2, key); assert_eq!(token1, token2); @@ -255,14 +256,14 @@ mod generating_new_auth_token { fn for_different_inputs_generates_different_auth_tokens() { let data1 = vec![1u8; 55]; let data2 = vec![2u8; 55]; - let key = Scalar::from_bytes_mod_order([1u8; 32]); + let key = DummyMixIdentityPrivateKey::from_bytes(&[1u8; 32]); let token1 = ClientRequestProcessor::generate_new_auth_token(data1, key); let token2 = ClientRequestProcessor::generate_new_auth_token(data2, key); assert_ne!(token1, token2); let data1 = vec![1u8; 50]; let data2 = vec![2u8; 55]; - let key = Scalar::from_bytes_mod_order([1u8; 32]); + let key = DummyMixIdentityPrivateKey::from_bytes(&[1u8; 32]); let token1 = ClientRequestProcessor::generate_new_auth_token(data1, key); let token2 = ClientRequestProcessor::generate_new_auth_token(data2, key); assert_ne!(token1, token2); diff --git a/sfw-provider/src/provider/mix_handling/mod.rs b/sfw-provider/src/provider/mix_handling/mod.rs index 23d46c2d86..de7813f716 100644 --- a/sfw-provider/src/provider/mix_handling/mod.rs +++ b/sfw-provider/src/provider/mix_handling/mod.rs @@ -1,4 +1,5 @@ use crate::provider::storage::StoreData; +use crypto::identity::DummyMixIdentityPrivateKey; use curve25519_dalek::scalar::Scalar; use sphinx::{ProcessedPacket, SphinxPacket}; use std::path::PathBuf; @@ -35,12 +36,12 @@ impl From for MixProcessingError { // ProcessingData defines all data required to correctly unwrap sphinx packets #[derive(Debug, Clone)] pub(crate) struct MixProcessingData { - secret_key: Scalar, + secret_key: DummyMixIdentityPrivateKey, pub(crate) store_dir: PathBuf, } impl MixProcessingData { - pub(crate) fn new(secret_key: Scalar, store_dir: PathBuf) -> Self { + pub(crate) fn new(secret_key: DummyMixIdentityPrivateKey, store_dir: PathBuf) -> Self { MixProcessingData { secret_key, store_dir, @@ -62,7 +63,7 @@ impl MixPacketProcessor { let packet = SphinxPacket::from_bytes(packet_data.to_vec())?; let read_processing_data = processing_data.read().unwrap(); let (client_address, client_surb_id, payload) = - match packet.process(read_processing_data.secret_key) { + match packet.process(read_processing_data.secret_key.as_scalar()) { ProcessedPacket::ProcessedPacketFinalHop(client_address, surb_id, payload) => { (client_address, surb_id, payload) }