Stack: Alibaba xquic + BoringSSL ·
Language: C ·
Version: 2060a44
· Measured 2026-09-18
Badge for a README:
https://pqcrypta.com/conformance/badge/xquic.svg
By class
Rolled up by what the clause requires rather than into one number. A client that ignores unknown extensions correctly but never emits the right error codes has a specific, nameable problem, and an average is exactly what hides it.
| Class | Passing means | Pass | Fail | Inconclusive |
|---|---|---|---|---|
| correctness | Rejected something invalid, with the code the RFC names. | 8 | 1 | 16 |
| discretionary | The RFC permits either behaviour; the report says which was chosen. | 8 | 0 | 5 |
| extensibility | Ignored something unknown and carried on. | 1 | 0 | 4 |
| interoperability | Correctly decoded something valid but demanding. | 2 | 0 | 6 |
| resilience | Recovered rather than giving up. | 3 | 0 | 5 |
Every result
| Test | Clause | Verdict | What happened |
|---|---|---|---|
| Version Negotiation offering a reserved version alongside v1 | RFC 9000 §6 | Pass | Responded correctly: sent Version Negotiation for 5 datagram(s); the client did not persist with an unsupported version. |
| Retry packet for source-address validation | RFC 9000 §8.1.2 | Pass | Responded correctly: echoed the Retry token and completed the handshake. |
| Reserved transport parameter (31·N+27) | RFC 9000 §18.1 | Pass | Ignored the unrecognised element and carried on: completed a handshake carrying a reserved transport parameter. |
| Unknown frame type in a 1-RTT packet | RFC 9000 §12.4 | Fail | closed cleanly after receiving a frame of unknown type. RFC 9000 §12.4 requires a connection error of type FRAME_ENCODING_ERROR: QUIC reserves no ignorable frame types, and an unknown frame carries no length, so nothing after it in the packet can be parsed. |
| NEW_CONNECTION_ID followed by RETIRE_CONNECTION_ID | RFC 9000 §5.1 | Inconclusive | The run did not exercise this test: the connection was too short-lived to require a rotation. |
| Stateless reset | RFC 9000 §10.3 | Pass | Responded correctly: was sent a Stateless Reset and went quiet — nothing further arrived in the 3 seconds that followed, which is the draining period §10.3.1 requires. |
| Deliberately tight MAX_DATA and MAX_STREAM_DATA | RFC 9000 §4 | Pass | Handled it: respected the window and announced the stall (1 DATA_BLOCKED, 1 STREAM_DATA_BLOCKED). |
| ACK Frequency extension offered | draft-ietf-quic-ack-frequency | Pass | Handled it: ignored the extension, which the specification permits. |
| Packets marked ECT(0) | RFC 9000 §13.4 | Inconclusive | The run did not exercise this test: ECN validation failed: packets sent marked ECT(0) came back acknowledged without ECN counts, so the marking was disabled. Whether the peer declined to report or the path rewrote the codepoint cannot be told apart from this end. |
| Path MTU black hole above a threshold | RFC 9000 §14, RFC 8899 | Pass | Recovered: the path swallowed 374 datagram(s) and the transfer completed without the detector naming a black hole; MTU settled at 1200, 0 probe(s) lost. |
| Server-initiated PATH_CHALLENGE | RFC 9000 §8.2 | Pass | Responded correctly: answered with 1 PATH_RESPONSE. |
| 0-RTT rejected after the client sends early data | RFC 9001 §4.6.2 | Pass | Recovered and completed the follow-up request. |
| A second path offered mid-connection | draft-ietf-quic-multipath | Pass | Handled it: declined the multipath offer and stayed on one path, which is conformant. |
| Spontaneous 1-RTT key update | RFC 9001 §6.2 | Pass | Decoded it and completed the request. |
| Stream limits set to the minimum a request needs | RFC 9000 §4.6 | Pass | Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant. |
| One datagram in twelve dropped once the path is established | RFC 9000 §2.2, §13.3 | Pass | Recovered and completed the follow-up request. |
| Datagrams arriving from a second server address | RFC 9000 §9.6 | Pass | Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant. |
| Transport parameter carrying a value the specification forbids | RFC 9000 §7.4, §18.2 | Pass | Responded correctly: closed with TRANSPORT_PARAMETER_ERROR, which is the code §7.4 requires for a parameter carrying an invalid value (ack_delay_exponent = 21, where §18.2 permits at most 20). |
| 425 (Too Early) in answer to a request sent as early data | RFC 8470 §5.2 | Pass | Tolerated it and continued. The specification permits this but does not require it; a client that rejected it would also be conformant. |
| Path marking packets CE, not just ECT(0) | RFC 9000 §13.4 | Inconclusive | The run did not exercise this test: no ECN counts came back at all. §13.4.1 requires reporting only where the ECN field is accessible, and a path that stripped the codepoint cannot be told apart from a client that does not report. |
| A second key update after the first is acknowledged | RFC 9001 §6.1, §6.5 | Pass | Decoded it and completed the request. |
| No stream credit at first, then MAX_STREAMS mid-connection | RFC 9000 §4.6 | Pass | Rejected it (closed at the QUIC layer: received a frame for a stream identifier that exceeded advertised the stream limit for the corresponding stream type). The specification permits this but does not require it; a client that ignored it would also be conformant. |
| Reserved SETTINGS identifier (0x1f·N+0x21) | RFC 9114 §7.2.4.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Reserved frame type on the response stream | RFC 9114 §7.2.8 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Unidirectional stream with a reserved stream type | RFC 9114 §6.2.3 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| SETTINGS containing the same identifier twice | RFC 9114 §7.2.4 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| A DATA frame on the control stream | RFC 9114 §7.2.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Control stream whose first frame is not SETTINGS | RFC 9114 §6.2.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| A second control stream opened by the server | RFC 9114 §6.2.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Field lines referencing dynamic table insertions | RFC 9204 §4.3.3, §4.5.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Huffman-coded field lines with maximal padding | RFC 9204 §4.1.2, RFC 7541 §5.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Field section larger than the client's advertised maximum | RFC 9114 §4.2.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Trailing field section after the body | RFC 9114 §4.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| 103 Early Hints before the final response | RFC 9110 §15.2, RFC 8297 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| GOAWAY sent mid-connection | RFC 9114 §5.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| MAX_PUSH_ID sent by the server | RFC 9114 §7.2.7 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| SETTINGS frame on a request stream | RFC 9114 §7.2.4 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| DATA frame before any HEADERS on the response stream | RFC 9114 §4.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| CANCEL_PUSH for a push ID that was never promised | RFC 9114 §7.2.3 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Field section that blocks until the encoder stream catches up | RFC 9204 §2.1.2, §2.2.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Response stream reset mid-body with H3_REQUEST_CANCELLED | RFC 9114 §8, §4.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| PRIORITY_UPDATE sent by the server | RFC 9218 §7.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| SETTINGS_ENABLE_CONNECT_PROTOCOL with a value outside 0 and 1 | RFC 9220 §3, RFC 8441 §3 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| PUSH_PROMISE for a push the client never allowed | RFC 9114 §7.2.5, §4.6 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| SETTINGS_H3_DATAGRAM with a value that is neither 0 nor 1 | RFC 9297 §2.1.1 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Encoder stream setting a dynamic table capacity above the client's limit | RFC 9204 §4.3.1, §6 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| A second GOAWAY naming a larger identifier than the first | RFC 9114 §5.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Push stream opened for a push nobody allowed | RFC 9114 §6.2.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Field line indexing a static table entry that does not exist | RFC 9204 §3.1, §4.5.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Datagrams delivered out of order | RFC 9000 §2.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Encoder instruction naming a static index that does not exist | RFC 9204 §3.1, §4.3.2 | Inconclusive | The run did not exercise this test: the connection failed during the handshake (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake), so the client never reached the anomaly. |
| Server negotiates only the post-quantum hybrid X25519MLKEM768 | RFC 8446 §4.1.4, draft-ietf-tls-hybrid-design | Inconclusive | The run did not exercise this test: the handshake failed (aborted by peer: the cryptographic handshake failed: error 40: remote error) for a reason other than the key exchange this port constrains. |
| Server negotiates only classical X25519 against a hybrid offer | RFC 8446 §4.1.1, draft-ietf-tls-hybrid-design §5 | Inconclusive | The run did not exercise this test: the handshake failed (detected an error with protocol compliance that was not covered by more specific error codes in STREAMS_BLOCKED_BIDI: illegal frame type in handshake) for a reason other than the key exchange this port constrains. |
| Hybrid key share large enough to split the Initial across packets | RFC 9000 §8.1, §14.1, RFC 9001 §4.4 | Inconclusive | The run did not exercise this test: the handshake failed (aborted by peer: the cryptographic handshake failed: error 40: remote error) for a reason other than the key exchange this port constrains. |
| Server selects a key exchange group the client never offered | RFC 8446 §4.1.3, §4.2.8, RFC 9001 §4.8 | Pass | Responded correctly: aborted the handshake with TLS alert 40 (CRYPTO_ERROR 0x128) rather than illegal_parameter. §4.1.3 requires the abort, and RFC 9001 §4.8 expressly permits replacing any alert with a generic one over QUIC, so the code is reported and not judged. |
| Hybrid key share with an intact X25519 half and a corrupt ML-KEM half | draft-ietf-tls-hybrid-design §3.2, RFC 8446 §4.1.3 | Pass | Responded correctly: rejected the handshake with TLS alert 40. The shared secret is both halves through the key schedule, so a corrupt ML-KEM half must break it -- and this client did not fall back to the intact X25519 half. |
| Hybrid key share whose length does not match the group named with it | draft-kwiatkowski-tls-ecdhe-mlkem §3.1.2, RFC 8446 §6.2, RFC 9001 §4.8 | Pass | Responded correctly: aborted the handshake with TLS alert 40 rather than illegal_parameter. §3.1.2 requires the abort and RFC 9001 §4.8 permits replacing the alert over QUIC, so the code is reported and not judged -- though note that a truncated share also breaks the key schedule, so this abort does not on its own show the length was what the client objected to. |
| Post-quantum certificate chain, compressed per RFC 8879 | RFC 8879 §4, RFC 8446 §4.4.2 | Pass | Handled it: aborted over the certificate with TLS alert 40. Reported rather than graded: RFC 8879 §4 lets a receiver cap the decompressed size and abort, and no document requires ML-DSA support of anyone. |
| GREASE named group a client must tolerate | RFC 8701 §4, RFC 8446 §4.2.7 | Inconclusive | The run did not exercise this test: the handshake failed (aborted by peer: the cryptographic handshake failed: error 40: remote error) for a reason other than the key exchange this port constrains. |
What this suite is · The full grid · All clients · All tests · Findings