sev_snp_utilities/common/
hash.rs1use 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}