Creating a CALG_SSL3_SHAMD5 Hash

To create a CALG_SSL3_SHAMD5 hash

  1. Using standard CryptoAPI methodology, create both a MD5 and a SHA hash of the target data.
  2. Concatenate the two hashes, with the MD5 value leftmost and the SHA value rightmost. This results in a 36-byte value (16 bytes + 20 bytes).
  3. Get a handle to a hash object by calling CryptCreateHash with CALG_SSL3_SHAMD5 passed in the Algid parameter.
  4. Set the hash value with a call to CryptSetHashParam. The concatenated hash values are passed as a BYTE* in the pbData parameter, and the HP_HASHVAL value must be passed in the dwParam parameter. Calling CryptHashData using the handle returned by CryptCreateHash in step 3 will fail.
  5. Call CryptSignHash to generate the signature.
  6. Call CryptDestroyHash to destroy the hash object.