Now using thread_rng for the password generation
This commit is contained in:
parent
c8c7ba154a
commit
ab7012ce35
@ -1,5 +1,5 @@
|
|||||||
use arrayvec::ArrayString;
|
use arrayvec::ArrayString;
|
||||||
use rand::{rngs::OsRng, seq::SliceRandom};
|
use rand::{seq::SliceRandom, thread_rng, CryptoRng, Rng};
|
||||||
use std::array;
|
use std::array;
|
||||||
|
|
||||||
const CHARS: &[u8] = br##"!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}~"##;
|
const CHARS: &[u8] = br##"!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz{|}~"##;
|
||||||
@ -36,9 +36,12 @@ fn check_generated_password(password: &[u8; 32]) -> bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn generate_password() -> ArrayString<32> {
|
fn generate_password<R>(rng: &mut R) -> ArrayString<32>
|
||||||
|
where
|
||||||
|
R: Rng + CryptoRng,
|
||||||
|
{
|
||||||
loop {
|
loop {
|
||||||
let password: [u8; 32] = array::from_fn(|_| *CHARS.choose(&mut OsRng).unwrap());
|
let password: [u8; 32] = array::from_fn(|_| *CHARS.choose(rng).unwrap());
|
||||||
if check_generated_password(&password) {
|
if check_generated_password(&password) {
|
||||||
return ArrayString::from_byte_string(&password).unwrap();
|
return ArrayString::from_byte_string(&password).unwrap();
|
||||||
}
|
}
|
||||||
@ -48,7 +51,8 @@ fn generate_password() -> ArrayString<32> {
|
|||||||
/// Continuously generates the password until it passes the checks
|
/// Continuously generates the password until it passes the checks
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn generate_passwords() -> [ArrayString<32>; 10] {
|
pub fn generate_passwords() -> [ArrayString<32>; 10] {
|
||||||
array::from_fn(|_| generate_password())
|
let mut rng = thread_rng();
|
||||||
|
array::from_fn(|_| generate_password(&mut rng))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user