From: Ariel Darshan abdaandroid@gmail.com
Signed-off-by: Ariel Darshan abdaandroid@gmail.com --- dlls/ncrypt/main.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/dlls/ncrypt/main.c b/dlls/ncrypt/main.c index 2772da1d8fb..23cf6896405 100644 --- a/dlls/ncrypt/main.c +++ b/dlls/ncrypt/main.c @@ -495,8 +495,25 @@ BOOL WINAPI NCryptIsKeyHandle(NCRYPT_HANDLE object) SECURITY_STATUS WINAPI NCryptOpenKey(NCRYPT_PROV_HANDLE provider, NCRYPT_KEY_HANDLE *key, const WCHAR *name, DWORD keyspec, DWORD flags) { - FIXME("(0x%lx, %p, %s, 0x%08x, 0x%08x): stub\n", provider, key, wine_dbgstr_w(name), keyspec, flags); - return NTE_NOT_SUPPORTED; + struct ncrypt_provider_instance *providerInstance; + struct ncrypt_key_instance *outKeyInstance; + + TRACE("(0x%lx, %p, %s, 0x%08x, 0x%08x)\n", provider, key, wine_dbgstr_w(name), keyspec, flags); + + if (!provider) + { + return NTE_INVALID_HANDLE; + } + providerInstance = handle2provider(provider); + + outKeyInstance = create_key(provider, name); + if (!outKeyInstance) + { + return NTE_NO_MEMORY; + } + *key = (NCRYPT_KEY_HANDLE)outKeyInstance; + + return providerInstance->functions.OpenKey(providerInstance->kspHandle, &outKeyInstance->kspHandle, name, keyspec, flags); }
SECURITY_STATUS WINAPI NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE *provider, const WCHAR *name, DWORD flags)