1use ring::digest::{Context, Digest};
2
3use crate::HashKind;
4
5#[must_use]
6pub fn get_hash(typ: &str, data: &[u8], hash_kind: HashKind) -> Digest {
7 let digest = match hash_kind {
8 HashKind::Sha1 => &ring::digest::SHA1_FOR_LEGACY_USE_ONLY,
9 HashKind::Sha256 => &ring::digest::SHA256,
10 };
11
12 let mut ctx = Context::new(digest);
13 let hdr = format!("{typ} {}", data.len());
14 ctx.update(hdr.as_bytes());
15 ctx.update(b"\x00");
16 ctx.update(data);
17 ctx.finish()
18}
19
20#[must_use]
21pub fn as_hex(data: &[u8]) -> String {
22 use std::fmt::Write as _;
23
24 data.iter().fold(String::new(), |mut acc, cur| {
25 write!(acc, "{cur:02x}").unwrap();
26 acc
27 })
28}