Loading src/crypto/hash.rs +21 −0 Original line number Diff line number Diff line use libc::c_uint; use std::ptr; use std::io; use ffi; Loading Loading @@ -34,6 +35,13 @@ pub struct Hasher { len: uint, } impl io::Writer for Hasher { fn write(&mut self, buf: &[u8]) -> io::IoResult<()> { self.update(buf); Ok(()) } } impl Hasher { pub fn new(ht: HashType) -> Hasher { ffi::init(); Loading Loading @@ -112,6 +120,12 @@ mod tests { assert!(calced == hashtest.expected_output); } pub fn hash_writer(t: super::HashType, data: &[u8]) -> Vec<u8> { let mut h = super::Hasher::new(t); h.write(data); h.finalize() } // Test vectors from http://www.nsrl.nist.gov/testdata/ #[test] fn test_md5() { Loading Loading @@ -167,4 +181,11 @@ mod tests { hash_test(super::RIPEMD160, test); } } #[test] fn test_writer() { let tv = "rust-openssl".as_bytes(); let ht = super::RIPEMD160; assert!(hash_writer(ht, tv) == super::hash(ht, tv)); } } Loading
src/crypto/hash.rs +21 −0 Original line number Diff line number Diff line use libc::c_uint; use std::ptr; use std::io; use ffi; Loading Loading @@ -34,6 +35,13 @@ pub struct Hasher { len: uint, } impl io::Writer for Hasher { fn write(&mut self, buf: &[u8]) -> io::IoResult<()> { self.update(buf); Ok(()) } } impl Hasher { pub fn new(ht: HashType) -> Hasher { ffi::init(); Loading Loading @@ -112,6 +120,12 @@ mod tests { assert!(calced == hashtest.expected_output); } pub fn hash_writer(t: super::HashType, data: &[u8]) -> Vec<u8> { let mut h = super::Hasher::new(t); h.write(data); h.finalize() } // Test vectors from http://www.nsrl.nist.gov/testdata/ #[test] fn test_md5() { Loading Loading @@ -167,4 +181,11 @@ mod tests { hash_test(super::RIPEMD160, test); } } #[test] fn test_writer() { let tv = "rust-openssl".as_bytes(); let ht = super::RIPEMD160; assert!(hash_writer(ht, tv) == super::hash(ht, tv)); } }