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 collection ICryptAttributes correspond au champ d’attributs et chaque objet ICryptAttribute de la collection correspond à une structure d’attribut ASN.1.

Chaque attribut se compose d’un identificateur d’objet (OID) et de zéro ou plusieurs valeurs associées à l’OID. Une seule paire de valeurs OID 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 seule paire d’attributs OID/valeur :

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

Pour créer un attribut ClientId

  1. Récupérer 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 collection IX509Attributes 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 demande 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 demande (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