[PATCH] rsaenh: CALG_AES is not supported.

Huw Davies huw at codeweavers.com
Thu Nov 16 06:03:29 CST 2017


This is the correct fix for what commit f5c687e3652004e4efebe9352aadd02d179603cf
was trying to fix.

Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/rsaenh/rsaenh.c       | 13 +------------
 dlls/rsaenh/tests/rsaenh.c |  9 +++++++++
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c
index f2f5960fee..fdf410a4ed 100644
--- a/dlls/rsaenh/rsaenh.c
+++ b/dlls/rsaenh/rsaenh.c
@@ -242,7 +242,6 @@ static const PROV_ENUMALGS_EX aProvEnumAlgsEx[5][RSAENH_MAX_ENUMALGS+1] =
   {CALG_DES, 56, 56, 56, 0, S("DES"), S("Data Encryption Standard (DES)")},
   {CALG_3DES_112, 112, 112, 112, 0, S("3DES TWO KEY"), S("Two Key Triple DES")},
   {CALG_3DES, 168, 168, 168, 0, S("3DES"), S("Three Key Triple DES")},
-  {CALG_AES, 128, 128, 128, 0, S("AES"), S("Advanced Encryption Standard (AES)")},
   {CALG_AES_128, 128, 128, 128, 0, S("AES-128"), S("Advanced Encryption Standard (AES-128)")},
   {CALG_AES_192, 192, 192, 192, 0, S("AES-192"), S("Advanced Encryption Standard (AES-192)")},
   {CALG_AES_256, 256, 256, 256, 0, S("AES-256"), S("Advanced Encryption Standard (AES-256)")},
@@ -791,7 +790,7 @@ static HCRYPTKEY new_key(HCRYPTPROV hProv, ALG_ID aiAlgid, DWORD dwFlags, CRYPTK
 {
     HCRYPTKEY hCryptKey;
     CRYPTKEY *pCryptKey;
-    DWORD dwKeyLen = HIWORD(dwFlags), bKeyLen = dwKeyLen;
+    DWORD dwKeyLen = HIWORD(dwFlags);
     const PROV_ENUMALGS_EX *peaAlgidInfo;
 
     *ppCryptKey = NULL;
@@ -850,14 +849,6 @@ static HCRYPTKEY new_key(HCRYPTPROV hProv, ALG_ID aiAlgid, DWORD dwFlags, CRYPTK
              */
             break;
 
-        case CALG_AES:
-            if (!bKeyLen)
-            {
-                TRACE("missing key len for CALG_AES\n");
-                SetLastError(NTE_BAD_ALGID);
-                return (HCRYPTKEY)INVALID_HANDLE_VALUE;
-            }
-            /* fall through */
         default:
             if (dwKeyLen % 8 || 
                 dwKeyLen > peaAlgidInfo->dwMaxLen || 
@@ -924,7 +915,6 @@ static HCRYPTKEY new_key(HCRYPTPROV hProv, ALG_ID aiAlgid, DWORD dwFlags, CRYPTK
                 pCryptKey->dwMode = CRYPT_MODE_CBC;
                 break;
 
-            case CALG_AES:
             case CALG_AES_128:
             case CALG_AES_192:
             case CALG_AES_256:
@@ -3197,7 +3187,6 @@ BOOL WINAPI RSAENH_CPGenKey(HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYP
         case CALG_DES:
         case CALG_3DES_112:
         case CALG_3DES:
-        case CALG_AES:
         case CALG_AES_128:
         case CALG_AES_192:
         case CALG_AES_256:
diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c
index c9532b2bcc..bc8e798cdd 100644
--- a/dlls/rsaenh/tests/rsaenh.c
+++ b/dlls/rsaenh/tests/rsaenh.c
@@ -224,6 +224,15 @@ static BOOL init_aes_environment(void)
         result = CryptGenKey(hProv, AT_SIGNATURE, 0, &hKey);
         ok(result, "%08x\n", GetLastError());
         if (result) CryptDestroyKey(hKey);
+
+        /* CALG_AES is not supported, but CALG_AES_128 is */
+        result = CryptGenKey(hProv, CALG_AES, 0, &hKey);
+        ok(!result && GetLastError() == NTE_BAD_ALGID, "%d %08x\n", result, GetLastError());
+        result = CryptGenKey(hProv, CALG_AES, 128 << 16, &hKey);
+        ok(!result && GetLastError() == NTE_BAD_ALGID, "%d %08x\n", result, GetLastError());
+        result = CryptGenKey(hProv, CALG_AES_128, 0, &hKey);
+        ok(result, "%08x\n", GetLastError());
+        if (result) CryptDestroyKey(hKey);
     }
     return TRUE;
 }
-- 
2.12.0




More information about the wine-devel mailing list