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 |
---|---|
|
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
CertDuplicateCertificateContext
CertGetCertificateContextProperty