Architecture des attributs
Les interfaces suivantes sont utilisées pour ajouter des attributs à une demande de certificat :
- ICryptAttribute
- ICryptAttributes
- IX509Attribute
- IX509Attributes
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 :
- IX509AttributeClientId
- IX509AttributeExtensions
- IX509AttributeArchiveKey
- IX509AttributeArchiveKeyHash
- IX509AttributeCspProvider
- IX509AttributeOSVersion
- IX509AttributeRenewalCertificate
Par exemple, la procédure suivante montre comment créer un attribut ClientId.
Pour créer un attribut clientId
- Récupérez un objet ICryptAttributes à partir d’un objet IX509CertificateRequestPkcs10 ou IX509CertificateRequestCmc.
- Créez et initialisez un objet IX509AttributeClientId.
- Créez une collection ix509Attributes et ajoutez l’objet IX509AttributeClientId.
- Utilisez la collectionIX509Attributes pour initialiser un objet ICryptAttribute.
- 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"
Rubriques connexes