From 81e193f6a8ca2d6cb01949e69decaab35b943e1c Mon Sep 17 00:00:00 2001 From: "Andrew Phillips (aider)" Date: Mon, 12 May 2025 18:55:51 -0300 Subject: [PATCH] fix: create sha2_digest module for digest engine --- src/digest_engine/sha2_digest.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/digest_engine/sha2_digest.rs diff --git a/src/digest_engine/sha2_digest.rs b/src/digest_engine/sha2_digest.rs new file mode 100644 index 0000000..0aa7259 --- /dev/null +++ b/src/digest_engine/sha2_digest.rs @@ -0,0 +1,31 @@ +use std::io; +use sha2::{Digest, Sha256}; + +#[derive(Debug, Eq, PartialEq, Clone, Default)] +pub struct DigestEngineSha256 { + hasher: Sha256, +} + +impl DigestEngineSha256 { + pub fn new() -> DigestEngineSha256 { + DigestEngineSha256 { hasher: Sha256::new() } + } +} + +use crate::digest_engine::DigestEngine; + +impl DigestEngine for DigestEngineSha256 { + fn create(&self) -> Box { + Box::new(Self::new()) + } + + fn update(&mut self, data: &[u8]) -> io::Result<()> { + self.hasher.update(data); + Ok(()) + } + + fn finalize(&mut self) -> io::Result { + let result = self.hasher.finalize(); + Ok(format!("{:x}", result)) + } +}