From aa22a78630461fb940302d8167fc792f1a98933c Mon Sep 17 00:00:00 2001 From: David Senk Date: Sun, 10 Aug 2025 15:13:38 -0400 Subject: [PATCH] templating... --- src/hashes.rs | 11 ++++++++++- src/hashes/blake256.rs | 0 src/hashes/crc32.rs | 0 src/hashes/md5.rs | 29 +++++++++++++++++++++++++++++ src/hashes/sha1.rs | 0 src/hashes/sha256.rs | 0 src/hashes/sha3_256.rs | 0 7 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/hashes/blake256.rs create mode 100644 src/hashes/crc32.rs create mode 100644 src/hashes/md5.rs create mode 100644 src/hashes/sha1.rs create mode 100644 src/hashes/sha256.rs create mode 100644 src/hashes/sha3_256.rs diff --git a/src/hashes.rs b/src/hashes.rs index 8eec923..257af8b 100644 --- a/src/hashes.rs +++ b/src/hashes.rs @@ -1,13 +1,20 @@ +mod blake256; +mod crc32; +mod md5; mod null_hash; +mod sha1; +mod sha256; +mod sha3_256; use crate::Args; -use md5::digest; use std::sync::Arc; type BITS256 = [u8; 32]; type BITS160 = [u8; 20]; +type BITS128 = [u8; 16]; + type BITS32 = u32; type ArcU8 = Arc<[u8]>; @@ -29,6 +36,7 @@ pub enum HashReturn { SHA3_256(BITS256), BLAKE256(BITS256), SHA1(BITS160), + MD5(BITS128), RAW(ArcU8), } @@ -40,6 +48,7 @@ impl HashReturn { HashReturn::SHA3_256(inner) => Arc::new(inner), HashReturn::BLAKE256(inner) => Arc::new(inner), HashReturn::SHA1(inner) => Arc::new(inner), + HashReturn::MD5(inner) => Arc::new(inner), HashReturn::RAW(inner) => inner, } } diff --git a/src/hashes/blake256.rs b/src/hashes/blake256.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/hashes/crc32.rs b/src/hashes/crc32.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/hashes/md5.rs b/src/hashes/md5.rs new file mode 100644 index 0000000..8cdacbf --- /dev/null +++ b/src/hashes/md5.rs @@ -0,0 +1,29 @@ +use super::*; + +pub struct MD5 { + hash: BITS128, +} + +impl Hasher for MD5 { + fn new() -> Self { + MD5 { hash: [0; 16] } + } + + fn digest(&mut self, bytes: impl AsRef<[u8]>) { + todo!() + } + + fn complete(self) -> HashReturn { + todo!() + } +} + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_md5_hash() { + todo!(); + } +} diff --git a/src/hashes/sha1.rs b/src/hashes/sha1.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/hashes/sha256.rs b/src/hashes/sha256.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/hashes/sha3_256.rs b/src/hashes/sha3_256.rs new file mode 100644 index 0000000..e69de29