use super::internal::{random_string, verify_sha256_hex};
const ALPHABET: &[u8] = b"abcdefghijklmnopqrstuvwxyz0123456789";
pub fn generate(count: usize) -> Vec<(String, String)> {
(0..count).map(|_| generate_one()).collect()
}
pub fn verify(code: &str, hash: &str) -> bool {
verify_sha256_hex(normalize(code), hash)
}
fn generate_one() -> (String, String) {
let raw = random_string(ALPHABET, 8);
let plaintext = format!("{}-{}", &raw[..4], &raw[4..]);
let hash = crate::encoding::hex::sha256(normalize(&plaintext));
(plaintext, hash)
}
fn normalize(code: &str) -> String {
code.replace('-', "").to_lowercase()
}