From 58b4b11f3a77b39d4a56652764471e30aa016f72 Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Fri, 29 Mar 2019 11:57:42 -0700 Subject: [PATCH] Rename to Signer/Verifier; add 'digest' module Some sweeping refactoring here which hopefully cleans up the project organization and helps simplify its implementation: - `Sign` => `Signer`, `Verify` => `Verifier` - Move all `digest`-related functionality under the `digest` module: - `signature::digest::Signer` - `signature::digest::Verifier` - Re-export `::digest::Digest` as `signature::digest::Digest` - Remove `Send` + `Sync` bounds on traits: if people wants these bounds they can add them themselves. --- signature-crate/src/digest/mod.rs | 11 +++++++++++ .../src/{sign/digest.rs => digest/signer.rs} | 5 ++--- .../src/{verify/digest.rs => digest/verifier.rs} | 5 ++--- signature-crate/src/lib.rs | 11 +++++------ signature-crate/src/{sign/mod.rs => signer.rs} | 7 +------ signature-crate/src/{verify/mod.rs => verifier.rs} | 7 +------ 6 files changed, 22 insertions(+), 24 deletions(-) create mode 100644 signature-crate/src/digest/mod.rs rename signature-crate/src/{sign/digest.rs => digest/signer.rs} (82%) rename signature-crate/src/{verify/digest.rs => digest/verifier.rs} (82%) rename signature-crate/src/{sign/mod.rs => signer.rs} (68%) rename signature-crate/src/{verify/mod.rs => verifier.rs} (72%) diff --git a/signature-crate/src/digest/mod.rs b/signature-crate/src/digest/mod.rs new file mode 100644 index 00000000..406623be --- /dev/null +++ b/signature-crate/src/digest/mod.rs @@ -0,0 +1,11 @@ +//! Support for using hash functions that impl the `Digest` trait in order +//! to hash the input message in order to compute a signature. + +mod signer; +mod verifier; + +/// Re-export the `Digest` trait from the `digest` crate, as it's the main +/// trait this module depends on. +pub use ::digest::Digest; + +pub use self::{signer::Signer, verifier::Verifier}; diff --git a/signature-crate/src/sign/digest.rs b/signature-crate/src/digest/signer.rs similarity index 82% rename from signature-crate/src/sign/digest.rs rename to signature-crate/src/digest/signer.rs index e4f21c2b..008493f9 100644 --- a/signature-crate/src/sign/digest.rs +++ b/signature-crate/src/digest/signer.rs @@ -4,11 +4,10 @@ //! For use signature algorithms that support an Initialize-Update-Finalize //! (IUF) API, such as ECDSA or Ed25519ph. -use crate::{error::Error, Signature}; -use digest::Digest; +use crate::{digest::Digest, error::Error, Signature}; /// Sign the given prehashed message `Digest` using `Self`. -pub trait SignDigest: Send + Sync +pub trait Signer where D: Digest, S: Signature, diff --git a/signature-crate/src/verify/digest.rs b/signature-crate/src/digest/verifier.rs similarity index 82% rename from signature-crate/src/verify/digest.rs rename to signature-crate/src/digest/verifier.rs index c577e700..865b422b 100644 --- a/signature-crate/src/verify/digest.rs +++ b/signature-crate/src/digest/verifier.rs @@ -4,12 +4,11 @@ //! For use signature algorithms that support an Initialize-Update-Finalize //! (IUF) API, such as ECDSA or Ed25519ph. -use crate::{error::Error, Signature}; -use digest::Digest; +use crate::{digest::Digest, error::Error, Signature}; /// Verify the provided signature for the given prehashed message `Digest` /// is authentic. -pub trait VerifyDigest: Send + Sync +pub trait Verifier where D: Digest, S: Signature, diff --git a/signature-crate/src/lib.rs b/signature-crate/src/lib.rs index 14d15ddf..03c3e8e6 100644 --- a/signature-crate/src/lib.rs +++ b/signature-crate/src/lib.rs @@ -14,17 +14,16 @@ unused_qualifications )] -#[cfg(feature = "digest")] -pub extern crate digest; - #[cfg(any(feature = "std", test))] #[macro_use] extern crate std; +#[cfg(feature = "digest")] +mod digest; mod error; mod prelude; -pub mod sign; mod signature; -pub mod verify; +pub mod signer; +pub mod verifier; -pub use crate::{error::Error, sign::Sign, signature::Signature, verify::Verify}; +pub use crate::{error::Error, signature::Signature, signer::Signer, verifier::Verifier}; diff --git a/signature-crate/src/sign/mod.rs b/signature-crate/src/signer.rs similarity index 68% rename from signature-crate/src/sign/mod.rs rename to signature-crate/src/signer.rs index 1acc7c84..700f135d 100644 --- a/signature-crate/src/sign/mod.rs +++ b/signature-crate/src/signer.rs @@ -1,15 +1,10 @@ //! Traits for generating digital signatures -#[cfg(feature = "digest")] -pub(crate) mod digest; - -#[cfg(feature = "digest")] -pub use self::digest::SignDigest; use crate::{error::Error, Signature}; /// Sign the provided message bytestring using `Self` (e.g. a cryptographic key /// or connection to an HSM), returning a digital signature. -pub trait Sign: Send + Sync { +pub trait Signer { /// Sign the given message and return a digital signature fn sign(&self, msg: &[u8]) -> Result; } diff --git a/signature-crate/src/verify/mod.rs b/signature-crate/src/verifier.rs similarity index 72% rename from signature-crate/src/verify/mod.rs rename to signature-crate/src/verifier.rs index d8c4b0e2..2f5f6c31 100644 --- a/signature-crate/src/verify/mod.rs +++ b/signature-crate/src/verifier.rs @@ -1,14 +1,9 @@ //! Trait for verifying digital signatures -#[cfg(feature = "digest")] -pub(crate) mod digest; - -#[cfg(feature = "digest")] -pub use self::digest::VerifyDigest; use crate::{error::Error, Signature}; /// Verify the provided message bytestring using `Self` (e.g. a public key) -pub trait Verify: Send + Sync { +pub trait Verifier { /// Use `Self` to verify that the provided signature for a given message /// bytestring is authentic. ///