Share via


CryptVerifyMessageSignatureWithKey-Funktion (wincrypt.h)

Die CryptVerifyMessageSignatureWithKey-Funktion überprüft die Signatur einer signierten Nachricht mithilfe der angegebenen Öffentlichen Schlüsselinformationen.

Syntax

BOOL CryptVerifyMessageSignatureWithKey(
  [in]      PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]      PCERT_PUBLIC_KEY_INFO          pPublicKeyInfo,
  [in]      const BYTE                     *pbSignedBlob,
  [in]      DWORD                          cbSignedBlob,
  [out]     BYTE                           *pbDecoded,
  [in, out] DWORD                          *pcbDecoded
);

Parameter

[in] pVerifyPara

Ein Zeiger auf eine CRYPT_KEY_VERIFY_MESSAGE_PARA-Struktur , die Überprüfungsparameter enthält.

[in] pPublicKeyInfo

Ein Zeiger auf eine CERT_PUBLIC_KEY_INFO-Struktur , die den öffentlichen Schlüssel enthält, der zum Überprüfen der signierten Nachricht verwendet wird. Wenn NULL, wird die Signatur nicht überprüft.

[in] pbSignedBlob

Ein Zeiger auf einen Puffer, der die signierte Nachricht enthält.

[in] cbSignedBlob

Die Größe des Signierten Nachrichtenpuffers in Byte.

[out] pbDecoded

Ein Zeiger auf einen Puffer zum Empfangen der decodierten Nachricht.

Dieser Parameter kann NULL sein, wenn die decodierte Nachricht für die zusätzliche Verarbeitung oder zum Festlegen der Größe der Nachricht zu Speicherbelegungszwecken nicht benötigt wird. Weitere Informationen finden Sie unter Abrufen von Daten mit unbekannter Länge.

[in, out] pcbDecoded

Ein Zeiger auf einen DWORD-Wert , der die Größe des pbDecoded-Puffers in Bytes angibt. Wenn die Funktion zurückgibt, enthält dieses DWORD die Größe der decodierten Nachricht in Bytes. Die decodierte Nachricht wird nicht zurückgegeben, wenn dieser Parameter NULL ist.

Hinweis Bei der Verarbeitung der zurückgegebenen Daten müssen Anwendungen die tatsächliche Größe der zurückgegebenen Daten verwenden. Die tatsächliche Größe kann etwas kleiner als die Größe des bei der Eingabe angegebenen Puffers sein. (Bei der Eingabe werden Puffergrößen in der Regel groß genug angegeben, um sicherzustellen, dass die größtmöglichen Ausgabedaten in den Puffer passen.) Bei der Ausgabe wird die Variable aktualisiert, auf die dieser Parameter verweist, um die tatsächliche Größe der in den Puffer kopierten Daten widerzuspiegeln.
 

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion ungleich null zurück.

Wenn die Funktion fehlschlägt, wird null zurückgegeben. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

In der folgenden Tabelle sind die Fehlercodes aufgeführt, die am häufigsten von der GetLastError-Funktion zurückgegeben werden.

Rückgabecode Beschreibung
ERROR_MORE_DATA
Wenn der vom pbDecoded-Parameter angegebene Puffer nicht groß genug ist, um die zurückgegebenen Daten zu speichern, legt die Funktion den ERROR_MORE_DATA Code fest und speichert die erforderliche Puffergröße in Byte in der Variablen, auf die von pcbDecoded verwiesen wird.
E_INVALIDARG
Ungültige Nachrichten- und Zertifikatcodierungstypen. Derzeit werden nur PKCS_7_ASN_ENCODING und X509_ASN_ENCODING_TYPE unterstützt. Ungültige cbSize in *pVerifyPara.
CRYPT_E_UNEXPECTED_MSG_TYPE
Keine signierte kryptografische Nachricht.
CRYPT_E_NO_SIGNER
Die Nachricht enthält keine Signierer oder einen Signierer für den angegebenen dwSignerIndex.The message does not have any signers or a signerer for the specified dwSignerIndex.
NTE_BAD_ALGID
Die Nachricht wurde mithilfe eines unbekannten oder nicht unterstützten Algorithmus gehasht und signiert.
NTE_BAD_SIGNATURE
Die Signatur der Nachricht wurde nicht überprüft.

Anforderungen

Anforderung Wert
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