hash_utils 0.1.0

A collection of hash functions
Documentation
use super::Hasher;

pub struct Groestl224;
impl Hasher for Groestl224 {
    fn hash_name(&self) -> &'static str {
        "Groestl (224bit)"
    }

    fn active_bits(&self) -> &'static u32 {
        &224
    }

    fn hash(&self, data: &[u8]) -> Vec<u8> {
        use ::groestl::Digest;
        let mut hasher = ::groestl::Groestl224::default();
        hasher.update(data);
        hasher.finalize().to_vec()
    }
}

pub struct Groestl256;
impl Hasher for Groestl256 {
    fn hash_name(&self) -> &'static str {
        "Groestl (256bit)"
    }

    fn active_bits(&self) -> &'static u32 {
        &256
    }

    fn hash(&self, data: &[u8]) -> Vec<u8> {
        use ::groestl::Digest;
        let mut hasher = ::groestl::Groestl256::default();
        hasher.update(data);
        hasher.finalize().to_vec()
    }
}

pub struct Groestl384;
impl Hasher for Groestl384 {
    fn hash_name(&self) -> &'static str {
        "Groestl (384bit)"
    }

    fn active_bits(&self) -> &'static u32 {
        &384
    }

    fn hash(&self, data: &[u8]) -> Vec<u8> {
        use ::groestl::Digest;
        let mut hasher = ::groestl::Groestl384::default();
        hasher.update(data);
        hasher.finalize().to_vec()
    }
}

pub struct Groestl512;
impl Hasher for Groestl512 {
    fn hash_name(&self) -> &'static str {
        "Groestl (512bit)"
    }

    fn active_bits(&self) -> &'static u32 {
        &512
    }

    fn hash(&self, data: &[u8]) -> Vec<u8> {
        use ::groestl::Digest;
        let mut hasher = ::groestl::Groestl512::default();
        hasher.update(data);
        hasher.finalize().to_vec()
    }
}