feat(attestation): export the compiled-in Azure vTPM root CAs - #6
Merged
Merged
Conversation
A verdict on Azure evidence rests on two root CAs compiled into this crate. They are the one input a relying party archiving a verification cannot capture beside the evidence the way it captures the fetched DCAP bundle: the AK certificate chain rides in the evidence and nothing else on that leg is fetched, so the roots are the whole of what it chains to. Export them as `azure::AZURE_ROOT_CA_PEMS`, each asset's file stem and its PEM text in anchor order, so such a party can record which anchors a verdict rested on and notice when a replaying build carries different ones. The anchor list is now built from the same array, so the two cannot drift. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
samlaf
added a commit
to SeismicSystems/enclave
that referenced
this pull request
Sep 14, 2026
…unding A founding quote is only re-verifiable for as long as everything its verdict rested on is still at hand, and Intel's TCB Info, QE Identity and both CRLs expire on a roughly 30-day cadence. The archive kept two files per node, the harvest record and a collateral sidecar paired to it by nonce, and captured the fetched collateral but not the trust roots the verifying build was using. Pairing was the caller's job, and a sidecar filed beside the wrong record was caught only by a hand-written check. `seismic-attestation` now hands back one `VerificationBundle` from a live verification: the evidence verbatim, the DCAP collateral the backend actually consumed, the instant every freshness check was evaluated at, and `TrustAnchors`, SHA-256 digests of the two compiled-in Azure vTPM roots (`azure::AZURE_ROOT_CA_PEMS`, exported by the fork in SeismicSystems/attested-tls#6) plus the `dcap-qvl` version standing in for Intel's root, which that crate keeps private. A `build.rs` reads the version from the nearest Cargo.lock. `verify_archived_evidence_with_policy` takes the bundle back and replays it offline; `TrustAnchors::drift_from` reports when a replaying build carries different roots, as information rather than a verdict. `VerifyMode` and `CollateralSnapshot` are gone. `seismic-verify-quote` wraps that as a `FoundingArchive`: one JSON document per node, `version: 1`, carrying the record's claims, the bundle and the report of what the quote proved. `verify_harvest` is the live half and returns the archive to file; `verify_archived_harvest` replays it, fetches nothing, re-derives the report and refuses an edited one, and surfaces anchor drift. Parsing is strict, the version is probed first, and the PCR map renders in register order. The two-file layout has no reader; the one real-hardware fixture was re-encoded offline and a test pins it to the renderer byte for byte. Bumps attested-tls to 4eaf323, the merged Azure-roots export. Closes SEI-426 except appraisal-separate-from-verification, which waits on upstream flashbots/attested-tls. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Needed for https://linear.app/seismic-systems/issue/SEI-426/refactorenclave-archive-one-atomic-re-verification-bundle-instead-of
A verdict on Azure evidence rests on two root CAs compiled into this crate. They are the one input a relying party archiving a verification cannot capture beside the evidence the way it captures the fetched DCAP bundle: the AK certificate chain rides in the evidence and nothing else on that leg is fetched, so the roots are the whole of what it chains to.
Export them as
azure::AZURE_ROOT_CA_PEMS, each asset's file stem and its PEM text in anchor order, so such a party can record which anchors a verdict rested on and notice when a replaying build carries different ones. The anchor list is now built from the same array, so the two cannot drift.