Skip to main content

KeyEstablishmentBudget

Struct KeyEstablishmentBudget 

Source
pub struct KeyEstablishmentBudget<'a> { /* private fields */ }
Expand description

Cumulative KDF allowance borrowed from one immutable operation policy.

Share this instance across every recipient, derived key and retry. Reservations are monotonic, including failed provider calls. Input slices remain borrowed; only the provider’s returned key buffer is owned and zeroized by this API.

Implementations§

Source§

impl<'a> KeyEstablishmentBudget<'a>

Source

pub fn new(policy: &'a KeyEstablishmentPolicy) -> Result<Self, PolicyViolation>

Validate the snapshot before compiling or executing key-establishment work.

Source

pub fn derive_key( &mut self, provider: &dyn CryptoProvider, parameters: &KdfParameters<'_>, secret: &[u8], ) -> Result<Zeroizing<Vec<u8>>, XmlEncError>

Derive through the selected provider only after syntax, permission, capability and aggregate allocation/CPU reservations have succeeded.

Source

pub fn agree_and_derive( &mut self, provider: &dyn CryptoProvider, key: &dyn KeyAgreementKey, agreement: &KeyAgreementParameters<'_>, parameters: &KdfParameters<'_>, ) -> Result<Zeroizing<Vec<u8>>, XmlEncError>

Agree and derive using the same monotonic operation allowance. Permission and both workspace/output reservations precede either provider callback.

Source

pub const fn hash_blocks(&self) -> usize

Cumulative compression work reserved, including failed attempts.

Source

pub const fn owned_bytes(&self) -> usize

Cumulative output allocations reserved, including failed attempts.

Source

pub const fn modular_work(&self) -> usize

Cumulative finite-field validation and exponentiation work reserved.

Auto Trait Implementations§

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.