[2/4] rsaenh: Change the default AES chaining mode to CBC
Bruno Jesus
00cpxxx at gmail.com
Tue Jul 22 22:47:53 CDT 2014
Due to a problem in AES key derivation the AES_128 case requires a
todo but it's removed in the next patch.
Fixes bug http://bugs.winehq.org/show_bug.cgi?id=36765
-------------- next part --------------
---
dlls/rsaenh/rsaenh.c | 2 +-
dlls/rsaenh/tests/rsaenh.c | 10 ++++------
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c
index b5ab7a9..dd49618 100644
--- a/dlls/rsaenh/rsaenh.c
+++ b/dlls/rsaenh/rsaenh.c
@@ -900,7 +900,7 @@ static HCRYPTKEY new_key(HCRYPTPROV hProv, ALG_ID aiAlgid, DWORD dwFlags, CRYPTK
case CALG_AES_192:
case CALG_AES_256:
pCryptKey->dwBlockLen = 16;
- pCryptKey->dwMode = CRYPT_MODE_ECB;
+ pCryptKey->dwMode = CRYPT_MODE_CBC;
break;
case CALG_RSA_KEYX:
diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c
index 3e1dc59..dad6a27 100644
--- a/dlls/rsaenh/tests/rsaenh.c
+++ b/dlls/rsaenh/tests/rsaenh.c
@@ -1140,7 +1140,9 @@ static void test_aes(int keylen)
result = CryptEncrypt(hKey, 0, TRUE, 0, pbData, &dwLen, sizeof(pbData));
ok(result, "Expected OK, got last error %d\n", GetLastError());
ok(dwLen == 48, "Expected dwLen 48, got %d\n", dwLen);
-todo_wine
+ if(i == 0) todo_wine
+ ok(!memcmp(aes_cbc_enc[i], pbData, dwLen), "Expected equal data sequences\n");
+ else
ok(!memcmp(aes_cbc_enc[i], pbData, dwLen), "Expected equal data sequences\n");
result = CryptDecrypt(hKey, 0, TRUE, 0, pbData, &dwLen);
@@ -1161,7 +1163,6 @@ todo_wine
dwLen = sizeof(dwMode);
result = CryptGetKeyParam(hKey, KP_MODE, (BYTE*)&dwMode, &dwLen, 0);
ok(result, "%08x\n", GetLastError());
-todo_wine
ok(dwMode == CRYPT_MODE_CBC, "Wrong default chaining\n");
dwLen = 13;
@@ -3529,12 +3530,9 @@ static void test_key_derivation(const char *prov)
memset(wine_broken, 0, sizeof(wine_broken));
wine_broken[8].mode = wine_broken[8].blen = 1;
- wine_broken[9].mode = wine_broken[9].exp_data = 1;
- wine_broken[10].mode = 1;
+ wine_broken[9].exp_data = 1;
wine_broken[20] = wine_broken[32] = wine_broken[44] = wine_broken[8];
wine_broken[21] = wine_broken[33] = wine_broken[45] = wine_broken[9];
- wine_broken[22] = wine_broken[23] = wine_broken[34] = wine_broken[35] = wine_broken[10];
- wine_broken[46] = wine_broken[47] = wine_broken[11] = wine_broken[10];
for (i=0; i<sizeof(tests)/sizeof(tests[0]); i++)
{
--
1.8.3.2
More information about the wine-patches
mailing list