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}