Um módulo ASN.1 declara tipos; a RFC 5280, por exemplo, define Certificate como uma SEQUENCE de tbsCertificate, signatureAlgorithm (um AlgorithmIdentifier) e signatureValue (uma BIT STRING). Os blocos de construção são SEQUENCE, SET, CHOICE, campos OPTIONAL e DEFAULT, tags específicas de contexto ([0], [1]) com marcação IMPLICIT ou EXPLICIT e tipos primitivos como INTEGER, BIT STRING, OCTET STRING, OBJECT IDENTIFIER (identificador de objeto) e os tipos de string e de tempo.
As regras de codificação transformam um valor em bytes: BER e seu subconjunto canônico DER (X.690) para PKI, PER para mensagens compactas de telecomunicações, XER e JER para XML e JSON. A maior parte do ASN.1 relevante para segurança é DER.
O parsing de ASN.1 tem um longo histórico de bugs (estouros de comprimento, confusão entre BER e DER, divergências no tratamento de tags); por isso, use um parser mantido e nunca escreva o seu próprio para entradas não confiáveis. Ler um dump é uma habilidade prática de depuração: openssl asn1parse -i ou o explorador de ASN.1 mostram a árvore com os offsets.