[package] name = "sandbox-tee" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true description = "Sandbox — S6 confidential-tier TEE evidence: SEV-SNP report (ECDSA-P384) + Intel TDX DCAP-v4 quote (ECDSA-P256) verification, NVIDIA GPU EAT (ES384) accelerator attestation, policy, and report providers (SPEC §2.2 S6, §7.6)." [dependencies] sandbox-schema.workspace = true sandbox-attest.workspace = true p384.workspace = true p256.workspace = true sha2.workspace = true base64.workspace = true serde_json.workspace = true hex.workspace = true thiserror.workspace = true # AMD SEV-SNP KDS cert-chain verification (the `amd-kds` feature, off by default): # real X.509 DER parsing + RSA-4096 RSASSA-PSS/SHA-384 verification for the # ARK -> ASK -> VCEK chain. Heavy (rsa/x509-cert), so gated so no ordinary # consumer pays for it. The test chain is built field by field and signed over its # DER, so x509-cert's builder (and the signature traits it is tied to) is not needed. # rsa 0.10 is on digest 0.11 and signature 3, as the workspace's sha2 0.11 is; # rsa 0.9 was not, so its PSS verifier could not take a Sha384 from it. rsa = { version = "0.10", optional = true } x509-cert = { version = "0.3", optional = true } spki = { version = "0.8", optional = true } der = { version = "0.8", optional = true } signature = { version = "3", optional = true } [features] # AMD KDS cert-chain verification (SEV-SNP): turns a genuine AMD ARK->ASK->VCEK # chain into a hardware-grounded verifying key for the `chain`/grounding machinery. amd-kds = ["dep:rsa", "dep:x509-cert", "dep:spki", "dep:der", "dep:signature"] # Intel PCK cert-chain verification (TDX): checks the PCK chain a quote carries # to a pinned Intel root, so the TDX anchor is derived rather than pinned by hand. # ECDSA-P256 throughout, so it needs the X.509 parsing and not the RSA stack. intel-pcs = ["dep:x509-cert", "dep:spki", "dep:der"] # Dev-only, for the `attested_efficiency` example: composes this crate's energy # attestation with the efficiency/1 receipt (jcp-rs), over a figure this host's # meter (sandbox-meter) read for a task the example runs. Dev-dependencies, so # no consumer of sandbox-tee pulls jcp-efficiency or the meter, and the receipt # crate stays free of any dependency on the attestation layer. [dev-dependencies] jcp-efficiency = { path = "../../../../jcp/jcp-rs/crates/jcp-efficiency" } sandbox-meter.workspace = true jcp-schema = { path = "../../../../jcp/jcp-rs/crates/jcp-schema" } ed25519-dalek = { version = "3", features = ["alloc"] } # RNG for generating the self-signed AMD-structured test chain (RSA/EC keygen): # rand 0.10, on the rand_core generation rsa 0.10 and p384 0.14 take. rand = "0.10"