Freigeben über


CryptHashMessage-Funktion (wincrypt.h)

Die CryptHashMessage-Funktion erstellt einen Hash der Nachricht.

Syntax

BOOL CryptHashMessage(
  [in]                PCRYPT_HASH_MESSAGE_PARA pHashPara,
  [in]                BOOL                     fDetachedHash,
  [in]                DWORD                    cToBeHashed,
  [in]                const BYTE * []          rgpbToBeHashed,
  [in]                DWORD []                 rgcbToBeHashed,
  [out]               BYTE                     *pbHashedBlob,
  [in, out]           DWORD                    *pcbHashedBlob,
  [out, optional]     BYTE                     *pbComputedHash,
  [in, out, optional] DWORD                    *pcbComputedHash
);

Parameter

[in] pHashPara

Ein Zeiger auf eine CRYPT_HASH_MESSAGE_PARA-Struktur , die die Hashparameter enthält.

[in] fDetachedHash

Wenn dieser Parameter auf TRUE festgelegt ist, wird nur pbComputedHash in pbHashedBlob codiert. Andernfalls werden sowohl rgpbToBeHashed als auch pbComputedHash codiert.

[in] cToBeHashed

Die Anzahl der Arrayelemente in rgpbToBeHashed und rgcbToBeHashed. Dieser Parameter kann nur ein Parameter sein, es sei denn , fDetachedHash ist auf TRUE festgelegt.

[in] rgpbToBeHashed

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

[in] rgcbToBeHashed

Ein Array von Größen in Bytes der Puffer, auf die von rgpbToBeHashed verwiesen wird.

[out] pbHashedBlob

Ein Zeiger auf einen Puffer, um die für die Übertragung codierte Hashnachricht zu empfangen.

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

[in, out] pcbHashedBlob

Ein Zeiger auf ein DWORD , der die Größe des Puffers in Bytes angibt, auf den der pbHashedBlob-Parameter verweist. Wenn die Funktion zurückgibt, enthält diese Variable die Größe der entschlüsselten Nachricht in Byte, die in pbHashedBlob kopiert wurde. Dieser Parameter muss die Adresse eines DWORD und nicht NULL sein, da sonst die Länge des Puffers nicht zurückgegeben wird.

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.
 

[out, optional] pbComputedHash

Ein Zeiger auf einen Puffer zum Empfangen des neu erstellten Hashwerts. Dieser Parameter kann NULL sein, wenn der neu erstellte Hash nicht für die zusätzliche Verarbeitung oder zum Festlegen der Größe des Hashs zu Speicherbelegungszwecken benötigt wird. Weitere Informationen finden Sie unter Abrufen von Daten mit unbekannter Länge.

[in, out, optional] pcbComputedHash

Ein Zeiger auf ein DWORD , der die Größe des Puffers in Byte angibt, auf den der pbComputedHash-Parameter verweist. Wenn die Funktion zurückgibt, enthält dieses DWORD die Größe des neu erstellten Hashs in Bytes, der in pbComputedHash kopiert wurde.

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 (TRUE) zurück.

Wenn die Funktion fehlschlägt, gibt sie null (FALSE) zurück. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Hinweis Fehler aus den aufgerufenen Funktionen CryptCreateHash, CryptHashData und CryptGetHashParam können an diese Funktion weitergegeben werden.
 
Die GetLastError-Funktion gibt die folgenden Fehlercodes am häufigsten zurück.
Rückgabecode Beschreibung
E_INVALIDARG
Der Nachrichtencodierungstyp ist ungültig. Derzeit wird nur PKCS_7_ASN_ENCODING unterstützt. CbSize in *pHashPara ist ungültig.
ERROR_MORE_DATA
Wenn der vom pbHashedBlob-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 Bytes in der Variablen, auf die pbHashedBlob verweist.
 

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

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

Weitere Informationen

CryptVerifyDetachedMessageHash

CryptVerifyMessageHash

Vereinfachte Nachrichtenfunktionen