Système de type ASN.1

Le concept d’un type de données est fondamental pour la norme ASN.1 (Abstract Syntax Notation One). Chaque champ d’une structure de demande de certificat est associé à un type. Considérez, par exemple, la syntaxe de certificat PKCS #10 ASN.1 illustrée dans l’exemple suivant.

--------------------------------------------------------------------
-- 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 structure de requête de haut niveau, CertificationRequestInfo, est un type constitué d’une séquence d’autres types. Lorsqu’un type est ou contient uniquement des types de base, des types chaîne ou ANY, il ne peut pas être décomposé davantage. Par exemple, le champ version est un type CertificationRequestInfoVersion qui est, à son tour, un type INTEGER , un type ASN.1 de base qui n’est pas composé à partir d’autres types.

Un système de type permet de présenter visuellement la syntaxe d’une requête d’une manière facilement comprise par les développeurs, et permet à la demande d’être encodée de manière cohérente pour la transmission sur un réseau. Pour plus d’informations sur l’encodage, consultez Distinguished Encoding Rules. Pour plus d’informations sur les types ASN.1, consultez les rubriques suivantes.

Types de base

Décrit les types de données suivants :

  • CHAÎNE DE BITS
  • BOOLEAN
  • INTEGER
  • NULL
  • IDENTIFICATEUR D'OBJET
  • CHAÎNE D’OCTETS

Types de chaînes

Décrit les types de chaînes suivants :

  • BMPString
  • IA5String
  • PrintableString
  • TeletexString
  • UTF8String

Types construits

Décrit les types de données ASN.1 qui peuvent contenir des types de base, des types de chaîne ou d’autres types construits.

 

Encodage des demandes de certificat

Encodage DER des types ASN.1

Distinguished Encoding Rules

Présentation de la syntaxe et de l’encodage ASN.1