t-hybrid-only
· RFC 8446 §4.1.4, draft-ietf-tls-hybrid-design · interoperability · layer tls · udp/4511 · MUST
Passing this means: Correctly decoded something valid but demanding.
Anomaly type: transport
How each client answered
| Client | Version | Verdict | What happened |
|---|---|---|---|
| curl | ngtcp2/1.11.0 | Not run | Not attempted. |
| quinn | noq fork | Pass | Decoded it and completed the request. |
| aioquic | 1.3.0 | Not run | Not attempted. |
| chromium | build 1223 | Pass | Decoded it and completed the request. |
| quic-go | quic-go v0.61.0 | Pass | Decoded it and completed the request. |
| quiche | 0.30.0 | Pass | Decoded it and completed the request. |
| neqo | 0.31.1 | Pass | Decoded it and completed the request. |
What the clause requires
Complete the handshake. A client whose first key share was classical must recover through HelloRetryRequest, which §4.1.4 requires it to answer with a second ClientHello carrying a share for the named group. A client that does not offer the group at all must abandon the attempt cleanly rather than stall — that is a correct outcome for a client without post-quantum support. A client that cannot negotiate the group at all never establishes a connection, so the server records no verdict and the result is `not run` rather than a pass or a failure. On this tier that reads as "no post-quantum key exchange", which is itself the finding: every other tier reaches `not run` only when the runner skipped something. curl/ngtcp2 1.11.0 lands here. This is the round trip that breaks first in a real migration, because it is the one that never happens until a server somewhere stops offering the classical group.
Judged against RFC 8446.
Run this one yourself
Every test is reachable from your own client. Nothing here needs an account.
curl -s https://conformance.pqcrypta.com/catalog.json \
| jq '.tests[] | select(.id == "t-hybrid-only")'
What this suite is · The full grid · All clients · All tests · Findings