pub trait CryptoProvider: Send + Sync {
// Required methods
fn name(&self) -> &'static str;
fn supports(&self, capability: ProviderCapability<'_>) -> bool;
fn fill_random(&self, output: &mut [u8]) -> Result<(), ProviderError>;
fn digest(
&self,
algorithm: DigestAlgorithm,
data: &[u8],
) -> Result<Vec<u8>, ProviderError>;
fn sign(
&self,
key: &dyn SigningKey,
algorithm: SignatureAlgorithm,
data: &[u8],
) -> Result<Vec<u8>, SigningKeyError>;
fn verify(
&self,
key: &dyn VerifyingKey,
algorithm: SignatureAlgorithm,
data: &[u8],
signature: &[u8],
) -> Result<bool, DsigError>;
fn derive_key(
&self,
parameters: &KdfParameters<'_>,
secret: &[u8],
) -> Result<Vec<u8>, ProviderError>;
// Provided methods
fn verify_x509_signature(
&self,
algorithm: X509SignatureAlgorithm,
signed_data: &[u8],
signature: &[u8],
issuer_spki_der: &[u8],
) -> Result<bool, ProviderError> { ... }
fn agree_key(
&self,
key: &dyn KeyAgreementKey,
parameters: &KeyAgreementParameters<'_>,
) -> Result<Vec<u8>, ProviderError> { ... }
fn require_capability(
&self,
capability: ProviderCapability<'_>,
) -> Result<(), ProviderError> { ... }
}Expand description
Stateless provider operations used by the XML Security pipelines.
Required Methods§
Sourcefn supports(&self, capability: ProviderCapability<'_>) -> bool
fn supports(&self, capability: ProviderCapability<'_>) -> bool
Return whether this build supports the requested operation and parameters.
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Providers that delegate primitive signing to the supplied key must call
crate::xmldsig::SigningKey::sign_with_provider so randomized
primitives consume this provider’s randomness.
Sourcefn 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.
The XMLDSig facade validates algorithm- and key-specific signature framing before this provider boundary.
Sourcefn 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.
Implementations that advertise ProviderCapability::Kdf must perform
the advertised derivation here. This method is required so capability
discovery cannot silently inherit a contradictory unsupported default.
Provided Methods§
Sourcefn 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.
Sourcefn 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.
Sourcefn require_capability(
&self,
capability: ProviderCapability<'_>,
) -> Result<(), ProviderError>
fn require_capability( &self, capability: ProviderCapability<'_>, ) -> Result<(), ProviderError>
Reject an unavailable exact capability without falling back.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".