q-version-negotiation
· RFC 9000 §6 · correctness · layer quic · udp/4460 · MUST
Passing this means: Rejected something invalid, with the code the RFC names.
Anomaly type: transport
How each client answered
| Client | Version | Verdict | What happened |
|---|---|---|---|
| curl | ngtcp2/1.11.0 | Pass | Responded correctly: sent Version Negotiation for 1 datagram(s); the client did not persist with an unsupported version. |
| quinn | noq fork | Pass | Responded correctly: sent Version Negotiation for 1 datagram(s); the client did not persist with an unsupported version. |
| aioquic | 1.3.0 | Pass | Responded correctly: sent Version Negotiation for 1 datagram(s); the client did not persist with an unsupported version. |
| chromium | build 1223 | Pass | Responded correctly: sent Version Negotiation for 2 datagram(s); the client did not persist with an unsupported version. |
| quic-go | quic-go v0.61.0 | Pass | Responded correctly: sent Version Negotiation for 2 datagram(s); the client did not persist with an unsupported version. |
| quiche | 0.30.0 | Pass | Responded correctly: sent Version Negotiation for 1 datagram(s); the client did not persist with an unsupported version. |
| neqo | 0.31.1 | Pass | Responded correctly: sent Version Negotiation for 1 datagram(s); the client did not persist with an unsupported version. |
What the clause requires
Abandon the connection attempt, or retry with a version both ends support. §6.2 requires a client that supports only one version to abandon it rather than persist.
Judged against RFC 9000.
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 == "q-version-negotiation")'
What this suite is · The full grid · All clients · All tests · Findings