35 lines
868 B
Rust

use clap::Parser;
use totp_rfc6238::{HashAlgorithm, TotpGenerator};
/// TOTP - One Time Password generator
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
struct Args {
/// The secret to use
#[clap(short, long)]
secret: String,
/// Interval between two numbers generation
#[clap(short, long, default_value_t = 30)]
topt_step: u64,
/// Size of generated secret
#[clap(short, long, default_value_t = 6)]
len: usize,
}
fn main() {
let args: Args = Args::parse();
let totp_generator = TotpGenerator::new()
.set_digit(args.len).unwrap()
.set_step(args.topt_step).unwrap()
.set_hash_algorithm(HashAlgorithm::SHA1)
.build();
let key = base64::decode(args.secret).unwrap();
let code = totp_generator.get_code(&key);
println!("Secret len = {}", code);
}