use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use serde_with::{base64::Base64, serde_as};
#[serde_as]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Key {
pub alg: String,
pub kid: String,
#[serde_as(as = "Base64")]
pub data: Vec<u8>,
}
#[serde_as]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PubRecord {
pub id: String,
pub created_at: DateTime<Utc>,
pub expires_at: Option<DateTime<Utc>>,
pub encryption: Key,
pub signing: Key,
}
impl PubRecord {
pub fn is_expired(&self) -> bool {
if let Some(expires_at) = self.expires_at {
Utc::now() > expires_at
} else {
false
}
}
}