1use super::{DelegatedRoleGrant, DelegationAudience, DelegationProof};
8use crate::dto::prelude::*;
9
10#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
15pub struct RootDelegationProofBatchProof {
16 pub issuer_pid: Principal,
17 pub cert_hash: [u8; 32],
18 pub proof: DelegationProof,
19}
20
21#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
26pub struct RootIssuerPolicyUpsertRequest {
27 pub issuer_pid: Principal,
28 pub enabled: bool,
29 pub allowed_audiences: Vec<DelegationAudience>,
30 pub allowed_grants: Vec<DelegatedRoleGrant>,
31 pub max_cert_ttl_ns: u64,
32 pub refresh_after_ratio_bps: u16,
33}
34
35#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
40pub struct RootIssuerPolicyView {
41 pub issuer_pid: Principal,
42 pub enabled: bool,
43 pub allowed_audiences: Vec<DelegationAudience>,
44 pub allowed_grants: Vec<DelegatedRoleGrant>,
45 pub max_cert_ttl_ns: u64,
46 pub refresh_after_ratio_bps: u16,
47}
48
49#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
54pub struct RootIssuerPolicyResponse {
55 pub issuer: RootIssuerPolicyView,
56}
57
58#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
63pub struct RootIssuerRenewalTemplateUpsertRequest {
64 pub issuer_pid: Principal,
65 pub enabled: bool,
66 pub aud: DelegationAudience,
67 pub grants: Vec<DelegatedRoleGrant>,
68 pub cert_ttl_ns: u64,
69}
70
71#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
76pub struct RootIssuerRenewalTemplateView {
77 pub issuer_pid: Principal,
78 pub enabled: bool,
79 pub aud: DelegationAudience,
80 pub grants: Vec<DelegatedRoleGrant>,
81 pub cert_ttl_ns: u64,
82}
83
84#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
89pub struct RootIssuerRenewalTemplateResponse {
90 pub template: RootIssuerRenewalTemplateView,
91}
92
93#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
98pub struct RootIssuerRenewalStatusRequest {
99 pub issuer_pid: Principal,
100}
101
102#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
107pub enum RootIssuerRenewalBatchStatus {
108 Prepared,
109 Signing,
110 Signed,
111 Installing,
112 Installed,
113 FailedRetryable,
114}
115
116#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
121pub struct RootIssuerRenewalBatchView {
122 pub batch_id: [u8; 32],
123 pub status: RootIssuerRenewalBatchStatus,
124 pub cert_hash: [u8; 32],
125 pub proof_epoch: u64,
126 pub prepared_at_ns: u64,
127 pub expires_at_ns: u64,
128 pub installed_at_ns: Option<u64>,
129 pub retry_after_ns: Option<u64>,
130 pub failure: Option<String>,
131}
132
133#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
138pub struct RootIssuerRenewalStateView {
139 pub issuer_pid: Principal,
140 pub template_fingerprint: [u8; 32],
141 pub last_installed_cert_hash: Option<[u8; 32]>,
142 pub last_installed_expires_at_ns: Option<u64>,
143 pub last_installed_refresh_after_ns: Option<u64>,
144 pub next_attempt_after_ns: u64,
145 pub updated_at_ns: u64,
146}
147
148#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
153pub struct RootIssuerRenewalStatusResponse {
154 pub template: Option<RootIssuerRenewalTemplateView>,
155 pub state: Option<RootIssuerRenewalStateView>,
156 pub latest_batch: Option<RootIssuerRenewalBatchView>,
157}