kdf params error checking
This commit is contained in:
		
							parent
							
								
									ae5ec6bad9
								
							
						
					
					
						commit
						75383199d6
					
				@ -546,7 +546,7 @@ impl KeyDirectory {
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod file_tests {
 | 
			
		||||
	use super::{KeyFileContent, KeyFileVersion, KeyFileKdf, KeyFileParseError, CryptoParseError, uuid_from_string, uuid_to_string, KeyFileCrypto};
 | 
			
		||||
	use super::{KeyFileContent, KeyFileVersion, KeyFileKdf, KeyFileParseError, CryptoParseError, uuid_from_string, uuid_to_string, KeyFileCrypto, KdfPbkdf2Params};
 | 
			
		||||
	use common::*;
 | 
			
		||||
 | 
			
		||||
	#[test]
 | 
			
		||||
@ -840,6 +840,88 @@ mod file_tests {
 | 
			
		||||
		assert_eq!(loaded_key.id, key.id);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	#[test]
 | 
			
		||||
	fn can_parse_kdf_params_fail() {
 | 
			
		||||
		let json = Json::from_str(
 | 
			
		||||
			r#"
 | 
			
		||||
			{
 | 
			
		||||
				"dklen" : 32,
 | 
			
		||||
				"n" : 262144,
 | 
			
		||||
				"r" : 1,
 | 
			
		||||
				"p" : 8,
 | 
			
		||||
				"salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
 | 
			
		||||
			}
 | 
			
		||||
			"#).unwrap();
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("dklen");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("n");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("r");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("p");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("salt");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	#[test]
 | 
			
		||||
	fn can_parse_kdf_params_scrypt_fail() {
 | 
			
		||||
		let json = Json::from_str(
 | 
			
		||||
			r#"
 | 
			
		||||
			{
 | 
			
		||||
				"dklen" : 32,
 | 
			
		||||
				"r" : 1,
 | 
			
		||||
				"p" : 8,
 | 
			
		||||
				"salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
 | 
			
		||||
			}
 | 
			
		||||
			"#).unwrap();
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("dklen");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("r");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("p");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
		{
 | 
			
		||||
			let mut invalid_json = json.as_object().unwrap().clone();
 | 
			
		||||
			invalid_json.remove("salt");
 | 
			
		||||
			let kdf = KdfPbkdf2Params::from_json(&invalid_json);
 | 
			
		||||
			assert!(!kdf.is_ok());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user