# Struct openssl::dh::Dh [−] [src]

    pub struct Dh<T>(_, _);

## Implementations

### `impl Dh<Params>` [src]

#### `pub fn from_params(
p: BigNum,
g: BigNum,
q: BigNum
) -> Result<Dh<Params>, ErrorStack>` [src]

#### `pub fn from_pqg(
prime_p: BigNum,
prime_q: Option<BigNum>,
generator: BigNum
) -> Result<Dh<Params>, ErrorStack>` [src]

Creates a DH instance based upon the given primes and generator params.

This corresponds to `DH_new` and `DH_set0_pqg`.

#### `pub fn generate_params(
prime_len: u32,
generator: u32
) -> Result<Dh<Params>, ErrorStack>` [src]

Generates DH params based on the given `prime_len` and a fixed `generator` value.

This corresponds to `DH_generate_parameters`.

#### `pub fn generate_key(self) -> Result<Dh<Private>, ErrorStack>` [src]

Generates a public and a private key based on the DH params.

This corresponds to `DH_generate_key`.

#### `pub fn params_from_pem(pem: &[u8]) -> Result<Dh<Params>, ErrorStack>` [src]

Deserializes a PEM-encoded PKCS#3 DHpararameters structure.

The input should have a header of `-----BEGIN DH PARAMETERS-----`.

This corresponds to `PEM_read_bio_DHparams`.

#### `pub fn params_from_der(der: &[u8]) -> Result<Dh<Params>, ErrorStack>` [src]

Deserializes a DER-encoded PKCS#3 DHparameters structure.

This corresponds to `d2i_DHparams`.

#### `pub fn get_1024_160() -> Result<Dh<Params>, ErrorStack>` [src]

Requires OpenSSL 1.0.2 or newer.

#### `pub fn get_2048_224() -> Result<Dh<Params>, ErrorStack>` [src]

Requires OpenSSL 1.0.2 or newer.

#### `pub fn get_2048_256() -> Result<Dh<Params>, ErrorStack>` [src]

Requires OpenSSL 1.0.2 or newer.

### `impl<T> Dh<T> where
T: HasParams,` [src]

#### `pub fn prime_p(&self) -> &BigNumRef` [src]

Returns the prime `p` from the DH instance.

This corresponds to `DH_get0_pqg`.

#### `pub fn prime_q(&self) -> Option<&BigNumRef>` [src]

Returns the prime `q` from the DH instance.

This corresponds to `DH_get0_pqg`.

#### `pub fn generator(&self) -> &BigNumRef` [src]

Returns the generator from the DH instance.

This corresponds to `DH_get0_pqg`.

## Methods from Deref<Target = DhRef<T>>

#### `pub fn params_to_pem(&self) -> Result<Vec<u8>, ErrorStack>` [src]

Serializes the parameters into a PEM-encoded PKCS#3 DHparameter structure.

The output will have a header of `-----BEGIN DH PARAMETERS-----`.

This corresponds to `PEM_write_bio_DHparams`.

#### `pub fn params_to_der(&self) -> Result<Vec<u8>, ErrorStack>` [src]

Serializes the parameters into a DER-encoded PKCS#3 DHparameter structure.

This corresponds to `i2d_DHparams`.

#### `pub fn public_key(&self) -> &BigNumRef` [src]

Returns the public key from the DH instance.

This corresponds to `DH_get0_key`.

#### `pub fn compute_key(&self, public_key: &BigNumRef) -> Result<Vec<u8>, ErrorStack>` [src]

Computes a shared secret from the own private key and the given `public_key`.

This corresponds to `DH_compute_key`.

## Trait Implementations

### `impl<T> AsRef<DhRef<T>> for Dh<T>` [src]

#### `fn as_ref(&self) -> &DhRef<T>` [src]

Performs the conversion.

### `impl<T> Borrow<DhRef<T>> for Dh<T>` [src]

#### `fn borrow(&self) -> &DhRef<T>` [src]

Immutably borrows from an owned value. Read more

### `impl<T> Deref for Dh<T>` [src]

#### `type Target = DhRef<T>`

The resulting type after dereferencing.

#### `fn deref(&self) -> &DhRef<T>` [src]

Dereferences the value.

### `impl<T> DerefMut for Dh<T>` [src]

#### `fn deref_mut(&mut self) -> &mut DhRef<T>` [src]

Mutably dereferences the value.

### `impl<T> Drop for Dh<T>` [src]

#### `fn drop(&mut self)` [src]

Executes the destructor for this type. Read more

### `impl<T> ForeignType for Dh<T>` [src]

#### `type CType = DH`

The raw C type.

#### `type Ref = DhRef<T>`

The type representing a reference to this type.

#### `unsafe fn from_ptr(ptr: *mut DH) -> Dh<T>` [src]

Constructs an instance of this type from its raw type.

#### `fn as_ptr(&self) -> *mut DH` [src]

Returns a raw pointer to the wrapped value.

### `impl<T> Send for Dh<T>` [src]

### `impl<T> Sync for Dh<T>` [src]

## Auto Trait Implementations

### `impl<T> RefUnwindSafe for Dh<T> where
T: RefUnwindSafe,`

### `impl<T> Unpin for Dh<T> where
T: Unpin,`

### `impl<T> UnwindSafe for Dh<T> where
T: UnwindSafe,`

## Blanket Implementations

### `impl<T> Any for T where
T: 'static + ?Sized,` [src]

#### `pub fn type_id(&self) -> TypeId` [src]

Gets the `TypeId` of `self`. Read more

### `impl<T> Borrow<T> for T where
T: ?Sized,` [src]

#### `pub fn borrow(&self) -> &T` [src]

Immutably borrows from an owned value. Read more

### `impl<T> BorrowMut<T> for T where
T: ?Sized,` [src]

#### `pub fn borrow_mut(&mut self) -> &mut T` [src]

Mutably borrows from an owned value. Read more

### `impl<T> From<T> for T` [src]

#### `pub fn from(t: T) -> T` [src]

Performs the conversion.

### `impl<T, U> Into<U> for T where
U: From<T>,` [src]

#### `pub fn into(self) -> U` [src]

Performs the conversion.

### `impl<T, U> TryFrom<U> for T where
U: Into<T>,` [src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

#### `pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>` [src]

Performs the conversion.

### `impl<T, U> TryInto<U> for T where
U: TryFrom<T>,` [src]

#### `type Error = <U as TryFrom<T>>::Error`

The type returned in the event of a conversion error.

#### `pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>` [src]

Performs the conversion.