use identity_core::common::Timestamp;
use identity_document::verifiable::JwsVerificationOptions;
use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
#[non_exhaustive]
#[serde(rename_all = "camelCase")]
pub struct KeyBindingJWTValidationOptions {
#[serde(skip_serializing_if = "Option::is_none")]
pub nonce: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub aud: Option<String>,
pub jws_options: JwsVerificationOptions,
#[serde(skip_serializing_if = "Option::is_none")]
pub earliest_issuance_date: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub latest_issuance_date: Option<Timestamp>,
}
impl KeyBindingJWTValidationOptions {
pub fn new() -> Self {
Self::default()
}
pub fn nonce(mut self, nonce: impl Into<String>) -> Self {
self.nonce = Some(nonce.into());
self
}
pub fn jws_verifier_options(mut self, options: JwsVerificationOptions) -> Self {
self.jws_options = options;
self
}
pub fn aud(mut self, aud: impl Into<String>) -> Self {
self.aud = Some(aud.into());
self
}
pub fn earliest_issuance_date(mut self, earliest_issuance_date: Timestamp) -> Self {
self.earliest_issuance_date = Some(earliest_issuance_date);
self
}
pub fn latest_issuance_date(mut self, latest_issuance_date: Timestamp) -> Self {
self.latest_issuance_date = Some(latest_issuance_date);
self
}
}