summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/package/source.rs9
-rw-r--r--src/source/mod.rs2
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();