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:

Im folgenden Verfahren wird beispielsweise veranschaulicht, wie ein ClientId-Attribut erstellt wird .

So erstellen Sie ein ClientId-Attribut

  1. Rufen Sie ein ICryptAttributes-Objekt aus einem IX509CertificateRequestPkcs10 - oder IX509CertificateRequestCmc-Objekt ab.
  2. Erstellen und initialisieren Sie ein IX509AttributeClientId-Objekt .
  3. Erstellen Sie eine IX509Attributes-Auflistung , und fügen Sie das IX509AttributeClientId-Objekt hinzu.
  4. Verwenden Sie die IX509Attributes-Auflistung , um ein ICryptAttribute-Objekt zu initialisieren.
  5. 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"

ICryptAttribute

ICryptAttributes

IX509Attribute

IX509Attributes