autopulse_utils/
checksum.rs1use sha2::{Digest, Sha256};
2use std::{
3 fs::File,
4 io::{BufReader, Read},
5 path::PathBuf,
6};
7
8pub fn sha256checksum(file_path: &PathBuf) -> anyhow::Result<String> {
9 let file = File::open(file_path)?;
10 let mut reader = BufReader::new(file);
11 let mut hasher = Sha256::new();
12 let mut buffer = [0u8; 8192];
13
14 loop {
15 let bytes_read = reader.read(&mut buffer)?;
16 if bytes_read == 0 {
17 break;
18 }
19 hasher.update(&buffer[..bytes_read]);
20 }
21
22 let hash = hasher.finalize();
23
24 Ok(base16ct::lower::encode_string(&hash))
25}