Types de base

L’API d’inscription de certificat prend en charge les types ASN.1 de base suivants.

CHAÎNE DE BITS

Balise d’encodage : 0x03

Certreq.exe nom : BIT_STRING

Un bit ou chaîne binaire est un tableau arbitrairement long de bits. Des bits spécifiques peuvent être identifiés par des entiers entre parenthèses et des noms attribués, comme dans l’exemple suivant.

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

Les clés de certificat et les signatures sont souvent représentées sous forme de chaînes de bits.

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

BOOLEAN

Balise d’encodage : 0x01

Certreq.exe nom : BOOLEAN

Un type booléen peut contenir l’une des deux valeurs true ou FALSE. L’exemple suivant montre la structure ASN.1 pour une extension de certificat Contraintes de base. Le champ cA spécifie si un sujet de certificat est une autorité de certification . La criticité par défaut est FALSE.

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

INTEGER

Balise d’encodage : 0x02

Certreq.exe nom : INTEGER

Un entier peut généralement être n’importe quelle valeur intégrale positive ou négative. L’exemple suivant montre la structure ASN.1 pour une clé publique RSA. Notez que le champ publicExponent est limité à un entier positif inférieur à 4 294 967 296.

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

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

NULL

Balise d’encodage : 0x05

Certreq.exe nom : NULL

Un type NULL contient un 0x00 d’octet unique. Il peut être utilisé partout où la demande de certificat doit indiquer une valeur vide. Par exemple, un AlgorithmeIdentifier est une séquence qui contient un identificateur d’objet (OID) et des paramètres facultatifs.

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

S’il n’existe aucun paramètre lorsque la structure est encodée, null est utilisé pour indiquer une valeur vide.

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)

IDENTIFICATEUR D'OBJET

Balise d’encodage : 0x06

Certreq.exe nom : OBJECT_ID

L’API d’inscription de certificat utilise des identificateurs d’objet (OID) comme type de pointeur universel vers des identificateurs d’algorithme, des attributs et d’autres éléments PKI. Les OID sont généralement présentés dans une chaîne décimale en pointillés telle que « 2.16.840.1.101.3.4.1.42 ». Les éléments individuels de la chaîne, séparés par des points, représentent les arcs et les feuilles dans une arborescence d’autorité d’inscription qui identifie de manière unique l’objet et le organization qui l’a inscrit. Par exemple, l’OID précédent peut être étendu à joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithms(4) aesAlgs(1) avec .42 ajouté pour identifier de manière unique l’algorithme de mode de chaînage de blocs de chiffrement AES (CBC) 256 bits.

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

CHAÎNE D’OCTETS

Balise d’encodage : 0x04

Certreq.exe nom : OCTET_STRING

Une chaîne d’octets est un tableau d’octets arbitrairement grand. Contrairement au type BIT STRING , toutefois, des bits et octets spécifiques dans la chaîne ne peuvent pas être attribués à des noms. Le mot octet est destiné à être un moyen indépendant de la plateforme de faire référence à un mot de mémoire. Dans le contexte de l’API d’inscription de certificat, l’octet et l’octet sont interchangeables.

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

Système de type ASN.1

Distinguished Encoding Rules

Encodage DER des types ASN.1