use rand::RngCore; pub trait KeyGen<'a, P> { fn gen(params: P, rand: &'a mut dyn RngCore) -> Self; } pub trait Signer { fn sign(&self, msg: &[u8]) -> S; } pub trait Verifier { fn verify(&self, sig: &S, msg: &[u8]) -> bool; }