ic_auth_protocol_types/
token.rs1use super::{
5 AuthRequestMetadata, DelegatedRoleGrant, DelegationAudience, DelegationProof, IssuerProof,
6};
7use candid::{CandidType, Principal};
8use serde::{Deserialize, Serialize};
9
10#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
15pub struct DelegatedTokenClaims {
16 pub presenter: Principal,
17 pub subject: Principal,
18 pub issuer_pid: Principal,
19 pub cert_hash: [u8; 32],
20 pub issued_at_ns: u64,
21 pub expires_at_ns: u64,
22 pub aud: DelegationAudience,
23 pub grants: Vec<DelegatedRoleGrant>,
24 pub nonce: [u8; 16],
25 pub ext: Option<Vec<u8>>,
26}
27
28#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
33pub struct DelegatedToken {
34 pub claims: DelegatedTokenClaims,
35 pub proof: DelegationProof,
36 pub issuer_proof: IssuerProof,
37}
38
39#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
44pub struct DelegatedTokenPrepareRequest {
45 pub metadata: Option<AuthRequestMetadata>,
46 pub aud: DelegationAudience,
47 pub grants: Vec<DelegatedRoleGrant>,
48 pub ttl_ns: u64,
49 pub ext: Option<Vec<u8>>,
50}
51
52#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
57pub struct DelegatedTokenPrepareResponse {
58 pub claims: DelegatedTokenClaims,
59 pub claims_hash: [u8; 32],
60 pub retrieval_expires_at_ns: u64,
61}
62
63#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
68pub struct DelegatedTokenGetRequest {
69 pub claims_hash: [u8; 32],
70}