diff --git a/dlls/crypt32/tests/msg.c b/dlls/crypt32/tests/msg.c index 3bd0882102b..f65c7f8f2b3 100644 --- a/dlls/crypt32/tests/msg.c +++ b/dlls/crypt32/tests/msg.c @@ -1853,6 +1853,7 @@ static void test_decode_msg_get_param(void) HCRYPTMSG msg; BOOL ret; DWORD size = 0, version; + LPBYTE buf; msg = CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING, 0, 0, 0, NULL, NULL); SetLastError(0xdeadbeef); @@ -1879,7 +1880,19 @@ static void test_decode_msg_get_param(void) sizeof(hashParam)); check_param("hash computed hash", msg, CMSG_COMPUTED_HASH_PARAM, hashParam, sizeof(hashParam)); - size = strlen(szOID_RSA_data) + 1; + /* Curiously, getting the hash of index 1 succeeds, even though there's + * only one hash. + */ + ret = CryptMsgGetParam(msg, CMSG_COMPUTED_HASH_PARAM, 1, NULL, &size); + ok(ret, "CryptMsgGetParam failed: %08x\n", GetLastError()); + buf = CryptMemAlloc(size); + if (buf) + { + ret = CryptMsgGetParam(msg, CMSG_COMPUTED_HASH_PARAM, 1, buf, &size); + ok(size == sizeof(hashParam), "Unexpected size %d\n", size); + ok(!memcmp(buf, hashParam, size), "Unexpected value\n"); + CryptMemFree(buf); + } check_param("hash inner OID", msg, CMSG_INNER_CONTENT_TYPE_PARAM, (const BYTE *)szOID_RSA_data, strlen(szOID_RSA_data) + 1); version = CMSG_HASHED_DATA_V0;