Module: wine Branch: master Commit: 4c917e95327dff18b3598c81b486f464b581f549 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4c917e95327dff18b3598c81b4...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jul 6 13:44:48 2017 +0200
rsaenh: Implement duplicate_hash_impl for bcrypt-based hashes.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 4ac2767..69c7f80 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 05d0691..9e193da 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 */