CertGetIssuerCertificateFromStore-Funktion (wincrypt.h)

Die CertGetIssuerCertificateFromStore-Funktion ruft den Zertifikatkontext aus dem Zertifikatspeicher für den ersten oder nächsten Aussteller des angegebenen Antragstellerzertifikats ab. Anstelle dieser Funktion werden die neuen Funktionen zur Überprüfung der Zertifikatkette empfohlen.

Syntax

PCCERT_CONTEXT CertGetIssuerCertificateFromStore(
  [in]           HCERTSTORE     hCertStore,
  [in]           PCCERT_CONTEXT pSubjectContext,
  [in, optional] PCCERT_CONTEXT pPrevIssuerContext,
  [in, out]      DWORD          *pdwFlags
);

Parameter

[in] hCertStore

Handle eines Zertifikatspeichers.

[in] pSubjectContext

Ein Zeiger auf eine CERT_CONTEXT-Struktur , die die Antragstellerinformationen enthält. Dieser Parameter kann aus einem beliebigen Zertifikatspeicher abgerufen oder von der aufrufenden Anwendung mithilfe der CertCreateCertificateContext-Funktion erstellt werden.

[in, optional] pPrevIssuerContext

Ein Zeiger auf eine CERT_CONTEXT-Struktur , die die Ausstellerinformationen enthält. Ein Aussteller kann über mehrere Zertifikate verfügen, insbesondere wenn sich ein Gültigkeitszeitraum ändert. Dieser Parameter muss für den Aufruf NULL sein, um das erste Ausstellerzertifikat abzurufen. Um das nächste Zertifikat für den Aussteller abzurufen, legen Sie pPrevIssuerContext auf die vom vorherigen Aufruf zurückgegebene CERT_CONTEXT-Struktur fest.

Diese Funktion gibt die CERT_CONTEXT frei, auf die von Nicht-NULL-Werten dieses Parameters verwiesen wird.

[in, out] pdwFlags

Die folgenden Flags ermöglichen Überprüfungsprüfungen für das zurückgegebene Zertifikat. Sie können mithilfe eines bitweisen OR-Vorgangs kombiniert werden, um mehrere Überprüfungen zu ermöglichen.

Wert Bedeutung
CERT_STORE_NO_CRL_FLAG
Gibt an, dass keine übereinstimmende Zertifikatsperrliste gefunden wurde.
CERT_STORE_NO_ISSUER_FLAG
Gibt an, dass kein Ausstellerzertifikat gefunden wurde.
CERT_STORE_REVOCATION_FLAG
Überprüft, ob das Antragstellerzertifikat in der Sperrliste des Ausstellers enthalten ist.
CERT_STORE_SIGNATURE_FLAG
Verwendet den öffentlichen Schlüssel im Zertifikat des Ausstellers, um die Signatur für das Zertifikat des Antragstellers zu überprüfen.
CERT_STORE_TIME_VALIDITY_FLAG
Ruft die aktuelle Uhrzeit ab und überprüft, ob sie innerhalb des Gültigkeitszeitraums des Antragstellerzertifikats liegt.
 

Wenn die Überprüfung eines aktivierten Typs erfolgreich ist, wird dessen Flag auf Null festgelegt. Wenn es fehlschlägt, bleibt sein Flag bei der Rückgabe festgelegt. Bei CERT_STORE_REVOCATION_FLAG ist die Überprüfung erfolgreich, wenn die Funktion keine Zertifikatsperrliste im Zusammenhang mit dem Zertifikat des Antragstellers findet.

Wenn CERT_STORE_REVOCATION_FLAG festgelegt ist und der Aussteller keine Zertifikatsperrliste im Speicher hat, wird CERT_STORE_NO_CRL_FLAG festgelegt, und CERT_STORE_REVOCATION_FLAG bleibt festgelegt.

Wenn CERT_STORE_SIGNATURE_FLAG oder CERT_STORE_REVOCATION_FLAG festgelegt ist, wird CERT_STORE_NO_ISSUER_FLAG festgelegt, wenn die Funktion kein Ausstellerzertifikat im Speicher findet. Ausführliche Informationen finden Sie unter Hinweise.

Bei einem Fehler bei der Überprüfung wird weiterhin ein Zeiger auf die CERT_CONTEXT des Ausstellers zurückgegeben, und GetLastError wird nicht aktualisiert.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Zeiger auf einen schreibgeschützten Aussteller CERT_CONTEXT.

Wenn die Funktion fehlschlägt und das erste oder nächste Ausstellerzertifikat nicht gefunden wird, ist der Rückgabewert NULL.

Nur die zuletzt zurückgegebene CERT_CONTEXT-Struktur muss durch Aufrufen von CertFreeCertificateContext freigegeben werden. Wenn der zurückgegebene CERT_CONTEXT von einem Aufruf der Funktion als pPrevIssuerContext-Parameter bei einem nachfolgenden Aufruf angegeben wird, wird der Kontext im Rahmen der Aktion der Funktion freigegeben.

Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
CRYPT_E_NOT_FOUND
Für das Antragstellerzertifikat wurde kein Aussteller gefunden.
CRYPT_E_SELF_SIGNED
Das Ausstellerzertifikat ist mit dem Antragstellerzertifikat identisch. Es handelt sich um ein selbstsigniertes Stammzertifikat.
E_INVALIDARG
Das Handle im hCertStore-Parameter ist nicht mit dem des Zertifikatkontexts identisch, auf den der pPrevIssuerContext-Parameter verweist, oder ein nicht unterstütztes Flag wurde in pdwFlags festgelegt.

Hinweise

Der zurückgegebene Zeiger wird freigegeben, wenn er als pPrevIssuerContext-Parameter bei einem nachfolgenden Aufruf der Funktion übergeben wird. Andernfalls muss der Zeiger explizit durch Aufrufen von CertFreeCertificateContext freigegeben werden. Ein pPrevIssuerContext , der nicht NULL ist, wird immer von CertGetIssuerCertificateFromStore mithilfe eines Aufrufs von CertFreeCertificateContext freigegeben, auch wenn ein Fehler in der Funktion vorliegt.

CertDuplicateCertificateContext kann aufgerufen werden, um ein Duplikat des Ausstellerzertifikats zu erstellen.

Die Hexadezimalwerte für dwFlags können mithilfe eines bitweisen OR-Vorgangs kombiniert werden, um mehrere Überprüfungen zu aktivieren. Um beispielsweise die Signatur- und Zeitvalidität zu aktivieren, wird der Wert 0x00000003 bei der Eingabe in dwFlags übergeben. Wenn in diesem Fall CERT_STORE_SIGNATURE_FLAG Überprüfung erfolgreich ist, aber CERT_STORE_TIME_VALIDITY_FLAG Überprüfung fehlschlägt, wird dwFlags bei der Ausgabe als 0x00000002 zurückgegeben.

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

Zertifikatfunktionen