Loading openssl-sys/src/handwritten/dh.rs +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ use super::super::*; extern "C" { pub fn DH_new() -> *mut DH; pub fn DH_free(dh: *mut DH); pub fn DH_check(dh: *const DH, codes: *mut c_int) -> c_int; pub fn DH_generate_parameters( prime_len: c_int, Loading openssl/src/dh.rs +20 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,16 @@ where params_to_der, ffi::i2d_DHparams } /// Validates DH parameters for correctness #[corresponds(DH_check_key)] pub fn check_key(&self) -> Result<bool, ErrorStack> { unsafe { let mut codes = 0; cvt(ffi::DH_check(self.as_ptr(), &mut codes))?; Ok(codes == 0) } } } impl Dh<Params> { Loading Loading @@ -457,4 +467,14 @@ mod tests { assert_eq!(shared_a, shared_b); } #[test] fn test_dh_check_key() { let dh1 = Dh::generate_params(512, 2).unwrap(); let p = BigNum::from_hex_str("04").unwrap(); let g = BigNum::from_hex_str("02").unwrap(); let dh2 = Dh::from_pqg(p, None, g).unwrap(); assert!(dh1.check_key().unwrap()); assert!(!dh2.check_key().unwrap()); } } Loading
openssl-sys/src/handwritten/dh.rs +1 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ use super::super::*; extern "C" { pub fn DH_new() -> *mut DH; pub fn DH_free(dh: *mut DH); pub fn DH_check(dh: *const DH, codes: *mut c_int) -> c_int; pub fn DH_generate_parameters( prime_len: c_int, Loading
openssl/src/dh.rs +20 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,16 @@ where params_to_der, ffi::i2d_DHparams } /// Validates DH parameters for correctness #[corresponds(DH_check_key)] pub fn check_key(&self) -> Result<bool, ErrorStack> { unsafe { let mut codes = 0; cvt(ffi::DH_check(self.as_ptr(), &mut codes))?; Ok(codes == 0) } } } impl Dh<Params> { Loading Loading @@ -457,4 +467,14 @@ mod tests { assert_eq!(shared_a, shared_b); } #[test] fn test_dh_check_key() { let dh1 = Dh::generate_params(512, 2).unwrap(); let p = BigNum::from_hex_str("04").unwrap(); let g = BigNum::from_hex_str("02").unwrap(); let dh2 = Dh::from_pqg(p, None, g).unwrap(); assert!(dh1.check_key().unwrap()); assert!(!dh2.check_key().unwrap()); } }