Skip to main content

canic_core/dto/auth/
common.rs

1//! Module: dto::auth::common
2//!
3//! Responsibility: shared delegated-auth DTO atoms.
4//! Does not own: validation, canonicalization, or authorization policy.
5//! Boundary: passive fields reused by auth proof, token, and renewal DTOs.
6
7use crate::dto::prelude::*;
8use crate::ids::FleetKey;
9
10//
11// DelegationAudience
12//
13
14#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
15pub enum DelegationAudience {
16    Fleet(FleetKey),
17}
18
19//
20// DelegatedRoleGrant
21//
22
23#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
24pub struct DelegatedRoleGrant {
25    pub target: CanisterRole,
26    pub scopes: Vec<String>,
27}
28
29//
30// AuthRequestMetadata
31//
32
33#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
34pub struct AuthRequestMetadata {
35    pub request_id: [u8; 32],
36    pub ttl_ns: u64,
37}