diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2020-08-11 10:50:27 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2020-08-11 14:23:48 +0200 |
commit | 739c6eda692a10f531fbba2f3940cfb919c294bd (patch) | |
tree | 1cce6ba42633ed9b6cd8d993df38f4d879a6a673 /openpgp/src/crypto/mod.rs | |
parent | 1b113cbd74685c67e23a22b9fb87911380dfdca4 (diff) |
openpgp: Move hash_buffered_reader, drop hash_reader.
- Previously, we provided hash_reader to downstream users to verify
detached signatures. Nowadays, we have the DetachedVerifier that
does the same in a much more convenient way. Therefore, we drop
hash_reader, and move its non-public sibling hash_buffered_reader
to a more appropriate location.
Diffstat (limited to 'openpgp/src/crypto/mod.rs')
-rw-r--r-- | openpgp/src/crypto/mod.rs | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/openpgp/src/crypto/mod.rs b/openpgp/src/crypto/mod.rs index 5deba504..029e31b3 100644 --- a/openpgp/src/crypto/mod.rs +++ b/openpgp/src/crypto/mod.rs @@ -19,16 +19,9 @@ //! [`SessionKey::new`]: struct.SessionKey.html#method.new //! [`KeyPair` example]: struct.KeyPair.html#examples -use std::io::Read; use std::ops::{Deref, DerefMut}; use std::fmt; -use buffered_reader::BufferedReader; - -use crate::types::HashAlgorithm; -use crate::Result; -use crate::parse::HashingMode; - pub(crate) mod aead; mod asymmetric; pub use self::asymmetric::{Signer, Decryptor, KeyPair}; @@ -211,75 +204,3 @@ impl Password { self.0.map(fun) } } - - -/// Hashes the given reader. -/// -/// This can be used to verify detached signatures. For a more -/// convenient method, see [`DetachedVerifier`]. -/// -/// [`DetachedVerifier`]: ../parse/stream/struct.DetachedVerifier.html -pub fn hash_reader<R: Read>(reader: R, algos: &[HashingMode<HashAlgorithm>]) - -> Result<Vec<HashingMode<hash::Context>>> -{ - let reader - = buffered_reader::Generic::with_cookie( - reader, None, Default::default()); - hash_buffered_reader(reader, algos) -} - -/// Hashes the given buffered reader. -/// -/// This can be used to verify detached signatures. For a more -/// convenient method, see [`DetachedVerifier`]. -/// -/// [`DetachedVerifier`]: ../parse/stream/struct.DetachedVerifier.html -pub(crate) fn hash_buffered_reader<R>(reader: R, - algos: &[HashingMode<HashAlgorithm>]) - -> Result<Vec<HashingMode<hash::Context>>> - where R: BufferedReader<crate::parse::Cookie>, -{ - use std::mem; - - use crate::parse::HashedReader; - use crate::parse::HashesFor; - - let mut reader - = HashedReader::new(reader, HashesFor::Signature, algos.to_vec()); - - // Hash all of the data. - reader.drop_eof()?; - - let hashes = - mem::replace(&mut reader.cookie_mut().sig_group_mut().hashes, - Default::default()); - Ok(hashes) -} - - -#[test] -fn hash_reader_test() { - use std::collections::HashMap; - - let expected: HashMap<HashAlgorithm, &str> = [ - (HashAlgorithm::SHA1, "7945E3DA269C25C04F9EF435A5C0F25D9662C771"), - (HashAlgorithm::SHA512, "DDE60DB05C3958AF1E576CD006A7F3D2C343DD8C8DECE789A15D148DF90E6E0D1454DE734F8343502CA93759F22C8F6221BE35B6BDE9728BD12D289122437CB1"), - ].iter().cloned().collect(); - - let result = - hash_reader(std::io::Cursor::new(crate::tests::manifesto()), - &expected.keys().cloned() - .map(|algo| HashingMode::Binary(algo)). - collect::<Vec<_>>()) - .unwrap(); - - for mut mode in result.into_iter() { - let hash = mode.as_mut(); - let algo = hash.algo(); - let mut digest = vec![0u8; hash.digest_size()]; - hash.digest(&mut digest); - - assert_eq!(*expected.get(&algo).unwrap(), - &crate::fmt::to_hex(&digest[..], false)); - } -} |