Hans Leidekker : dssenh: Implement CPVerifySignature.

Alexandre Julliard julliard at winehq.org
Wed Oct 14 15:37:21 CDT 2020


Module: wine
Branch: master
Commit: 52ad894784eb745a74759d2f560b6ef632385e17
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=52ad894784eb745a74759d2f560b6ef632385e17

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Oct 14 11:03:56 2020 +0200

dssenh: Implement CPVerifySignature.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dssenh/main.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c
index da269807bf..752189d15b 100644
--- a/dlls/dssenh/main.c
+++ b/dlls/dssenh/main.c
@@ -759,7 +759,24 @@ BOOL WINAPI CPSignHash( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD keyspec, const
 BOOL WINAPI CPVerifySignature( HCRYPTPROV hprov, HCRYPTHASH hhash, const BYTE *sig, DWORD siglen, HCRYPTKEY hpubkey,
                                const WCHAR *desc, DWORD flags )
 {
-    return FALSE;
+    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 );
+
+    if (hash->magic != MAGIC_HASH || key->magic != MAGIC_KEY) return FALSE;
+    if (flags)
+    {
+        FIXME( "flags %08x not supported\n", flags );
+        return FALSE;
+    }
+
+    if (!CPGetHashParam( hprov, hhash, HP_HASHVAL, hashval, &hashlen, 0 )) return FALSE;
+
+    return !BCryptVerifySignature( key->handle, NULL, hashval, hashlen, (UCHAR *)sig, siglen, 0 );
 }
 
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)




More information about the wine-cvs mailing list