Skip to content

feat(attestation): export the compiled-in Azure vTPM root CAs - #6

Merged
samlaf merged 1 commit into
seismicfrom
sl/sei-426-export-azure-roots
Sep 12, 2026
Merged

samlaf merged 1 commit into
seismicfrom
sl/sei-426-export-azure-roots

Conversation

@samlaf

@samlaf samlaf commented Sep 12, 2026

Copy link
Copy Markdown
Collaborator

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.

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>
@linear-code

linear-code Bot commented Sep 12, 2026

Copy link
Copy Markdown

SEI-426

@samlaf
samlaf merged commit 4eaf323 into seismic Sep 12, 2026
4 checks passed
@samlaf
samlaf deleted the sl/sei-426-export-azure-roots branch September 12, 2026 03:57
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant