mod sha1;
mod sha256;
mod sha512;
pub use self::sha1::sha1;
pub use self::sha256::sha256;
pub use self::sha512::sha512;
#[derive(Clone, Copy, Default, PartialEq, Eq)]
pub enum Algorithm {
#[default]
SHA1,
SHA256,
SHA512,
}
impl Algorithm {
pub fn hash_hex(&self, data: &[u8]) -> String {
match self {
Algorithm::SHA1 => crate::encoding::hex::encode(&self::sha1(data)),
Algorithm::SHA256 => crate::encoding::hex::encode(&self::sha256(data)),
Algorithm::SHA512 => crate::encoding::hex::encode(&self::sha512(data)),
}
}
pub fn hash_bytes(&self, data: &[u8]) -> Vec<u8> {
match self {
Algorithm::SHA1 => self::sha1(data).to_vec(),
Algorithm::SHA256 => self::sha256(data).to_vec(),
Algorithm::SHA512 => self::sha512(data).to_vec(),
}
}
}
impl std::fmt::Display for Algorithm {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Algorithm::SHA1 => f.write_str("SHA1"),
Algorithm::SHA256 => f.write_str("SHA256"),
Algorithm::SHA512 => f.write_str("SHA512"),
}
}
}