Attributarchitektur
Die folgenden Schnittstellen werden verwendet, um einer Zertifikatanforderung Attribute hinzuzufügen:
Die Architektur folgt der Definition im ASN.1-Modul der PKCS # 10-Zertifizierungsanforderungssyntax.
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 hat ein Attribut nur einen Wert.
Sie können eine der folgenden Schnittstellen verwenden, die von IX509Attributeabgeleitet sind, um ein einzelnes OID-Wert-Attributpaar zu erstellen:
- IX509AttributeClientId
- IX509AttributeExtensions
- IX509AttributeArchiveKey
- IX509AttributeArchiveKeyHash
- IX509AttributeCspProvider
- IX509AttributeOSVersion
- IX509AttributeRenewalCertificate
Das folgende Verfahren zeigt z. B. das Erstellen eines ClientId-Attributs.
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 Objekt IX509AttributeClientId hinzu.
- Verwenden Sie die IX509Attributes-Auflistung, um ein ICryptAttribute-Objekt zu initialisieren.
- Fügen Sie das ICryptAttribute-Objekt der Auflistung hinzu, die Sie in Schritt 1 abgerufen haben.
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"