The specs behind the specs – a deep-dive on ASN.1
I maintain Heimdal[0]&#x27;s ASN.1 compiler[1], though I didn&#x27;t create it.  It&#x27;s a pleasure.  It, and the IETF, have taught me a few things:<p>- there&#x27;s nothing really wrong with ASN.1 as a syntax except maybe it&#x27;s ugly<p>- there&#x27;s nothing wrong at all with ASN.1&#x27;s semantics<p>- there&#x27;s a TON wrong with the BER family of encoding rules (BER, DER, and CER), and with <i>every</i> tag-length-value scheme<p>- you can create ASN.1 encoding rules for anything you like, which really means &quot;use ASN.1 as the schema language for whatever encoding I prefer&quot;<p>- indeed, there&#x27;s XER (XML encoding rules), JER (JSON encoding rules), GSER (generic string encoding rules) -- all text-based -- and a bunch of binary encodings with at least two that are not tag-length-value (and so resemble NDR and XDR), like PER and OER<p>- people love to hate ASN.1, mainly because BER&#x2F;DER&#x2F;CER deserve the hatred, and for less legitimate reasons too, so they go off and invent new wheels that often have the same problems -- oh well!<p><pre><code>  [0] https:&#x2F;&#x2F;github.com&#x2F;heimdal&#x2F;heimdal
  [1] https:&#x2F;&#x2F;github.com&#x2F;heimdal&#x2F;heimdal&#x2F;tree&#x2F;master&#x2F;lib&#x2F;asn1</code></pre>