sev_snp_utilities/common/
hash.rs

1use std::fs::File;
2use std::io;
3use std::path::Path;
4use sha2::{Digest, Sha384, Sha256};
5use sha2::digest::Output;
6
7use crate::error::{io, Result};
8
9pub fn sha384(data: impl AsRef<[u8]>) -> Output<Sha384> {
10    let mut hasher = Sha384::new();
11    hasher.update(data);
12    hasher.finalize()
13}
14
15pub fn sha256_file(file_path: &Path) -> Result<Output<Sha256>> {
16    let mut hasher = Sha256::new();
17    let mut file = File::open(file_path)
18        .map_err(|e| io(e, None))?;
19
20    let _ = io::copy(&mut file, &mut hasher)
21        .map_err(|e| io(e, None))?;
22    Ok(hasher.finalize())
23}
24
25pub fn sha256(data: impl AsRef<[u8]>) -> Output<Sha256> {
26    let mut hasher = Sha256::new();
27    hasher.update(data);
28    hasher.finalize()
29}