use zeroize::Zeroizing;
use crate::AlgorithmError;
use crypto_core::Algorithm;
pub trait SignatureAlgorithm {
const ALG: Algorithm;
fn generate_keypair() -> Result<(Vec<u8>, Zeroizing<Vec<u8>>), AlgorithmError>;
fn derive_keypair(secret: &[u8]) -> Result<(Vec<u8>, Zeroizing<Vec<u8>>), AlgorithmError> {
let _ = secret;
Err(AlgorithmError::UnsupportedAlgorithm(Self::ALG))
}
fn sign(secret: &[u8], msg: &[u8]) -> Result<Vec<u8>, AlgorithmError>;
fn verify(public: &[u8], msg: &[u8], sig: &[u8]) -> Result<(), AlgorithmError>;
}