Skip to main content

islet_sdk/
parser.rs

1use crate::error::Error;
2use crate::AttestationClaims;
3use rust_rsi::{print_token, PlatClaims, RealmClaims};
4
5pub fn parse(claims: &AttestationClaims) -> Result<(RealmClaims, PlatClaims), Error> {
6    cfg_if::cfg_if! {
7        if #[cfg(target_arch = "x86_64")] {
8            let mut realm_claims = RealmClaims::from_raw_claims(
9                    &claims.origin.realm_claims.token_claims,
10                    &claims.origin.realm_claims.measurement_claims)?;
11            realm_claims.challenge = claims.user_data.clone();
12            let plat_claims = PlatClaims::from_raw_claims(
13                    &claims.origin.platform_claims.token_claims)?;
14            Ok((realm_claims, plat_claims))
15        } else {
16            let realm_claims = RealmClaims::from_raw_claims(
17                    &claims.realm_claims.token_claims,
18                    &claims.realm_claims.measurement_claims)?;
19            let plat_claims = PlatClaims::from_raw_claims(
20                    &claims.platform_claims.token_claims)?;
21            Ok((realm_claims, plat_claims))
22        }
23    }
24}
25
26pub fn print_claims(claims: &AttestationClaims) {
27    cfg_if::cfg_if! {
28        if #[cfg(target_arch = "x86_64")] {
29            print_token(&claims.origin);
30        } else {
31            print_token(&claims);
32        }
33    }
34}