Compartir a través de


Sistema de tipos ASN.1

El concepto de un tipo de datos es fundamental para el estándar Notación de sintaxis abstracta Uno (ASN.1). Cada campo de una estructura de solicitud de certificado está asociado a un tipo. Considere, por ejemplo, la sintaxis del certificado PKCS #10 ASN.1 que se muestra en el ejemplo siguiente.

--------------------------------------------------------------------
-- 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

La estructura de solicitudes de alto nivel, CertificationRequestInfo, es un tipo que se compone de una secuencia de otros tipos. Cuando un tipo es o contiene solo tipos básicos, tipos de cadena o ANY, no se puede desglosar aún más. Por ejemplo, el campo de versión es un tipo CertificationRequestInfoVersion que, a su vez, es un tipo INTEGER , un tipo ASN.1 básico que no está compuesto de otros tipos.

Un sistema de tipos permite que los desarrolladores comprendan visualmente la sintaxis de una solicitud y permite codificar de forma coherente la solicitud para su transmisión a través de una red. Para obtener más información sobre la codificación, consulte reglas de codificación distinguida. Para obtener más información sobre los tipos ASN.1, vea los temas siguientes.

Tipos básicos

Describe los siguientes tipos de datos:

  • CADENA DE BITS
  • BOOLEAN
  • INTEGER
  • NULL
  • IDENTIFICADOR DE OBJETO
  • CADENA DE OCTET

Tipos de cadena

Describe los siguientes tipos de cadena:

  • BMPString
  • IA5String
  • PrintableString
  • TeletexString
  • UTF8String

Tipos construidos

Describe los tipos de datos ASN.1 que pueden contener tipos básicos, tipos de cadena u otros tipos construidos.

 

Codificación de solicitud de certificado

Codificación DER de tipos ASN.1

reglas de codificación distinguida

Introducción a la sintaxis y codificación de ASN.1