clique_sibyl_commonlib/
lib.rs

1#![feature(once_cell_try)]
2#![feature(io_error_more)]
3pub mod attestation;
4mod config;
5pub mod dcap;
6pub mod errors;
7pub mod key_manager;
8pub mod signature;
9pub mod utils;
10
11#[cfg(feature = "tdx_attest")]
12mod tdx_attest;
13
14#[cfg(any(
15    feature = "rustls-0_20",
16    feature = "rustls-0_21",
17    feature = "rustls-0_22",
18    feature = "rustls-0_23"
19))]
20pub mod tls;
21
22#[cfg(feature = "rustls-0_20")]
23pub use rustls_020 as rustls;
24#[cfg(feature = "rustls-0_21")]
25pub use rustls_021 as rustls;
26#[cfg(feature = "rustls-0_22")]
27pub use rustls_022 as rustls;
28#[cfg(feature = "rustls-0_23")]
29pub use rustls_023 as rustls;
30
31pub use serde_json;
32
33#[cfg(feature = "wasm")]
34mod wasm {
35    use wasm_bindgen::prelude::*;
36
37    use crate::attestation::Attestation;
38
39    #[wasm_bindgen]
40    pub fn verify_attestation(
41        attestation: &str,
42        trusted_enclaves: Option<Vec<String>>,
43        trusted_signers: Option<Vec<String>>,
44    ) -> Option<Vec<u8>> {
45        if let Ok(attestation) = serde_json::from_str::<Attestation>(attestation) {
46            if let Ok(user_report) = crate::attestation::verify_attestation(
47                &attestation,
48                trusted_enclaves.as_ref(),
49                trusted_signers.as_ref(),
50            ) {
51                return Some(user_report);
52            }
53        }
54
55        None
56    }
57
58    #[wasm_bindgen]
59    pub fn verify_with_signature(
60        message: Vec<u8>,
61        signature: &str,
62        attestation: &str,
63        trusted_enclaves: Option<Vec<String>>,
64        trusted_signers: Option<Vec<String>>,
65    ) -> bool {
66        if let Ok(attestation) = serde_json::from_str::<Attestation>(attestation) {
67            crate::attestation::verify_with_signature(
68                &message,
69                signature,
70                &attestation,
71                trusted_enclaves.as_ref(),
72                trusted_signers.as_ref(),
73            )
74            .is_ok()
75        } else {
76            false
77        }
78    }
79}