use crate::database::universal_types::{UniversalTimestamp, UniversalUuid};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PackageSignature {
pub id: UniversalUuid,
pub package_hash: String,
pub key_fingerprint: String,
pub signature: Vec<u8>,
pub signed_at: UniversalTimestamp,
pub org_id: Option<UniversalUuid>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct NewPackageSignature {
pub package_hash: String,
pub key_fingerprint: String,
pub signature: Vec<u8>,
pub org_id: Option<UniversalUuid>,
}
impl NewPackageSignature {
pub fn new(package_hash: String, key_fingerprint: String, signature: Vec<u8>) -> Self {
Self {
package_hash,
key_fingerprint,
signature,
org_id: None,
}
}
pub fn with_org_id(mut self, org_id: UniversalUuid) -> Self {
self.org_id = Some(org_id);
self
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SignatureVerification {
pub is_valid: bool,
pub signer_fingerprint: String,
pub signed_at: UniversalTimestamp,
pub signer_name: Option<String>,
}