Skip to content

test(vault-api): live X25519MLKEM768 handshake gate (v0.1 gate #2)#43

Open
UnbreakableMJ wants to merge 1 commit into
mainfrom
pqc-live-handshake
Open

test(vault-api): live X25519MLKEM768 handshake gate (v0.1 gate #2)#43
UnbreakableMJ wants to merge 1 commit into
mainfrom
pqc-live-handshake

Conversation

@UnbreakableMJ

Copy link
Copy Markdown
Contributor

Summary

Adds the live PQC handshake interop test — RELEASING.md operational gate #2 for the v0.1.0 tag — and the surrounding bookkeeping.

The existing pqc unit tests only exercise our half of the exchange (KEM round-trip, share/secret byte layout, config ordering). They can't catch a wire-format mismatch with a real server. The new live_handshake_negotiates_x25519mlkem768 test closes that gap: it drives a real TLS 1.3 handshake with client_config() against Cloudflare's PQC research host (pq.cloudflareresearch.com) and asserts the negotiated key-exchange group is NamedGroup::X25519MLKEM768 — i.e. the hand-rolled hybrid (ring X25519 + RustCrypto ML-KEM-768) interoperates end-to-end, not a silent classical fallback.

Confirmed passing locally:

$ cargo test -p vault-api --features pqc -- --ignored live_handshake
test pqc::tests::live_handshake_negotiates_x25519mlkem768 ... ok

Changes

  • crates/vault-api/src/pqc.rs — the #[ignore]d live test (network-gated, like login_sync; never runs in CI).
  • docs/pqc.md — a "Live handshake test" section + status reconcile (this gate and the fuzz soak are done; only the §11.2 daily-driver attestation remains).
  • RELEASING.md — gate feat(vault): M5 slice 3 — TUI search, generator overlay, command line #2 ticked, citing the run.
  • CHANGELOG.md[Unreleased] note.

Verification

  • CI-exact clippy (fresh-isolated, -D warnings) — clean.
  • RUSTFLAGS="-D warnings" cargo test --workspace --all-targets — clean.
  • The new test is #[ignore]d and behind --features pqc, so it doesn't run in CI (the test job passes no --features pqc; clippy lints it under --all-features).

🤖 Generated with Claude Code

The pqc unit tests only exercise our own half of the exchange. This adds
live_handshake_negotiates_x25519mlkem768 — an #[ignore]d interop test that
drives a real TLS 1.3 handshake with client_config() against Cloudflare's
PQC host (pq.cloudflareresearch.com) and asserts the *negotiated* key-
exchange group is X25519MLKEM768, proving the hand-rolled hybrid wire layout
interoperates with an independent server. Confirmed passing:

    cargo test -p vault-api --features pqc -- --ignored live_handshake

Needs network, so it's #[ignore]d like login_sync and never runs in CI.

- docs/pqc.md: a "Live handshake test" section + status reconcile (this gate
  and the fuzz soak are done; only the daily-driver attestation remains).
- RELEASING.md: tick gate #2, cite the run.
- CHANGELOG.md: [Unreleased] note.

Co-Authored-By: Claude Opus 4.8 (1M context) <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