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
X509_ASN_ENCODING
1 (0x1)
Gibt die X.509-Zertifikatcodierung an.

[in] dwSubjectType

Der Antragstellertyp. Dieser Parameter kann einer der folgenden Betrefftypen sein.

Wert Bedeutung
CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB
1 (0x1)
pvSubject ist ein Zeiger auf eine CRYPT_DATA_BLOB-Struktur .
CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT
2 (0x2)
pvSubject ist ein Zeiger auf eine CCERT_CONTEXT-Struktur .
CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL
3 (0x3)
pvSubject ist ein Zeiger auf eine CCRL_CONTEXT-Struktur .
CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE
4 (0x4)
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
CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY
1 (0x1)
pvIssuer ist ein Zeiger auf eine CERT_PUBLIC_KEY_INFO-Struktur .
CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT
2 (0x2)
pvIssuer ist ein Zeiger auf eine CCERT_CONTEXT-Struktur .
CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN
3 (0x3)
pvIssuer ist ein Zeiger auf eine CCERT_CHAIN_CONTEXT-Struktur .
CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL
4 (0x4)
pvIssuer muss NULL sein.
 
Hinweis Wenn dwIssuerTypeCRYPT_VERIFY_CERT_SIGN_ISSUER_NULL und der Signaturalgorithmus ein Hashalgorithmus ist, wird erwartet, dass die Signatur nur unverschlüsselte Hashoktette enthält. In diesem nicht verschlüsselten Signaturfall können nur CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL angegeben werden. Wenn ein anderer dwIssuerType angegeben wird, schlägt die Überprüfung fehl, und GetLastError gibt E_INVALIDARG zurück.
 

[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
CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG
0x00000001
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.

CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG
0x00000002
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:

  • CERT_SIGN_HASH_CNG_ALG_PROP_ID
Die folgenden Eigenschaften werden für den CRL-Kontext festgelegt:
  • CERT_SIGN_HASH_CNG_ALG_PROP_ID
  • CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
Hinweis Dieses Flag gilt nur, wenn CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL im dwSubjectType-Parameter angegeben ist.
 
Windows 8 und Windows Server 2012: Die Unterstützung für dieses Flag beginnt.
CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG
0x00000004
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.
 
Windows 8 und Windows Server 2012: Die Unterstützung für dieses Flag beginnt.

[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.

Hinweis Fehler aus den aufgerufenen Funktionen CryptCreateHash, CryptImportKey, CryptVerifySignature und CryptHashData können an diese Funktion weitergegeben werden.
 
Bei einem Fehler führt diese Funktion dazu, dass die folgenden Fehlercodes von GetLastError zurückgegeben werden.
Rückgabecode Beschreibung
ERROR_FILE_NOT_FOUND
Ungültiger Zertifikatcodierungstyp. Derzeit wird nur X509_ASN_ENCODING unterstützt.
NTE_BAD_ALGID
Der Objektbezeichner (Object Identifier, OID) des Signaturalgorithmus wird keinem bekannten oder unterstützten Hashalgorithmus zugeordnet.
NTE_BAD_SIGNATURE
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

Weitere Informationen

CryptVerifyCertificateSignature