Juan Lang : crypt32: Pass key length to CryptDeriveKey.

Alexandre Julliard julliard at winehq.org
Thu Nov 8 07:07:30 CST 2007


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Wed Nov  7 09:14:05 2007 -0800

crypt32: Pass key length to CryptDeriveKey.

---

 dlls/crypt32/protectdata.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/crypt32/protectdata.c b/dlls/crypt32/protectdata.c
index 8940a4e..f3bac9c 100644
--- a/dlls/crypt32/protectdata.c
+++ b/dlls/crypt32/protectdata.c
@@ -704,7 +704,7 @@ BOOL hash_matches_blob(HCRYPTHASH hHash, const DATA_BLOB *two)
 
 /* create an encryption key from a given salt and optional entropy */
 static
-BOOL load_encryption_key(HCRYPTPROV hProv, const DATA_BLOB *salt,
+BOOL load_encryption_key(HCRYPTPROV hProv, DWORD key_len, const DATA_BLOB *salt,
                          const DATA_BLOB *pOptionalEntropy, HCRYPTKEY *phKey)
 {
     BOOL rc = TRUE;
@@ -753,7 +753,7 @@ BOOL load_encryption_key(HCRYPTPROV hProv, const DATA_BLOB *salt,
 
     /* produce a symmetric key */
     if (rc && !CryptDeriveKey(hProv,CRYPT32_PROTECTDATA_KEY_CALG,
-                              hSaltHash,CRYPT_EXPORTABLE,phKey))
+                              hSaltHash,key_len << 16 | CRYPT_EXPORTABLE,phKey))
     {
         ERR("CryptDeriveKey\n");
         rc = FALSE;
@@ -871,7 +871,7 @@ BOOL WINAPI CryptProtectData(DATA_BLOB* pDataIn,
     }
 
     /* load key */
-    if (!load_encryption_key(hProv,&protect_data.salt,pOptionalEntropy,&hKey))
+    if (!load_encryption_key(hProv,protect_data.cipher_key_len,&protect_data.salt,pOptionalEntropy,&hKey))
     {
         goto free_protect_data;
     }
@@ -1050,7 +1050,7 @@ BOOL WINAPI CryptUnprotectData(DATA_BLOB* pDataIn,
     }
 
     /* load key */
-    if (!load_encryption_key(hProv,&protect_data.salt,pOptionalEntropy,&hKey))
+    if (!load_encryption_key(hProv,protect_data.cipher_key_len,&protect_data.salt,pOptionalEntropy,&hKey))
     {
         goto free_context;
     }




More information about the wine-cvs mailing list