Commit b0329620 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

rsaenh: Use bcrypt for SHA1 hashes.

parent 8009091f
...@@ -41,10 +41,6 @@ VOID WINAPI MD4Final( MD4_CTX *ctx ); ...@@ -41,10 +41,6 @@ VOID WINAPI MD4Final( MD4_CTX *ctx );
VOID WINAPI MD5Init( MD5_CTX *ctx ); VOID WINAPI MD5Init( MD5_CTX *ctx );
VOID WINAPI MD5Update( MD5_CTX *ctx, const unsigned char *buf, unsigned int len ); VOID WINAPI MD5Update( MD5_CTX *ctx, const unsigned char *buf, unsigned int len );
VOID WINAPI MD5Final( MD5_CTX *ctx ); VOID WINAPI MD5Final( MD5_CTX *ctx );
/* Function prototypes copied from dlls/advapi32/crypt_sha.c */
VOID WINAPI A_SHAInit(PSHA_CTX Context);
VOID WINAPI A_SHAUpdate(PSHA_CTX Context, const unsigned char *Buffer, UINT BufferSize);
VOID WINAPI A_SHAFinal(PSHA_CTX Context, PULONG Result);
/* Function prototype copied from dlls/advapi32/crypt.c */ /* Function prototype copied from dlls/advapi32/crypt.c */
BOOL WINAPI SystemFunction036(PVOID pbBuffer, ULONG dwLen); BOOL WINAPI SystemFunction036(PVOID pbBuffer, ULONG dwLen);
...@@ -68,8 +64,8 @@ BOOL init_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext) ...@@ -68,8 +64,8 @@ BOOL init_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext)
return TRUE; return TRUE;
case CALG_SHA: case CALG_SHA:
A_SHAInit(&pHashContext->sha); status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA1_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0);
return TRUE; break;
case CALG_SHA_256: case CALG_SHA_256:
status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA256_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA256_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0);
...@@ -107,10 +103,6 @@ BOOL update_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext, const BYTE *pb ...@@ -107,10 +103,6 @@ BOOL update_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext, const BYTE *pb
MD5Update(&pHashContext->md5, pbData, dwDataLen); MD5Update(&pHashContext->md5, pbData, dwDataLen);
break; break;
case CALG_SHA:
A_SHAUpdate(&pHashContext->sha, pbData, dwDataLen);
break;
default: default:
BCryptHashData(pHashContext->bcrypt_hash, (UCHAR*)pbData, dwDataLen, 0); BCryptHashData(pHashContext->bcrypt_hash, (UCHAR*)pbData, dwDataLen, 0);
} }
...@@ -132,10 +124,6 @@ BOOL finalize_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext, BYTE *pbHash ...@@ -132,10 +124,6 @@ BOOL finalize_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext, BYTE *pbHash
memcpy(pbHashValue, pHashContext->md5.digest, 16); memcpy(pbHashValue, pHashContext->md5.digest, 16);
break; break;
case CALG_SHA:
A_SHAFinal(&pHashContext->sha, (PULONG)pbHashValue);
break;
default: default:
BCryptFinishHash(pHashContext->bcrypt_hash, pbHashValue, RSAENH_MAX_HASH_SIZE, 0); BCryptFinishHash(pHashContext->bcrypt_hash, pbHashValue, RSAENH_MAX_HASH_SIZE, 0);
BCryptDestroyHash(pHashContext->bcrypt_hash); BCryptDestroyHash(pHashContext->bcrypt_hash);
...@@ -152,7 +140,6 @@ BOOL duplicate_hash_impl(ALG_ID aiAlgid, const HASH_CONTEXT *pSrcHashContext, ...@@ -152,7 +140,6 @@ BOOL duplicate_hash_impl(ALG_ID aiAlgid, const HASH_CONTEXT *pSrcHashContext,
{ {
case CALG_MD4: case CALG_MD4:
case CALG_MD5: case CALG_MD5:
case CALG_SHA:
*pDestHashContext = *pSrcHashContext; *pDestHashContext = *pSrcHashContext;
return TRUE; return TRUE;
default: default:
......
...@@ -46,19 +46,9 @@ typedef struct tagMD5_CTX ...@@ -46,19 +46,9 @@ typedef struct tagMD5_CTX
unsigned char digest[16]; unsigned char digest[16];
} MD5_CTX; } MD5_CTX;
/* Next typedef copied form dlls/advapi32/crypt_sha.c */
typedef struct tagSHA_CTX
{
ULONG Unknown[6];
ULONG State[5];
ULONG Count[2];
UCHAR Buffer[64];
} SHA_CTX, *PSHA_CTX;
typedef union tagHASH_CONTEXT { typedef union tagHASH_CONTEXT {
MD4_CTX md4; MD4_CTX md4;
MD5_CTX md5; MD5_CTX md5;
SHA_CTX sha;
BCRYPT_HASH_HANDLE bcrypt_hash; BCRYPT_HASH_HANDLE bcrypt_hash;
} HASH_CONTEXT; } HASH_CONTEXT;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment