Commit 28f37597 authored by Steven Fackler's avatar Steven Fackler
Browse files

Convert Dh

parent 849fca4a
Loading
Loading
Loading
Loading
+2 −29
Original line number Diff line number Diff line
@@ -3,25 +3,12 @@ use error::ErrorStack;
use bio::MemBioSlice;
use std::ptr;
use std::mem;
use std::ops::Deref;

use {cvt, cvt_p};
use bn::BigNum;
use opaque::Opaque;
use types::OpenSslType;

pub struct DhRef(Opaque);

impl DhRef {
    pub unsafe fn from_ptr<'a>(ptr: *mut ffi::DH) -> &'a DhRef {
        &*(ptr as *mut _)
    }

    pub fn as_ptr(&self) -> *mut ffi::DH {
        self as *const _ as *mut _
    }
}

pub struct Dh(*mut ffi::DH);
type_!(Dh, ffi::DH, ffi::DH_free);

impl Dh {
    pub fn from_params(p: BigNum, g: BigNum, q: BigNum) -> Result<Dh, ErrorStack> {
@@ -63,20 +50,6 @@ impl Dh {
    }
}

impl Drop for Dh {
    fn drop(&mut self) {
        unsafe { ffi::DH_free(self.0) }
    }
}

impl Deref for Dh {
    type Target = DhRef;

    fn deref(&self) -> &DhRef {
        unsafe { DhRef::from_ptr(self.0) }
    }
}

#[cfg(ossl110)]
mod compat {
    pub use ffi::DH_set0_pqg;
+3 −2
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ use std::marker::PhantomData;
use ffi;

use {init, cvt, cvt_p};
use dh::DhRef;
use dh::Dh;
use ec_key::EcKeyRef;
use x509::{X509StoreContextRef, X509FileType, X509, X509Ref, X509VerifyError};
#[cfg(any(ossl102, ossl110))]
@@ -99,6 +99,7 @@ use verify::X509VerifyParamRef;
use pkey::PKeyRef;
use error::ErrorStack;
use opaque::Opaque;
use types::Ref;

mod error;
mod connector;
@@ -513,7 +514,7 @@ impl SslContextBuilder {
        }
    }

    pub fn set_tmp_dh(&mut self, dh: &DhRef) -> Result<(), ErrorStack> {
    pub fn set_tmp_dh(&mut self, dh: &Ref<Dh>) -> Result<(), ErrorStack> {
        unsafe { cvt(ffi::SSL_CTX_set_tmp_dh(self.as_ptr(), dh.as_ptr()) as c_int).map(|_| ()) }
    }