use rand_core::{CryptoRng, Rng};
pub trait SigningKey {
type Signature;
type Error;
fn sign(
&self,
msg: &[u8],
rng: &mut (impl CryptoRng + Rng),
) -> Result<Self::Signature, Self::Error>;
}
pub trait VerifyingKey {
type Signature;
type Error;
fn verify(&self, msg: &[u8], sig: &Self::Signature) -> Result<(), Self::Error>;
}