canic_core/dto/auth/
attestation.rs1use super::IcCanisterSignatureProofV1;
8use crate::dto::{prelude::*, rpc::RootRequestMetadata};
9
10#[derive(CandidType, Clone, Debug, Deserialize)]
15pub struct RoleAttestationRequest {
16 pub subject: Principal,
17 pub role: CanisterRole,
18 pub subnet_id: Option<Principal>,
19 pub audience: Principal,
20 pub ttl_ns: u64,
21 pub epoch: u64,
22 pub metadata: Option<RootRequestMetadata>,
23}
24
25#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
30pub struct RoleAttestation {
31 pub subject: Principal,
32 pub role: CanisterRole,
33 pub subnet_id: Option<Principal>,
34 pub audience: Principal,
35 pub issued_at_ns: u64,
36 pub expires_at_ns: u64,
37 pub epoch: u64,
38}
39
40#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
45pub enum RoleAttestationRootProof {
46 IcCanisterSignatureV1(IcCanisterSignatureProofV1),
47}
48
49#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
54pub struct RoleAttestationPrepareResponse {
55 pub payload: RoleAttestation,
56 pub payload_hash: [u8; 32],
57 pub retrieval_expires_at_ns: u64,
58}
59
60#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
65pub struct RoleAttestationGetRequest {
66 pub payload_hash: [u8; 32],
67}
68
69#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
74pub struct SignedRoleAttestation {
75 pub payload: RoleAttestation,
76 pub root_proof: RoleAttestationRootProof,
77}