Compartir a través de


Tipos básicos

La API de inscripción de certificados admite los siguientes tipos básicos de ASN.1.

CADENA DE BITS

Etiqueta de codificación: 0x03

nombre de Certreq.exe: BIT_STRING

Una cadena binaria o de bits es una matriz arbitrariamente larga de bits. Los bits específicos se pueden identificar mediante enteros entre paréntesis y nombres asignados como en el ejemplo siguiente.

Versions ::= BIT STRING{ version-1(0), version-2(1) } 

Las claves de certificado y las firmas a menudo se representan como cadenas de bits.

---------------------------------------------------------------------
-- ASN.1 type example: BIT STRING
-- Tag number: 0x03
---------------------------------------------------------------------
SubjectPublicKeyInfo ::= SEQUENCE 
{
  algorithm           AlgorithmIdentifier,
  subjectPublicKey    BIT STRING
} 

BOOLEAN

Etiqueta de codificación: 0x01

Certreq.exe nombre: BOOLEAN

Un tipo booleano puede contener uno de dos valores, TRUE o FALSE. En el ejemplo siguiente se muestra la estructura ASN.1 para una extensión de certificado de restricciones básicas. El campo cA especifica si un sujeto de certificado es una entidad de certificación (CA). La importancia predeterminada es FALSE.

---------------------------------------------------------------------
-- ASN.1 type example: BOOLEAN
-- Tag number: 0x01
---------------------------------------------------------------------
BasicConstraints ::= SEQUENCE 
{
  cA                  BOOLEAN DEFAULT FALSE,
  pathLenConstraint   INTEGER OPTIONAL
}

INTEGER

Etiqueta de codificación: 0x02

Certreq.exe nombre: INTEGER

Un entero normalmente puede ser cualquier valor entero positivo o negativo. En el ejemplo siguiente se muestra la estructura ASN.1 de una clave pública RSA. Tenga en cuenta que el campo publicExponent está restringido a un entero positivo menor que 4.294.967.296.

---------------------------------------------------------------------
-- ASN.1 type example: INTEGER
-- Tag number: 0x02
---------------------------------------------------------------------
HUGEINTEGER ::= INTEGER

RSAPublicKey ::= SEQUENCE 
{ 
  modulus         HUGEINTEGER,    
  publicExponent  INTEGER (0..4294967295) 
} 

NULL

Etiqueta de codificación: 0x05

Certreq.exe nombre: NULL

Un tipo NULL contiene un único 0x00 de bytes. Se puede usar en cualquier lugar donde la solicitud de certificado debe indicar un valor vacío. Por ejemplo, algorithmIdentifier es una secuencia que contiene un identificador de objeto (OID) y parámetros opcionales.

---------------------------------------------------------------------
-- ASN.1 type example: NULL
-- Tag number: 0x05
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
}

Si no hay parámetros cuando se codifica la estructura, se usa NULL para indicar un valor vacío.

30 0d            ; SEQUENCE (d Bytes)
|  |  |  06 09          ; OBJECT_ID (9 Bytes)
|  |  |  |  2a 86 48 86 f7 0d 01 01  01
|  |  |  |     ; 1.2.840.113549.1.1.1 RSA (RSA_SIGN)
|  |  |  05 00          ; NULL (0 Bytes)

IDENTIFICADOR DE OBJETO

Etiqueta de codificación: 0x06

nombre de Certreq.exe: OBJECT_ID

La API de inscripción de certificados usa identificadores de objeto (OID) como un tipo de puntero universal a identificadores de algoritmo, atributos y otros elementos PKI. Los OID se presentan normalmente en una cadena decimal con puntos como "2.16.840.1.101.3.4.1.42". Los elementos individuales de la cadena, separados por puntos, representan los arcos y salen en un árbol de autoridad de registro que identifica de forma única el objeto y la organización que lo registró. Por ejemplo, el OID anterior se puede expandir al país conjunto iso-itu-t(2) country(16) us(840) organization(1) gov(1) gov(101) csor(3) nistAlgorithms(4) aesAlgs(1) con .42 anexado para identificar de forma única el algoritmo de encadenamiento de bloques de cifrado AES de 256 bits (CBC).

---------------------------------------------------------------------
-- ASN.1 type example: OBJECT IDENTIFIER
-- Tag number: 0x06
---------------------------------------------------------------------
AlgorithmIdentifier ::= SEQUENCE 
{
  algorithm           OBJECT IDENTIFIER,
  parameters          ANY OPTIONAL    
}

OCTET STRING

Etiqueta de codificación: 0x04

nombre de Certreq.exe: OCTET_STRING

Una cadena de octetos es una matriz de bytes arbitrariamente grande. Sin embargo, a diferencia del tipo BIT STRING , no se pueden asignar bits y bytes específicos en la cadena. La palabra octeto está pensada para ser una forma independiente de la plataforma de hacer referencia a una palabra de memoria. Dentro del contexto de la API de inscripción de certificados, el octeto y el byte son intercambiables.

---------------------------------------------------------------------
-- ASN.1 type example: OCTET STRING
-- Tag number: 0x04
---------------------------------------------------------------------
AuthorityKeyId ::= SEQUENCE 
{
  keyIdentifier       [0] IMPLICIT OCTET STRING OPTIONAL,
  certIssuer          [1] EXPLICIT NAME
  certSerialNumber    [2] IMPLICIT INTEGER OPTIONAL
}

Sistema de tipos ASN.1

reglas de codificación distinguida

Codificación DER de tipos ASN.1