1
0
Fork 0
mirror of https://github.com/dani-garcia/vaultwarden.git synced 2025-05-28 22:43:56 +00:00

Use ring to generate email token

This commit is contained in:
vpl 2019-08-06 22:37:23 +02:00
parent 6d460b44b0
commit 5609103a97
3 changed files with 16 additions and 12 deletions

View file

@ -10,12 +10,14 @@ use crate::db::{
};
use crate::error::Error;
use crate::mail;
use crate::crypto;
use chrono::{Duration, NaiveDateTime, Utc};
use rand::Rng;
use std::char;
use std::ops::Add;
const MAX_TIME_DIFFERENCE: i64 = 600;
const TOKEN_LEN: usize = 6;
pub fn routes() -> Vec<Route> {
routes![
@ -97,13 +99,12 @@ struct SendEmailData {
}
fn generate_token() -> String {
const TOKEN_LEN: usize = 6;
let mut rng = rand::thread_rng();
(0..TOKEN_LEN)
.map(|_| {
let num = rng.gen_range(0, 9);
char::from_digit(num, 10).unwrap()
crypto::get_random(vec![0; TOKEN_LEN])
.iter()
.map(|byte| { (byte % 10)})
.map(|num| {
dbg!(num);
char::from_digit(num as u32, 10).unwrap()
})
.collect()
}
@ -291,4 +292,11 @@ mod tests {
// If it's smaller than 3 characters it should only show asterisks.
assert_eq!(result, "***@example.ext");
}
#[test]
fn test_token() {
let result = generate_token();
assert_eq!(result.chars().count(), 6);
}
}