pub mod error;
pub mod hash;
#[cfg(feature = "sawtooth-signing-compat")]
pub mod sawtooth;
#[cfg(feature = "ursa-compat")]
pub mod ursa;
pub use crate::signing::error::Error;
pub trait Signer {
fn sign(&self, message: &[u8]) -> Result<Vec<u8>, Error>;
fn public_key(&self) -> &[u8];
}
pub trait SignatureVerifier: Send {
fn verify(&self, message: &[u8], signature: &[u8], pk: &[u8]) -> Result<bool, Error>;
}
pub trait SignatureVerifierFactory: Send {
fn create_verifier(&self) -> Box<dyn SignatureVerifier>;
}
#[cfg(test)]
mod tests {
use super::*;
pub fn test_signer_implementation(
signer: &dyn Signer,
signature_verifier: &dyn SignatureVerifier,
) {
let test_message = b"test message to be";
let signature = signer.sign(test_message).unwrap();
assert!(signature_verifier
.verify(test_message, &signature, signer.public_key())
.unwrap());
}
}