user generation added
randomness is generated via /dev/urandom thru getrandom crate
This commit is contained in:
parent
ec88a08391
commit
e9a880f6a9
42
server/src/users.rs
Normal file
42
server/src/users.rs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
use chrono:Utc;
|
||||||
|
use payload::NewUserInfo;
|
||||||
|
use getrandom::getrandom;
|
||||||
|
use bcrypt::{hash, DEFAULT_COST};
|
||||||
|
|
||||||
|
fn rand_string() -> Option<String> {
|
||||||
|
// Returns a random string which we later hash with bcrypt
|
||||||
|
let mut raw_slice = [0u8; 32];
|
||||||
|
if let Some(_ignored) = getrandom(raw_slice) {
|
||||||
|
let mut buf = String::new();
|
||||||
|
for i in raw_slice {
|
||||||
|
let mut cv: u8 = *i;
|
||||||
|
if cv > 126 { cv %= 126; }
|
||||||
|
if cv < 33 { cv += 34; }
|
||||||
|
buf.push(cv as char);
|
||||||
|
}
|
||||||
|
Some(buf)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rand_uid() -> u64 {
|
||||||
|
let mut buf = [0u8;8];
|
||||||
|
let _r = getrandom(&mut buf); // this basically never fails hehexd
|
||||||
|
u64::from_ne_bytes(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns a struct of payload::NewUserInfo
|
||||||
|
pub fn createNewUser() -> NewUserInfo {
|
||||||
|
let uid = rand_id();
|
||||||
|
let uname = format!("User: {}", uid);
|
||||||
|
let hashkey = bcrypt(rand_string(), DEFAULT_COST);
|
||||||
|
// Fuck it
|
||||||
|
NewUserInfo {
|
||||||
|
userid: uid,
|
||||||
|
username: uname,
|
||||||
|
key_hash: hashkey,
|
||||||
|
valid: true
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user