Skip to main content

DecryptionKeyResolver

Trait DecryptionKeyResolver 

Source
pub trait DecryptionKeyResolver {
    // Required method
    fn resolve_key(
        &self,
        provider: &dyn CryptoProvider,
        algorithm: DataEncryptionAlgorithm,
        encrypted_key: Option<&EncryptedKey>,
    ) -> Result<Vec<u8>, XmlEncError>;

    // Provided method
    fn resolve_key_candidates(
        &self,
        provider: &dyn CryptoProvider,
        algorithm: DataEncryptionAlgorithm,
        encrypted_key: Option<&EncryptedKey>,
        budget: &mut KeyCandidateBudget,
    ) -> Result<Vec<Vec<u8>>, XmlEncError> { ... }
}
Expand description

Supplies a content-encryption key for parsed XMLEnc data.

Required Methods§

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.

Provided Methods§

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.

The default preserves single-key resolver behavior. Key rings override this method so parsing, policy validation, and ciphertext decoding occur once while only authenticated primitive decryption is retried. Overrides must consume the shared budget before every lookup or unwrap attempt. The context also accounts for any returned candidates an implementation did not explicitly charge. Returning XmlEncError::Policy rejects the complete operation and never advances to another key source; use a candidate-local error such as XmlEncError::KeyNotFound when later ordered sources are still eligible.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§