canon_protocol/
signature.rs1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Serialize, Deserialize)]
6pub struct CanonSignature {
7 pub canon: String,
8 pub signature_version: String,
9 pub manifest_hash: String,
10 pub signature: SignatureData,
11}
12
13#[derive(Debug, Serialize, Deserialize)]
14pub struct SignatureData {
15 pub algorithm: String,
16 pub key_id: String,
17 pub signature: String,
18 pub signed_at: DateTime<Utc>,
19}
20
21#[derive(Debug, Serialize, Deserialize)]
23pub struct PublisherKeys {
24 pub version: String,
25 pub keys: std::collections::HashMap<String, PublisherKey>,
26 #[serde(default)]
27 pub revoked_keys: std::collections::HashMap<String, RevokedKey>,
28}
29
30#[derive(Debug, Serialize, Deserialize)]
31pub struct PublisherKey {
32 pub algorithm: String,
33 pub public_key: String,
34 pub created_at: DateTime<Utc>,
35 pub expires_at: Option<DateTime<Utc>>,
36 pub revoked: bool,
37 pub usage: String,
38}
39
40#[derive(Debug, Serialize, Deserialize)]
41pub struct RevokedKey {
42 pub revoked_at: DateTime<Utc>,
43 pub reason: String,
44}