ML-DSA Certificate-Chain Byte Budget

Estimate the raw ML-DSA key and signature contribution to a certificate chain, then add user-measured DER/TLS overhead and compare the result with a byte budget. This is a byte arithmetic tool, not a certificate encoder or TLS handshake simulator.

Result

Projected chain bytes

Raw ML-DSA key and signature bytes

Budget headroom (negative means over budget)

Budget used

Public key size per key

Signature size per signature

How to use this tool

  1. Choose the ML-DSA parameter set used for the keys and signatures being counted.
  2. Enter the number of ML-DSA public keys and certificate signatures present in the transmitted chain.
  3. Enter the bytes for all other certificate and DER/TLS framing, then set the chain budget you need to meet.
  4. Compare projected chain bytes and budget headroom; measure an encoded chain for a precise result.

Assumptions

Sources & reference data

Technical details: what the fields mean
ML-DSA parameter set parameterSet
FIPS 204 ML-DSA parameter set. The public-key and signature sizes are selected from the standard set sizes.
ML-DSA public keys in chain publicKeyCount
How many certificates in the transmitted chain carry an ML-DSA public key.
ML-DSA signatures in chain signatureCount
How many certificate signatures in the transmitted chain use ML-DSA.
Other certificate-chain bytes (DER/TLS overhead) otherChainBytes
Measured or estimated bytes for certificate fields, DER tags/lengths, algorithms, names, extensions and TLS framing, excluding the raw ML-DSA key/signature bytes counted above.
Certificate-chain byte budget chainBudgetBytes
The byte limit you want to compare against, such as a local handshake, proxy or protocol budget.
Methodology

Raw ML-DSA bytes = public-key count × public-key size + signature count × signature size. Projected chain bytes = raw ML-DSA bytes + other certificate-chain bytes. Budget headroom = budget − projected bytes; budget use = projected bytes ÷ budget × 100.

Worked example

Three ML-DSA-65 public keys and signatures in a chain

Inputs: ML-DSA parameter set: ML-DSA-65, ML-DSA public keys in chain: 3 keys, ML-DSA signatures in chain: 3 signatures, Other certificate-chain bytes (DER/TLS overhead): 8000 bytes, Certificate-chain byte budget: 16384 bytes

Result: Raw ML-DSA material is 15,783 bytes; projected chain is 23,783 bytes. Headroom is -7,399 bytes, so this estimate is 145.2% of the entered budget.

Practical guidance
Common mistakes

FAQs

Does this calculate a complete TLS Certificate message?

No. It adds the raw ML-DSA key/signature sizes to an overhead value you provide. It does not encode certificates or TLS framing.

Why are public-key and signature counts separate?

A chain can be mixed: some certificates may carry ML-DSA keys while others use different algorithms. Enter the counts that match the chain you are estimating.

Last reviewed: 2026-10-18

An estimate from fixed FIPS 204 primitive sizes and user-supplied overhead; it does not parse X.509, DER-encode a certificate, simulate TLS negotiation or predict a particular server's chain behavior.

This tool provides an indicative estimate, based on the assumptions stated above.

Theme and tool preferences, along with saved and recently used lists, are stored only in this browser.