Juan Lang : crypt32: Add tests for CryptVerifyMessageHash.
Alexandre Julliard
julliard at winehq.org
Tue Sep 9 05:50:36 CDT 2008
Module: wine
Branch: master
Commit: c097a7a6a63564c967ff52918e253612637f55b2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c097a7a6a63564c967ff52918e253612637f55b2
Author: Juan Lang <juan.lang at gmail.com>
Date: Mon Sep 8 12:44:03 2008 -0700
crypt32: Add tests for CryptVerifyMessageHash.
---
dlls/crypt32/tests/message.c | 68 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 68 insertions(+), 0 deletions(-)
diff --git a/dlls/crypt32/tests/message.c b/dlls/crypt32/tests/message.c
index d515d9b..e1d7cf0 100644
--- a/dlls/crypt32/tests/message.c
+++ b/dlls/crypt32/tests/message.c
@@ -190,6 +190,73 @@ static void test_verify_detached_message_hash(void)
ok(ret, "CryptVerifyDetachedMessageHash failed: %08x\n", GetLastError());
}
+static BYTE hashContent[] = {
+0x30,0x47,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x07,0x05,0xa0,0x3a,
+0x30,0x38,0x02,0x01,0x00,0x30,0x0c,0x06,0x08,0x2a,0x86,0x48,0x86,0xf7,0x0d,
+0x02,0x05,0x05,0x00,0x30,0x13,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,
+0x07,0x01,0xa0,0x06,0x04,0x04,0x01,0x02,0x03,0x04,0x04,0x10,0x08,0xd6,0xc0,
+0x5a,0x21,0x51,0x2a,0x79,0xa1,0xdf,0xeb,0x9d,0x2a,0x8f,0x26,0x2f };
+
+static void test_verify_message_hash(void)
+{
+ BOOL ret;
+ CRYPT_HASH_MESSAGE_PARA para;
+ DWORD size;
+ BYTE *buf = NULL;
+
+ memset(¶, 0, sizeof(para));
+ /* Crash */
+ if (0)
+ ret = CryptVerifyMessageHash(NULL, NULL, 0, NULL, NULL, NULL, NULL);
+ SetLastError(0xdeadbeef);
+ ret = CryptVerifyMessageHash(¶, NULL, 0, NULL, NULL, NULL, NULL);
+ todo_wine
+ ok(!ret && GetLastError() == E_INVALIDARG,
+ "expected E_INVALIDARG, got %08x\n", GetLastError());
+ para.cbSize = sizeof(para);
+ SetLastError(0xdeadbeef);
+ ret = CryptVerifyMessageHash(¶, NULL, 0, NULL, NULL, NULL, NULL);
+ todo_wine
+ ok(!ret && GetLastError() == E_INVALIDARG,
+ "expected E_INVALIDARG, got %08x\n", GetLastError());
+ para.dwMsgEncodingType = PKCS_7_ASN_ENCODING;
+ SetLastError(0xdeadbeef);
+ ret = CryptVerifyMessageHash(¶, NULL, 0, NULL, NULL, NULL, NULL);
+ todo_wine
+ ok(!ret && GetLastError() == CRYPT_E_ASN1_EOD,
+ "expected CRYPT_E_ASN1_EOD, got %08x\n", GetLastError());
+ /* Verifying the hash of a detached message succeeds? */
+ ret = CryptVerifyMessageHash(¶, detachedHashContent,
+ sizeof(detachedHashContent), NULL, NULL, NULL, NULL);
+ todo_wine
+ ok(ret, "CryptVerifyMessageHash failed: %08x\n", GetLastError());
+ /* As does verifying the hash of a regular message. */
+ ret = CryptVerifyMessageHash(¶, hashContent, sizeof(hashContent),
+ NULL, NULL, NULL, NULL);
+ todo_wine
+ ok(ret, "CryptVerifyMessageHash failed: %08x\n", GetLastError());
+ ret = CryptVerifyMessageHash(¶, hashContent, sizeof(hashContent),
+ NULL, &size, NULL, NULL);
+ todo_wine
+ ok(ret, "CryptVerifyMessageHash failed: %08x\n", GetLastError());
+ if (ret)
+ buf = CryptMemAlloc(size);
+ if (buf)
+ {
+ size = 1;
+ ret = CryptVerifyMessageHash(¶, hashContent, sizeof(hashContent),
+ buf, &size, NULL, NULL);
+ ok(!ret && GetLastError() == ERROR_MORE_DATA,
+ "expected ERROR_MORE_DATA, got %08x\n", GetLastError());
+ ret = CryptVerifyMessageHash(¶, hashContent, sizeof(hashContent),
+ buf, &size, NULL, NULL);
+ ok(ret, "CryptVerifyMessageHash failed: %08x\n", GetLastError());
+ ok(size == sizeof(msgData), "unexpected size %d\n", size);
+ ok(!memcmp(buf, msgData, size), "unexpected value\n");
+ CryptMemFree(buf);
+ }
+}
+
static const BYTE signedContent[] = {
0x30,0x81,0xb2,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x07,0x02,0xa0,
0x81,0xa4,0x30,0x81,0xa1,0x02,0x01,0x01,0x31,0x0e,0x30,0x0c,0x06,0x08,0x2a,
@@ -522,6 +589,7 @@ START_TEST(message)
{
test_msg_get_signer_count();
test_verify_detached_message_hash();
+ test_verify_message_hash();
test_verify_message_signature();
test_hash_message();
}
More information about the wine-cvs
mailing list