Signed-off-by: Hans Leidekker hans@codeweavers.com --- dlls/dssenh/dssenh.spec | 2 +- dlls/dssenh/main.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/dlls/dssenh/dssenh.spec b/dlls/dssenh/dssenh.spec index 473bd08205f..9060614ce49 100644 --- a/dlls/dssenh/dssenh.spec +++ b/dlls/dssenh/dssenh.spec @@ -18,7 +18,7 @@ @ stub CPHashSessionKey @ stdcall CPImportKey(ptr ptr long ptr long ptr) @ stdcall CPReleaseContext(ptr long) -@ stub CPSetHashParam +@ stdcall CPSetHashParam(ptr ptr long ptr long) @ stub CPSetKeyParam @ stub CPSetProvParam @ stdcall CPSignHash(ptr ptr long wstr long ptr ptr) diff --git a/dlls/dssenh/main.c b/dlls/dssenh/main.c index a2e5a72148d..1da56493170 100644 --- a/dlls/dssenh/main.c +++ b/dlls/dssenh/main.c @@ -837,6 +837,27 @@ BOOL WINAPI CPGetHashParam( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD param, BYT } }
+BOOL WINAPI CPSetHashParam( HCRYPTPROV hprov, HCRYPTHASH hhash, DWORD param, const BYTE *data, DWORD flags ) +{ + struct hash *hash = (struct hash *)hhash; + + TRACE( "%p, %p, %08x, %p, %08x\n", (void *)hprov, (void *)hhash, param, data, flags ); + + if (hash->magic != MAGIC_HASH) return FALSE; + + switch (param) + { + case HP_HASHVAL: + memcpy( hash->value, data, hash->len ); + return TRUE; + + default: + FIXME( "param %u not supported\n", param ); + SetLastError( NTE_BAD_TYPE ); + return FALSE; + } +} + BOOL WINAPI CPDeriveKey( HCRYPTPROV hprov, ALG_ID algid, HCRYPTHASH hhash, DWORD flags, HCRYPTKEY *ret_key ) { return FALSE;