use crate::database::universal_types::{UniversalTimestamp, UniversalUuid};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SigningKey {
pub id: UniversalUuid,
pub org_id: UniversalUuid,
pub key_name: String,
pub encrypted_private_key: Vec<u8>,
pub public_key: Vec<u8>,
pub key_fingerprint: String,
pub created_at: UniversalTimestamp,
pub revoked_at: Option<UniversalTimestamp>,
}
impl SigningKey {
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 NewSigningKey {
pub org_id: UniversalUuid,
pub key_name: String,
pub encrypted_private_key: Vec<u8>,
pub public_key: Vec<u8>,
pub key_fingerprint: String,
}
impl NewSigningKey {
pub fn new(
org_id: UniversalUuid,
key_name: String,
encrypted_private_key: Vec<u8>,
public_key: Vec<u8>,
key_fingerprint: String,
) -> Self {
Self {
org_id,
key_name,
encrypted_private_key,
public_key,
key_fingerprint,
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SigningKeyInfo {
pub id: UniversalUuid,
pub org_id: UniversalUuid,
pub key_name: String,
pub key_fingerprint: String,
pub created_at: UniversalTimestamp,
pub revoked_at: Option<UniversalTimestamp>,
}
impl From<SigningKey> for SigningKeyInfo {
fn from(key: SigningKey) -> Self {
Self {
id: key.id,
org_id: key.org_id,
key_name: key.key_name,
key_fingerprint: key.key_fingerprint,
created_at: key.created_at,
revoked_at: key.revoked_at,
}
}
}