Architektura atrybutów
Następujące interfejsy służą do dodawania atrybutów do żądania certyfikatu:
- ICryptAttribute
- ICryptAttributes
- IX509Attribute
- IX509Attributes
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:
- IX509AttributeClientId
- IX509AttributeExtensions
- IX509AttributeArchiveKey
- IX509AttributeArchiveKeyHash
- IX509AttributeCspProvider
- IX509AttributeOSVersion
- IX509AttributeRenewalCertificate
Na przykład poniższa procedura przedstawia sposób tworzenia atrybutu ClientId.
Aby utworzyć atrybut ClientId
- Pobierz obiektICryptAttributesz obiektu IX509CertificateRequestPkcs10 lub IX509CertificateRequestCmc.
- Utwórz i zainicjuj obiekt IX509AttributeClientId.
- Utwórz kolekcjęIX509Attributes i dodaj obiekt IX509AttributeClientId.
- Użyj kolekcjiIX509Attributes, aby zainicjować obiekt ICryptAttribute.
- 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"
Tematy pokrewne