The first uint16 is the type. The second is the length prefix for claim_info. The third is the length prefix for dns_names.
When writing a parser it's clear that there is a superfluous prefix in the specification. It's not that easy to express leaving it out without adding new notation to the TLS presentation language. Perhaps it's fine to leave it like this.
Yeah, the TLS presentation language tends to result in double prefixes like this. Not thrilled with it, but at least on the TLS side, folks seem to mostly just live with it.
A Claim is defined as
For claim_type=
dns
, theclaim_info
is to be interpreted as aDNSNameList
, which is defined asThus a DNS claim for
example.com
is:The first uint16 is the type. The second is the length prefix for
claim_info
. The third is the length prefix fordns_names
.When writing a parser it's clear that there is a superfluous prefix in the specification. It's not that easy to express leaving it out without adding new notation to the TLS presentation language. Perhaps it's fine to leave it like this.