The BCryptHashData function performs a one way hash or Message Authentication Code (MAC) on a data buffer.
NTSTATUS BCryptHashData(
BCRYPT_HASH_HANDLE hHash,
PUCHAR pbInput,
ULONG cbInput,
ULONG dwFlags
)
hHash
Type: BCRYPT_HASH_HANDLE
[in, out] The handle of the hash or MAC object to use to perform the operation. This handle is obtained by calling the BCryptCreateHash function.
pbInput
Type: PUCHAR
[in] A pointer to a buffer that contains the data to process. The cbInput parameter contains the number of bytes in this buffer. This function does not modify the contents of this buffer.
cbInput
Type: ULONG
[in] The number of bytes in the pbInput buffer.
dwFlags
Type: ULONG
[in] A set of flags that modify the behavior of this function. No flags are currently defined, so this parameter should be zero.
Type: NTSTATUS
Returns a status code that indicates the success or failure of the function.
Possible return codes include, but are not limited to, the following.
| Return code | Description |
|---|---|
| STATUS_SUCCESS | The function was successful. |
| STATUS_INVALID_PARAMETER | One or more parameters are not valid. |
| STATUS_INVALID_HANDLE | The hash handle in the hHash parameter is not valid. After the BCryptFinishHash function has been called for a hash handle, that handle cannot be reused. |
To combine more than one buffer into the hash or MAC, you can call this function multiple times, passing a different buffer each time. To obtain the hash or MAC value, call the BCryptFinishHash function. After the BCryptFinishHash function has been called for a specified handle, that handle cannot be reused.
Depending on what processor modes a provider supports, BCryptHashData can be called either from user mode or kernel mode. Kernel mode callers can execute either at PASSIVE_LEVELIRQL or DISPATCH_LEVEL IRQL. If the current IRQL level is DISPATCH_LEVEL, the handle provided in the hHash parameter must be derived from an algorithm handle returned by a provider that was opened by using the BCRYPT_PROV_DISPATCH flag, and any pointers passed to the BCryptHashData function must refer to nonpaged (or locked) memory.
Header: Declared in bcrypt.h.
Library: Use bcrypt.lib.