verso/library/hashing.rs
1use sha2::{Digest, Sha256};
2use std::io::Read;
3use std::path::Path;
4
5pub fn sha256_file(path: &Path) -> anyhow::Result<String> {
6 let mut file = std::fs::File::open(path)?;
7 let mut hasher = Sha256::new();
8 let mut buf = [0u8; 64 * 1024];
9 loop {
10 let n = file.read(&mut buf)?;
11 if n == 0 {
12 break;
13 }
14 hasher.update(&buf[..n]);
15 }
16 Ok(hex::encode(hasher.finalize()))
17}