summaryrefslogtreecommitdiff
path: root/openssl/src/hash.rs
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/src/hash.rs')
-rw-r--r--openssl/src/hash.rs83
1 files changed, 34 insertions, 49 deletions
diff --git a/openssl/src/hash.rs b/openssl/src/hash.rs
index bb60ed35..9ceaebbc 100644
--- a/openssl/src/hash.rs
+++ b/openssl/src/hash.rs
@@ -5,7 +5,7 @@ use std::fmt;
use ffi;
#[cfg(ossl110)]
-use ffi::{EVP_MD_CTX_new, EVP_MD_CTX_free};
+use ffi::{EVP_MD_CTX_free, EVP_MD_CTX_new};
#[cfg(any(ossl101, ossl102))]
use ffi::{EVP_MD_CTX_create as EVP_MD_CTX_new, EVP_MD_CTX_destroy as EVP_MD_CTX_free};
@@ -70,7 +70,7 @@ use self::State::*;
/// let data = b"\x42\xF4\x97\xE0";
/// let spec = b"\x7c\x43\x0f\x17\x8a\xef\xdf\x14\x87\xfe\xe7\x14\x4e\x96\x41\xe2";
/// let res = hash(MessageDigest::md5(), data).unwrap();
-/// assert_eq!(res, spec);
+/// assert_eq!(&*res, spec);
/// ```
///
/// Supply the input in chunks:
@@ -84,7 +84,7 @@ use self::State::*;
/// h.update(data[0]).unwrap();
/// h.update(data[1]).unwrap();
/// let res = h.finish().unwrap();
-/// assert_eq!(res, spec);
+/// assert_eq!(&*res, spec);
/// ```
///
/// # Warning
@@ -120,7 +120,7 @@ impl Hasher {
match self.state {
Reset => return Ok(()),
Updated => {
- self.finish2()?;
+ self.finish()?;
}
Finalized => (),
}
@@ -147,15 +147,8 @@ impl Hasher {
Ok(())
}
- #[deprecated(note = "use finish2 instead", since = "0.9.11")]
- pub fn finish(&mut self) -> Result<Vec<u8>, ErrorStack> {
- self.finish2().map(|b| b.to_vec())
- }
-
/// Returns the hash of the data written and resets the hasher.
- ///
- /// Unlike `finish`, this method does not allocate.
- pub fn finish2(&mut self) -> Result<DigestBytes, ErrorStack> {
+ pub fn finish(&mut self) -> Result<DigestBytes, ErrorStack> {
if self.state == Finalized {
self.init()?;
}
@@ -210,7 +203,7 @@ impl Drop for Hasher {
fn drop(&mut self) {
unsafe {
if self.state != Finalized {
- drop(self.finish2());
+ drop(self.finish());
}
EVP_MD_CTX_free(self.ctx);
}
@@ -263,18 +256,11 @@ impl fmt::Debug for DigestBytes {
}
}
-#[deprecated(note = "use hash2 instead", since = "0.9.11")]
-pub fn hash(t: MessageDigest, data: &[u8]) -> Result<Vec<u8>, ErrorStack> {
- hash2(t, data).map(|b| b.to_vec())
-}
-
/// Computes the hash of the `data` with the hash `t`.
-///
-/// Unlike `hash`, this function does not allocate the return value.
-pub fn hash2(t: MessageDigest, data: &[u8]) -> Result<DigestBytes, ErrorStack> {
+pub fn hash(t: MessageDigest, data: &[u8]) -> Result<DigestBytes, ErrorStack> {
let mut h = Hasher::new(t)?;
h.update(data)?;
- h.finish2()
+ h.finish()
}
#[cfg(test)]
@@ -285,37 +271,36 @@ mod tests {
use super::*;
fn hash_test(hashtype: MessageDigest, hashtest: &(&str, &str)) {
- let res = hash2(hashtype, &Vec::from_hex(hashtest.0).unwrap()).unwrap();
+ let res = hash(hashtype, &Vec::from_hex(hashtest.0).unwrap()).unwrap();
assert_eq!(res.to_hex(), hashtest.1);
}
fn hash_recycle_test(h: &mut Hasher, hashtest: &(&str, &str)) {
let _ = h.write_all(&Vec::from_hex(hashtest.0).unwrap()).unwrap();
- let res = h.finish2().unwrap();
+ let res = h.finish().unwrap();
assert_eq!(res.to_hex(), hashtest.1);
}
// 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() {
@@ -337,9 +322,9 @@ mod tests {
let mut h = Hasher::new(MessageDigest::md5()).unwrap();
h.write_all(&Vec::from_hex(md5_tests[6].0).unwrap())
.unwrap();
- h.finish2().unwrap();
- let res = h.finish2().unwrap();
- let null = hash2(MessageDigest::md5(), &[]).unwrap();
+ h.finish().unwrap();
+ let res = h.finish().unwrap();
+ let null = hash(MessageDigest::md5(), &[]).unwrap();
assert_eq!(&*res, &*null);
}
@@ -358,18 +343,18 @@ mod tests {
println!("Clone an updated hasher");
let mut h2 = h1.clone();
h2.write_all(&inp[p..]).unwrap();
- let res = h2.finish2().unwrap();
+ let res = h2.finish().unwrap();
assert_eq!(res.to_hex(), md5_tests[i].1);
}
h1.write_all(&inp[p..]).unwrap();
- let res = h1.finish2().unwrap();
+ let res = h1.finish().unwrap();
assert_eq!(res.to_hex(), md5_tests[i].1);
println!("Clone a finished hasher");
let mut h3 = h1.clone();
h3.write_all(&Vec::from_hex(md5_tests[i + 1].0).unwrap())
.unwrap();
- let res = h3.finish2().unwrap();
+ let res = h3.finish().unwrap();
assert_eq!(res.to_hex(), md5_tests[i + 1].1);
}