Udostępnij za pośrednictwem


Architektura atrybutów

Następujące interfejsy służą do dodawania atrybutów do żądania certyfikatu:

Architektura jest zgodna z definicją w module ASN.1 składni żądania certyfikacji PKCS #10.

CertificationRequestInfo ::= SEQUENCE 
{
   version                 CertificationRequestInfoVersion,
   subject                 ANY,
   subjectPublicKeyInfo    SubjectPublicKeyInfo,
   attributes              [0] IMPLICIT Attributes
}

Attributes ::= SET OF Attribute

Attribute ::= SEQUENCE 
{
   type       EncodedObjectID,
   values     AttributeSetValue
}

KolekcjaICryptAttributesodpowiada atrybutów pola, a każdy obiekt ICryptAttribute w kolekcji odpowiada strukturze atrybutu asN.1 atrybutu.

Każdy Atrybut składa się z identyfikatora obiektu (OID) i zer lub więcej wartości skojarzonych z identyfikatorem OID. Pojedyncza para wartości OID jest reprezentowana przez interfejs IX509Attribute. Można użyć kolekcji IX509Attributes, aby zainicjować obiekt ICryptAttribute, ale każdy atrybut w kolekcji musi być skojarzony z tym samym identyfikatorem OID. Zazwyczaj atrybut ma tylko jedną wartość.

Aby utworzyć pojedynczą parę atrybutów OID/wartość, można użyć dowolnego z następujących interfejsów, które pochodzą z IX509Attribute:

Na przykład poniższa procedura przedstawia sposób tworzenia atrybutu ClientId.

Aby utworzyć atrybut ClientId

  1. Pobierz obiektICryptAttributesz obiektu IX509CertificateRequestPkcs10 lub IX509CertificateRequestCmc.
  2. Utwórz i zainicjuj obiekt IX509AttributeClientId.
  3. Utwórz kolekcjęIX509Attributes i dodaj obiekt IX509AttributeClientId.
  4. Użyj kolekcjiIX509Attributes, aby zainicjować obiekt ICryptAttribute.
  5. Dodaj obiektICryptAttributedo kolekcji pobranej w kroku 1.

W poniższym przykładzie przedstawiono dane wyjściowe ASN.1 atrybutu ClientId. Atrybut zawiera nazwę DNS komputera, na którym zostało wygenerowane żądanie (test3d.jdomcsc.nttest.microsoft.com), nazwę SAM użytkownika (JDOMCSC\administrator) oraz nazwę aplikacji, która wygenerowała żądanie (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