Same for request handling + removed dependency on entiry nym-client
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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<io::Error> for ClientProcessingError {
|
||||
pub(crate) struct ClientProcessingData {
|
||||
store_dir: PathBuf,
|
||||
registered_clients_ledger: Arc<FMutex<ClientLedger>>,
|
||||
secret_key: Scalar,
|
||||
secret_key: DummyMixIdentityPrivateKey,
|
||||
}
|
||||
|
||||
impl ClientProcessingData {
|
||||
pub(crate) fn new(
|
||||
store_dir: PathBuf,
|
||||
registered_clients_ledger: Arc<FMutex<ClientLedger>>,
|
||||
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<u8>, key: Scalar) -> AuthToken {
|
||||
fn generate_new_auth_token(data: Vec<u8>, 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);
|
||||
|
||||
@@ -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<std::io::Error> 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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user