Skip to main content

islet_sdk/
lib.rs

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>, // The requirement of Certifier: Simulated Version on x86
21        }
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}