The handshake ended (aborted by peer: the endpoint encountered an internal error and cannot continue with the connection) without a CONNECTION_CLOSE carrying a TLS alert, so nothing shows how far into the chain the client got. The client process had already exited 100ms in, before this test's reaction point at never observed, so the silence after that is not evidence either way.
The suite could not establish what this client does here. That is a shortcoming of the run rather than anything about the client, and every one of these is on our list to remove.
What was measured
- Client
- curl — ngtcp2 + nghttp3, libcurl/8.23.0 ngtcp2/1.25.0
- Test
- Post-quantum certificate chain, compressed per RFC 8879 —
t-cert-compression-pq - Clause
- RFC 8879 §4, RFC 8446 §4.4.2 (MAY)
- Class
- discretionary — The RFC permits either behaviour; the report says which was chosen.
- Required behaviour
- Decompress and parse an ML-DSA-87 chain, then judge it on its merits. Nothing here is graded: RFC 8879 is optional, no RFC requires support for ML-DSA certificates, and §4 expressly lets a receiver cap the decompressed size and abort. What the port reports is which of those a client does. The chain is deliberately issued by a private CA nobody trusts, and that is what makes the measurement work rather than spoiling it. A client that rejects it for its *trust anchor* — unknown_ca, or bad_certificate — has already decompressed a certificate message several times the size of a classical one, parsed ML-DSA-87 structures it may never have seen and got as far as chain building. That is the whole capability under test, and the rejection that follows is correct behaviour, not a failure. A client that cannot get that far answers differently: decode_error or a record-size abort says the compressed chain itself defeated it, which is the outcome the post-quantum migration needs to know about. Certificate sizes are the half of that migration nobody can configure their way out of — ML-DSA-87 signatures are 4,627 bytes each and every chain carries several.
- Measured
- 2026-10-27
Reproduce it
The suite is the judge, so the reproduction is to point the same client at the same test and let the server report what it saw.
SESSION=$(curl -sX POST https://conformance.pqcrypta.com/session | jq -r .id)
# then drive curl at the test URL and read the verdict:
curl -s https://conformance.pqcrypta.com/report/$SESSION.json | jq '.results["t-cert-compression-pq"]'