mod input;
mod direct;
mod sha256;
mod double_sha256;
mod md5;
mod milksad;
mod armory;
pub use input::Input;
pub use direct::DirectTransform;
pub use sha256::Sha256Transform;
pub use double_sha256::DoubleSha256Transform;
pub use md5::Md5Transform;
pub use milksad::MilksadTransform;
pub use armory::ArmoryTransform;
pub type Key = [u8; 32];
pub trait Transform: Send + Sync {
fn name(&self) -> &'static str;
fn apply_batch(&self, inputs: &[Input], output: &mut Vec<(String, Key)>);
}
#[derive(Clone, Copy, Debug, clap::ValueEnum)]
pub enum TransformType {
Direct,
Sha256,
DoubleSha256,
Md5,
Milksad,
Armory,
}
impl TransformType {
pub fn create(self) -> Box<dyn Transform> {
match self {
TransformType::Direct => Box::new(DirectTransform),
TransformType::Sha256 => Box::new(Sha256Transform),
TransformType::DoubleSha256 => Box::new(DoubleSha256Transform),
TransformType::Md5 => Box::new(Md5Transform),
TransformType::Milksad => Box::new(MilksadTransform),
TransformType::Armory => Box::new(ArmoryTransform::new()),
}
}
}