From: Ariel Darshan abdaandroid@gmail.com
Signed-off-by: Ariel Darshan abdaandroid@gmail.com --- dlls/ncrypt/main.c | 24 ++++++++++++++++++++++++ dlls/ncrypt/ncrypt.spec | 2 +- include/ncrypt.h | 1 + 3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/dlls/ncrypt/main.c b/dlls/ncrypt/main.c index bb6f90e6cf9..3eca9018bec 100644 --- a/dlls/ncrypt/main.c +++ b/dlls/ncrypt/main.c @@ -631,6 +631,30 @@ SECURITY_STATUS WINAPI NCryptSignHash(NCRYPT_KEY_HANDLE key, void *paddingInfo, return providerInstance->functions.SignHash(keyInstance->kspHandle, paddingInfo, hashValue, hashSize, signature, signatureSize, result, flags); }
+SECURITY_STATUS WINAPI NCryptVerifySignature(NCRYPT_KEY_HANDLE key, void *paddingInfo, PBYTE hashValue, + DWORD hashSize, PBYTE signature, DWORD signatureSize, DWORD flags) +{ + struct ncrypt_key_instance *keyInstance; + struct ncrypt_provider_instance * providerInstance; + + TRACE("(0x%lx, %p, %p, 0x%08x, %p, 0x%08x, 0x%08x)\n", key, paddingInfo, hashValue, hashSize, + signature, signatureSize, flags); + + if (!key) + { + return NTE_INVALID_HANDLE; + } + keyInstance = handle2key(key); + + if (!keyInstance->provider) + { + return NTE_INVALID_HANDLE; + } + providerInstance = handle2provider(keyInstance->provider); + + return providerInstance->functions.VerifySignature(keyInstance->kspHandle, paddingInfo, hashValue, hashSize, signature, signatureSize, flags); +} + static SECURITY_STATUS open_provider(NCRYPT_PROV_HANDLE *providerInstance, const WCHAR *name, const WCHAR *dllName, DWORD flags) { unsigned int size; diff --git a/dlls/ncrypt/ncrypt.spec b/dlls/ncrypt/ncrypt.spec index 9c09b061ff7..77283351660 100644 --- a/dlls/ncrypt/ncrypt.spec +++ b/dlls/ncrypt/ncrypt.spec @@ -101,7 +101,7 @@ @ stub NCryptUnprotectKey @ stub NCryptUnprotectSecret @ stub NCryptVerifyClaim -@ stub NCryptVerifySignature +@ stdcall NCryptVerifySignature(long ptr ptr long ptr long long) @ stub SslChangeNotify @ stub SslComputeClientAuthHash @ stub SslComputeEapKeyBlock diff --git a/include/ncrypt.h b/include/ncrypt.h index 2a58067b54d..6a002d148ab 100644 --- a/include/ncrypt.h +++ b/include/ncrypt.h @@ -93,6 +93,7 @@ SECURITY_STATUS WINAPI NCryptOpenKey(NCRYPT_PROV_HANDLE, NCRYPT_KEY_HANDLE *, co SECURITY_STATUS WINAPI NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE *, const WCHAR *, DWORD); SECURITY_STATUS WINAPI NCryptSetProperty(NCRYPT_HANDLE, const WCHAR *, PBYTE, DWORD, DWORD); SECURITY_STATUS WINAPI NCryptSignHash(NCRYPT_KEY_HANDLE, void *, PBYTE, DWORD, PBYTE, DWORD, DWORD *, DWORD); +SECURITY_STATUS WINAPI NCryptVerifySignature(NCRYPT_KEY_HANDLE, void *, PBYTE, DWORD, PBYTE, DWORD, DWORD);
#ifdef __cplusplus }