From 32643ad085a13a783edab6f9b86129e1828046e7 Mon Sep 17 00:00:00 2001 From: cscherr Date: Tue, 22 Jul 2025 13:44:16 +0200 Subject: [PATCH] refactor(algc): understand digest memory layout better --- crates/algorithms/algorithms-c/src/hash/hash.c | 8 ++++++++ crates/algorithms/algorithms-c/src/hash/hash.h | 2 ++ crates/algorithms/algorithms-c/test/hash/test_sha2.c | 8 +++++--- crates/algorithms/src/bin/sha256sum.rs | 6 +----- crates/algorithms/src/hash/mod.rs | 4 ++-- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/crates/algorithms/algorithms-c/src/hash/hash.c b/crates/algorithms/algorithms-c/src/hash/hash.c index cf5b101..6ea8a83 100755 --- a/crates/algorithms/algorithms-c/src/hash/hash.c +++ b/crates/algorithms/algorithms-c/src/hash/hash.c @@ -1,2 +1,10 @@ #include "hash.h" +#include + +void print_digest(const SHA2Digest digest) { + for (size_t i = 0; i < SHA2_256_HashParts; i++) { + fprintf(stderr, "%08x", digest[i]); + } + fprintf(stderr, "\n"); +} diff --git a/crates/algorithms/algorithms-c/src/hash/hash.h b/crates/algorithms/algorithms-c/src/hash/hash.h index 5e1478c..184a4ad 100755 --- a/crates/algorithms/algorithms-c/src/hash/hash.h +++ b/crates/algorithms/algorithms-c/src/hash/hash.h @@ -3,4 +3,6 @@ #include "sha2.h" +extern void print_digest(const SHA2Digest); + #endif // HASH_H diff --git a/crates/algorithms/algorithms-c/test/hash/test_sha2.c b/crates/algorithms/algorithms-c/test/hash/test_sha2.c index 91ca198..ff77a93 100644 --- a/crates/algorithms/algorithms-c/test/hash/test_sha2.c +++ b/crates/algorithms/algorithms-c/test/hash/test_sha2.c @@ -1,3 +1,4 @@ +#include "hash.h" #include "sha2.h" #include "trace.h" #include "unity.h" @@ -44,11 +45,12 @@ void test_sha2_check(void) { // NOTE: If it segfaults here, then the sha2_oneshot function is at fault // anyways!!!!!!!!!!!! TRACELN("Hash should be:"); - dump_data(test_values[i][1], SHA2_256_HashBytes); + print_digest(test_values[i][1]); // idk how to fix this warning TRACELN("Hash is:"); - dump_data((uint8_t *)digest, SHA2_256_HashBytes); + print_digest(digest); - TEST_ASSERT_EQUAL_MEMORY(test_values[i][1], digest, SHA2_256_HashBytes); + TEST_ASSERT_EQUAL_HEX32_ARRAY(test_values[i][1], digest, + SHA2_256_HashParts); } } diff --git a/crates/algorithms/src/bin/sha256sum.rs b/crates/algorithms/src/bin/sha256sum.rs index 68f6298..036a9fc 100644 --- a/crates/algorithms/src/bin/sha256sum.rs +++ b/crates/algorithms/src/bin/sha256sum.rs @@ -14,11 +14,7 @@ fn main() { } else { algorithms::hash::sha2_256_oneshot(raw_in).expect("could not hash your input data") }; - println!("{}", format_digest(&bytes(&hash))); -} - -fn bytes(data: &[u32]) -> Vec { - data.iter().flat_map(|x| x.to_ne_bytes()).collect() + println!("{}", format_digest(&hash)); } fn usage(call: &str, code: i32) -> ! { diff --git a/crates/algorithms/src/hash/mod.rs b/crates/algorithms/src/hash/mod.rs index 4c8de95..79169ca 100644 --- a/crates/algorithms/src/hash/mod.rs +++ b/crates/algorithms/src/hash/mod.rs @@ -6,10 +6,10 @@ pub use sha2::*; pub const HASH_EXAMPLE_DATA: &[u8] = b"lalilolela"; #[cfg(feature = "std")] -pub fn format_digest(digest: &[u8]) -> String { +pub fn format_digest(digest: &[u32]) -> String { digest .iter() - .map(|b| format!("{b:02x}")) + .map(|b| format!("{b:08x}")) .collect::() }