Freigeben über


CryptSetHashParam-Funktion (wincrypt.h)

Wichtig Diese API ist veraltet. Neue und vorhandene Software sollten mit der Verwendung von Kryptografie-APIs der nächsten Generation beginnen. Microsoft kann diese API in zukünftigen Releases entfernen.
 
Die CryptSetHashParam-Funktion passt die Vorgänge eines Hashobjekts an, einschließlich des Einrichtens anfänglicher Hashinhalte und der Auswahl eines bestimmten Hashingalgorithmus.

Syntax

BOOL CryptSetHashParam(
  [in] HCRYPTHASH hHash,
  [in] DWORD      dwParam,
  [in] const BYTE *pbData,
  [in] DWORD      dwFlags
);

Parameter

[in] hHash

Ein Handle für das Hashobjekt, für das Parameter festgelegt werden sollen.

[in] dwParam

Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
HP_HMAC_INFO.
Ein Zeiger auf eine HMAC_INFO Struktur, die den kryptografischen Hashalgorithmus und die zu verwendenden inneren und äußeren Zeichenfolgen angibt.
HP_HASHVAL.
Ein Bytearray, das einen Hashwert enthält, der direkt im Hashobjekt platziert werden soll. Bevor Sie diesen Wert festlegen, muss die Größe des Hashwerts mithilfe der CryptGetHashParam-Funktion bestimmt werden, um den HP_HASHSIZE Wert zu lesen.

Einige Kryptografiedienstanbieter (Cryptographic Service Provider , CSPs) unterstützen diese Funktion nicht.

 
Hinweis Einige CSP-Typen können zusätzliche Werte hinzufügen, die mithilfe dieser Funktion festgelegt werden können.
 

[in] pbData

Ein Wertdatenpuffer. Platzieren Sie die Wertdaten in diesem Puffer, bevor Sie CryptSetHashParam aufrufen. Die Form dieser Daten variiert je nach Wertnummer.

[in] dwFlags

Dieser Parameter ist für die zukünftige Verwendung reserviert und muss auf null festgelegt werden.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion TRUE zurück.

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

Die von "NTE" vorangestellten Fehlercodes werden von dem jeweiligen CSP generiert, den Sie verwenden. Es folgen einige mögliche Fehlercodes.

Rückgabecode Beschreibung
ERROR_INVALID_HANDLE
Einer der Parameter gibt ein ungültiges Handle an.
ERROR_BUSY
Der CSP-Kontext wird derzeit von einem anderen Prozess verwendet.
ERROR_INVALID_PARAMETER
Einer der Parameter enthält einen ungültigen Wert. Dies ist in den meisten Fällen ein nicht gültiger Zeiger.
NTE_BAD_FLAGS
Der dwFlags-Parameter ist nonzero, oder der pbData-Puffer enthält einen ungültigen Wert.
NTE_BAD_HASH
Das durch den hHash-Parameter angegebene Hashobjekt ist ungültig.
NTE_BAD_TYPE
Der dwParam-Parameter gibt einen unbekannten Wert an.
NTE_BAD_UID
Der CSP-Kontext, der beim Erstellen des hKey-Schlüssels angegeben wurde, kann nicht gefunden werden.
NTE_FAIL
Die Funktion ist auf unerwartete Weise fehlgeschlagen.

Hinweise

Gelegentlich muss ein an anderer Stelle generierter Hashwert signiert werden. Dies kann mithilfe der folgenden Vorgangssequenz erfolgen:

  1. Erstellen Sie mithilfe von CryptCreateHash ein Hashobjekt.
  2. Legen Sie den wert HP_HASHVAL fest.
  3. Signieren Sie den Hashwert mithilfe von CryptSignHash , und rufen Sie einen digitalen Signaturblock ab.
  4. Zerstören Sie das Hashobjekt mithilfe von CryptDestroyHash.

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 Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

CryptCreateHash

CryptDestroyHash

CryptGetHashParam

CryptSetKeyParam

CryptSignHash

HMAC_INFO

Hash- und Digitale Signaturfunktionen