Un module ASN.1 déclare des types ; la RFC 5280, par exemple, définit Certificate comme une SEQUENCE de tbsCertificate, signatureAlgorithm (un AlgorithmIdentifier) et signatureValue (un BIT STRING). Les briques de base sont SEQUENCE, SET, CHOICE, les champs OPTIONAL et DEFAULT, les étiquettes spécifiques au contexte ([0], [1]) avec un étiquetage IMPLICIT ou EXPLICIT, et des types primitifs comme INTEGER, BIT STRING, OCTET STRING, OBJECT IDENTIFIER ainsi que les types de chaînes et de temps.
Les règles d’encodage transforment une valeur en octets : BER et son sous-ensemble canonique DER (X.690) pour la PKI, PER pour les messages de télécommunications compacts, XER et JER pour XML et JSON. L’essentiel de l’ASN.1 qui touche à la sécurité est en DER.
L’analyse d’ASN.1 a un long historique de bogues (dépassements de longueur, confusion BER/DER, divergences dans le traitement des étiquettes) : utilisez un analyseur maintenu et n’en écrivez jamais un vous-même pour des entrées non fiables. Savoir lire un dump est une compétence de débogage utile : openssl asn1parse -i ou l’explorateur ASN.1 affichent l’arbre avec les décalages.