diff options
| author | Steven Fackler <[email protected]> | 2018-02-13 22:28:01 -0800 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2018-02-13 22:31:37 -0800 |
| commit | 276577553501164c183ebffa2accf87380dac8c0 (patch) | |
| tree | 69edc8033241a039298c2cb04a28a24912d86a5b /openssl/src/pkcs5.rs | |
| parent | Merge pull request #838 from olehermanse/master (diff) | |
| download | rust-openssl-276577553501164c183ebffa2accf87380dac8c0.tar.xz rust-openssl-276577553501164c183ebffa2accf87380dac8c0.zip | |
OpenSSL 1.1.1 support
Diffstat (limited to 'openssl/src/pkcs5.rs')
| -rw-r--r-- | openssl/src/pkcs5.rs | 364 |
1 files changed, 45 insertions, 319 deletions
diff --git a/openssl/src/pkcs5.rs b/openssl/src/pkcs5.rs index 02201f02..926e5438 100644 --- a/openssl/src/pkcs5.rs +++ b/openssl/src/pkcs5.rs @@ -59,9 +59,9 @@ pub fn bytes_to_key( ))?; let mut key = vec![0; len as usize]; - let iv_ptr = iv.as_mut().map(|v| v.as_mut_ptr()).unwrap_or( - ptr::null_mut(), - ); + let iv_ptr = iv.as_mut() + .map(|v| v.as_mut_ptr()) + .unwrap_or(ptr::null_mut()); cvt(ffi::EVP_BytesToKey( cipher, @@ -107,7 +107,7 @@ pub fn pbkdf2_hmac( /// Derives a key from a password and salt using the scrypt algorithm. /// -/// Requires the `v110` feature and OpenSSL 1.1.0. +/// Requires OpenSSL 1.1.0 or 1.1.1 and the corresponding Cargo feature. #[cfg(all(feature = "v110", ossl110))] pub fn scrypt( pass: &[u8], @@ -150,24 +150,9 @@ mod tests { assert_eq!( buf, &[ - 0x55_u8, - 0xac_u8, - 0x04_u8, - 0x6e_u8, - 0x56_u8, - 0xe3_u8, - 0x08_u8, - 0x9f_u8, - 0xec_u8, - 0x16_u8, - 0x91_u8, - 0xc2_u8, - 0x25_u8, - 0x44_u8, - 0xb6_u8, - 0x05_u8, - ] - [..] + 0x55_u8, 0xac_u8, 0x04_u8, 0x6e_u8, 0x56_u8, 0xe3_u8, 0x08_u8, 0x9f_u8, 0xec_u8, + 0x16_u8, 0x91_u8, 0xc2_u8, 0x25_u8, 0x44_u8, 0xb6_u8, 0x05_u8, + ][..] ); super::pbkdf2_hmac( @@ -180,24 +165,9 @@ mod tests { assert_eq!( buf, &[ - 0x4d_u8, - 0xdc_u8, - 0xd8_u8, - 0xf6_u8, - 0x0b_u8, - 0x98_u8, - 0xbe_u8, - 0x21_u8, - 0x83_u8, - 0x0c_u8, - 0xee_u8, - 0x5e_u8, - 0xf2_u8, - 0x27_u8, - 0x01_u8, - 0xf9_u8, - ] - [..] + 0x4d_u8, 0xdc_u8, 0xd8_u8, 0xf6_u8, 0x0b_u8, 0x98_u8, 0xbe_u8, 0x21_u8, 0x83_u8, + 0x0c_u8, 0xee_u8, 0x5e_u8, 0xf2_u8, 0x27_u8, 0x01_u8, 0xf9_u8, + ][..] ); } @@ -211,72 +181,15 @@ mod tests { assert_eq!( &buf[..], &[ - 0x73_u8, - 0xde_u8, - 0xcf_u8, - 0xa5_u8, - 0x8a_u8, - 0xa2_u8, - 0xe8_u8, - 0x4f_u8, - 0x94_u8, - 0x77_u8, - 0x1a_u8, - 0x75_u8, - 0x73_u8, - 0x6b_u8, - 0xb8_u8, - 0x8b_u8, - 0xd3_u8, - 0xc7_u8, - 0xb3_u8, - 0x82_u8, - 0x70_u8, - 0xcf_u8, - 0xb5_u8, - 0x0c_u8, - 0xb3_u8, - 0x90_u8, - 0xed_u8, - 0x78_u8, - 0xb3_u8, - 0x05_u8, - 0x65_u8, - 0x6a_u8, - 0xf8_u8, - 0x14_u8, - 0x8e_u8, - 0x52_u8, - 0x45_u8, - 0x2b_u8, - 0x22_u8, - 0x16_u8, - 0xb2_u8, - 0xb8_u8, - 0x09_u8, - 0x8b_u8, - 0x76_u8, - 0x1f_u8, - 0xc6_u8, - 0x33_u8, - 0x60_u8, - 0x60_u8, - 0xa0_u8, - 0x9f_u8, - 0x76_u8, - 0x41_u8, - 0x5e_u8, - 0x9f_u8, - 0x71_u8, - 0xea_u8, - 0x47_u8, - 0xf9_u8, - 0xe9_u8, + 0x73_u8, 0xde_u8, 0xcf_u8, 0xa5_u8, 0x8a_u8, 0xa2_u8, 0xe8_u8, 0x4f_u8, 0x94_u8, + 0x77_u8, 0x1a_u8, 0x75_u8, 0x73_u8, 0x6b_u8, 0xb8_u8, 0x8b_u8, 0xd3_u8, 0xc7_u8, + 0xb3_u8, 0x82_u8, 0x70_u8, 0xcf_u8, 0xb5_u8, 0x0c_u8, 0xb3_u8, 0x90_u8, 0xed_u8, + 0x78_u8, 0xb3_u8, 0x05_u8, 0x65_u8, 0x6a_u8, 0xf8_u8, 0x14_u8, 0x8e_u8, 0x52_u8, + 0x45_u8, 0x2b_u8, 0x22_u8, 0x16_u8, 0xb2_u8, 0xb8_u8, 0x09_u8, 0x8b_u8, 0x76_u8, + 0x1f_u8, 0xc6_u8, 0x33_u8, 0x60_u8, 0x60_u8, 0xa0_u8, 0x9f_u8, 0x76_u8, 0x41_u8, + 0x5e_u8, 0x9f_u8, 0x71_u8, 0xea_u8, 0x47_u8, 0xf9_u8, 0xe9_u8, 0x06_u8, 0x43_u8, 0x06_u8, - 0x43_u8, - 0x06_u8, - ] - [..] + ][..] ); super::pbkdf2_hmac( @@ -289,72 +202,15 @@ mod tests { assert_eq!( &buf[..], &[ - 0x71_u8, - 0xa0_u8, - 0xec_u8, - 0x84_u8, - 0x2a_u8, - 0xbd_u8, - 0x5c_u8, - 0x67_u8, - 0x8b_u8, - 0xcf_u8, - 0xd1_u8, - 0x45_u8, - 0xf0_u8, - 0x9d_u8, - 0x83_u8, - 0x52_u8, - 0x2f_u8, - 0x93_u8, - 0x36_u8, - 0x15_u8, - 0x60_u8, - 0x56_u8, - 0x3c_u8, - 0x4d_u8, - 0x0d_u8, - 0x63_u8, - 0xb8_u8, - 0x83_u8, - 0x29_u8, - 0x87_u8, - 0x10_u8, - 0x90_u8, - 0xe7_u8, - 0x66_u8, - 0x04_u8, - 0xa4_u8, - 0x9a_u8, - 0xf0_u8, - 0x8f_u8, - 0xe7_u8, - 0xc9_u8, - 0xf5_u8, - 0x71_u8, - 0x56_u8, - 0xc8_u8, - 0x79_u8, - 0x09_u8, - 0x96_u8, - 0xb2_u8, - 0x0f_u8, - 0x06_u8, - 0xbc_u8, - 0x53_u8, - 0x5e_u8, - 0x5a_u8, - 0xb5_u8, - 0x44_u8, - 0x0d_u8, - 0xf7_u8, - 0xe8_u8, - 0x78_u8, - 0x29_u8, - 0x6f_u8, + 0x71_u8, 0xa0_u8, 0xec_u8, 0x84_u8, 0x2a_u8, 0xbd_u8, 0x5c_u8, 0x67_u8, 0x8b_u8, + 0xcf_u8, 0xd1_u8, 0x45_u8, 0xf0_u8, 0x9d_u8, 0x83_u8, 0x52_u8, 0x2f_u8, 0x93_u8, + 0x36_u8, 0x15_u8, 0x60_u8, 0x56_u8, 0x3c_u8, 0x4d_u8, 0x0d_u8, 0x63_u8, 0xb8_u8, + 0x83_u8, 0x29_u8, 0x87_u8, 0x10_u8, 0x90_u8, 0xe7_u8, 0x66_u8, 0x04_u8, 0xa4_u8, + 0x9a_u8, 0xf0_u8, 0x8f_u8, 0xe7_u8, 0xc9_u8, 0xf5_u8, 0x71_u8, 0x56_u8, 0xc8_u8, + 0x79_u8, 0x09_u8, 0x96_u8, 0xb2_u8, 0x0f_u8, 0x06_u8, 0xbc_u8, 0x53_u8, 0x5e_u8, + 0x5a_u8, 0xb5_u8, 0x44_u8, 0x0d_u8, 0xf7_u8, 0xe8_u8, 0x78_u8, 0x29_u8, 0x6f_u8, 0xa7_u8, - ] - [..] + ][..] ); super::pbkdf2_hmac( @@ -367,72 +223,15 @@ mod tests { assert_eq!( &buf[..], &[ - 0x01_u8, - 0x68_u8, - 0x71_u8, - 0xa4_u8, - 0xc4_u8, - 0xb7_u8, - 0x5f_u8, - 0x96_u8, - 0x85_u8, - 0x7f_u8, - 0xd2_u8, - 0xb9_u8, - 0xf8_u8, - 0xca_u8, - 0x28_u8, - 0x02_u8, - 0x3b_u8, - 0x30_u8, - 0xee_u8, - 0x2a_u8, + 0x01_u8, 0x68_u8, 0x71_u8, 0xa4_u8, 0xc4_u8, 0xb7_u8, 0x5f_u8, 0x96_u8, 0x85_u8, + 0x7f_u8, 0xd2_u8, 0xb9_u8, 0xf8_u8, 0xca_u8, 0x28_u8, 0x02_u8, 0x3b_u8, 0x30_u8, + 0xee_u8, 0x2a_u8, 0x39_u8, 0xf5_u8, 0xad_u8, 0xca_u8, 0xc8_u8, 0xc9_u8, 0x37_u8, + 0x5f_u8, 0x9b_u8, 0xda_u8, 0x1c_u8, 0xcd_u8, 0x1b_u8, 0x6f_u8, 0x0b_u8, 0x2f_u8, + 0xc3_u8, 0xad_u8, 0xda_u8, 0x50_u8, 0x54_u8, 0x12_u8, 0xe7_u8, 0x9d_u8, 0x89_u8, + 0x00_u8, 0x56_u8, 0xc6_u8, 0x2e_u8, 0x52_u8, 0x4c_u8, 0x7d_u8, 0x51_u8, 0x15_u8, + 0x4b_u8, 0x1a_u8, 0x85_u8, 0x34_u8, 0x57_u8, 0x5b_u8, 0xd0_u8, 0x2d_u8, 0xee_u8, 0x39_u8, - 0xf5_u8, - 0xad_u8, - 0xca_u8, - 0xc8_u8, - 0xc9_u8, - 0x37_u8, - 0x5f_u8, - 0x9b_u8, - 0xda_u8, - 0x1c_u8, - 0xcd_u8, - 0x1b_u8, - 0x6f_u8, - 0x0b_u8, - 0x2f_u8, - 0xc3_u8, - 0xad_u8, - 0xda_u8, - 0x50_u8, - 0x54_u8, - 0x12_u8, - 0xe7_u8, - 0x9d_u8, - 0x89_u8, - 0x00_u8, - 0x56_u8, - 0xc6_u8, - 0x2e_u8, - 0x52_u8, - 0x4c_u8, - 0x7d_u8, - 0x51_u8, - 0x15_u8, - 0x4b_u8, - 0x1a_u8, - 0x85_u8, - 0x34_u8, - 0x57_u8, - 0x5b_u8, - 0xd0_u8, - 0x2d_u8, - 0xee_u8, - 0x39_u8, - ] - [..] + ][..] ); } @@ -441,93 +240,19 @@ mod tests { let salt = [16_u8, 34_u8, 19_u8, 23_u8, 141_u8, 4_u8, 207_u8, 221_u8]; let data = [ - 143_u8, - 210_u8, - 75_u8, - 63_u8, - 214_u8, - 179_u8, - 155_u8, - 241_u8, - 242_u8, - 31_u8, - 154_u8, - 56_u8, - 198_u8, - 145_u8, - 192_u8, - 64_u8, - 2_u8, - 245_u8, - 167_u8, - 220_u8, - 55_u8, - 119_u8, - 233_u8, - 136_u8, - 139_u8, - 27_u8, - 71_u8, - 242_u8, - 119_u8, - 175_u8, - 65_u8, - 207_u8, + 143_u8, 210_u8, 75_u8, 63_u8, 214_u8, 179_u8, 155_u8, 241_u8, 242_u8, 31_u8, 154_u8, + 56_u8, 198_u8, 145_u8, 192_u8, 64_u8, 2_u8, 245_u8, 167_u8, 220_u8, 55_u8, 119_u8, + 233_u8, 136_u8, 139_u8, 27_u8, 71_u8, 242_u8, 119_u8, 175_u8, 65_u8, 207_u8, ]; - - let expected_key = vec![ - 249_u8, - 115_u8, - 114_u8, - 97_u8, - 32_u8, - 213_u8, - 165_u8, - 146_u8, - 58_u8, - 87_u8, - 234_u8, - 3_u8, - 43_u8, - 250_u8, - 97_u8, - 114_u8, - 26_u8, - 98_u8, - 245_u8, - 246_u8, - 238_u8, - 177_u8, - 229_u8, - 161_u8, - 183_u8, - 224_u8, - 174_u8, - 3_u8, - 6_u8, - 244_u8, - 236_u8, - 255_u8, + 249_u8, 115_u8, 114_u8, 97_u8, 32_u8, 213_u8, 165_u8, 146_u8, 58_u8, 87_u8, 234_u8, + 3_u8, 43_u8, 250_u8, 97_u8, 114_u8, 26_u8, 98_u8, 245_u8, 246_u8, 238_u8, 177_u8, + 229_u8, 161_u8, 183_u8, 224_u8, 174_u8, 3_u8, 6_u8, 244_u8, 236_u8, 255_u8, ]; let expected_iv = vec![ - 4_u8, - 223_u8, - 153_u8, - 219_u8, - 28_u8, - 142_u8, - 234_u8, - 68_u8, - 227_u8, - 69_u8, - 98_u8, - 107_u8, - 208_u8, - 14_u8, - 236_u8, - 60_u8, + 4_u8, 223_u8, 153_u8, 219_u8, 28_u8, 142_u8, 234_u8, 68_u8, 227_u8, 69_u8, 98_u8, + 107_u8, 208_u8, 14_u8, 236_u8, 60_u8, ]; assert_eq!( @@ -552,8 +277,9 @@ mod tests { let pass = "pleaseletmein"; let salt = "SodiumChloride"; - let expected = "7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613\ - f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887"; + let expected = + "7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613\ + f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887"; let mut actual = [0; 64]; super::scrypt( |