CryptVerifyCertificateSignatureEx-Funktion (wincrypt.h)
Die CryptVerifyCertificateSignatureEx-Funktion überprüft die Signatur eines Antragstellerzertifikats, einer Zertifikatsperrliste, einer Zertifikatanforderung oder einer Keygenanforderung mithilfe des öffentlichen Schlüssels des Ausstellers. Die Funktion erfordert keinen Zugriff auf einen privaten Schlüssel.
Syntax
BOOL CryptVerifyCertificateSignatureEx(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwCertEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] DWORD dwIssuerType,
[in] void *pvIssuer,
[in] DWORD dwFlags,
[in, out, optional] void *pvExtra
);
Parameter
[in] hCryptProv
Dieser Parameter wird nicht verwendet und sollte auf NULL festgelegt werden.
Windows Server 2003 und Windows XP: Ein Handle für den Kryptografiedienstanbieter , der zum Überprüfen der Signatur verwendet wird. Der Datentyp dieses Parameters ist HCRYPTPROV.
NULL wird übergeben, es sei denn, es gibt einen starken Grund für die Übergabe eines bestimmten kryptografischen Anbieters. Die Übergabe von NULL bewirkt, dass der Standard-RSA- oder DSS-Anbieter abgerufen wird.
[in] dwCertEncodingType
Der Zertifikatcodierungstyp , der zum Verschlüsseln des Antragstellers verwendet wurde. Der Bezeichner des Nachrichtencodierungstyps , der im hohen WORD dieses Werts enthalten ist, wird von dieser Funktion ignoriert.
Bei diesem Parameter kann es sich um den folgenden derzeit definierten Zertifikatcodierungstyp handeln.
Wert | Bedeutung |
---|---|
|
Gibt die X.509-Zertifikatcodierung an. |
[in] dwSubjectType
Der Antragstellertyp. Dieser Parameter kann einer der folgenden Betrefftypen sein.
Wert | Bedeutung |
---|---|
|
pvSubject ist ein Zeiger auf eine CRYPT_DATA_BLOB-Struktur . |
|
pvSubject ist ein Zeiger auf eine CCERT_CONTEXT-Struktur . |
|
pvSubject ist ein Zeiger auf eine CCRL_CONTEXT-Struktur . |
|
pvSubject ist ein Zeiger auf eine OCSP_BASIC_SIGNED_RESPONSE_INFO-Struktur .
Windows Server 2003 und Windows XP: Dieser Betrefftyp wird nicht unterstützt. |
[in] pvSubject
Ein Zeiger auf eine Struktur des durch dwSubjectType angegebenen Typs , der die zu überprüfende Signatur enthält.
[in] dwIssuerType
Der Ausstellertyp. Dieser Parameter kann einer der folgenden Ausstellertypen sein.
Wert | Bedeutung |
---|---|
|
pvIssuer ist ein Zeiger auf eine CERT_PUBLIC_KEY_INFO-Struktur . |
|
pvIssuer ist ein Zeiger auf eine CCERT_CONTEXT-Struktur . |
|
pvIssuer ist ein Zeiger auf eine CCERT_CHAIN_CONTEXT-Struktur . |
|
pvIssuer muss NULL sein. |
[in] pvIssuer
Ein Zeiger auf eine Struktur des Typs, der durch den Wert von dwIssuerType angegeben wird. Die -Struktur enthält Zugriff auf den öffentlichen Schlüssel, der zum Überprüfen der Signatur erforderlich ist.
[in] dwFlags
Flags, die das Funktionsverhalten ändern. Dies kann null oder ein bitweises OR der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Wenn Sie dieses Flag festlegen und CryptVerifyCertificateSignatureEx einen MD2- oder MD4-Algorithmus erkennt, gibt die Funktion FALSE zurück und legt GetLastError auf NTE_BAD_ALGID fest. Die Signatur ist weiterhin überprüft, aber diese Kombination von Fehlern ermöglicht es dem Aufrufer, der nun weiß, dass ein MD2- oder MD4-Algorithmus verwendet wurde, zu entscheiden, ob er der Signatur vertrauen oder ablehnen möchte.
Windows 8 und Windows Server 2012: Die Unterstützung für dieses Flag beginnt. |
|
Legt nach erfolgreicher Überprüfung starke Signatureigenschaften für den Betreff fest, auf den der parameter pvSubject verweist.
Die folgende Eigenschaft wird für den Zertifikatkontext festgelegt:
Hinweis Dieses Flag gilt nur, wenn CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL im dwSubjectType-Parameter angegeben ist.
|
|
Gibt einen Zeiger auf eine CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO-Struktur im pvExtra-Parameter zurück. Die -Struktur enthält die Länge des öffentlichen Schlüssels in Bits und die Namen der verwendeten Signatur- und Hashingalgorithmen.
Sie müssen CryptMemFree aufrufen, um die Struktur frei zu machen. Wenn arbeitsspeicher nicht für die CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO-Struktur zugeordnet werden kann, gibt diese Funktion erfolgreich zurück, legt jedoch den parameter pvExtra auf NULL fest. Hinweis Dieses Flag gilt nur, wenn CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE im dwSubjectType-Parameter angegeben ist.
|
[in, out, optional] pvExtra
Zeiger auf eine CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO-Struktur , wenn der dwFlags-Parameter auf CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG festgelegt ist.
Sie müssen CryptMemFree aufrufen, um die Struktur frei zu machen.
Rückgabewert
Gibt ungleich null zurück, wenn erfolgreich oder andernfalls null.
Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.
Rückgabecode | Beschreibung |
---|---|
|
Ungültiger Zertifikatcodierungstyp. Derzeit wird nur X509_ASN_ENCODING unterstützt. |
|
Der Objektbezeichner (Object Identifier, OID) des Signaturalgorithmus wird keinem bekannten oder unterstützten Hashalgorithmus zugeordnet. |
|
Die Signatur war ungültig. |
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
Der Antragstellerpuffer kann ein codiertes BLOB oder einen Kontext für ein Zertifikat oder eine Zertifikatsperrliste enthalten. Wenn im Fall eines Zertifikatkontexts die Parameter für den öffentlichen Schlüssel des Zertifikats fehlen und diese Parameter vom Aussteller des Zertifikats geerbt werden können, z. B. vom DSS-Parameter für öffentliche Schlüssel, wird die eigenschaft CERT_PUBKEY_ALG_PARA_PROP_ID des Kontexts mit den Parametern des Public Key-Algorithmus des Ausstellers für eine gültige Signatur aktualisiert.
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wincrypt.h |
Bibliothek | Crypt32.lib |
DLL | Crypt32.dll |