From: Sven Püschel <Sven\u2007Pschel(a)akarisu.de> Finish the Hash before trying to sign it, as Windows will also allow this behaviour. Signed-off-by: Sven Püschel <Sven Püschel(a)akarisu.de> --- dlls/dssenh/main.c | 6 ++++++ dlls/dssenh/tests/dssenh.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c index f6f01772d35..fa6993f9317 100644 --- a/dlls/dssenh/main.c +++ b/dlls/dssenh/main.c @@ -994,6 +994,12 @@ BOOL WINAPI CPSignHash( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD keyspec, const TRACE( "%p, %p, %lu, %s, %08lx, %p, %p\n", (void *)hprov, (void *)hhash, keyspec, debugstr_w(desc), flags, sig, siglen ); + if (!hash->finished) + { + if (BCryptFinishHash( hash->handle, hash->value, hash->len, 0 )) return FALSE; + hash->finished = TRUE; + } + if (container->magic != MAGIC_CONTAINER || !container->sign_key) return FALSE; if (hash->magic != MAGIC_HASH) return FALSE; diff --git a/dlls/dssenh/tests/dssenh.c b/dlls/dssenh/tests/dssenh.c index 2f9e491c0e0..29125386f79 100644 --- a/dlls/dssenh/tests/dssenh.c +++ b/dlls/dssenh/tests/dssenh.c @@ -937,7 +937,7 @@ static void test_signhash(HCRYPTPROV hProv, const struct signature_test *test) /* Verify signed hash 1 */ result = CryptVerifySignatureA(hHash, signValue1, sizeof(signValue1), pubKey, NULL, 0); - todo_wine ok(result, "Failed to verify signature, got %lx\n", GetLastError()); + ok(result, "Failed to verify signature, got %lx\n", GetLastError()); result = CryptDestroyHash(hHash); ok(result, "Failed to destroy hash, got %lx\n", GetLastError()); @@ -951,7 +951,7 @@ static void test_signhash(HCRYPTPROV hProv, const struct signature_test *test) /* Verify signed hash 2 */ result = CryptVerifySignatureA(hHash, signValue2, sizeof(signValue2), pubKey, NULL, 0); - todo_wine ok(result, "Failed to verify signature, got %lx\n", GetLastError()); + ok(result, "Failed to verify signature, got %lx\n", GetLastError()); result = CryptDestroyHash(hHash); ok(result, "Failed to destroy hash, got %lx\n", GetLastError()); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6314