pub trait VerifyingKey {
// Required method
fn verify(
&self,
algorithm: SignatureAlgorithm,
signed_data: &[u8],
signature_value: &[u8],
) -> Result<bool, DsigError>;
// Provided methods
fn validate_policy(
&self,
_policy: &VerificationPolicy,
) -> Result<(), DsigError> { ... }
fn validate_signature_value(
&self,
algorithm: SignatureAlgorithm,
signature_value: &[u8],
) -> Result<bool, DsigError> { ... }
fn validate_signature_value_with_policy(
&self,
policy: &VerificationPolicy,
algorithm: SignatureAlgorithm,
signature_value: &[u8],
) -> Result<bool, DsigError> { ... }
fn verify_with_policy(
&self,
policy: &VerificationPolicy,
algorithm: SignatureAlgorithm,
signed_data: &[u8],
signature_value: &[u8],
) -> Result<bool, DsigError> { ... }
}Expand description
Cryptographic verifier used by VerifyContext.
This trait intentionally has no Send + Sync supertraits so lightweight
single-threaded verifiers can be used without additional bounds.
Required Methods§
Provided Methods§
Sourcefn validate_policy(&self, _policy: &VerificationPolicy) -> Result<(), DsigError>
fn validate_policy(&self, _policy: &VerificationPolicy) -> Result<(), DsigError>
Validate this key against the operation’s immutable trust policy.
Built-in keys override this hook so pre-resolved and resolver-produced keys enforce identical strength constraints. Custom opaque keys may retain their own policy enforcement by accepting the default no-op.
Sourcefn validate_signature_value(
&self,
algorithm: SignatureAlgorithm,
signature_value: &[u8],
) -> Result<bool, DsigError>
fn validate_signature_value( &self, algorithm: SignatureAlgorithm, signature_value: &[u8], ) -> Result<bool, DsigError>
Check that signature_value has the wire framing required by the
declared algorithm and this key before provider dispatch.
Key implementations with key-size-dependent framing should override this method. The default enforces the algorithm-wide XMLDSig envelope.
Sourcefn validate_signature_value_with_policy(
&self,
policy: &VerificationPolicy,
algorithm: SignatureAlgorithm,
signature_value: &[u8],
) -> Result<bool, DsigError>
fn validate_signature_value_with_policy( &self, policy: &VerificationPolicy, algorithm: SignatureAlgorithm, signature_value: &[u8], ) -> Result<bool, DsigError>
Validate wire framing under the operation’s immutable compatibility policy.
The default delegates to VerifyingKey::validate_signature_value and
therefore implements only the standard XMLDSig framing contract. Custom
keys that support policy-selected wire formats, such as
crate::policy::EcdsaSignatureValueEncoding::XmlSecAsn1Der, must
override this hook rather than accepting both formats implicitly.
Sourcefn verify_with_policy(
&self,
policy: &VerificationPolicy,
algorithm: SignatureAlgorithm,
signed_data: &[u8],
signature_value: &[u8],
) -> Result<bool, DsigError>
fn verify_with_policy( &self, policy: &VerificationPolicy, algorithm: SignatureAlgorithm, signed_data: &[u8], signature_value: &[u8], ) -> Result<bool, DsigError>
Verify after applying operation-scoped compatibility semantics.
The default delegates to VerifyingKey::verify. Custom keys whose
provider input depends on compatibility policy must override this hook
consistently with VerifyingKey::validate_signature_value_with_policy.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".