Dataset · MIT · 88 measured cells
Eight certificate chain shapes by eleven client stacks: 88 cells, each a
script plus its captured output. The headline is that parsing never fails.
All 88 cells parse, including the chains that then fail validation, so a
parse-based inventory cannot tell a working chain from a broken one. On
this corpus, that is a 100% false-pass rate.
DOI: 10.5281/zenodo.21749600
Repo → · Hybrid certificates, weighed → · How much certificate can you afford? →
Dataset · MIT · 8,151 real chains
The certificate chains of the Tranco top 10,000, captured 2026-08-07 and
projected under the NIST signature algorithms. The inputs are measured; the
outputs are projections on stated assumptions, never a measurement of a
post-quantum handshake. Under drop-in ML-DSA-44, 85.1% of measured sites
project past the IW10 initial congestion window, and leaf-only migration
fits almost everywhere. The deciding variable is chain depth. Compression
recovers a median 985 bytes today and roughly the same 985 bytes after
migration, because the saving is structural and migration adds no structure.
DOI: 10.5281/zenodo.21846142
Repo → · The typical chain moved → · The same 985 bytes →
Dataset · MIT · 5 server stacks
Give a TLS server a certificate chain the client has said it will not
accept, and record what it sends. Three of five stacks (Caddy, rustls,
Envoy) send it anyway; OpenSSL and nginx refuse. All three are conformant,
because RFC 8446 makes the constraint a SHOULD and tells a server with no
acceptable chain to send one regardless. What decides the chain a client
receives is the client's own preference order, not the server's
configuration file.
DOI: 10.5281/zenodo.21911032
Repo → · Three of five sent it anyway →