Freigeben über


CryptVerifyDetachedMessageSignature-Funktion (wincrypt.h)

Die Funktion CryptVerifyDetachedMessageSignature überprüft eine signierte Nachricht, die eine oder mehrere signaturen enthält.

Syntax

BOOL CryptVerifyDetachedMessageSignature(
  [in]            PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,
  [in]            DWORD                      dwSignerIndex,
  [in]            const BYTE                 *pbDetachedSignBlob,
  [in]            DWORD                      cbDetachedSignBlob,
  [in]            DWORD                      cToBeSigned,
  [in]            const BYTE * []            rgpbToBeSigned,
  [in]            DWORD []                   rgcbToBeSigned,
  [out, optional] PCCERT_CONTEXT             *ppSignerCert
);

Parameter

[in] pVerifyPara

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

[in] dwSignerIndex

Index der zu überprüfenden Signatur. Eine Nachricht kann mehrere Signierer aufweisen, und diese Funktion kann wiederholt aufgerufen werden, indem dwSignerIndex geändert wird, um andere Signaturen zu überprüfen. Wenn die Funktion FALSE zurückgibt und GetLastError CRYPT_E_NO_SIGNER zurückgibt, hat der vorherige Aufruf den letzten Signierer der Nachricht empfangen.

[in] pbDetachedSignBlob

Ein Zeiger auf ein BLOB, das die codierten Nachrichtensignaturen enthält.

[in] cbDetachedSignBlob

Die Größe der getrennten Signatur in Bytes.

[in] cToBeSigned

Anzahl der Arrayelemente in rgpbToBeSigned und rgcbToBeSigned.

[in] rgpbToBeSigned

Array von Zeigern auf Puffer, die den inhalt enthalten, der gehasht werden soll.

[in] rgcbToBeSigned

Array von Größen in Bytes für die Inhaltspuffer, auf die in rgpbToBeSigned verwiesen wird.

[out, optional] ppSignerCert

Ein Zeiger auf einen Zeiger auf eine CERT_CONTEXT Struktur eines Signaturgeberzertifikats. Wenn Sie die Verwendung des Zertifikatkontexts abgeschlossen haben, geben Sie ihn frei, indem Sie die CertFreeCertificateContext-Funktion aufrufen. Ein Zeiger auf eine CERT_CONTEXT-Struktur wird nicht zurückgegeben, wenn dieser Parameter NULL ist.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich null (TRUE).

Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE).

Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

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

Rückgabecode Beschreibung
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.
 
Hinweis Fehler aus den aufgerufenen Funktionen CryptCreateHash, CryptHashData, CryptVerifySignature und CryptImportKey können an diese Funktion weitergegeben werden.

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.

 

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

CryptVerifyMessageSignature

Vereinfachte Nachrichtenfunktionen