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 :
- 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érer 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 collection IX509Attributes 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 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"
Rubriques connexes