Compartilhar via


Sistema de tipos ASN.1

O conceito de um tipo de dados é fundamental para o padrão ASN.1 (Abstract Syntax Notation One). Cada campo de uma estrutura de solicitação de certificado está associado a um tipo. Considere, por exemplo, a sintaxe de certificado ASN.1 PKCS nº 10 mostrada no exemplo a seguir.

--------------------------------------------------------------------
-- PKCS #10 Certificate request.
--------------------------------------------------------------------
CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 Name,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

--------------------------------------------------------------------
-- Version number.
--------------------------------------------------------------------
CertificationRequestInfoVersion ::= INTEGER

--------------------------------------------------------------------
-- Subject distinguished name (DN).
--------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeTypeValue

AttributeTypeValue ::= SEQUENCE 
{
   type               OBJECT IDENTIFIER,
   value              ANY 
}

--------------------------------------------------------------------
-- Public key information.
--------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE 
{
   algorithm           AlgorithmIdentifier,
   subjectPublicKey    BITSTRING
}

AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
} 

--------------------------------------------------------------------
-- Attributes.
--------------------------------------------------------------------
Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type               OBJECT IDENTIFIER,
   values             AttributeSetValue
}

AttributeSetValue ::= SET OF ANY

A estrutura de solicitação de alto nível, CertificationRequestInfo, é um tipo composto de uma sequência de outros tipos. Quando um tipo é ou contém apenas tipos básicos, tipos de cadeia de caracteres ou ANY, ele não pode ser dividido ainda mais. Por exemplo, o campo de versão é um tipo CertificationRequestInfoVersion que, por sua vez, é um tipo INTEGER , um tipo ASN.1 básico que não é composto de outros tipos.

Um sistema de tipos permite que a sintaxe de uma solicitação seja apresentada visualmente de uma maneira prontamente compreendida pelos desenvolvedores e permite que a solicitação seja codificada consistentemente para transmissão em uma rede. Para obter mais informações sobre codificação, consulte Distinguished Encoding Rules. Para obter mais informações sobre tipos ASN.1, consulte os tópicos a seguir.

Tipos Básicos

Discute os seguintes tipos de dados:

  • CADEIA DE CARACTERES DE BIT
  • BOOLIANO
  • INTEGER
  • NULL
  • IDENTIFICADOR DE OBJETO
  • CADEIA DE CARACTERES OCTETO

Tipos de cadeia de caracteres

Discute os seguintes tipos de cadeia de caracteres:

  • BMPString
  • IA5String
  • PrintableString
  • TeletexString
  • Utf8string

Tipos construídos

Discute tipos de dados ASN.1 que podem conter tipos básicos, tipos de cadeia de caracteres ou outros tipos construídos.

 

Codificação de solicitação de certificado

Codificação DER de tipos ASN.1

Distinguished Encoding Rules

Introdução à sintaxe e à codificação do ASN.1