Skip to main content

SymmetricKeyDecryptor

Struct SymmetricKeyDecryptor 

Source
pub struct SymmetricKeyDecryptor { /* private fields */ }
Expand description

Resolver for direct, pre-shared AES content keys, zeroized on drop.

Implementations§

Source§

impl SymmetricKeyDecryptor

Source

pub fn new(key: impl Into<Vec<u8>>) -> Self

Create a direct AES-key resolver. Key length never selects another family.

Source

pub fn with_kind(key: impl Into<Vec<u8>>, kind: SymmetricKeyKind) -> Self

Bind a pre-shared key to its trusted family before reading an algorithm from the document. XMLEnc 1.1 §6.1.3 recommends key separation: https://www.w3.org/TR/2013/REC-xmlenc-core1-20130411/#sec-backwards-compatibility-attacks

Trait Implementations§

Source§

impl Clone for SymmetricKeyDecryptor

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SymmetricKeyDecryptor

Source§

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

Formats the value using the given formatter. Read more
Source§

impl DecryptionKeyResolver for SymmetricKeyDecryptor

Source§

fn resolve_content_keys_with_policy( &self, provider: &dyn CryptoProvider, algorithm: DataEncryptionAlgorithm, encrypted_key: Option<&EncryptedKey>, policy: &DecryptionPolicy, budget: &mut KeyCandidateBudget, ) -> Result<Vec<RecoveredContentKey>, XmlEncError>

Resolve operation candidates without dropping implicit-rejection state. Wrappers around recipient resolvers must forward this method; converting recovered candidates to raw bytes loses the final content acceptance gate.
Source§

fn resolve_key( &self, _provider: &dyn CryptoProvider, algorithm: DataEncryptionAlgorithm, _encrypted_key: Option<&EncryptedKey>, ) -> Result<Vec<u8>, XmlEncError>

Resolve the symmetric key for algorithm, optionally unwrapping encrypted_key.
Source§

fn resolve_encapsulation_content_keys_with_policy( &self, _provider: &dyn CryptoProvider, _algorithm: DataEncryptionAlgorithm, _descriptor: &EncapsulationMechanism, _policy: &DecryptionPolicy, _budget: &mut KeyCandidateBudget, ) -> Result<Vec<RecoveredContentKey>, XmlEncError>

Resolve an experimental KEM source under the operation snapshot. Raw content-key resolvers refuse by default rather than bypassing the KEM.
Source§

fn resolve_key_encryption_keys_with_policy( &self, _provider: &dyn CryptoProvider, _algorithm: KeyWrapAlgorithm, _source: KeyEncryptionKeySource<'_>, _policy: &DecryptionPolicy, _budget: &mut KeyCandidateBudget, ) -> Result<Vec<RecoveredContentKey>, XmlEncError>

Resolve an actual KEK purpose; default refusal prevents incorrectly adapting a content algorithm merely because its key width happens to fit.
Source§

fn resolve_agreement_content_keys_with_policy( &self, _provider: &dyn CryptoProvider, _algorithm: DataEncryptionAlgorithm, _descriptor: &AgreementMethod, _policy: &DecryptionPolicy, _budget: &mut KeyCandidateBudget, ) -> Result<Vec<RecoveredContentKey>, XmlEncError>

Resolve an agreement under the operation snapshot and shared allowance. Default refusal prevents a raw content key from bypassing AgreementMethod.
Source§

fn resolve_derived_content_keys_with_policy( &self, _provider: &dyn CryptoProvider, _algorithm: DataEncryptionAlgorithm, _descriptor: &DerivedKey, _policy: &DecryptionPolicy, _budget: &mut KeyCandidateBudget, ) -> Result<Vec<RecoveredContentKey>, XmlEncError>

Resolve a transported derivation descriptor using the same immutable operation policy and cumulative candidate/KDF allowance. The default refuses it; a raw content-key resolver must not bypass derivation.
Source§

fn resolve_key_candidates_with_policy( &self, provider: &dyn CryptoProvider, algorithm: DataEncryptionAlgorithm, encrypted_key: Option<&EncryptedKey>, policy: &DecryptionPolicy, budget: &mut KeyCandidateBudget, ) -> Result<Vec<Vec<u8>>, XmlEncError>

Resolve under the operation’s immutable snapshot. RSA resolvers enforce rsa_keys before provider recovery; wrappers must forward this snapshot. Read more
Source§

fn resolve_key_candidates( &self, provider: &dyn CryptoProvider, algorithm: DataEncryptionAlgorithm, encrypted_key: Option<&EncryptedKey>, budget: &mut KeyCandidateBudget, ) -> Result<Vec<Vec<u8>>, XmlEncError>

Resolve ordered candidate keys for one prepared decryption operation. Read more
Source§

impl Drop for SymmetricKeyDecryptor

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Zeroize for SymmetricKeyDecryptor

Source§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.
Source§

impl ZeroizeOnDrop for SymmetricKeyDecryptor

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.