From eb63e40483d1e082da564074577fe538d3de07b3 Mon Sep 17 00:00:00 2001 From: none Date: Tue, 30 May 2023 13:51:58 +0200 Subject: [PATCH] add final hash to rust server --- rust/server/Cargo.lock | 2 +- rust/server/Cargo.toml | 2 +- rust/server/src/main.rs | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/rust/server/Cargo.lock b/rust/server/Cargo.lock index 0d299a8..3730475 100644 --- a/rust/server/Cargo.lock +++ b/rust/server/Cargo.lock @@ -81,7 +81,7 @@ dependencies = [ ] [[package]] -name = "itransfer_client" +name = "itransfer_server" version = "0.1.0" dependencies = [ "bincode", diff --git a/rust/server/Cargo.toml b/rust/server/Cargo.toml index a7dca21..05b545e 100644 --- a/rust/server/Cargo.toml +++ b/rust/server/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "itransfer_client" +name = "itransfer_server" version = "0.1.0" edition = "2021" diff --git a/rust/server/src/main.rs b/rust/server/src/main.rs index 2ff654f..a788bd0 100644 --- a/rust/server/src/main.rs +++ b/rust/server/src/main.rs @@ -74,9 +74,7 @@ fn main() { println!("Received file request"); - let request = "files/".to_string() + req; - - let file_result = std::fs::File::open(request); + let file_result = std::fs::File::open("files/".to_string() + req); if file_result.is_err() { println!("File not found"); @@ -100,6 +98,8 @@ fn main() { socket.send_to(bincode::serialize(&packet_information).unwrap().as_slice(), remote_addr).expect("Failed to send packet information"); + let mut sha512_hasher = Sha512::new(); + //read file chunk by chunk while let Ok(bytes_read) = file.read(&mut file_buffer) { @@ -120,7 +120,16 @@ fn main() { let packet_bytes = bincode::serialize(&packet).unwrap(); socket.send_to(&packet_bytes, remote_addr).expect("Failed to send packet"); packet_number += 1; + + sha512_hasher.update(&file_buffer[..bytes_read]); } + + let result = sha512_hasher.finalize(); + //add 1 byte of padding to result + let mut result_bytes = [0u8; 65]; + result_bytes[..64].copy_from_slice(&result[..64]); + + socket.send_to(&result_bytes, remote_addr).expect("Failed to send file hash"); } } }