Struct hkdf::HkdfExtract

source ·
pub struct HkdfExtract<H, I = Hmac<H>>
where H: OutputSizeUser, I: HmacImpl<H>,
{ /* private fields */ }
Expand description

Structure representing the streaming context of an HKDF-Extract operation

let mut extract_ctx = HkdfExtract::<Sha256>::new(Some(b"mysalt"));
extract_ctx.input_ikm(b"hello");
extract_ctx.input_ikm(b" world");
let (streamed_res, _) = extract_ctx.finalize();

let (oneshot_res, _) = Hkdf::<Sha256>::extract(Some(b"mysalt"), b"hello world");
assert_eq!(streamed_res, oneshot_res);

Implementations§

source§

impl<H, I> HkdfExtract<H, I>
where H: OutputSizeUser, I: HmacImpl<H>,

source

pub fn new(salt: Option<&[u8]>) -> Self

Initiates the HKDF-Extract context with the given optional salt

source

pub fn input_ikm(&mut self, ikm: &[u8])

Feeds in additional input key material to the HKDF-Extract context

source

pub fn finalize(self) -> (Output<H>, Hkdf<H, I>)

Completes the HKDF-Extract operation, returning both the generated pseudorandom key and Hkdf struct for expanding.

Trait Implementations§

source§

impl<H, I> Clone for HkdfExtract<H, I>
where H: OutputSizeUser + Clone, I: HmacImpl<H> + Clone,

source§

fn clone(&self) -> HkdfExtract<H, I>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<H, I> Debug for HkdfExtract<H, I>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<H, I> Freeze for HkdfExtract<H, I>
where I: Sealed<H> + Freeze,

§

impl<H, I> RefUnwindSafe for HkdfExtract<H, I>
where I: Sealed<H> + RefUnwindSafe, H: RefUnwindSafe,

§

impl<H, I> Send for HkdfExtract<H, I>
where I: Sealed<H> + Send, H: Send,

§

impl<H, I> Sync for HkdfExtract<H, I>
where I: Sealed<H> + Sync, H: Sync,

§

impl<H, I> Unpin for HkdfExtract<H, I>
where I: Sealed<H> + Unpin, H: Unpin,

§

impl<H, I> UnwindSafe for HkdfExtract<H, I>
where I: Sealed<H> + UnwindSafe, H: UnwindSafe,

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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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.