hash_utils 0.1.0

A collection of hash functions
Documentation
use skein::consts::{U32, U64, U128};
use super::Hasher;

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

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

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

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

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

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

pub struct Skein1024;
impl Hasher for Skein1024 {
    fn hash_name(&self) -> &'static str {
        "Skein-1024"
    }

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

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