Partager via


Architecture des attributs

Les interfaces suivantes sont utilisées pour ajouter des attributs à une demande de certificat :

L’architecture suit celle définie dans le module ASN.1 de la syntaxe de demande de certification PKCS #10.

CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 ANY,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type       EncodedObjectID,
   values     AttributeSetValue
}

La collectionICryptAttributescorrespond aux attributs , et chaque objet ICryptAttribute de la collection correspond à une structure Attribute ASN.1 Attribute.

Chaque Attribute se compose d’un identificateur d’objet (OID) et de zéro ou plusieurs valeurs associées à l’OID. Une paire OID-value unique est représentée par une interface IX509Attribute. Vous pouvez utiliser une collection IX509Attributes pour initialiser un objet ICryptAttribute, mais chaque attribut de la collection doit être associé au même OID. En règle générale, un attribut n’a qu’une seule valeur.

Vous pouvez utiliser l’une des interfaces suivantes, qui dérivent de IX509Attribute, pour créer une paire d’attributs OID/value unique :

Par exemple, la procédure suivante montre comment créer un attribut ClientId.

Pour créer un attribut clientId

  1. Récupérez un objet ICryptAttributes à partir d’un objet IX509CertificateRequestPkcs10 ou IX509CertificateRequestCmc.
  2. Créez et initialisez un objet IX509AttributeClientId.
  3. Créez une collection ix509Attributes et ajoutez l’objet IX509AttributeClientId.
  4. Utilisez la collectionIX509Attributes pour initialiser un objet ICryptAttribute.
  5. Ajoutez l’objet ICryptAttribute à la collection récupérée à l’étape 1.

L’exemple suivant montre la sortie ASN.1 de l’attribut ClientId. L’attribut contient le nom DNS de l’ordinateur sur lequel la requête a été générée (test3d.jdomcsc.nttest.microsoft.com), le nom SAM de l’utilisateur (JDOMCSC\administrator) et le nom de l’application qui a généré la requête (certreq).

0136: 30 57; SEQUENCE (57 Bytes)
0138: |  06 09                            ; OBJECT_ID (9 Bytes)
013a: |  |  2b 06 01 04 01 82 37 15  14
      |  |     ; 1.3.6.1.4.1.311.21.20 Client Information
0143: |  |  31 4a                         ; SET (4a Bytes)
0145: |  |     30 48                      ; SEQUENCE (48 Bytes)
0147: |  |        02 01                   ; INTEGER (1 Bytes)
0149: |  |        |  09
014a: |  |        0c 23                   ; UTF8_STRING (23 Bytes)
014c: |  |        |  74 65 73 74 33 64 2e 6a  64 6f 6d 63 73 63 2e 6e 
015c: |  |        |  74 74 65 73 74 2e 6d 69  63 72 6f 73 6f 66 74 2e 
016c: |  |        |  63 6f 6d                                         
      |  |        |     ; "test3d.jdomcsc.nttest.microsoft.com"
016f: |  |        0c 15                   ; UTF8_STRING (15 Bytes)
0171: |  |        |  4a 44 4f 4d 43 53 43 5c  61 64 6d 69 6e 69 73 74 
0181: |  |        |  72 61 74 6f 72                                   
      |  |        |     ; "JDOMCSC\administrator"
0186: |  |        0c 07                   ; UTF8_STRING (7 Bytes)
0188: |  |           63 65 72 74 72 65 71                             
      |  |              ; "certreq"

ICryptAttribute

ICryptAttributes

IX509Attribute

IX509Attributes