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