Skip to content

Add explicit-node V3 attestation and expiring direct TLS - #1

Merged
AnthonyRonning merged 2 commits into
upstream-v0.2.1from
maple/direct-attestation
Oct 19, 2026
Merged

AnthonyRonning merged 2 commits into
upstream-v0.2.1from
maple/direct-attestation

Conversation

@AnthonyRonning

@AnthonyRonning AnthonyRonning commented Oct 18, 2026 •

Copy link
Copy Markdown

The legacy Rust verifier cannot qualify the nonce-bound V3 path used by current Tinfoil Containers on AMD Turin. This adds an explicit-node mode based on CLI v0.19.7 and its pinned Go dependency, retaining existing legacy constructors.

The new constructors require a fixed hostname and approved release/tag/digest/measurement allowlist. Verification authenticates V3 byte/nonce bindings, code and platform provenance, freshness witnesses, product-specific AMD evidence and CRLs before creating an origin-bound TLS transport. Shared expiry/revocation gates cover typed and raw dispatch, builders, clones and pooled connections; failed re-verification cannot leave escaped direct transports usable. No automatic legacy/discovery fallback is added.

Scope: AMD Genoa/Turin, V3 envelope with code/platform collateral v2, direct attested TLS. TDX and newer config/runtime collateral fail explicitly. GPU evidence is CPU-bound rather than independently NVIDIA-appraised client-side. This is a scoped port, not complete Go SDK/PKIX conformance; the manual Rust X.509 path and V3 beta status are documented.

Validation:

  • 277 library tests and two local integration checks pass; default shared-network tests are ignored. The fork workflow does not consume shared-inference credentials.
  • Official Go binding vectors, public Turin/AMD certificate and CRL fixtures, signed-bundle positive/negative tests, mutation rejection, and local transport expiry/revocation checks.
  • The exact CLI-pinned Go verifier and this Rust port accept identical captured Turin-node bytes with matching release, complete measurements, TLS/HPKE keys and freshness expiry; negative nonce checks agree. Fresh explicit-node V3, credential-free pinned health/model requests and wrong-pin rejection pass. No inference credential is needed for the qualification example.

Includes an explicit-argument qualification example and protocol/scope documentation. Based on upstream v0.2.1; no dependent application changes are included.

@AnthonyRonning
AnthonyRonning changed the base branch from main to upstream-v0.2.1 October 18, 2026 23:49
@AnthonyRonning
AnthonyRonning marked this pull request as ready for review October 19, 2026 07:15
@AnthonyRonning
AnthonyRonning merged commit 46c2da8 into upstream-v0.2.1 Oct 19, 2026
5 checks passed
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