Jacek Caban : rsaenh: Use bcrypt for MD5 hashes.

Alexandre Julliard julliard at winehq.org
Thu Dec 7 16:02:43 CST 2017


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Dec  7 19:47:13 2017 +0100

rsaenh: Use bcrypt for MD5 hashes.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/rsaenh/implglue.c | 43 ++++++-------------------------------------
 dlls/rsaenh/implglue.h | 10 ----------
 2 files changed, 6 insertions(+), 47 deletions(-)

diff --git a/dlls/rsaenh/implglue.c b/dlls/rsaenh/implglue.c
index c12a27c..f12fc78 100644
--- a/dlls/rsaenh/implglue.c
+++ b/dlls/rsaenh/implglue.c
@@ -33,10 +33,6 @@
 
 #include <stdio.h>
 
-/* Function prototypes copied from dlls/advapi32/crypt_md5.c */
-VOID WINAPI MD5Init( MD5_CTX *ctx );
-VOID WINAPI MD5Update( MD5_CTX *ctx, const unsigned char *buf, unsigned int len );
-VOID WINAPI MD5Final( MD5_CTX *ctx );
 /* Function prototype copied from dlls/advapi32/crypt.c */
 BOOL WINAPI SystemFunction036(PVOID pbBuffer, ULONG dwLen);
         
@@ -56,8 +52,8 @@ BOOL init_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext)
             break;
         
         case CALG_MD5:
-            MD5Init(&pHashContext->md5);
-            return TRUE;
+            status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_MD5_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0);
+            break;
         
         case CALG_SHA:
             status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA1_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0);
@@ -89,48 +85,21 @@ BOOL init_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext)
 BOOL update_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext, const BYTE *pbData,
                       DWORD dwDataLen) 
 {
-    switch (aiAlgid)
-    {
-        case CALG_MD5:
-            MD5Update(&pHashContext->md5, pbData, dwDataLen);
-            break;
-        
-        default:
-            BCryptHashData(pHashContext->bcrypt_hash, (UCHAR*)pbData, dwDataLen, 0);
-    }
-
+    BCryptHashData(pHashContext->bcrypt_hash, (UCHAR*)pbData, dwDataLen, 0);
     return TRUE;
 }
 
 BOOL finalize_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext, BYTE *pbHashValue) 
 {
-    switch (aiAlgid)
-    {
-        case CALG_MD5:
-            MD5Final(&pHashContext->md5);
-            memcpy(pbHashValue, pHashContext->md5.digest, 16);
-            break;
-        
-        default:
-            BCryptFinishHash(pHashContext->bcrypt_hash, pbHashValue, RSAENH_MAX_HASH_SIZE, 0);
-            BCryptDestroyHash(pHashContext->bcrypt_hash);
-            break;
-    }
-
+    BCryptFinishHash(pHashContext->bcrypt_hash, pbHashValue, RSAENH_MAX_HASH_SIZE, 0);
+    BCryptDestroyHash(pHashContext->bcrypt_hash);
     return TRUE;
 }
 
 BOOL duplicate_hash_impl(ALG_ID aiAlgid, const HASH_CONTEXT *pSrcHashContext,
                          HASH_CONTEXT *pDestHashContext) 
 {
-    switch (aiAlgid)
-    {
-        case CALG_MD5:
-            *pDestHashContext = *pSrcHashContext;
-            return TRUE;
-        default:
-            return !BCryptDuplicateHash(pSrcHashContext->bcrypt_hash, &pDestHashContext->bcrypt_hash, NULL, 0, 0);
-    }
+    return !BCryptDuplicateHash(pSrcHashContext->bcrypt_hash, &pDestHashContext->bcrypt_hash, NULL, 0, 0);
 }
 
 BOOL new_key_impl(ALG_ID aiAlgid, KEY_CONTEXT *pKeyContext, DWORD dwKeyLen) 
diff --git a/dlls/rsaenh/implglue.h b/dlls/rsaenh/implglue.h
index e874aaa..92323ca 100644
--- a/dlls/rsaenh/implglue.h
+++ b/dlls/rsaenh/implglue.h
@@ -29,17 +29,7 @@
 
 #define RSAENH_MAX_HASH_SIZE        104
 
-/* Next typedef copied from dlls/advapi32/crypt_md5.c */
-typedef struct tagMD5_CTX
-{
-    unsigned int i[2];
-    unsigned int buf[4];
-    unsigned char in[64];
-    unsigned char digest[16];
-} MD5_CTX;
-
 typedef union tagHASH_CONTEXT {
-    MD5_CTX md5;
     BCRYPT_HASH_HANDLE bcrypt_hash;
 } HASH_CONTEXT;
 




More information about the wine-cvs mailing list