Codieren und Decodieren eines Zertifikatkontexts

CryptoAPI unterstützt die Codierung und Decodierung von Zertifikaten. CryptoAPI umfasst ein umfangreiches, flexibles System von Funktionen und C-Strukturen, die die Codierung und Decodierung auf verschiedene Weise ermöglichen. CryptoAPI unterstützt standardmäßige X.509-Zertifikatstruktur und STANDARD-ASN.1-Codierung (Abstract Syntax Notation One), um Interoperabilität mit anderen Systemen zu gewährleisten.

Eine Übersicht über codierte Daten finden Sie unter Codierte und decodierte Daten.

Zertifikatkontexte

Der Zertifikatkontext CERT _ CONTEXTist eine C-Struktur, die einen codierten Member, ein Handle für einen Zertifikatspeicher, einen Zeiger auf das ursprüngliche codierte ZertifikatBLOBund einen Zeiger auf eine CERT _ INFO C-Struktur enthält.

Die CERT _ INFO-Struktur ist das Kernstück des Zertifikats. Er enthält in direkter Form und in codierter Form alle grundlegenden Informationen im Zertifikat. Die folgende Abbildung zeigt die CERT _ INFO-Struktur mit allen codierten Membern, die als schattiert angezeigt werden.

Struktur der - Zertifikatinformationen

Die IssuerUniqueID- und SubjectUniqueID-Member sind Teil der X.509 Version 2-Zertifikatimplementierung, werden jedoch selten verwendet. Zertifikaterweiterungen in Version 3 ersetzen die Funktionalität dieser Member.

Wenn die Informationen in den codierten (schattierten) Membern Issuer und Subject benötigt werden, müssen diese Member decodiert werden. Verwenden Sie CryptDecodeObject, um diese Member zu decodieren. Die folgende Abbildung zeigt den Prozess der Decodierung eines dieser Member.

Decodieren mit cryptdecodeobject

Im dargestellten Fall erstellt die CryptDecodeObject-Funktion eine CERT _ NAME _ INFO-Struktur, ein Array von CERT _ RDN-Strukturen, ein entsprechendes Array von CERT _ RDN _ ATTR-Strukturen und eine Zeichenfolge, die den Namen enthält. Member der CERT _ RDN _ ATTR-Struktur bestimmen den Inhalt der Zeichenfolge. Wenn der pszObjId-Member beispielsweise 2.5.4.3 ist, enthält die Zeichenfolge einen allgemeinen Namen. Wenn es sich um 2.5.4.10 handelt, enthält die Zeichenfolge einen Organisationsnamen. Eine Liste dieser Objektbezeichner (OIDs) finden Sie unter CERT _ RDN _ ATTR.

Der dwValueType-Member enthält Informationen zum Typ der Zeichenfolge. Wenn es sich um CERT RDN PRINTABLE STRING handelt, enthält der Wert member eine Zeichenfolge _ _ mit _ Bytebreite, die auf Null endet. Wenn es sich um CERT RDN UNICODE STRING handelt, ist die Zeichenfolge eine Zeichenfolge mit doppelter Breite _ _ _ (Wortgröße).

Einen ausführlichen Prozess zum Codieren und Decodieren von Zertifikaten finden Sie unter Codieren einer CERT _ INFO-Struktur und Decodieren einer CERT _ INFO-Struktur.