From 72f64ca23ce14f4497fb3e762672b82454ddd892 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 5 Jul 2021 13:41:01 -0400 Subject: remove chbs dependency since it seems to be unmaintained --- src/pwgen.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/pwgen.rs') diff --git a/src/pwgen.rs b/src/pwgen.rs index 4d2d497..55151e6 100644 --- a/src/pwgen.rs +++ b/src/pwgen.rs @@ -1,4 +1,3 @@ -use chbs::scheme::ToScheme as _; use rand::seq::SliceRandom as _; const SYMBOLS: &[u8] = b"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; @@ -17,6 +16,8 @@ pub enum Type { } pub fn pwgen(ty: Type, len: usize) -> String { + let mut rng = rand::thread_rng(); + let alphabet = match ty { Type::AllChars => { let mut v = vec![]; @@ -42,17 +43,10 @@ pub fn pwgen(ty: Type, len: usize) -> String { v } Type::Diceware => { - let config = chbs::config::BasicConfig { - words: len, - capitalize_first: chbs::probability::Probability::Never, - capitalize_words: chbs::probability::Probability::Never, - ..chbs::config::BasicConfig::default() - }; - return config.to_scheme().generate(); + return diceware(&mut rng, len); } }; - let mut rng = rand::thread_rng(); let mut pass = vec![]; pass.extend( std::iter::repeat_with(|| alphabet.choose(&mut rng).unwrap()) @@ -63,6 +57,15 @@ pub fn pwgen(ty: Type, len: usize) -> String { String::from_utf8(pass).unwrap() } +fn diceware(rng: &mut impl rand::RngCore, len: usize) -> String { + let mut words = vec![]; + for _ in 0..len { + // unwrap is safe because choose only returns None for an empty slice + words.push(*crate::wordlist::EFF_LONG.choose(rng).unwrap()); + } + words.join(" ") +} + #[cfg(test)] mod test { use super::*; -- cgit v1.2.3-54-g00ecf