use rsa::{pkcs1v15::Signature, RsaPublicKey};
pub trait AuthProvider: Send + Sync + 'static {
fn password(&mut self, host: &str) -> String;
fn password_success_cb(&mut self) {
log::debug!("Password authentication successful.");
}
fn signature(&mut self, host: &str, sign_message: &[u8]) -> Option<(Signature, RsaPublicKey)>;
fn signature_success_cb(&mut self) {
log::debug!("Signature authentication successful.");
}
}
pub trait PasswordVerifier: Send + Sync + 'static {
fn verify(&self, password: &str) -> bool;
}
pub trait SignatureVerifier: Send + Sync + 'static {
fn verify(&self, public_key: &RsaPublicKey) -> bool;
}
pub enum AuthVerifier {
Password(Box<dyn PasswordVerifier>),
Signature(Box<dyn SignatureVerifier>),
}