Skip to content

x509: land the stranded tier 2 evidence (#110, #130, #132, #135) on main - #165

Open
atiernan wants to merge 17 commits into
mainfrom
phase3/x509-tier2-evidence-to-main
Open

atiernan wants to merge 17 commits into
mainfrom
phase3/x509-tier2-evidence-to-main

Conversation

@atiernan

Copy link
Copy Markdown
Member

Brings the X.509 tier 2 evidence to main. No tier changes: clazel-x509 stays at tier = 0.

Why this is needed

#110, #130, #132 and #135 were stacked: each one merged into the one below it, and #110 merged into phase3/wildcard-icann on 2026-11-07. But phase3/wildcard-icann had already reached main through #126 on 2026-11-06. So none of these four PRs is on main: the rustls-webpki differential, the independent transcription of certificates and host matching, its equivalence proofs, or the coverage-gap proofs. This PR is that branch with origin/main merged in.

What changed in the merge

  • One conflict, in docs/ERRATA.md. Both sides only appended entries at the same place. I kept all of them: the three X.509 entries from this branch first, then main's 18. Each entry is unchanged. The X.509 entries' shared Reported upstream: not yet. line is restored, and the count is 19 at the merge base + 18 from main + 3 from this branch = 40.
  • Everything else merged automatically (Cargo.lock, docs/DEPENDENCIES.md, docs/phases/phase-3.md).
  • The diff against main is the 16 commits of the stack plus the merge: 34 files.

Verification

  • cargo xtask check: STATIC CHECKS PASSED on the merge commit.
  • cargo xtask verify --changed: running locally in WSL, no result yet. Cargo.lock changes, so it selects every crate. I'll add the result here. x509: close the independent transcription's coverage gaps (stacked on #132) #135's local cargo xtask mutate clazel-x509 never finished (WSL ran out of memory), so the x509 mutation result has to come from CI.
  • CI's full verification has not run. None of the four stacked PRs ever got a full run against main. The proof jobs need a full-verification reviewer's approval.

Still needed for tier 2 (not in this PR)

🤖 Generated with Claude Code

atiernan and others added 17 commits November 5, 2026 03:44
Every SERVER testcase of x509-limbo with a DNS or IP peer name through both
engines, signatures accepted on both sides. 23 of 9,791 differ, each listed
with its reason. The corpus plumbing moves to tests/limbo/common.rs so both
suites share it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The corpus's generated fields are only all used there, and it reports the
clazel-conformance summary line xtask reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stacks this branch on #126. Its wildcard change makes webpki and us agree on
webpki::san::public-suffix-private-namespace-wildcard-san, so 22 testcases
differ, not 23.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A second transcription, from ITU-T X.509 (10/2019), X.690, X.680, X.501,
X.520, X.681 and RFC 6125, written without reading the crate's first one.
Spec functions only, with examples Verus evaluates; no equivalence proof
yet, and the tier stays 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns_match

theorem_certificate_equivalence on a domain of 13 numbered exclusions,
theorem_dns_match_is_rfc_6125 with its own, and
theorem_signature_algorithms. equivalence_examples.rs evaluates an input
for each disagreement it can and one certificate inside the domain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The mutant spki-parse-classifies-ec removes the only call to
classify_ec_public_key reachable from equivalence_structures. The hide in
theorem_spki_back still names it, so Verus panics with ill-typed AIR
(undeclared fuel variable) and the mutation run reports that the mutated
crate does not build.

Without the hide the mutant is an ordinary failed proof. The module
still verifies on the real spec; the whole crate and the mutation suite
have not been rerun locally.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ns.rs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s read

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he leaf check

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion path

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pdate the docs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
x509: close the independent transcription's coverage gaps (stacked on #132)

This branch is waiting to be deployed

1 waiting deployment
full-verification — 5bc5e53c Waiting Nov 14, 2026 by atiernan via Approve the proofs #453
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