identity_credential/validator/jwt_presentation_validation/jwt_presentation_validation_options.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
// Copyright 2020-2023 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0
use serde::Deserialize;
use serde::Serialize;
use identity_core::common::Timestamp;
use identity_document::verifiable::JwsVerificationOptions;
/// Criteria for validating a [`Presentation`](crate::presentation::Presentation).
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct JwtPresentationValidationOptions {
/// Options which affect the verification of the signature on the presentation.
#[serde(default)]
pub presentation_verifier_options: JwsVerificationOptions,
/// Declares that the presentation is **not** considered valid if it expires before this
/// [`Timestamp`].
/// Uses the current datetime during validation if not set.
#[serde(default)]
pub earliest_expiry_date: Option<Timestamp>,
/// Declares that the presentation is **not** considered valid if it was issued later than this
/// [`Timestamp`].
/// Uses the current datetime during validation if not set.
#[serde(default)]
pub latest_issuance_date: Option<Timestamp>,
}
impl JwtPresentationValidationOptions {
/// Constructor that sets all options to their defaults.
pub fn new() -> Self {
Self::default()
}
/// Set options which affect the verification of the signature on the presentation.
pub fn presentation_verifier_options(mut self, options: JwsVerificationOptions) -> Self {
self.presentation_verifier_options = options;
self
}
/// Declare that the presentation is **not** considered valid if it expires before this [`Timestamp`].
/// Uses the current datetime during validation if not set.
pub fn earliest_expiry_date(mut self, timestamp: Timestamp) -> Self {
self.earliest_expiry_date = Some(timestamp);
self
}
/// Declare that the presentation is **not** considered valid if it was issued later than this [`Timestamp`].
/// Uses the current datetime during validation if not set.
pub fn latest_issuance_date(mut self, timestamp: Timestamp) -> Self {
self.latest_issuance_date = Some(timestamp);
self
}
}