Now scrypt params are created once
This commit is contained in:
		
							
								
								
									
										1
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -466,6 +466,7 @@ dependencies = [
 | 
			
		||||
 "bitflags 2.3.1",
 | 
			
		||||
 "chacha20poly1305",
 | 
			
		||||
 "entity",
 | 
			
		||||
 "once_cell",
 | 
			
		||||
 "pbkdf2",
 | 
			
		||||
 "rand",
 | 
			
		||||
 "scrypt",
 | 
			
		||||
 
 | 
			
		||||
@@ -17,3 +17,4 @@ sea-orm = "0.11.3"
 | 
			
		||||
bitflags = "2.3.1"
 | 
			
		||||
arrayvec = "0.7.2"
 | 
			
		||||
subtle = "2.5.0"
 | 
			
		||||
once_cell = "1.18.0"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,15 +1,17 @@
 | 
			
		||||
use entity::master_pass;
 | 
			
		||||
use once_cell::sync::Lazy;
 | 
			
		||||
use rand::{rngs::OsRng, RngCore};
 | 
			
		||||
use scrypt::{scrypt, Params};
 | 
			
		||||
use sea_orm::ActiveValue::Set;
 | 
			
		||||
use subtle::ConstantTimeEq;
 | 
			
		||||
 | 
			
		||||
static PARAMS: Lazy<Params> = Lazy::new(|| Params::new(14, 8, 1, 64).unwrap());
 | 
			
		||||
 | 
			
		||||
/// Hashes the password with Scrypt with the given salt
 | 
			
		||||
#[inline]
 | 
			
		||||
fn hash_password(password: &[u8], salt: &[u8]) -> [u8; 64] {
 | 
			
		||||
    let params = Params::new(14, Params::RECOMMENDED_R, Params::RECOMMENDED_P, 64).unwrap();
 | 
			
		||||
    let mut password_hash = [0; 64];
 | 
			
		||||
    scrypt(password, salt, ¶ms, &mut password_hash).unwrap();
 | 
			
		||||
    scrypt(password, salt, &PARAMS, &mut password_hash).unwrap();
 | 
			
		||||
    password_hash
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user