Deriver

Struct Deriver 

Source
pub struct Deriver<'a>(/* private fields */);
Expand description

A type used to derive a shared secret between two keys.

Implementations§

Source§

impl<'a> Deriver<'a>

Source

pub fn new<T>(key: &'a PKeyRef<T>) -> Result<Deriver<'a>, ErrorStack>
where T: HasPrivate,

Creates a new Deriver using the provided private key.

This corresponds to EVP_PKEY_derive_init.

Source

pub fn set_peer<T>(&mut self, key: &'a PKeyRef<T>) -> Result<(), ErrorStack>
where T: HasPublic,

Sets the peer key used for secret derivation.

This corresponds to EVP_PKEY_derive_set_peer.

Source

pub fn set_peer_ex<T>( &mut self, key: &'a PKeyRef<T>, validate_peer: bool, ) -> Result<(), ErrorStack>
where T: HasPublic,

Sets the peer key used for secret derivation along with optionally validating the peer public key.

Requires OpenSSL 3.0.0 or newer.

This corresponds to EVP_PKEY_derive_set_peer_ex.

Source

pub fn len(&mut self) -> Result<usize, ErrorStack>

Returns the size of the shared secret.

It can be used to size the buffer passed to Deriver::derive.

This corresponds to EVP_PKEY_derive.

Source

pub fn derive(&mut self, buf: &mut [u8]) -> Result<usize, ErrorStack>

Derives a shared secret between the two keys, writing it into the buffer.

Returns the number of bytes written.

This corresponds to EVP_PKEY_derive.

Source

pub fn derive_to_vec(&mut self) -> Result<Vec<u8>, ErrorStack>

A convenience function which derives a shared secret and returns it in a new buffer.

This simply wraps Deriver::len and Deriver::derive.

Trait Implementations§

Source§

impl Drop for Deriver<'_>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for Deriver<'_>

Source§

impl Sync for Deriver<'_>

Auto Trait Implementations§

§

impl<'a> Freeze for Deriver<'a>

§

impl<'a> RefUnwindSafe for Deriver<'a>

§

impl<'a> Unpin for Deriver<'a>

§

impl<'a> UnwindSafe for Deriver<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes