Attributarchitektur
Die folgenden Schnittstellen werden zum Hinzufügen von Attributen zu einer Zertifikatanforderung verwendet:
Die Architektur folgt der im ASN.1-Modul der PKCS #10-Zertifizierungsanforderungssyntax definiert.
CertificationRequestInfo ::= SEQUENCE
{
version CertificationRequestInfoVersion,
subject ANY,
subjectPublicKeyInfo SubjectPublicKeyInfo,
attributes [0] IMPLICIT Attributes
}
Attributes ::= SET OF Attribute
Attribute ::= SEQUENCE
{
type EncodedObjectID,
values AttributeSetValue
}
Die ICryptAttributes-Auflistung entspricht dem Attributfeld, und jedes ICryptAttribute-Objekt in der Auflistung entspricht einer ASN.1-Attributstruktur.
Jedes Attribut besteht aus einem Objektbezeichner (OID) und null oder mehr Werten, die der OID zugeordnet sind. Ein einzelnes OID-Wert-Paar wird durch eine IX509Attribute-Schnittstelle dargestellt. Sie können eine IX509Attributes-Auflistung verwenden, um ein ICryptAttribute-Objekt zu initialisieren, aber jedes Attribut in der Auflistung muss derselben OID zugeordnet sein. In der Regel verfügt ein Attribut nur über einen Wert.
Sie können eine der folgenden Schnittstellen verwenden, die von IX509Attribute abgeleitet sind, um ein einzelnes OID-Wert-Attributpaar zu erstellen:
- IX509AttributeClientId
- IX509AttributeExtensions
- IX509AttributeArchiveKey
- IX509AttributeArchiveKeyHash
- IX509AttributeCspProvider
- IX509AttributeOSVersion
- IX509AttributeRenewalCertificate
Im folgenden Verfahren wird beispielsweise veranschaulicht, wie ein ClientId-Attribut erstellt wird .
So erstellen Sie ein ClientId-Attribut
- Rufen Sie ein ICryptAttributes-Objekt aus einem IX509CertificateRequestPkcs10 - oder IX509CertificateRequestCmc-Objekt ab.
- Erstellen und initialisieren Sie ein IX509AttributeClientId-Objekt .
- Erstellen Sie eine IX509Attributes-Auflistung , und fügen Sie das IX509AttributeClientId-Objekt hinzu.
- Verwenden Sie die IX509Attributes-Auflistung , um ein ICryptAttribute-Objekt zu initialisieren.
- Fügen Sie das ICryptAttribute-Objekt der in Schritt 1 abgerufenen Auflistung hinzu.
Das folgende Beispiel zeigt die ASN.1-Ausgabe des ClientId-Attributs . Das Attribut enthält den DNS-Namen des Computers, auf dem die Anforderung generiert wurde (test3d.jdomcsc.nttest.microsoft.com), den SAM-Namen des Benutzers (JDOMCSC\administrator) und den Namen der Anwendung, die die Anforderung generiert hat (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"
Zugehörige Themen