use std::error::Error;
pub trait SecureRng {
fn random(&mut self, buf: &mut[u8]) -> Result<(), Box<dyn Error + 'static>>;
}
pub trait SeedableRng: SecureRng {
fn seed(&mut self, seed: &[u8]) -> Result<(), Box<dyn Error + 'static>>;
}
pub trait DeterministicRng: SecureRng {
fn reseed(&mut self, seed: &[u8]) -> Result<(), Box<dyn Error + 'static>>;
}
pub trait SecKeyGen {
fn new_sec_key(&self, buf: &mut[u8], rng: &mut SecureRng)
-> Result<usize, Box<dyn Error + 'static>>;
}
pub trait PubKeyGen {
fn get_pub_key(&self, buf: &mut[u8], sec_key: &[u8]) -> Result<usize, Box<dyn Error + 'static>>;
}