CPHashData

The CPHashData function is used by applications to feed data to a specified hash object.

BOOL CPHashData(
  HCRYPTPROV hProv,    // in
  HCRYPTHASH hHash,    // in
  CONST BYTE *pbData,  // in
  DWORD dwDataLen,     // in
  DWORD dwFlags        // in
);
 

Parameters

hProv
Handle to a particular key container (or "context") within the CSP. This handle is obtained via a call to CPAcquireContext.
hHash
Handle to a hash object. An application obtains this handle by using the CryptCreateHash function (in the CryptoAPI).
pbData
Address of the data to be hashed.
dwDataLen
Number of bytes of data to be hashed. This must be zero if the CRYPT_USERDATA flag is set.
dwFlags
Flag values. The following value is currently defined:
CRYPT_USERDATA
When this flag is set, the CSP should prompt the user to enter some data directly, which is then added to the hash. The application is not allowed access to the data. For example, this flag can be used to allow the user to enter a PIN into the system.

Support for this flag is optional.

Return Values

If the function succeeds, TRUE should be returned; otherwise, return FALSE. When FALSE is returned, the appropriate error code (see the following table) must be set via SetLastError.

Error Description
NTE_BAD_ALGID The hHash handle specifies an algorithm that this CSP does not support.
NTE_BAD_FLAGS The dwFlags parameter contains an invalid value.
NTE_BAD_HASH The hash object specified by the hHash parameter is invalid.
NTE_BAD_HASH_STATE An attempt was made to add data to a hash object that is already marked as "finished."
NTE_BAD_KEY A keyed hash algorithm is being used, but the session key is no longer valid. This error will be generated if the session key is destroyed before the hashing operating is complete.
NTE_BAD_LEN The CRYPT_USERDATA flag is set, and the dwDataLen parameter has a non-zero value.
NTE_BAD_UID The CSP context that was specified when the hash object was created cannot now be found.
NTE_FAIL The function failed in some unexpected way.
NTE_NO_MEMORY The CSP ran out of memory during the operation.

See Also

CPCreateHash, CPHashSessionKey, CryptHashData