diff options
-rw-r--r-- | src/package/source.rs | 9 | ||||
-rw-r--r-- | src/source/mod.rs | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/package/source.rs b/src/package/source.rs index 9b5ed4a..8ec3a52 100644 --- a/src/package/source.rs +++ b/src/package/source.rs @@ -1,3 +1,4 @@ +use anyhow::anyhow; use anyhow::Result; use getset::Getters; use serde::Deserialize; @@ -31,9 +32,13 @@ pub struct SourceHash { } impl SourceHash { - pub fn matches_hash_of(&self, buf: &[u8]) -> Result<bool> { + pub fn matches_hash_of(&self, buf: &[u8]) -> Result<()> { let h = self.hashtype.hash_buffer(&buf)?; - Ok(h == self.value) + if h == self.value { + Ok(()) + } else { + Err(anyhow!("Hash mismatch, expected '{}', got '{}'", self.value, h)) + } } #[cfg(test)] diff --git a/src/source/mod.rs b/src/source/mod.rs index 77f7f14..cf96f33 100644 --- a/src/source/mod.rs +++ b/src/source/mod.rs @@ -80,7 +80,7 @@ impl SourceEntry { Ok(()) } - pub async fn verify_hash(&self) -> Result<bool> { + pub async fn verify_hash(&self) -> Result<()> { use tokio::io::AsyncReadExt; let p = self.source_file_path(); |