Partager via


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. Prenons l’exemple suivant de la syntaxe de certificat PKCS #10 ASN.1.

--------------------------------------------------------------------
-- 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 de chaînes ou ANY, il ne peut pas être décomposé plus loin. 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é d’autres types.

Un système de type permet de présenter visuellement la syntaxe d’une requête de manière facile à comprendre 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 règles d’encodage unique. 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
  • entier
  • NULL
  • d’IDENTIFICATEUR D’OBJET
  • STRING OCTET

types de chaînes

Présente 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înes ou d’autres types construits.

 

d’encodage de demande de certificat

encodage DER des types ASN.1

règles d’encodage distinguées

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