From 4a241bb59a71153952e7fa287e58e41bca0b705a Mon Sep 17 00:00:00 2001 From: aniampio Date: Tue, 17 Dec 2019 12:28:38 +0100 Subject: [PATCH] Move AuthToken into requests --- sfw-provider-requests/src/requests.rs | 18 +++++++++++++++--- src/provider/client_handling/mod.rs | 8 +------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/sfw-provider-requests/src/requests.rs b/sfw-provider-requests/src/requests.rs index ed5833b1b0..63a79a0311 100644 --- a/sfw-provider-requests/src/requests.rs +++ b/sfw-provider-requests/src/requests.rs @@ -48,15 +48,22 @@ where fn from_bytes(bytes: &[u8]) -> Result; } +#[derive(Debug)] +pub struct AuthToken { + pub value : Vec +} + #[derive(Debug)] pub struct PullRequest { // TODO: public keys, signatures, tokens, etc. basically some kind of authentication bs + pub auth_token: AuthToken, pub destination_address: sphinx::route::DestinationAddressBytes, } impl PullRequest { - pub fn new(destination_address: sphinx::route::DestinationAddressBytes) -> Self { + pub fn new(destination_address: sphinx::route::DestinationAddressBytes, auth_token: AuthToken) -> Self { PullRequest { + auth_token, destination_address, } } @@ -89,7 +96,10 @@ impl ProviderRequest for PullRequest { let mut destination_address = [0u8; 32]; destination_address.copy_from_slice(&bytes[2..]); + let auth_token = bytes[32..].to_vec(); + Ok(PullRequest { + auth_token: AuthToken{value: auth_token}, destination_address, }) } @@ -128,7 +138,8 @@ mod creating_pull_request { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, ]; - let pull_request = PullRequest::new(address); + let auth_token = AuthToken {value: vec![1u8; 10]}; + let pull_request = PullRequest::new(address, auth_token); let bytes = pull_request.to_bytes(); let recovered = PullRequest::from_bytes(&bytes).unwrap(); @@ -141,7 +152,8 @@ mod creating_pull_request { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, ]; - let pull_request = PullRequest::new(address); + let auth_token = AuthToken {value: vec![1u8; 10]}; + let pull_request = PullRequest::new(address, auth_token); let bytes = pull_request.to_bytes(); let recovered = ProviderRequests::from_bytes(&bytes).unwrap(); diff --git a/src/provider/client_handling/mod.rs b/src/provider/client_handling/mod.rs index 86b75e1ed1..32729e6d11 100644 --- a/src/provider/client_handling/mod.rs +++ b/src/provider/client_handling/mod.rs @@ -1,5 +1,5 @@ use crate::provider::storage::{ClientStorage, StoreError}; -use sfw_provider_requests::requests::{ProviderRequestError, ProviderRequests, PullRequest, RegisterRequest, ProviderRequest}; +use sfw_provider_requests::requests::{ProviderRequestError, ProviderRequests, PullRequest, RegisterRequest, ProviderRequest, AuthToken}; use sfw_provider_requests::responses::{ProviderResponse, PullResponse, RegisterResponse}; use std::path::{Path, PathBuf}; use std::sync::{Arc, RwLock}; @@ -18,10 +18,6 @@ pub enum ClientProcessingError { InvalidRequest, } -struct AuthToken { - value : Vec -} - impl From for ClientProcessingError { fn from(_: ProviderRequestError) -> Self { use ClientProcessingError::*; @@ -92,10 +88,8 @@ impl ClientRequestProcessor { println!("Processing register new client request!"); let auth_token = ClientRequestProcessor::generate_new_auth_token(req.destination_address.to_vec()); registered_client_ledger.insert(auth_token.value.clone(), req.destination_address.to_vec()); - ClientRequestProcessor::create_storage_dir(req.destination_address, store_dir); Ok(RegisterResponse::new(auth_token.value)) - } fn create_storage_dir(client_address : sphinx::route::DestinationAddressBytes, store_dir: &Path) -> io::Result<()>{