1#![deny(warnings)]
2#![warn(rust_2018_idioms)]
3
4pub mod attester;
5pub mod c_api;
6pub mod error;
7pub mod prelude;
8pub mod report;
9pub mod sealing;
10pub mod verifier;
11
12#[cfg(target_arch = "x86_64")]
13mod mock;
14mod parser;
15
16cfg_if::cfg_if! {
17 if #[cfg(target_arch = "x86_64")] {
18 pub struct AttestationClaims {
19 pub origin: rust_rsi::AttestationClaims,
20 pub user_data: Vec<u8>, }
22 } else {
23 pub use rust_rsi::AttestationClaims;
24 }
25}
26
27#[cfg(test)]
28mod tests {
29 use super::prelude::*;
30
31 #[test]
32 fn attest_verify() {
33 let user_data = b"User data";
34 let report = attest(user_data).unwrap();
35 let claims = verify(&report).unwrap();
36 let (realm_claims, plat_claims) = parse(&claims).unwrap();
37 assert_eq!(user_data, &realm_claims.challenge[..user_data.len()]);
38 assert_eq!("tag:arm.com,2023:cca_platform#1.0.0", plat_claims.profile);
39 }
40
41 #[test]
42 fn sealing() {
43 use super::sealing::{seal, unseal};
44 let plaintext = b"Plaintext";
45 let sealed = seal(plaintext).unwrap();
46 let unsealed = unseal(&sealed).unwrap();
47 assert_eq!(plaintext, &unsealed[..]);
48 }
49}