pub struct RustCryptoProvider;Expand description
Pure-Rust provider backed by RustCrypto crates.
Trait Implementations§
Source§impl Clone for RustCryptoProvider
impl Clone for RustCryptoProvider
impl Copy for RustCryptoProvider
Source§impl CryptoProvider for RustCryptoProvider
impl CryptoProvider for RustCryptoProvider
Source§fn verify_with_key_receipt(
&self,
key: &dyn VerifyingKey,
input: SignatureVerificationInput<'_>,
observer: &mut dyn FnMut(KeyVerificationEvent<'_>) -> Result<(), DsigError>,
) -> Result<bool, DsigError>
fn verify_with_key_receipt( &self, key: &dyn VerifyingKey, input: SignatureVerificationInput<'_>, observer: &mut dyn FnMut(KeyVerificationEvent<'_>) -> Result<(), DsigError>, ) -> Result<bool, DsigError>
Verify once while reporting the actual successful leaf. Providers that
cannot identify it retain ordinary verification and report no receipt.
Source§fn associate_verification_key(
&self,
actual: &[u8],
expected: WorkingKey<'_>,
charge: &dyn Fn(u64) -> Result<(), MemoryError>,
) -> Result<KeyAssociation, DsigError>
fn associate_verification_key( &self, actual: &[u8], expected: WorkingKey<'_>, charge: &dyn Fn(u64) -> Result<(), MemoryError>, ) -> Result<KeyAssociation, DsigError>
Compare the successful public receipt with original effective PKIX key
state. Unknown semantics are Unproven, never a second provider fallback.
Source§fn encapsulate_key(
&self,
key: &dyn KeyEncapsulationKey,
) -> Result<EncapsulatedKey, ProviderError>
fn encapsulate_key( &self, key: &dyn KeyEncapsulationKey, ) -> Result<EncapsulatedKey, ProviderError>
Encapsulate through this engine; unsupported engines never delegate to RustCrypto.
Source§fn decapsulate_key(
&self,
key: &dyn KeyDecapsulationKey,
ciphertext: &[u8],
) -> Result<Zeroizing<[u8; 32]>, ProviderError>
fn decapsulate_key( &self, key: &dyn KeyDecapsulationKey, ciphertext: &[u8], ) -> Result<Zeroizing<[u8; 32]>, ProviderError>
Decapsulate without revealing implicit-rejection validity.
Source§fn import_recovery_key(
&self,
pkcs8: &[u8],
) -> Result<Arc<dyn KeyRecoveryKey>, ProviderError>
fn import_recovery_key( &self, pkcs8: &[u8], ) -> Result<Arc<dyn KeyRecoveryKey>, ProviderError>
Import original PKCS#8 input into a provider-owned RSA recovery handle.
Source§fn import_signing_key(
&self,
algorithm: SignatureAlgorithm,
der: &[u8],
) -> Result<Box<dyn SigningKey>, SigningKeyError>
fn import_signing_key( &self, algorithm: SignatureAlgorithm, der: &[u8], ) -> Result<Box<dyn SigningKey>, SigningKeyError>
Import original PKCS#8 input into this engine without exporting another
provider’s private handle. Policy and input budgets are enforced by the caller.
Source§fn supports(&self, capability: ProviderCapability<'_>) -> bool
fn supports(&self, capability: ProviderCapability<'_>) -> bool
Return whether this build can dispatch the requested capability. Read more
Source§fn fill_random(&self, output: &mut [u8]) -> Result<(), ProviderError>
fn fill_random(&self, output: &mut [u8]) -> Result<(), ProviderError>
Fill caller-owned output with cryptographically secure random bytes.
Source§fn derive_key(
&self,
parameters: &KdfParameters<'_>,
secret: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn derive_key( &self, parameters: &KdfParameters<'_>, secret: &[u8], ) -> Result<Vec<u8>, ProviderError>
Derive key bytes from caller-owned secret material. Read more
Source§fn digest(
&self,
algorithm: DigestAlgorithm,
data: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn digest( &self, algorithm: DigestAlgorithm, data: &[u8], ) -> Result<Vec<u8>, ProviderError>
Compute a message digest.
Source§fn sign(
&self,
key: &dyn SigningKey,
algorithm: SignatureAlgorithm,
data: &[u8],
) -> Result<Vec<u8>, SigningKeyError>
fn sign( &self, key: &dyn SigningKey, algorithm: SignatureAlgorithm, data: &[u8], ) -> Result<Vec<u8>, SigningKeyError>
Sign bytes with an opaque key handle. Read more
Source§fn sign_with_context(
&self,
key: &dyn SigningKey,
algorithm: SignatureAlgorithm,
context: &SignatureContext,
data: &[u8],
) -> Result<Vec<u8>, SigningKeyError>
fn sign_with_context( &self, key: &dyn SigningKey, algorithm: SignatureAlgorithm, context: &SignatureContext, data: &[u8], ) -> Result<Vec<u8>, SigningKeyError>
Sign with explicit domain separation; unsupported contexts must not be discarded.
Source§fn verify_with_context(
&self,
key: &dyn VerifyingKey,
algorithm: SignatureAlgorithm,
context: &SignatureContext,
data: &[u8],
signature: &[u8],
) -> Result<bool, DsigError>
fn verify_with_context( &self, key: &dyn VerifyingKey, algorithm: SignatureAlgorithm, context: &SignatureContext, data: &[u8], signature: &[u8], ) -> Result<bool, DsigError>
Verify with explicit domain separation; unsupported contexts fail closed.
Source§fn verify(
&self,
key: &dyn VerifyingKey,
algorithm: SignatureAlgorithm,
data: &[u8],
signature: &[u8],
) -> Result<bool, DsigError>
fn verify( &self, key: &dyn VerifyingKey, algorithm: SignatureAlgorithm, data: &[u8], signature: &[u8], ) -> Result<bool, DsigError>
Verify bytes with an opaque key handle. Read more
Source§fn verify_x509_signature(
&self,
algorithm: X509SignatureAlgorithm,
signed_data: &[u8],
signature: &[u8],
issuer_spki_der: &[u8],
) -> Result<bool, ProviderError>
fn verify_x509_signature( &self, algorithm: X509SignatureAlgorithm, signed_data: &[u8], signature: &[u8], issuer_spki_der: &[u8], ) -> Result<bool, ProviderError>
Verify an X.509 certificate or CRL signature under its issuer SPKI.
Source§fn encrypt_data(
&self,
algorithm: DataEncryptionAlgorithm,
key: &[u8],
plaintext: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn encrypt_data( &self, algorithm: DataEncryptionAlgorithm, key: &[u8], plaintext: &[u8], ) -> Result<Vec<u8>, ProviderError>
Encrypt XMLEnc content bytes, including standard framing.
Source§fn decrypt_data(
&self,
algorithm: DataEncryptionAlgorithm,
key: &[u8],
ciphertext: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn decrypt_data( &self, algorithm: DataEncryptionAlgorithm, key: &[u8], ciphertext: &[u8], ) -> Result<Vec<u8>, ProviderError>
Decrypt XMLEnc content bytes, including framing validation.
Source§fn wrap_key(
&self,
algorithm: KeyWrapAlgorithm,
kek: &[u8],
key: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn wrap_key( &self, algorithm: KeyWrapAlgorithm, kek: &[u8], key: &[u8], ) -> Result<Vec<u8>, ProviderError>
Wrap a content key with RFC 3394 AES Key Wrap. Read more
Source§fn encrypt_data_with_parameters(
&self,
algorithm: DataEncryptionAlgorithm,
key: &[u8],
plaintext: &[u8],
parameters: Option<ChaChaParametersRef<'_>>,
) -> Result<Vec<u8>, ProviderError>
fn encrypt_data_with_parameters( &self, algorithm: DataEncryptionAlgorithm, key: &[u8], plaintext: &[u8], parameters: Option<ChaChaParametersRef<'_>>, ) -> Result<Vec<u8>, ProviderError>
Encrypt while preserving XML-carried cipher parameters. Providers
must implement the profile explicitly, never discard it or fall back.
Source§fn decrypt_data_with_parameters(
&self,
algorithm: DataEncryptionAlgorithm,
key: &[u8],
ciphertext: &[u8],
parameters: Option<ChaChaParametersRef<'_>>,
) -> Result<Vec<u8>, ProviderError>
fn decrypt_data_with_parameters( &self, algorithm: DataEncryptionAlgorithm, key: &[u8], ciphertext: &[u8], parameters: Option<ChaChaParametersRef<'_>>, ) -> Result<Vec<u8>, ProviderError>
Decrypt with the same explicit parameter contract as encryption.
Source§fn unwrap_key(
&self,
algorithm: KeyWrapAlgorithm,
kek: &[u8],
wrapped: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn unwrap_key( &self, algorithm: KeyWrapAlgorithm, kek: &[u8], wrapped: &[u8], ) -> Result<Vec<u8>, ProviderError>
Unwrap a content key with RFC 3394 AES Key Wrap.
Source§fn transport_key(
&self,
key: &dyn KeyTransportKey,
parameters: &RsaOaepParameters,
plaintext: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn transport_key( &self, key: &dyn KeyTransportKey, parameters: &RsaOaepParameters, plaintext: &[u8], ) -> Result<Vec<u8>, ProviderError>
Wrap key bytes using an opaque RSA public-key operation.
Source§fn recover_key(
&self,
key: &dyn KeyRecoveryKey,
parameters: &RsaOaepParameters,
ciphertext: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn recover_key( &self, key: &dyn KeyRecoveryKey, parameters: &RsaOaepParameters, ciphertext: &[u8], ) -> Result<Vec<u8>, ProviderError>
Recover key bytes using an opaque RSA private-key operation.
Source§fn binding(&self) -> Option<&ProviderBinding>
fn binding(&self) -> Option<&ProviderBinding>
External execution domain. Different instances of one engine are not interchangeable.
Source§fn recover_content_key(
&self,
key: &dyn KeyRecoveryKey,
parameters: &RsaOaepParameters,
_content_algorithm: DataEncryptionAlgorithm,
ciphertext: &[u8],
) -> Result<RecoveredContentKey, ProviderError>
fn recover_content_key( &self, key: &dyn KeyRecoveryKey, parameters: &RsaOaepParameters, _content_algorithm: DataEncryptionAlgorithm, ciphertext: &[u8], ) -> Result<RecoveredContentKey, ProviderError>
Recover a candidate without requiring its symmetric value to leave the provider.
Source§fn unwrap_content_key(
&self,
_key: &dyn KeyUnwrappingKey,
algorithm: KeyWrapAlgorithm,
_content_algorithm: DataEncryptionAlgorithm,
_wrapped: &[u8],
) -> Result<RecoveredContentKey, ProviderError>
fn unwrap_content_key( &self, _key: &dyn KeyUnwrappingKey, algorithm: KeyWrapAlgorithm, _content_algorithm: DataEncryptionAlgorithm, _wrapped: &[u8], ) -> Result<RecoveredContentKey, ProviderError>
Unwrap into an opaque content key. Providers must opt in explicitly.
Source§fn decrypt_content_key(
&self,
algorithm: DataEncryptionAlgorithm,
_key: &dyn ContentDecryptionKey,
_ciphertext: &[u8],
) -> Result<Vec<u8>, ProviderError>
fn decrypt_content_key( &self, algorithm: DataEncryptionAlgorithm, _key: &dyn ContentDecryptionKey, _ciphertext: &[u8], ) -> Result<Vec<u8>, ProviderError>
Decrypt with an opaque key; capability remains distinct from policy permission.
Source§fn import_encapsulation_key(
&self,
algorithm: KeyEncapsulationAlgorithm,
_spki: &[u8],
) -> Result<Arc<dyn KeyEncapsulationKey>, ProviderError>
fn import_encapsulation_key( &self, algorithm: KeyEncapsulationAlgorithm, _spki: &[u8], ) -> Result<Arc<dyn KeyEncapsulationKey>, ProviderError>
Import a recipient SPKI into the selected engine. The caller reserves
import work and grants permission; unavailable engines never fall back.
Source§fn import_decapsulation_key(
&self,
algorithm: KeyEncapsulationAlgorithm,
_pkcs8: &[u8],
) -> Result<Arc<dyn KeyDecapsulationKey>, ProviderError>
fn import_decapsulation_key( &self, algorithm: KeyEncapsulationAlgorithm, _pkcs8: &[u8], ) -> Result<Arc<dyn KeyDecapsulationKey>, ProviderError>
Import a recipient PKCS#8 into this engine without exporting another
provider’s private handle. The encoded parameter set must match the request.
Source§fn agree_key(
&self,
key: &dyn KeyAgreementKey,
parameters: &KeyAgreementParameters<'_>,
) -> Result<Vec<u8>, ProviderError>
fn agree_key( &self, key: &dyn KeyAgreementKey, parameters: &KeyAgreementParameters<'_>, ) -> Result<Vec<u8>, ProviderError>
Perform key agreement with an opaque provider-owned private key.
Source§fn require_capability(
&self,
capability: ProviderCapability<'_>,
) -> Result<(), ProviderError>
fn require_capability( &self, capability: ProviderCapability<'_>, ) -> Result<(), ProviderError>
Reject an unavailable exact capability without falling back.
Source§impl Debug for RustCryptoProvider
impl Debug for RustCryptoProvider
Auto Trait Implementations§
impl Freeze for RustCryptoProvider
impl RefUnwindSafe for RustCryptoProvider
impl Send for RustCryptoProvider
impl Sync for RustCryptoProvider
impl Unpin for RustCryptoProvider
impl UnsafeUnpin for RustCryptoProvider
impl UnwindSafe for RustCryptoProvider
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more