mirror of
https://github.com/RustCrypto/password-hashes.git
synced 2026-01-25 04:06:23 +00:00
fuzz: add upper bound for scrypt's password and salt sizes (#535)
Also change ranges used to generate scrypt parameters to prevent potential timeout issues.
This commit is contained in:
@@ -12,8 +12,8 @@ pub struct ScryptRandParams(pub scrypt::Params);
|
|||||||
impl<'a> Arbitrary<'a> for ScryptRandParams {
|
impl<'a> Arbitrary<'a> for ScryptRandParams {
|
||||||
fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self> {
|
fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self> {
|
||||||
let log_n = u.int_in_range(0..=15)?;
|
let log_n = u.int_in_range(0..=15)?;
|
||||||
let r = u.int_in_range(1..=32)?;
|
let r = u.int_in_range(1..=16)?;
|
||||||
let p = u.int_in_range(1..=16)?;
|
let p = u.int_in_range(1..=8)?;
|
||||||
let len = u.int_in_range(10..=64)?;
|
let len = u.int_in_range(10..=64)?;
|
||||||
|
|
||||||
let params = scrypt::Params::new(log_n, r, p, len).unwrap();
|
let params = scrypt::Params::new(log_n, r, p, len).unwrap();
|
||||||
@@ -24,14 +24,19 @@ impl<'a> Arbitrary<'a> for ScryptRandParams {
|
|||||||
fuzz_target!(|data: (&[u8], &[u8], ScryptRandParams)| {
|
fuzz_target!(|data: (&[u8], &[u8], ScryptRandParams)| {
|
||||||
let (password, salt, ScryptRandParams(params)) = data;
|
let (password, salt, ScryptRandParams(params)) = data;
|
||||||
|
|
||||||
|
if password.len() > 64 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if salt.len() < Salt::MIN_LENGTH || salt.len() > (6 * Salt::MAX_LENGTH) / 8 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Check direct hashing
|
// Check direct hashing
|
||||||
let mut result = [0u8; 64];
|
let mut result = [0u8; 64];
|
||||||
scrypt(password, salt, ¶ms, &mut result).unwrap();
|
scrypt(password, salt, ¶ms, &mut result).unwrap();
|
||||||
|
|
||||||
// Check PHC hashing
|
// Check PHC hashing
|
||||||
if salt.len() < Salt::MIN_LENGTH {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let salt_string = SaltString::encode_b64(salt).unwrap();
|
let salt_string = SaltString::encode_b64(salt).unwrap();
|
||||||
let phc_hash = Scrypt
|
let phc_hash = Scrypt
|
||||||
.hash_password_customized(
|
.hash_password_customized(
|
||||||
|
|||||||
Reference in New Issue
Block a user