Akihiro Sagawa : rsaenh: Don't import a public key to a key container.

Alexandre Julliard julliard at winehq.org
Mon May 1 16:38:05 CDT 2017


Module: wine
Branch: master
Commit: e705dfc27f15164e8f2cdd17cf505c19d78415e2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e705dfc27f15164e8f2cdd17cf505c19d78415e2

Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date:   Sun Apr 30 22:30:42 2017 +0900

rsaenh: Don't import a public key to a key container.

Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/rsaenh/rsaenh.c       | 21 ++++-----------------
 dlls/rsaenh/tests/rsaenh.c |  2 +-
 2 files changed, 5 insertions(+), 18 deletions(-)

diff --git a/dlls/rsaenh/rsaenh.c b/dlls/rsaenh/rsaenh.c
index ebafa0e..9af770d 100644
--- a/dlls/rsaenh/rsaenh.c
+++ b/dlls/rsaenh/rsaenh.c
@@ -2822,15 +2822,14 @@ static BOOL import_private_key(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDat
 /******************************************************************************
  * import_public_key [Internal]
  *
- * Import a BLOB'ed public key into a key container.
+ * Import a BLOB'ed public key.
  *
  * PARAMS
- *  hProv     [I] Key container into which the public key is to be imported.
+ *  hProv     [I] A CSP.
  *  pbData    [I] Pointer to a buffer which holds the public key BLOB.
  *  dwDataLen [I] Length of data in buffer at pbData.
  *  dwFlags   [I] One of:
  *                CRYPT_EXPORTABLE: the imported key is marked exportable
- *  fStoreKey [I] If TRUE, the imported key is stored to the registry.
  *  phKey     [O] Handle to the imported key.
  *
  *
@@ -2843,9 +2842,8 @@ static BOOL import_private_key(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDat
  *  Failure: FALSE.
  */
 static BOOL import_public_key(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen,
-                              DWORD dwFlags, BOOL fStoreKey, HCRYPTKEY *phKey)
+                              DWORD dwFlags, HCRYPTKEY *phKey)
 {
-    KEYCONTAINER *pKeyContainer;
     CRYPTKEY *pCryptKey;
     const BLOBHEADER *pBlobHeader = (const BLOBHEADER*)pbData;
     const RSAPUBKEY *pRSAPubKey = (const RSAPUBKEY*)(pBlobHeader+1);
@@ -2858,8 +2856,6 @@ static BOOL import_public_key(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwData
         SetLastError(NTE_BAD_FLAGS);
         return FALSE;
     }
-    if (!(pKeyContainer = get_key_container(hProv)))
-        return FALSE;
 
     if ((dwDataLen < sizeof(BLOBHEADER) + sizeof(RSAPUBKEY)) ||
         (pRSAPubKey->magic != RSAENH_MAGIC_RSA1) ||
@@ -2881,15 +2877,6 @@ static BOOL import_public_key(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwData
     if (ret) {
         if (dwFlags & CRYPT_EXPORTABLE)
             pCryptKey->dwPermissions |= CRYPT_EXPORT;
-        switch (pBlobHeader->aiKeyAlg)
-        {
-        case AT_KEYEXCHANGE:
-        case CALG_RSA_KEYX:
-            TRACE("installing public key\n");
-            release_and_install_key(hProv, *phKey, &pKeyContainer->hKeyExchangeKeyPair,
-                                    fStoreKey);
-            break;
-        }
     }
     return ret;
 }
@@ -3103,7 +3090,7 @@ static BOOL import_key(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen, HC
                 
         case PUBLICKEYBLOB:
             return import_public_key(hProv, pbData, dwDataLen, dwFlags,
-                                     fStoreKey, phKey);
+                                     phKey);
                 
         case SIMPLEBLOB:
             return import_symmetric_key(hProv, pbData, dwDataLen, hPubKey,
diff --git a/dlls/rsaenh/tests/rsaenh.c b/dlls/rsaenh/tests/rsaenh.c
index 839527b..c9532b2 100644
--- a/dlls/rsaenh/tests/rsaenh.c
+++ b/dlls/rsaenh/tests/rsaenh.c
@@ -2642,7 +2642,7 @@ static void test_import_export(void)
     CryptDestroyKey(hPrivKey);
 
     result = !memcmp(exported_key, exported_key2, dwDataLen);
-    todo_wine ok(result, "unexpected value\n");
+    ok(result, "unexpected value\n");
     if (!result && winetest_debug > 1) {
         trace("Expected public key (%u):\n", dwDataLen);
         trace_hex(exported_key, dwDataLen);




More information about the wine-cvs mailing list