From 554e315bcfd7aa58ffc38ce69bfe4cba04c26de4 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Mon, 19 Oct 2020 11:24:14 +0200 Subject: [PATCH] dssenh: Access the hash value directly in CPSignHash and CPVerifySignature. Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/dssenh/main.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c index 2d9569672a5..a2e5a72148d 100644 --- a/dlls/dssenh/main.c +++ b/dlls/dssenh/main.c @@ -860,8 +860,7 @@ BOOL WINAPI CPSignHash( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD keyspec, const { struct container *container = (struct container *)hprov; struct hash *hash = (struct hash *)hhash; - UCHAR hashval[MAX_HASH_LEN]; - ULONG len, hashlen = sizeof(hashval); + ULONG len; TRACE( "%p, %p, %u, %s, %08x, %p, %p\n", (void *)hprov, (void *)hhash, keyspec, debugstr_w(desc), flags, sig, siglen ); @@ -870,14 +869,13 @@ BOOL WINAPI CPSignHash( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD keyspec, const if (hash->magic != MAGIC_HASH) return FALSE; if (!(len = get_signature_length( container->sign_key->algid ))) return FALSE; - if (!CPGetHashParam( hprov, hhash, HP_HASHVAL, hashval, &hashlen, 0 )) return FALSE; if (*siglen < len) { *siglen = len; return TRUE; } - return !BCryptSignHash( container->sign_key->handle, NULL, hashval, hashlen, sig, *siglen, siglen, 0 ); + return !BCryptSignHash( container->sign_key->handle, NULL, hash->value, hash->len, sig, *siglen, siglen, 0 ); } BOOL WINAPI CPVerifySignature( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *sig, DWORD siglen, HCRYPTKEY hpubkey, @@ -885,8 +883,6 @@ BOOL WINAPI CPVerifySignature( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *s { struct hash *hash = (struct hash *)hhash; struct key *key = (struct key *)hpubkey; - UCHAR hashval[MAX_HASH_LEN]; - ULONG hashlen = sizeof(hashval); TRACE( "%p, %p, %p, %u %p, %s, %08x\n", (void *)hprov, (void *)hhash, sig, siglen, (void *)hpubkey, debugstr_w(desc), flags ); @@ -898,9 +894,7 @@ BOOL WINAPI CPVerifySignature( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *s return FALSE; } - if (!CPGetHashParam( hprov, hhash, HP_HASHVAL, hashval, &hashlen, 0 )) return FALSE; - - return !BCryptVerifySignature( key->handle, NULL, hashval, hashlen, (UCHAR *)sig, siglen, 0 ); + return !BCryptVerifySignature( key->handle, NULL, hash->value, hash->len, (UCHAR *)sig, siglen, 0 ); } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)