| //! `PrehashSignature` trait. |
| |
| /// For intra-doc link resolution. |
| #[allow(unused_imports)] |
| use crate::{ |
| signer::{DigestSigner, Signer}, |
| verifier::{DigestVerifier, Verifier}, |
| }; |
| |
| /// Marker trait for `Signature` types computable as `𝐒(𝐇(𝒎))` |
| /// i.e. ones which prehash a message to be signed as `𝐇(𝒎)` |
| /// |
| /// Where: |
| /// |
| /// - `𝐒`: signature algorithm |
| /// - `𝐇`: hash (a.k.a. digest) function |
| /// - `𝒎`: message |
| /// |
| /// This approach is relatively common in signature schemes based on the |
| /// [Fiat-Shamir heuristic]. |
| /// |
| /// For signature types that implement this trait, when the `derive` crate |
| /// feature is enabled a custom derive for [`Signer`] is available for any |
| /// types that impl [`DigestSigner`], and likewise for deriving [`Verifier`] for |
| /// types which impl [`DigestVerifier`]. |
| /// |
| /// [Fiat-Shamir heuristic]: https://en.wikipedia.org/wiki/Fiat%E2%80%93Shamir_heuristic |
| pub trait PrehashSignature { |
| /// Preferred `Digest` algorithm to use when computing this signature type. |
| type Digest: digest::Digest; |
| } |