Module: wine Branch: master Commit: 1991ff2a0cf5d10588d91fde83a602d5faf39cbc URL: http://source.winehq.org/git/wine.git/?a=commit;h=1991ff2a0cf5d10588d91fde83...
Author: Juan Lang juan.lang@gmail.com Date: Tue Mar 30 12:05:25 2010 -0700
rsaenh: Don't return salt for algorithms that don't support it.
---
dlls/rsaenh/rsaenh.c | 12 ++++++++++-- dlls/rsaenh/tests/rsaenh.c | 2 -- 2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c index d35805a..8a5be99 100644 --- a/dlls/rsaenh/rsaenh.c +++ b/dlls/rsaenh/rsaenh.c @@ -3513,8 +3513,16 @@ BOOL WINAPI RSAENH_CPGetKeyParam(HCRYPTPROV hProv, HCRYPTKEY hKey, DWORD dwParam pCryptKey->dwBlockLen);
case KP_SALT: - return copy_param(pbData, pdwDataLen, - &pCryptKey->abKeyValue[pCryptKey->dwKeyLen], pCryptKey->dwSaltLen); + switch (pCryptKey->aiAlgid) { + case CALG_RC2: + case CALG_RC4: + return copy_param(pbData, pdwDataLen, + &pCryptKey->abKeyValue[pCryptKey->dwKeyLen], + pCryptKey->dwSaltLen); + default: + SetLastError(NTE_BAD_KEY); + return FALSE; + }
case KP_PADDING: dwValue = PKCS5_PADDING; diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c index 53fc0d6..b4bdcfa 100644 --- a/dlls/rsaenh/tests/rsaenh.c +++ b/dlls/rsaenh/tests/rsaenh.c @@ -744,7 +744,6 @@ static void test_aes(int keylen)
/* AES provider doesn't support salt */ result = CryptGetKeyParam(hKey, KP_SALT, NULL, &dwLen, 0); - todo_wine ok(!result && (GetLastError() == NTE_BAD_KEY || GetLastError() == ERROR_NO_TOKEN /* Win7 */), "expected NTE_BAD_KEY or ERROR_NO_TOKEN, got %08x\n", GetLastError());
@@ -1742,7 +1741,6 @@ static void test_rsa_encrypt(void)
/* An RSA key doesn't support salt */ result = CryptGetKeyParam(hRSAKey, KP_SALT, NULL, &dwLen, 0); - todo_wine ok(!result && GetLastError() == NTE_BAD_KEY, "expected NTE_BAD_KEY, got %08x\n", GetLastError());