From 4c917e95327dff18b3598c81b486f464b581f549 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 6 Jul 2017 13:44:48 +0200 Subject: [PATCH] rsaenh: Implement duplicate_hash_impl for bcrypt-based hashes. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/rsaenh/implglue.c | 14 +++++++++++--- include/bcrypt.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dlls/rsaenh/implglue.c b/dlls/rsaenh/implglue.c index 4ac27671de1..69c7f806941 100644 --- a/dlls/rsaenh/implglue.c +++ b/dlls/rsaenh/implglue.c @@ -160,9 +160,17 @@ BOOL finalize_hash_impl(ALG_ID aiAlgid, HASH_CONTEXT *pHashContext, BYTE *pbHash BOOL duplicate_hash_impl(ALG_ID aiAlgid, const HASH_CONTEXT *pSrcHashContext, HASH_CONTEXT *pDestHashContext) { - *pDestHashContext = *pSrcHashContext; - - return TRUE; + switch (aiAlgid) + { + case CALG_MD2: + case CALG_MD4: + case CALG_MD5: + case CALG_SHA: + *pDestHashContext = *pSrcHashContext; + return TRUE; + default: + 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/include/bcrypt.h b/include/bcrypt.h index 05d0691f9c3..9e193da5de5 100644 --- a/include/bcrypt.h +++ b/include/bcrypt.h @@ -113,5 +113,6 @@ NTSTATUS WINAPI BCryptHash(BCRYPT_ALG_HANDLE, PUCHAR, ULONG, PUCHAR, ULONG, PUCH NTSTATUS WINAPI BCryptHashData(BCRYPT_HASH_HANDLE, PUCHAR, ULONG, ULONG); NTSTATUS WINAPI BCryptOpenAlgorithmProvider(BCRYPT_ALG_HANDLE *, LPCWSTR, LPCWSTR, ULONG); NTSTATUS WINAPI BCryptSetProperty(BCRYPT_HANDLE, LPCWSTR, PUCHAR, ULONG, ULONG); +NTSTATUS WINAPI BCryptDuplicateHash(BCRYPT_HASH_HANDLE, BCRYPT_HASH_HANDLE *, UCHAR *, ULONG, ULONG); #endif /* __WINE_BCRYPT_H */