CertCreateCertificateContext-Funktion (wincrypt.h)

Die Funktion CertCreateCertificateContext erstellt einen Zertifikatkontext aus einem codierten Zertifikat. Der erstellte Kontext wird nicht in einem Zertifikatspeicher beibehalten. 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 Typ der verwendeten Codierung an. Es ist immer zulässig, sowohl die Zertifikat- als auch die Nachrichtencodierungstypen anzugeben, indem sie mit einem Bitzeiger-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 in Bytes des pbCertEncoded-Puffers .

Rückgabewert

Wenn die Funktion erfolgreich verläuft, gibt die Funktion einen Zeiger zu einem schreibgeschützten CERT_CONTEXT zurück. Wenn Sie den Zertifikatkontext verwendet haben, öffnen Sie ihn, indem Sie die Funktion CertFreeCertificateContext aufrufen.

Wenn die Funktion den Zertifikatkontext nicht entschlüsseln und erstellen kann, wird NULL zurückgegeben. Rufen Sie getLastError für erweiterte Fehlerinformationen auf. Einige mögliche Fehlercodes folgen.

Rückgabecode Beschreibung
E_INVALIDARG
Ein Zertifikatcodierungstyp, der ungültig ist, wurde angegeben. Derzeit wird nur der X509_ASN_ENCODING Typ unterstützt.
 

Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise eine abstrakte Syntax Notation One (ASN.1)-Codierung/Decodierungsfehler zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1-Codierung/Decodierung von Rückgabewerten.

Bemerkungen

Die CERT_CONTEXT müssen durch Aufrufen von CertFreeCertificateContext freigestellt 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 in einem Zertifikatspeicher nicht platziert. 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