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