From: Dmitry Timoshkov dmitry@baikal.ru
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57566 Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- dlls/rsaenh/rsaenh.c | 4 ++++ dlls/rsaenh/tests/rsaenh.c | 4 +--- 2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c index 310982445cd..36c8a4bb4d8 100644 --- a/dlls/rsaenh/rsaenh.c +++ b/dlls/rsaenh/rsaenh.c @@ -3646,6 +3646,10 @@ BOOL WINAPI RSAENH_CPGenKey(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYP pCryptKey->abKeyValue[0] = RSAENH_TLS1_VERSION_MAJOR; pCryptKey->abKeyValue[1] = RSAENH_TLS1_VERSION_MINOR; break; + case CALG_RC4: + if (!(dwFlags & CRYPT_CREATE_SALT)) + memset(pCryptKey->abKeyValue + pCryptKey->dwKeyLen, 0, pCryptKey->dwSaltLen); + break; } setup_key(pCryptKey); } diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c index 9659cf53316..f0c3f828aca 100644 --- a/dlls/rsaenh/tests/rsaenh.c +++ b/dlls/rsaenh/tests/rsaenh.c @@ -4288,7 +4288,7 @@ static void test_RC4_salt(void) ok(ret, "error %#lx\n", GetLastError()); if (td[i].flags & CRYPT_CREATE_SALT) ok(memcmp(salt, zero, size) != 0, "wrong salt %.11s\n", salt); - else todo_wine_if(i == 0 || i == 1 || i == 6) + else ok(memcmp(salt, zero, size) == 0, "wrong salt %.11s\n", salt); }
@@ -4362,7 +4362,6 @@ static void test_RC4_session_key(void) ok(size == 11, "got %lu\n", size); ret = CryptGetKeyParam(hkey, KP_SALT, salt, &size, 0); ok(ret, "error %#lx\n", GetLastError()); - todo_wine ok(!memcmp(salt, zero, size), "wrong salt %.11s\n", salt);
/* Client: Import the server's public key */ @@ -4409,7 +4408,6 @@ static void test_RC4_session_key(void) ret = CryptDecrypt(hkey, 0, TRUE, 0, data, &size); ok(ret, "error %#lx\n", GetLastError()); ok(size == sizeof(hello_world), "got %lu\n", size); - todo_wine ok(!memcmp(data, hello_world, size), "wrong data\n");
free(blob);