From: Austin English <austinenglish@gmail.com> Subject: ncrypt: add some ncrypt stubs Message-Id: <CACC5Q1deipV9WLsrEt0AEzJeWRKd6NDm0wmQ2ZhSS6+=7fxECQ@mail.gmail.com> Date: Tue, 12 Jul 2016 01:29:32 -0500 Fixes https://bugs.winehq.org/show_bug.cgi?id=40887 -- -Austin GPG: 14FB D7EA A041 937B From cb00820bdda80b73eea735835fe54db6590de5f4 Mon Sep 17 00:00:00 2001 From: Austin English <austinenglish@gmail.com> Date: Tue, 12 Jul 2016 00:46:20 -0500 Subject: [PATCH] ncrypt: add some ncrypt stubs Signed-off-by: Austin English <austinenglish@gmail.com> --- dlls/ncrypt/main.c | 44 ++++++++++++++++++++++++++++++++++++++++ dlls/ncrypt/ncrypt.spec | 14 ++++++------- include/ncrypt.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ include/winerror.h | 10 ++++++++++ 4 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 include/ncrypt.h diff --git a/dlls/ncrypt/main.c b/dlls/ncrypt/main.c index 9c09600..e827b41 100644 --- a/dlls/ncrypt/main.c +++ b/dlls/ncrypt/main.c @@ -26,6 +26,8 @@ #include "winbase.h" #include "wine/debug.h" +#include "ncrypt.h" + WINE_DEFAULT_DEBUG_CHANNEL(ncrypt); BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved) @@ -43,3 +45,45 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved) return TRUE; } + +SECURITY_STATUS WINAPI NCryptCreatePersistedKey(NCRYPT_PROV_HANDLE provider, NCRYPT_KEY_HANDLE *key, + const WCHAR *algid, const WCHAR *name, DWORD keyspec, DWORD flags) +{ + FIXME("(%lu %p %s %s %u 0x%08x): stub\n", provider, key, wine_dbgstr_w(algid), wine_dbgstr_w(name), keyspec, flags); + return NTE_INVALID_PARAMETER; +} + +SECURITY_STATUS WINAPI NCryptDecrypt(NCRYPT_KEY_HANDLE key, BYTE *inaddress, DWORD insize, void *padding, BYTE *outaddress, DWORD outsize, DWORD *result, DWORD flags) +{ + FIXME("(%lu %p %u %p %p %u %p 0x%08x): stub\n", key, inaddress, insize, padding, outaddress, outsize, result, flags); + return NTE_INVALID_PARAMETER; +} + +SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *inaddress, DWORD insize, void *padding, BYTE *outaddress, DWORD outsize, DWORD *result, DWORD flags) +{ + FIXME("(%lu %p %u %p %p %u %p 0x%08x): stub\n", key, inaddress, insize, padding, outaddress, outsize, result, flags); + return NTE_INVALID_PARAMETER; +} + +SECURITY_STATUS WINAPI NCryptFinalizeKey(NCRYPT_KEY_HANDLE key, DWORD flags) +{ + FIXME("(%lu 0x%08x): stub\n", key, flags); + return NTE_INVALID_PARAMETER; +} +SECURITY_STATUS WINAPI NCryptFreeObject(NCRYPT_HANDLE object) +{ + FIXME("(%lu): stub\n", object); + return NTE_INVALID_PARAMETER; +} + +SECURITY_STATUS WINAPI NCryptOpenKey(NCRYPT_PROV_HANDLE provider, NCRYPT_KEY_HANDLE *key, const WCHAR *name, DWORD keyspec, DWORD flags) +{ + FIXME("(%lu %p %s %u 0x%08x): stub\n", provider, key, wine_dbgstr_w(name), keyspec, flags); + return NTE_INVALID_PARAMETER; +} + +SECURITY_STATUS WINAPI NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE *provider, const WCHAR *name, DWORD flags) +{ + FIXME("(%p %s %u): stub\n", provider, wine_dbgstr_w(name), flags); + return NTE_INVALID_PARAMETER; +} diff --git a/dlls/ncrypt/ncrypt.spec b/dlls/ncrypt/ncrypt.spec index 1322f1e..0412760 100644 --- a/dlls/ncrypt/ncrypt.spec +++ b/dlls/ncrypt/ncrypt.spec @@ -60,20 +60,20 @@ @ stub NCryptCloseKeyProtector @ stub NCryptCloseProtectionDescriptor @ stub NCryptCreateClaim -@ stub NCryptCreatePersistedKey +@ stdcall NCryptCreatePersistedKey(long ptr wstr wstr long long) @ stub NCryptCreateProtectionDescriptor -@ stub NCryptDecrypt +@ stdcall NCryptDecrypt(long ptr long ptr ptr long ptr long) @ stub NCryptDeleteKey @ stub NCryptDeriveKey @ stub NCryptDuplicateKeyProtectorHandle -@ stub NCryptEncrypt +@ stdcall NCryptEncrypt(long ptr long ptr ptr long ptr long) @ stub NCryptEnumAlgorithms @ stub NCryptEnumKeys @ stub NCryptEnumStorageProviders @ stub NCryptExportKey -@ stub NCryptFinalizeKey +@ stdcall NCryptFinalizeKey(long long) @ stub NCryptFreeBuffer -@ stub NCryptFreeObject +@ stdcall NCryptFreeObject(long) @ stub NCryptGetProperty @ stub NCryptGetProtectionDescriptorInfo @ stub NCryptImportKey @@ -81,9 +81,9 @@ @ stub NCryptIsKeyHandle @ stub NCryptKeyDerivation @ stub NCryptNotifyChangeKey -@ stub NCryptOpenKey +@ stdcall NCryptOpenKey(long ptr wstr long long) @ stub NCryptOpenKeyProtector -@ stub NCryptOpenStorageProvider +@ stdcall NCryptOpenStorageProvider(ptr wstr long) @ stub NCryptProtectKey @ stub NCryptProtectSecret @ stub NCryptQueryProtectionDescriptorName diff --git a/include/ncrypt.h b/include/ncrypt.h new file mode 100644 index 0000000..a9dfaec --- /dev/null +++ b/include/ncrypt.h @@ -0,0 +1,53 @@ +/* + * + * Copyright (c) 2016 Austin English + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#ifndef __NCRYPT_H__ +#define __NCRYPT_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef WINAPI +#define WINAPI __stdcall +#endif + +#ifndef __SECSTATUS_DEFINED__ +typedef LONG SECURITY_STATUS; +#define __SECSTATUS_DEFINED__ +#endif + +typedef ULONG_PTR NCRYPT_HANDLE; +typedef ULONG_PTR NCRYPT_PROV_HANDLE; +typedef ULONG_PTR NCRYPT_KEY_HANDLE; +typedef ULONG_PTR NCRYPT_HASH_HANDLE; +typedef ULONG_PTR NCRYPT_SECRET_HANDLE; + +SECURITY_STATUS WINAPI NCryptCreatePersistedKey(NCRYPT_PROV_HANDLE, NCRYPT_KEY_HANDLE *, const WCHAR *, const WCHAR *, DWORD, DWORD) +SECURITY_STATUS WINAPI NCryptDecrypt(NCRYPT_KEY_HANDLE, BYTE *, DWORD, void *, BYTE *, DWORD, DWORD *, DWORD) +SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE, BYTE *, DWORD, void *, BYTE *, DWORD, DWORD *, DWORD) +SECURITY_STATUS WINAPI NCryptFinalizeKey(NCRYPT_KEY_HANDLE, DWORD) +SECURITY_STATUS WINAPI NCryptFreeObject(NCRYPT_HANDLE) +SECURITY_STATUS WINAPI NCryptOpenKey(NCRYPT_PROV_HANDLE, NCRYPT_KEY_HANDLE *, const WCHAR *, DWORD, DWORD) +SECURITY_STATUS WINAPI NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE *, const WCHAR *, DWORD); + +#ifdef __cplusplus +} +#endif + +#endif /* __NCRYPT_H__ */ diff --git a/include/winerror.h b/include/winerror.h index ba9e245..9c1b7f1 100644 --- a/include/winerror.h +++ b/include/winerror.h @@ -2639,6 +2639,16 @@ static inline HRESULT HRESULT_FROM_WIN32(unsigned int x) #define NTE_TOKEN_KEYSET_STORAGE_FULL _HRESULT_TYPEDEF_(0x80090023) #define NTE_TEMPORARY_PROFILE _HRESULT_TYPEDEF_(0x80090024) #define NTE_FIXEDPARAMETER _HRESULT_TYPEDEF_(0x80090025) +#define NTE_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80090026) +#define NTE_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80090027) +#define NTE_BUFFER_TOO_SMALL _HRESULT_TYPEDEF_(0x80090028) +#define NTE_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80090029) +#define NTE_NO_MORE_ITEMS _HRESULT_TYPEDEF_(0x8009002A) +#define NTE_BUFFERS_OVERLAP _HRESULT_TYPEDEF_(0x8009002B) +#define NTE_DECRYPTION_FAILURE _HRESULT_TYPEDEF_(0x8009002C) +#define NTE_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x8009002D) +#define NTE_UI_REQUIRED _HRESULT_TYPEDEF_(0x8009002E) +#define NTE_HMAC_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009002F) #define NTE_OP_OK _HRESULT_TYPEDEF_(0) #define SEC_E_INSUFFICIENT_MEMORY _HRESULT_TYPEDEF_(0x80090300) -- 2.7.3