cas_lib/password_hashers/
scrypt.rs1
2
3
4
5use scrypt::{
6 password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
7 Scrypt,
8};
9
10use super::cas_password_hasher::CASPasswordHasher;
11
12pub struct CASScrypt;
13
14impl CASPasswordHasher for CASScrypt {
15 fn hash_password(password_to_hash: String) -> String {
18 let salt = SaltString::generate(&mut OsRng);
19 return Scrypt
20 .hash_password(password_to_hash.as_bytes(), &salt)
21 .unwrap()
22 .to_string();
23 }
24
25 fn verify_password(hashed_password: String, password_to_verify: String) -> bool {
28 let parsed_hash = PasswordHash::new(&hashed_password).unwrap();
29 return Scrypt
30 .verify_password(password_to_verify.as_bytes(), &parsed_hash)
31 .is_ok();
32 }
33}