pub mod simple_hasher {
type _Byte = u8;
type _Data = Vec<_Byte>;
use sha2::Digest;
pub fn hex_string(data: _Data) -> String {
data
.iter()
.map(|byte| format!("{:x}", byte))
.collect()
}
fn sha<T>(mut hasher: T, data: _Data) -> _Data where T: Digest {
hasher.input(data.as_slice());
hasher
.result()
.to_vec()
}
pub fn sha224(d: _Data) -> _Data {
sha(sha2::Sha224::new(), d)
}
pub fn sha256(d: _Data) -> _Data {
sha(sha2::Sha256::new(), d)
}
pub fn sha384(d: _Data) -> _Data {
sha(sha2::Sha384::new(), d)
}
pub fn sha512(d: _Data) -> _Data {
sha(sha2::Sha512::new(), d)
}
pub fn string_sha224(s: String) -> _Data {
sha224(s.as_bytes().to_vec())
}
pub fn string_sha256(s: String) -> _Data {
sha256(s.as_bytes().to_vec())
}
pub fn string_sha384(s: String) -> _Data {
sha384(s.as_bytes().to_vec())
}
pub fn string_sha512(s: String) -> _Data {
sha512(s.as_bytes().to_vec())
}
}