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
}
Temas relacionados