autopulse_utils/
checksum.rs

1use 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    Ok(format!("{:x}", hasher.finalize()))
23}