pub trait Signer<S> { fn gen() -> Self; fn sign(&self, msg: &[u8]) -> S; } pub trait Verifier<S> { fn verify(&self, sig: &S, msg: &[u8]) -> bool; }