Skip to content

TLS13-C9: assert the vendored root blob instead of trusting it - #1288

Merged
drawmeanelephant merged 1 commit into
mainfrom
agent/autocoder/tls13-c9
Sep 15, 2026
Merged

drawmeanelephant merged 1 commit into
mainfrom
agent/autocoder/tls13-c9

Conversation

@drawmeanelephant

Copy link
Copy Markdown
Owner

Follow-up to #1286 (C8). The vendored root blob is the guest's only source of trust, and C8 shipped it generated but unasserted.

A truncation or a stray byte would produce a silently empty store on the guest — which fails closed in a way indistinguishable from a chain-validation bug. That is exactly the class of failure that costs a day to find, so it is now a test instead.

The test walks the framing: every byte consumed by a length-prefixed DER certificate, each anchor parses as a CA with the expected subject CN, each loads into the same TrustStore type the client validates against, the version string round-trips, and the byte count is exact.

Emitted by emit_vendored_roots.py, so the test regenerates with the blob rather than drifting from it.

zig build test -> 198/198 steps; 3585/3585 tests passed  (was 3572)
zig build      -> FETCHS.BIN still converts

The blob is the guest's only source of trust. C8 shipped it generated but
unasserted — a truncation or a stray byte would have produced a silently empty
store on the guest, and an empty store fails closed in a way that looks exactly
like a chain-validation bug.

The test walks the framing: every byte is consumed by a length-prefixed DER
certificate, each anchor parses as a CA with the expected subject CN, each
loads into the same TrustStore type the client validates against, the version
string round-trips, and the byte count is exact (no trailing slack).

Also generated by emit_vendored_roots.py, so the test regenerates with the
blob rather than drifting from it.

Evidence:
  zig build test -> 198/198 steps, 3585/3585 tests (was 3572)
  zig build      -> FETCHS.BIN still converts
@drawmeanelephant
drawmeanelephant merged commit bfc8d85 into main Sep 15, 2026
9 checks passed
@drawmeanelephant
drawmeanelephant deleted the agent/autocoder/tls13-c9 branch September 15, 2026 02:43
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