Module: wine Branch: master Commit: 676d5db65a54e7dc661f3634ea96943943d11bb7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=676d5db65a54e7dc661f3634ea...
Author: Alexander Morozov amorozov@etersoft.ru Date: Tue Nov 23 13:42:10 2010 +0300
crypt32/tests: Fix test failures on WinME and some NT4.
---
dlls/crypt32/tests/msg.c | 75 ++++++++++++++++++++++++++++----------------- 1 files changed, 47 insertions(+), 28 deletions(-)
diff --git a/dlls/crypt32/tests/msg.c b/dlls/crypt32/tests/msg.c index d560c30..90dd783 100644 --- a/dlls/crypt32/tests/msg.c +++ b/dlls/crypt32/tests/msg.c @@ -2159,7 +2159,9 @@ static void test_enveloped_msg_update(void) SetLastError(0xdeadbeef); ret = CryptMsgUpdate(msg, msgData, sizeof(msgData), TRUE); todo_wine - ok(ret, "CryptMsgUpdate failed: %08x\n", GetLastError()); + ok(ret || + broken(!ret && GetLastError() == NTE_PERM), /* some NT4 */ + "CryptMsgUpdate failed: %08x\n", GetLastError()); SetLastError(0xdeadbeef); ret = CryptMsgUpdate(msg, NULL, 0, TRUE); todo_wine @@ -2204,7 +2206,9 @@ static void test_enveloped_msg_update(void) SetLastError(0xdeadbeef); ret = CryptMsgUpdate(msg, msgData, sizeof(msgData), TRUE); todo_wine - ok(ret, "CryptMsgUpdate failed: %08x\n", GetLastError()); + ok(ret || + broken(!ret && GetLastError() == NTE_PERM), /* some NT4 */ + "CryptMsgUpdate failed: %08x\n", GetLastError()); CryptMsgClose(msg); } SetLastError(0xdeadbeef); @@ -2242,7 +2246,9 @@ static void test_enveloped_msg_update(void) SetLastError(0xdeadbeef); ret = CryptMsgUpdate(msg, msgData, sizeof(msgData), TRUE); todo_wine - ok(ret, "CryptMsgUpdate failed: %08x\n", GetLastError()); + ok(ret || + broken(!ret && GetLastError() == NTE_PERM), /* some NT4 */ + "CryptMsgUpdate failed: %08x\n", GetLastError()); CryptMsgClose(msg); } } @@ -2863,7 +2869,7 @@ static void test_decode_msg_get_param(void) { HCRYPTMSG msg; HCRYPTPROV hCryptProv; - HCRYPTKEY key; + HCRYPTKEY key = 0; BOOL ret; DWORD size = 0, value; LPBYTE buf; @@ -3099,27 +3105,34 @@ static void test_decode_msg_get_param(void) SetLastError(0xdeadbeef); ret = CryptImportKey(hCryptProv, publicPrivateKeyPair, sizeof(publicPrivateKeyPair), 0, 0, &key); - ok(ret, "CryptImportKey failed: %08x\n", GetLastError()); + ok(ret || + broken(!ret && GetLastError() == NTE_PERM), /* WinME and some NT4 */ + "CryptImportKey failed: %08x\n", GetLastError());
msg = CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING, 0, 0, 0, NULL, NULL); CryptMsgUpdate(msg, envelopedMessage, sizeof(envelopedMessage), TRUE); todo_wine check_param("enveloped message before decrypting", msg, CMSG_CONTENT_PARAM, envelopedMessage + sizeof(envelopedMessage) - 4, 4); - decryptPara.hCryptProv = hCryptProv; - SetLastError(0xdeadbeef); - ret = CryptMsgControl(msg, 0, CMSG_CTRL_DECRYPT, &decryptPara); - todo_wine - ok(ret, "CryptMsgControl failed: %08x\n", GetLastError()); - decryptPara.hCryptProv = 0; - SetLastError(0xdeadbeef); - ret = CryptMsgControl(msg, 0, CMSG_CTRL_DECRYPT, &decryptPara); - todo_wine - ok(!ret && GetLastError() == CRYPT_E_ALREADY_DECRYPTED, - "expected CRYPT_E_ALREADY_DECRYPTED, got %08x\n", GetLastError()); - todo_wine - check_param("enveloped message", msg, CMSG_CONTENT_PARAM, msgData, - sizeof(msgData)); + if (key) + { + decryptPara.hCryptProv = hCryptProv; + SetLastError(0xdeadbeef); + ret = CryptMsgControl(msg, 0, CMSG_CTRL_DECRYPT, &decryptPara); + todo_wine + ok(ret, "CryptMsgControl failed: %08x\n", GetLastError()); + decryptPara.hCryptProv = 0; + SetLastError(0xdeadbeef); + ret = CryptMsgControl(msg, 0, CMSG_CTRL_DECRYPT, &decryptPara); + todo_wine + ok(!ret && GetLastError() == CRYPT_E_ALREADY_DECRYPTED, + "expected CRYPT_E_ALREADY_DECRYPTED, got %08x\n", GetLastError()); + todo_wine + check_param("enveloped message", msg, CMSG_CONTENT_PARAM, msgData, + sizeof(msgData)); + } + else + win_skip("failed to import a key, skipping tests\n"); CryptMsgClose(msg);
msg = CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING, 0, CMSG_ENVELOPED, 0, NULL, @@ -3130,17 +3143,23 @@ static void test_decode_msg_get_param(void) check_param("enveloped bare message before decrypting", msg, CMSG_CONTENT_PARAM, envelopedBareMessage + sizeof(envelopedBareMessage) - 4, 4); - decryptPara.hCryptProv = hCryptProv; - SetLastError(0xdeadbeef); - ret = CryptMsgControl(msg, 0, CMSG_CTRL_DECRYPT, &decryptPara); - todo_wine - ok(ret, "CryptMsgControl failed: %08x\n", GetLastError()); - todo_wine - check_param("enveloped bare message", msg, CMSG_CONTENT_PARAM, msgData, - sizeof(msgData)); + if (key) + { + decryptPara.hCryptProv = hCryptProv; + SetLastError(0xdeadbeef); + ret = CryptMsgControl(msg, 0, CMSG_CTRL_DECRYPT, &decryptPara); + todo_wine + ok(ret, "CryptMsgControl failed: %08x\n", GetLastError()); + todo_wine + check_param("enveloped bare message", msg, CMSG_CONTENT_PARAM, msgData, + sizeof(msgData)); + } + else + win_skip("failed to import a key, skipping tests\n"); CryptMsgClose(msg);
- CryptDestroyKey(key); + if (key) + CryptDestroyKey(key); CryptReleaseContext(hCryptProv, 0);
msg = CryptMsgOpenToDecode(PKCS_7_ASN_ENCODING, 0, 0, 0, NULL, NULL);