ReactOS 0.4.17-dev-1037-g720d112
ncrypt.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 Austin English
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#ifndef __NCRYPT_H__
20#define __NCRYPT_H__
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#ifndef WINAPI
27#define WINAPI __stdcall
28#endif
29
30#ifndef __SECSTATUS_DEFINED__
32#define __SECSTATUS_DEFINED__
33#endif
34
35typedef struct _NCryptAlgorithmName {
41
42typedef struct _NCryptBuffer {
47
48typedef struct _NCryptBufferDesc {
53
54typedef struct NCryptKeyName {
60
67
68typedef struct __NCRYPT_UI_POLICY {
75
81
82#define NCRYPT_KEY_STORAGE_INTERFACE 0x00010001
83#define NCRYPT_SCHANNEL_INTERFACE 0x00010002
84#define NCRYPT_SCHANNEL_SIGNATURE_INTERFACE 0x00010003
85#define NCRYPT_KEY_PROTECTION_INTERFACE 0x00010004
86
87#define NCRYPT_SILENT_FLAG 0x00000040
88
89#define NCRYPT_NO_PADDING_FLAG 0x00000001
90#define NCRYPT_PAD_PKCS1_FLAG 0x00000002
91#define NCRYPT_PAD_OAEP_FLAG 0x00000004
92#define NCRYPT_PAD_PSS_FLAG 0x00000008
93
94#define NCRYPT_ALLOW_DECRYPT_FLAG 0x00000001
95#define NCRYPT_ALLOW_SIGNING_FLAG 0x00000002
96#define NCRYPT_ALLOW_KEY_AGREEMENT_FLAG 0x00000004
97#define NCRYPT_ALLOW_KEY_IMPORT_FLAG 0x00000008
98#define NCRYPT_ALLOW_ALL_USAGES 0x00ffffff
99
100#define NCRYPT_ALLOW_EXPORT_FLAG 0x00000001
101#define NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG 0x00000002
102#define NCRYPT_ALLOW_ARCHIVING_FLAG 0x00000004
103#define NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG 0x00000008
104
105#define NCRYPT_NAME_PROPERTY L"Name"
106#define NCRYPT_UNIQUE_NAME_PROPERTY L"Unique Name"
107#define NCRYPT_ALGORITHM_PROPERTY L"Algorithm Name"
108#define NCRYPT_LENGTH_PROPERTY L"Length"
109#define NCRYPT_LENGTHS_PROPERTY L"Lengths"
110#define NCRYPT_BLOCK_LENGTH_PROPERTY L"Block Length"
111#define NCRYPT_UI_POLICY_PROPERTY L"UI Policy"
112#define NCRYPT_EXPORT_POLICY_PROPERTY L"Export Policy"
113#define NCRYPT_WINDOW_HANDLE_PROPERTY L"HWND Handle"
114#define NCRYPT_USE_CONTEXT_PROPERTY L"Use Context"
115#define NCRYPT_IMPL_TYPE_PROPERTY L"Impl Type"
116#define NCRYPT_KEY_USAGE_PROPERTY L"Key Usage"
117#define NCRYPT_KEY_TYPE_PROPERTY L"Key Type"
118#define NCRYPT_VERSION_PROPERTY L"Version"
119#define NCRYPT_SECURITY_DESCR_SUPPORT_PROPERTY L"Security Descr Support"
120#define NCRYPT_SECURITY_DESCR_PROPERTY L"Security Descr"
121#define NCRYPT_USE_COUNT_ENABLED_PROPERTY L"Enabled Use Count"
122#define NCRYPT_USE_COUNT_PROPERTY L"Use Count"
123#define NCRYPT_LAST_MODIFIED_PROPERTY L"Modified"
124#define NCRYPT_MAX_NAME_LENGTH_PROPERTY L"Max Name Length"
125#define NCRYPT_ALGORITHM_GROUP_PROPERTY L"Algorithm Group"
126#define NCRYPT_PROVIDER_HANDLE_PROPERTY L"Provider Handle"
127#define NCRYPT_PIN_PROPERTY L"SmartCardPin"
128#define NCRYPT_READER_PROPERTY L"SmartCardReader"
129#define NCRYPT_SMARTCARD_GUID_PROPERTY L"SmartCardGuid"
130#define NCRYPT_CERTIFICATE_PROPERTY L"SmartCardKeyCertificate"
131#define NCRYPT_PIN_PROMPT_PROPERTY L"SmartCardPinPrompt"
132#define NCRYPT_USER_CERTSTORE_PROPERTY L"SmartCardUserCertStore"
133#define NCRYPT_ROOT_CERTSTORE_PROPERTY L"SmartcardRootCertStore"
134#define NCRYPT_SECURE_PIN_PROPERTY L"SmartCardSecurePin"
135#define NCRYPT_ASSOCIATED_ECDH_KEY L"SmartCardAssociatedECDHKey"
136#define NCRYPT_SCARD_PIN_ID L"SmartCardPinId"
137#define NCRYPT_SCARD_PIN_INFO L"SmartCardPinInfo"
138
140 DWORD, DWORD);
144 DWORD, DWORD *, DWORD);
156
157#ifdef __cplusplus
158}
159#endif
160
161#endif /* __NCRYPT_H__ */
unsigned long DWORD
Definition: ntddk_ex.h:95
SECURITY_STATUS WINAPI NCryptFreeObject(NCRYPT_HANDLE)
Definition: main.c:342
struct _NCryptBufferDesc * PNCryptBufferDesc
LONG SECURITY_STATUS
Definition: ncrypt.h:31
SECURITY_STATUS WINAPI NCryptDecrypt(NCRYPT_KEY_HANDLE, BYTE *, DWORD, void *, BYTE *, DWORD, DWORD *, DWORD)
Definition: main.c:246
SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE, BYTE *, DWORD, void *, BYTE *, DWORD, DWORD *, DWORD)
Definition: main.c:260
SECURITY_STATUS WINAPI NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE *, const WCHAR *, DWORD)
Definition: main.c:561
ULONG_PTR NCRYPT_SECRET_HANDLE
Definition: ncrypt.h:80
SECURITY_STATUS WINAPI NCryptSetProperty(NCRYPT_HANDLE, const WCHAR *, BYTE *, DWORD, DWORD)
Definition: main.c:576
struct _NCryptBufferDesc NCryptBufferDesc
struct _NCryptBuffer * PNCryptBuffer
SECURITY_STATUS WINAPI NCryptExportKey(NCRYPT_KEY_HANDLE, NCRYPT_KEY_HANDLE, const WCHAR *, NCryptBufferDesc *, BYTE *, DWORD, DWORD *, DWORD)
Definition: main.c:475
SECURITY_STATUS WINAPI NCryptOpenKey(NCRYPT_PROV_HANDLE, NCRYPT_KEY_HANDLE *, const WCHAR *, DWORD, DWORD)
Definition: main.c:554
struct _NCryptAlgorithmName NCryptAlgorithmName
SECURITY_STATUS WINAPI NCryptImportKey(NCRYPT_PROV_HANDLE, NCRYPT_KEY_HANDLE, const WCHAR *, NCryptBufferDesc *, NCRYPT_KEY_HANDLE *, BYTE *, DWORD, DWORD)
Definition: main.c:408
SECURITY_STATUS WINAPI NCryptCreatePersistedKey(NCRYPT_PROV_HANDLE, NCRYPT_KEY_HANDLE *, const WCHAR *, const WCHAR *, DWORD, DWORD)
Definition: main.c:184
#define WINAPI
Definition: ncrypt.h:27
ULONG_PTR NCRYPT_PROV_HANDLE
Definition: ncrypt.h:77
SECURITY_STATUS WINAPI NCryptGetProperty(NCRYPT_HANDLE, const WCHAR *, BYTE *, DWORD, DWORD *, DWORD)
Definition: main.c:386
SECURITY_STATUS WINAPI NCryptFinalizeKey(NCRYPT_KEY_HANDLE, DWORD)
Definition: main.c:301
SECURITY_STATUS WINAPI NCryptIsAlgSupported(NCRYPT_PROV_HANDLE, const WCHAR *, DWORD)
Definition: main.c:502
ULONG_PTR NCRYPT_HASH_HANDLE
Definition: ncrypt.h:79
SECURITY_STATUS WINAPI NCryptSignHash(NCRYPT_KEY_HANDLE, void *, BYTE *, DWORD, BYTE *, DWORD, DWORD *, DWORD)
Definition: main.c:588
struct _NCryptBuffer NCryptBuffer
struct __NCRYPT_UI_POLICY NCRYPT_UI_POLICY
ULONG_PTR NCRYPT_HANDLE
Definition: ncrypt.h:76
ULONG_PTR NCRYPT_KEY_HANDLE
Definition: ncrypt.h:78
SECURITY_STATUS WINAPI NCryptVerifySignature(NCRYPT_KEY_HANDLE, void *, BYTE *, DWORD, BYTE *, DWORD, DWORD)
Definition: main.c:602
struct __NCRYPT_SUPPORTED_LENGTHS NCRYPT_SUPPORTED_LENGTHS
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
LPWSTR pszName
Definition: ncrypt.h:55
LPWSTR pszAlgid
Definition: ncrypt.h:56
DWORD dwFlags
Definition: ncrypt.h:58
DWORD dwLegacyKeySpec
Definition: ncrypt.h:57
DWORD dwAlgOperations
Definition: ncrypt.h:38
ULONG cBuffers
Definition: ncrypt.h:50
PNCryptBuffer pBuffers
Definition: ncrypt.h:51
ULONG ulVersion
Definition: ncrypt.h:49
ULONG BufferType
Definition: ncrypt.h:44
PVOID pvBuffer
Definition: ncrypt.h:45
ULONG cbBuffer
Definition: ncrypt.h:43
LPCWSTR pszFriendlyName
Definition: ncrypt.h:72
DWORD dwVersion
Definition: ncrypt.h:69
LPCWSTR pszCreationTitle
Definition: ncrypt.h:71
LPCWSTR pszDescription
Definition: ncrypt.h:73
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
Definition: typedefs.h:56
uint32_t ULONG_PTR
Definition: typedefs.h:65
uint32_t ULONG
Definition: typedefs.h:59
unsigned char BYTE
Definition: xxhash.c:193