diff options
Diffstat (limited to 'openssl/src/crypto/hash.rs')
| -rw-r--r-- | openssl/src/crypto/hash.rs | 77 |
1 files changed, 47 insertions, 30 deletions
diff --git a/openssl/src/crypto/hash.rs b/openssl/src/crypto/hash.rs index 801d8ca5..78465851 100644 --- a/openssl/src/crypto/hash.rs +++ b/openssl/src/crypto/hash.rs @@ -14,7 +14,7 @@ pub enum Type { SHA256, SHA384, SHA512, - RIPEMD160 + RIPEMD160, } impl Type { @@ -112,7 +112,12 @@ impl Hasher { }; let md = ty.evp_md(); - let mut h = Hasher { ctx: ctx, md: md, type_: ty, state: Finalized }; + let mut h = Hasher { + ctx: ctx, + md: md, + type_: ty, + state: Finalized, + }; h.init(); h } @@ -121,7 +126,9 @@ impl Hasher { fn init(&mut self) { match self.state { Reset => return, - Updated => { self.finalize(); }, + Updated => { + self.finalize(); + } Finalized => (), } unsafe { @@ -137,8 +144,7 @@ impl Hasher { self.init(); } unsafe { - let r = ffi::EVP_DigestUpdate(self.ctx, data.as_ptr(), - data.len() as c_uint); + let r = ffi::EVP_DigestUpdate(self.ctx, data.as_ptr(), data.len() as c_uint); assert_eq!(r, 1); } self.state = Updated; @@ -190,7 +196,12 @@ impl Clone for Hasher { assert_eq!(r, 1); ctx }; - Hasher { ctx: ctx, md: self.md, type_: self.type_, state: self.state } + Hasher { + ctx: ctx, + md: self.md, + type_: self.type_, + state: self.state, + } } } @@ -233,21 +244,32 @@ mod tests { // Test vectors from http://www.nsrl.nist.gov/testdata/ #[allow(non_upper_case_globals)] - const md5_tests: [(&'static str, &'static str); 13] = [ - ("", "d41d8cd98f00b204e9800998ecf8427e"), - ("7F", "83acb6e67e50e31db6ed341dd2de1595"), - ("EC9C", "0b07f0d4ca797d8ac58874f887cb0b68"), - ("FEE57A", "e0d583171eb06d56198fc0ef22173907"), - ("42F497E0", "7c430f178aefdf1487fee7144e9641e2"), - ("C53B777F1C", "75ef141d64cb37ec423da2d9d440c925"), - ("89D5B576327B", "ebbaf15eb0ed784c6faa9dc32831bf33"), - ("5D4CCE781EB190", "ce175c4b08172019f05e6b5279889f2c"), - ("81901FE94932D7B9", "cd4d2f62b8cdb3a0cf968a735a239281"), - ("C9FFDEE7788EFB4EC9", "e0841a231ab698db30c6c0f3f246c014"), - ("66AC4B7EBA95E53DC10B", "a3b3cea71910d9af56742aa0bb2fe329"), - ("A510CD18F7A56852EB0319", "577e216843dd11573574d3fb209b97d8"), - ("AAED18DBE8938C19ED734A8D", "6f80fb775f27e0a4ce5c2f42fc72c5f1") - ]; + const md5_tests: [(&'static str, &'static str); 13] = [("", + "d41d8cd98f00b204e9800998ecf8427e"), + ("7F", + "83acb6e67e50e31db6ed341dd2de1595"), + ("EC9C", + "0b07f0d4ca797d8ac58874f887cb0b68"), + ("FEE57A", + "e0d583171eb06d56198fc0ef22173907"), + ("42F497E0", + "7c430f178aefdf1487fee7144e9641e2"), + ("C53B777F1C", + "75ef141d64cb37ec423da2d9d440c925"), + ("89D5B576327B", + "ebbaf15eb0ed784c6faa9dc32831bf33"), + ("5D4CCE781EB190", + "ce175c4b08172019f05e6b5279889f2c"), + ("81901FE94932D7B9", + "cd4d2f62b8cdb3a0cf968a735a239281"), + ("C9FFDEE7788EFB4EC9", + "e0841a231ab698db30c6c0f3f246c014"), + ("66AC4B7EBA95E53DC10B", + "a3b3cea71910d9af56742aa0bb2fe329"), + ("A510CD18F7A56852EB0319", + "577e216843dd11573574d3fb209b97d8"), + ("AAED18DBE8938C19ED734A8D", + "6f80fb775f27e0a4ce5c2f42fc72c5f1")]; #[test] fn test_md5() { @@ -305,9 +327,7 @@ mod tests { #[test] fn test_sha1() { - let tests = [ - ("616263", "a9993e364706816aba3e25717850c26c9cd0d89d"), - ]; + let tests = [("616263", "a9993e364706816aba3e25717850c26c9cd0d89d")]; for test in tests.iter() { hash_test(Type::SHA1, test); @@ -316,9 +336,8 @@ mod tests { #[test] fn test_sha256() { - let tests = [ - ("616263", "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") - ]; + let tests = [("616263", + "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad")]; for test in tests.iter() { hash_test(Type::SHA256, test); @@ -327,9 +346,7 @@ mod tests { #[test] fn test_ripemd160() { - let tests = [ - ("616263", "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc") - ]; + let tests = [("616263", "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc")]; for test in tests.iter() { hash_test(Type::RIPEMD160, test); |