From 6db0fc5ce8f556ca9a192a5f9167a3045338c9b0 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Mon, 12 Sep 2022 16:03:21 +0200 Subject: [PATCH] rsaenh: Use BCrypt algorithm pseudo-handles. --- dlls/rsaenh/implglue.c | 56 +++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 36 deletions(-) diff --git a/dlls/rsaenh/implglue.c b/dlls/rsaenh/implglue.c index 2bdbf3d7daf..b4fe985af9b 100644 --- a/dlls/rsaenh/implglue.c +++ b/dlls/rsaenh/implglue.c @@ -36,48 +36,32 @@ BOOL WINAPI SystemFunction036(PVOID pbBuffer, ULONG dwLen); BOOL init_hash_impl(ALG_ID aiAlgid, BCRYPT_HASH_HANDLE *hash_handle) { - BCRYPT_ALG_HANDLE provider; - NTSTATUS status; - - switch (aiAlgid) + switch (aiAlgid) { - case CALG_MD2: - status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_MD2_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); - break; - - case CALG_MD4: - status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_MD4_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); - break; - - case CALG_MD5: - status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_MD5_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); - break; - - case CALG_SHA: - status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA1_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); - break; + case CALG_MD2: + return !BCryptCreateHash(BCRYPT_MD2_ALG_HANDLE, hash_handle, NULL, 0, NULL, 0, 0); - case CALG_SHA_256: - status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA256_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); - break; + case CALG_MD4: + return !BCryptCreateHash(BCRYPT_MD4_ALG_HANDLE, hash_handle, NULL, 0, NULL, 0, 0); - case CALG_SHA_384: - status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA384_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); - break; + case CALG_MD5: + return !BCryptCreateHash(BCRYPT_MD5_ALG_HANDLE, hash_handle, NULL, 0, NULL, 0, 0); - case CALG_SHA_512: - status = BCryptOpenAlgorithmProvider(&provider, BCRYPT_SHA512_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0); - break; + case CALG_SHA: + return !BCryptCreateHash(BCRYPT_SHA1_ALG_HANDLE, hash_handle, NULL, 0, NULL, 0, 0); - default: - return TRUE; + case CALG_SHA_256: + return !BCryptCreateHash(BCRYPT_SHA256_ALG_HANDLE, hash_handle, NULL, 0, NULL, 0, 0); + + case CALG_SHA_384: + return !BCryptCreateHash(BCRYPT_SHA384_ALG_HANDLE, hash_handle, NULL, 0, NULL, 0, 0); + + case CALG_SHA_512: + return !BCryptCreateHash(BCRYPT_SHA512_ALG_HANDLE, hash_handle, NULL, 0, NULL, 0, 0); + + default: + return TRUE; } - - if (status) return FALSE; - - status = BCryptCreateHash(provider, hash_handle, NULL, 0, NULL, 0, 0); - BCryptCloseAlgorithmProvider(provider, 0); - return !status; } BOOL update_hash_impl(BCRYPT_HASH_HANDLE hash_handle, const BYTE *pbData, DWORD dwDataLen)