Freigeben über


CertCreateCertificateContext-Funktion (wincrypt.h)

Die CertCreateCertificateContext-Funktion erstellt einen Zertifikatkontext aus einem codierten Zertifikat. Der erstellte Kontext wird nicht in einem Zertifikatspeicher gespeichert. Die Funktion erstellt eine Kopie des codierten Zertifikats innerhalb des erstellten Kontexts.

Syntax

PCCERT_CONTEXT CertCreateCertificateContext(
  [in] DWORD      dwCertEncodingType,
  [in] const BYTE *pbCertEncoded,
  [in] DWORD      cbCertEncoded
);

Parameter

[in] dwCertEncodingType

Gibt den verwendeten Codierungstyp an. Es ist immer akzeptabel, sowohl den Zertifikat- als auch den Nachrichtencodierungstyp anzugeben, indem sie mit einem bitweisen OR-Vorgang kombiniert werden, wie im folgenden Beispiel gezeigt:

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING Derzeit definierte Codierungstypen sind:

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

[in] pbCertEncoded

Ein Zeiger auf einen Puffer, der das codierte Zertifikat enthält, aus dem der Kontext erstellt werden soll.

[in] cbCertEncoded

Die Größe des pbCertEncoded-Puffers in Byte .

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion einen Zeiger auf einen schreibgeschützten CERT_CONTEXT zurück. Wenn Sie die Verwendung des Zertifikatkontexts abgeschlossen haben, geben Sie ihn frei, indem Sie die CertFreeCertificateContext-Funktion aufrufen.

Wenn die Funktion nicht in der Lage ist, den Zertifikatkontext zu decodieren und zu erstellen, gibt sie NULL zurück. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
E_INVALIDARG
Es wurde ein ungültiger Zertifikatcodierungstyp angegeben. Derzeit wird nur der typ X509_ASN_ENCODING unterstützt.
 

Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise einen ASN.1-Codierungs-/Decodierungsfehler ( Abstract Syntax Notation One ) zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1-Rückgabewerte für Codierung/Decodierung.

Hinweise

Die CERT_CONTEXT muss durch Aufrufen von CertFreeCertificateContext freigegeben werden. CertDuplicateCertificateContext kann aufgerufen werden, um ein Duplikat zu erstellen. CertSetCertificateContextProperty und CertGetCertificateContextProperty können aufgerufen werden, um Eigenschaften für das Zertifikat zu speichern und zu lesen.

Beispiele

Das folgende Beispiel zeigt das Erstellen eines Zertifikatkontexts aus einem codierten Zertifikat. Der erstellte Kontext wird nicht in einen Zertifikatspeicher eingefügt. Ein weiteres Beispiel, das diese Funktion verwendet, finden Sie unter Beispiel-C-Programm: Zertifikatspeichervorgänge.

#include <windows.h>
#include <stdio.h>
#include <Wincrypt.h>

#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)

void main()
{
	PCCERT_CONTEXT  pCertContext = NULL; 

	//------------------------------------------------------------------ 
	//  Create a new certificate from the encoded part of
	//  an available certificate. pDesiredCert is a previously
	//  assigned PCCERT_CONTEXT variable.
	if(pCertContext = CertCreateCertificateContext(
		MY_ENCODING_TYPE,              // The encoding type
		pDesiredCert->pbCertEncoded,   // The encoded data from
									   // the certificate retrieved
		pDesiredCert->cbCertEncoded))  // The length of the encoded data
	{
		printf("A new certificate has been created.\n");
	 
		// Use the certificate context as needed.
		// ...

		// When finished, free the certificate context.
		CertFreeCertificateContext(pCertContext);
	}
	else
	{
		printf("A new certificate could not be created.\n");
		exit(1);
	}
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

CERT_CONTEXT

CertCreateCRLContext

CertCreateCTLContext

CertDuplicateCertificateContext

CertFreeCertificateContext

CertGetCertificateContextProperty

CertSetCertificateContextProperty

Zertifikatfunktionen