use crate::database::universal_types::{UniversalTimestamp, UniversalUuid};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TrustedKey {
pub id: UniversalUuid,
pub org_id: UniversalUuid,
pub key_fingerprint: String,
pub public_key: Vec<u8>,
pub key_name: Option<String>,
pub trusted_at: UniversalTimestamp,
pub revoked_at: Option<UniversalTimestamp>,
}
impl TrustedKey {
pub fn is_active(&self) -> bool {
self.revoked_at.is_none()
}
pub fn is_revoked(&self) -> bool {
self.revoked_at.is_some()
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NewTrustedKey {
pub org_id: UniversalUuid,
pub key_fingerprint: String,
pub public_key: Vec<u8>,
pub key_name: Option<String>,
}
impl NewTrustedKey {
pub fn new(
org_id: UniversalUuid,
key_fingerprint: String,
public_key: Vec<u8>,
key_name: Option<String>,
) -> Self {
Self {
org_id,
key_fingerprint,
public_key,
key_name,
}
}
pub fn from_signing_key(
org_id: UniversalUuid,
key_fingerprint: String,
public_key: Vec<u8>,
key_name: String,
) -> Self {
Self {
org_id,
key_fingerprint,
public_key,
key_name: Some(key_name),
}
}
}