1 | /**
|
---|
2 | * This file is part of the mingw-w64 runtime package.
|
---|
3 | * No warranty is given; refer to the file DISCLAIMER within this package.
|
---|
4 | */
|
---|
5 |
|
---|
6 | #include <winapifamily.h>
|
---|
7 |
|
---|
8 | #ifndef __BCRYPT_H__
|
---|
9 | #define __BCRYPT_H__
|
---|
10 |
|
---|
11 | #ifdef __cplusplus
|
---|
12 | extern "C" {
|
---|
13 | #endif
|
---|
14 |
|
---|
15 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00
|
---|
16 |
|
---|
17 | #ifndef WINAPI
|
---|
18 | #if defined(_ARM_)
|
---|
19 | #define WINAPI
|
---|
20 | #else
|
---|
21 | #define WINAPI __stdcall
|
---|
22 | #endif
|
---|
23 | #endif
|
---|
24 |
|
---|
25 | #if !defined (_NTDEF_) && !defined (_NTSTATUS_PSDK)
|
---|
26 | #define _NTSTATUS_PSDK
|
---|
27 | typedef LONG NTSTATUS,*PNTSTATUS;
|
---|
28 | #endif
|
---|
29 |
|
---|
30 | #ifndef BCRYPT_SUCCESS
|
---|
31 | #define BCRYPT_SUCCESS(Status) (((NTSTATUS) (Status)) >= 0)
|
---|
32 | #endif
|
---|
33 |
|
---|
34 | #ifndef CONST
|
---|
35 | #define CONST const
|
---|
36 | #endif
|
---|
37 | #ifndef _NO_W32_PSEUDO_MODIFIERS
|
---|
38 | #ifndef IN
|
---|
39 | #define IN
|
---|
40 | #endif
|
---|
41 | #ifndef OUT
|
---|
42 | #define OUT
|
---|
43 | #endif
|
---|
44 | #ifndef OPTIONAL
|
---|
45 | #define OPTIONAL
|
---|
46 | #endif
|
---|
47 | #endif
|
---|
48 |
|
---|
49 | #define BCRYPT_OBJECT_ALIGNMENT 16
|
---|
50 |
|
---|
51 | #define BCRYPT_STRUCT_ALIGNMENT
|
---|
52 |
|
---|
53 | #define BCRYPT_KDF_HASH L"HASH"
|
---|
54 | #define BCRYPT_KDF_HMAC L"HMAC"
|
---|
55 | #define BCRYPT_KDF_TLS_PRF L"TLS_PRF"
|
---|
56 | #define BCRYPT_KDF_SP80056A_CONCAT L"SP800_56A_CONCAT"
|
---|
57 |
|
---|
58 | #if NTDDI_VERSION >= NTDDI_WINBLUE
|
---|
59 | #define BCRYPT_KDF_RAW_SECRET L"TRUNCATE"
|
---|
60 | #endif
|
---|
61 |
|
---|
62 | #if NTDDI_VERSION >= NTDDI_WIN10_RS4
|
---|
63 | #define BCRYPT_KDF_HKDF L"HKDF"
|
---|
64 | #endif
|
---|
65 |
|
---|
66 | #define KDF_HASH_ALGORITHM 0x0
|
---|
67 | #define KDF_SECRET_PREPEND 0x1
|
---|
68 | #define KDF_SECRET_APPEND 0x2
|
---|
69 | #define KDF_HMAC_KEY 0x3
|
---|
70 | #define KDF_TLS_PRF_LABEL 0x4
|
---|
71 | #define KDF_TLS_PRF_SEED 0x5
|
---|
72 | #define KDF_SECRET_HANDLE 0x6
|
---|
73 | #if NTDDI_VERSION >= NTDDI_WIN7
|
---|
74 | #define KDF_TLS_PRF_PROTOCOL 0x7
|
---|
75 | #define KDF_ALGORITHMID 0x8
|
---|
76 | #define KDF_PARTYUINFO 0x9
|
---|
77 | #define KDF_PARTYVINFO 0xa
|
---|
78 | #define KDF_SUPPPUBINFO 0xb
|
---|
79 | #define KDF_SUPPPRIVINFO 0xc
|
---|
80 | #endif
|
---|
81 | #if NTDDI_VERSION >= NTDDI_WIN8
|
---|
82 | #define KDF_LABEL 0xd
|
---|
83 | #define KDF_CONTEXT 0xe
|
---|
84 | #define KDF_SALT 0xf
|
---|
85 | #define KDF_ITERATION_COUNT 0x10
|
---|
86 | #define KDF_GENERIC_PARAMETER 0x11
|
---|
87 | #define KDF_KEYBITLENGTH 0x12
|
---|
88 | #endif
|
---|
89 | #if NTDDI_VERSION >= NTDDI_WIN10_RS4
|
---|
90 | #define KDF_HKDF_SALT 0x13
|
---|
91 | #define KDF_HKDF_INFO 0x14
|
---|
92 | #endif
|
---|
93 |
|
---|
94 | #define KDF_USE_SECRET_AS_HMAC_KEY_FLAG 1
|
---|
95 |
|
---|
96 | #define BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION 1
|
---|
97 |
|
---|
98 | #define BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG 0x00000001
|
---|
99 | #define BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG 0x00000002
|
---|
100 |
|
---|
101 | #define BCRYPT_INIT_AUTH_MODE_INFO(_AUTH_INFO_STRUCT_) \
|
---|
102 | RtlZeroMemory ((&_AUTH_INFO_STRUCT_), sizeof (BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO)); \
|
---|
103 | (_AUTH_INFO_STRUCT_).cbSize = sizeof (BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO); \
|
---|
104 | (_AUTH_INFO_STRUCT_).dwInfoVersion = BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION;
|
---|
105 |
|
---|
106 | #define BCRYPT_OPAQUE_KEY_BLOB L"OpaqueKeyBlob"
|
---|
107 | #define BCRYPT_KEY_DATA_BLOB L"KeyDataBlob"
|
---|
108 | #if NTDDI_VERSION >= NTDDI_WIN7
|
---|
109 | #define BCRYPT_AES_WRAP_KEY_BLOB L"Rfc3565KeyWrapBlob"
|
---|
110 | #endif
|
---|
111 |
|
---|
112 | #define BCRYPT_ALGORITHM_NAME L"AlgorithmName"
|
---|
113 | #define BCRYPT_AUTH_TAG_LENGTH L"AuthTagLength"
|
---|
114 | #define BCRYPT_BLOCK_LENGTH L"BlockLength"
|
---|
115 | #define BCRYPT_BLOCK_SIZE_LIST L"BlockSizeList"
|
---|
116 | #define BCRYPT_CHAINING_MODE L"ChainingMode"
|
---|
117 | #define BCRYPT_CHAIN_MODE_CBC L"ChainingModeCBC"
|
---|
118 | #define BCRYPT_CHAIN_MODE_CCM L"ChainingModeCCM"
|
---|
119 | #define BCRYPT_CHAIN_MODE_CFB L"ChainingModeCFB"
|
---|
120 | #define BCRYPT_CHAIN_MODE_ECB L"ChainingModeECB"
|
---|
121 | #define BCRYPT_CHAIN_MODE_GCM L"ChainingModeGCM"
|
---|
122 | #define BCRYPT_CHAIN_MODE_NA L"ChainingModeN/A"
|
---|
123 | #define BCRYPT_EFFECTIVE_KEY_LENGTH L"EffectiveKeyLength"
|
---|
124 | #define BCRYPT_HASH_BLOCK_LENGTH L"HashBlockLength"
|
---|
125 | #define BCRYPT_HASH_LENGTH L"HashDigestLength"
|
---|
126 | #define BCRYPT_HASH_OID_LIST L"HashOIDList"
|
---|
127 | #define BCRYPT_INITIALIZATION_VECTOR L"IV"
|
---|
128 | #define BCRYPT_IS_KEYED_HASH L"IsKeyedHash"
|
---|
129 | #define BCRYPT_IS_REUSABLE_HASH L"IsReusableHash"
|
---|
130 | #define BCRYPT_KEY_LENGTH L"KeyLength"
|
---|
131 | #define BCRYPT_KEY_LENGTHS L"KeyLengths"
|
---|
132 | #define BCRYPT_KEY_OBJECT_LENGTH L"KeyObjectLength"
|
---|
133 | #define BCRYPT_KEY_STRENGTH L"KeyStrength"
|
---|
134 | #define BCRYPT_MESSAGE_BLOCK_LENGTH L"MessageBlockLength"
|
---|
135 | #define BCRYPT_OBJECT_LENGTH L"ObjectLength"
|
---|
136 | #define BCRYPT_PADDING_SCHEMES L"PaddingSchemes"
|
---|
137 | #define BCRYPT_PCP_PLATFORM_TYPE_PROPERTY L"PCP_PLATFORM_TYPE"
|
---|
138 | #define BCRYPT_PCP_PROVIDER_VERSION_PROPERTY L"PCP_PROVIDER_VERSION"
|
---|
139 | #define BCRYPT_PRIMITIVE_TYPE L"PrimitiveType"
|
---|
140 | #define BCRYPT_PROVIDER_HANDLE L"ProviderHandle"
|
---|
141 | #define BCRYPT_PUBLIC_KEY_LENGTH L"PublicKeyLength"
|
---|
142 | #define BCRYPT_SIGNATURE_LENGTH L"SignatureLength"
|
---|
143 | #if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined(WINBLUE_KBSPRING14)))
|
---|
144 | #define BCRYPT_MULTI_OBJECT_LENGTH L"MultiObjectLength"
|
---|
145 | #endif
|
---|
146 | #if NTDDI_VERSION >= NTDDI_WIN10_RS4
|
---|
147 | #define BCRYPT_IS_IFX_TPM_WEAK_KEY L"IsIfxTpmWeakKey"
|
---|
148 | #define BCRYPT_HKDF_HASH_ALGORITHM L"HkdfHashAlgorithm"
|
---|
149 | #define BCRYPT_HKDF_SALT_AND_FINALIZE L"HkdfSaltAndFinalize"
|
---|
150 | #define BCRYPT_HKDF_PRK_AND_FINALIZE L"HkdfPrkAndFinalize"
|
---|
151 | #endif
|
---|
152 |
|
---|
153 | #define BCRYPT_SUPPORTED_PAD_ROUTER 0x00000001
|
---|
154 | #define BCRYPT_SUPPORTED_PAD_PKCS1_ENC 0x00000002
|
---|
155 | #define BCRYPT_SUPPORTED_PAD_PKCS1_SIG 0x00000004
|
---|
156 | #define BCRYPT_SUPPORTED_PAD_OAEP 0x00000008
|
---|
157 | #define BCRYPT_SUPPORTED_PAD_PSS 0x00000010
|
---|
158 |
|
---|
159 | #define BCRYPT_PROV_DISPATCH 0x00000001
|
---|
160 |
|
---|
161 | #define BCRYPT_BLOCK_PADDING 0x00000001
|
---|
162 |
|
---|
163 | #define BCRYPT_PAD_NONE 0x00000001
|
---|
164 | #define BCRYPT_PAD_PKCS1 0x00000002
|
---|
165 | #define BCRYPT_PAD_OAEP 0x00000004
|
---|
166 | #define BCRYPT_PAD_PSS 0x00000008
|
---|
167 | #if NTDDI_VERSION >= NTDDI_WINBLUE
|
---|
168 | #define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID 0x00000010
|
---|
169 | #endif
|
---|
170 |
|
---|
171 | #define BCRYPTBUFFER_VERSION 0
|
---|
172 |
|
---|
173 | typedef struct __BCRYPT_KEY_LENGTHS_STRUCT {
|
---|
174 | ULONG dwMinLength;
|
---|
175 | ULONG dwMaxLength;
|
---|
176 | ULONG dwIncrement;
|
---|
177 | } BCRYPT_KEY_LENGTHS_STRUCT;
|
---|
178 |
|
---|
179 | typedef BCRYPT_KEY_LENGTHS_STRUCT BCRYPT_AUTH_TAG_LENGTHS_STRUCT;
|
---|
180 |
|
---|
181 | typedef struct _BCRYPT_OID {
|
---|
182 | ULONG cbOID;
|
---|
183 | PUCHAR pbOID;
|
---|
184 | } BCRYPT_OID;
|
---|
185 |
|
---|
186 | typedef struct _BCRYPT_OID_LIST {
|
---|
187 | ULONG dwOIDCount;
|
---|
188 | BCRYPT_OID *pOIDs;
|
---|
189 | } BCRYPT_OID_LIST;
|
---|
190 |
|
---|
191 | typedef struct _BCRYPT_PKCS1_PADDING_INFO {
|
---|
192 | LPCWSTR pszAlgId;
|
---|
193 | } BCRYPT_PKCS1_PADDING_INFO;
|
---|
194 |
|
---|
195 | typedef struct _BCRYPT_PSS_PADDING_INFO {
|
---|
196 | LPCWSTR pszAlgId;
|
---|
197 | ULONG cbSalt;
|
---|
198 | } BCRYPT_PSS_PADDING_INFO;
|
---|
199 |
|
---|
200 | typedef struct _BCRYPT_OAEP_PADDING_INFO {
|
---|
201 | LPCWSTR pszAlgId;
|
---|
202 | PUCHAR pbLabel;
|
---|
203 | ULONG cbLabel;
|
---|
204 | } BCRYPT_OAEP_PADDING_INFO;
|
---|
205 |
|
---|
206 | typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
|
---|
207 | ULONG cbSize;
|
---|
208 | ULONG dwInfoVersion;
|
---|
209 | PUCHAR pbNonce;
|
---|
210 | ULONG cbNonce;
|
---|
211 | PUCHAR pbAuthData;
|
---|
212 | ULONG cbAuthData;
|
---|
213 | PUCHAR pbTag;
|
---|
214 | ULONG cbTag;
|
---|
215 | PUCHAR pbMacContext;
|
---|
216 | ULONG cbMacContext;
|
---|
217 | ULONG cbAAD;
|
---|
218 | ULONGLONG cbData;
|
---|
219 | ULONG dwFlags;
|
---|
220 | } BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO,*PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;
|
---|
221 | #endif
|
---|
222 |
|
---|
223 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) || _WIN32_WINNT >= 0x0A00
|
---|
224 | typedef struct _BCryptBuffer {
|
---|
225 | ULONG cbBuffer;
|
---|
226 | ULONG BufferType;
|
---|
227 | PVOID pvBuffer;
|
---|
228 | } BCryptBuffer,*PBCryptBuffer;
|
---|
229 |
|
---|
230 | typedef struct _BCryptBufferDesc {
|
---|
231 | ULONG ulVersion;
|
---|
232 | ULONG cBuffers;
|
---|
233 | PBCryptBuffer pBuffers;
|
---|
234 | } BCryptBufferDesc,*PBCryptBufferDesc;
|
---|
235 | #endif
|
---|
236 |
|
---|
237 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00
|
---|
238 |
|
---|
239 | #define BCRYPT_PUBLIC_KEY_BLOB L"PUBLICBLOB"
|
---|
240 | #define BCRYPT_PRIVATE_KEY_BLOB L"PRIVATEBLOB"
|
---|
241 |
|
---|
242 | #define BCRYPT_RSAPUBLIC_BLOB L"RSAPUBLICBLOB"
|
---|
243 | #define BCRYPT_RSAPRIVATE_BLOB L"RSAPRIVATEBLOB"
|
---|
244 | #define LEGACY_RSAPUBLIC_BLOB L"CAPIPUBLICBLOB"
|
---|
245 | #define LEGACY_RSAPRIVATE_BLOB L"CAPIPRIVATEBLOB"
|
---|
246 |
|
---|
247 | #define BCRYPT_RSAPUBLIC_MAGIC 0x31415352
|
---|
248 | #define BCRYPT_RSAPRIVATE_MAGIC 0x32415352
|
---|
249 |
|
---|
250 | #define BCRYPT_RSAFULLPRIVATE_BLOB L"RSAFULLPRIVATEBLOB"
|
---|
251 |
|
---|
252 | #define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352
|
---|
253 |
|
---|
254 | #if NTDDI_VERSION >= NTDDI_WIN8
|
---|
255 | #define BCRYPT_GLOBAL_PARAMETERS L"SecretAgreementParam"
|
---|
256 | #define BCRYPT_PRIVATE_KEY L"PrivKeyVal"
|
---|
257 | #endif
|
---|
258 |
|
---|
259 | #define BCRYPT_ECCPUBLIC_BLOB L"ECCPUBLICBLOB"
|
---|
260 | #define BCRYPT_ECCPRIVATE_BLOB L"ECCPRIVATEBLOB"
|
---|
261 |
|
---|
262 | #if NTDDI_VERSION >= NTDDI_WINTHRESHOLD
|
---|
263 | #define BCRYPT_ECCFULLPUBLIC_BLOB L"ECCFULLPUBLICBLOB"
|
---|
264 | #define BCRYPT_ECCFULLPRIVATE_BLOB L"ECCFULLPRIVATEBLOB"
|
---|
265 | #define SSL_ECCPUBLIC_BLOB L"SSLECCPUBLICBLOB"
|
---|
266 | #endif
|
---|
267 |
|
---|
268 | #define BCRYPT_ECDH_PUBLIC_P256_MAGIC 0x314b4345
|
---|
269 | #define BCRYPT_ECDH_PRIVATE_P256_MAGIC 0x324b4345
|
---|
270 | #define BCRYPT_ECDH_PUBLIC_P384_MAGIC 0x334b4345
|
---|
271 | #define BCRYPT_ECDH_PRIVATE_P384_MAGIC 0x344b4345
|
---|
272 | #define BCRYPT_ECDH_PUBLIC_P521_MAGIC 0x354b4345
|
---|
273 | #define BCRYPT_ECDH_PRIVATE_P521_MAGIC 0x364b4345
|
---|
274 | #if NTDDI_VERSION >= NTDDI_WINTHRESHOLD
|
---|
275 | #define BCRYPT_ECDH_PUBLIC_GENERIC_MAGIC 0x504B4345
|
---|
276 | #define BCRYPT_ECDH_PRIVATE_GENERIC_MAGIC 0x564B4345
|
---|
277 | #endif
|
---|
278 |
|
---|
279 | #define BCRYPT_ECDSA_PUBLIC_P256_MAGIC 0x31534345
|
---|
280 | #define BCRYPT_ECDSA_PRIVATE_P256_MAGIC 0x32534345
|
---|
281 | #define BCRYPT_ECDSA_PUBLIC_P384_MAGIC 0x33534345
|
---|
282 | #define BCRYPT_ECDSA_PRIVATE_P384_MAGIC 0x34534345
|
---|
283 | #define BCRYPT_ECDSA_PUBLIC_P521_MAGIC 0x35534345
|
---|
284 | #define BCRYPT_ECDSA_PRIVATE_P521_MAGIC 0x36534345
|
---|
285 | #if NTDDI_VERSION >= NTDDI_WINTHRESHOLD
|
---|
286 | #define BCRYPT_ECDSA_PUBLIC_GENERIC_MAGIC 0x50444345
|
---|
287 | #define BCRYPT_ECDSA_PRIVATE_GENERIC_MAGIC 0x56444345
|
---|
288 | #endif
|
---|
289 |
|
---|
290 | #define BCRYPT_DH_PUBLIC_BLOB L"DHPUBLICBLOB"
|
---|
291 | #define BCRYPT_DH_PRIVATE_BLOB L"DHPRIVATEBLOB"
|
---|
292 | #define LEGACY_DH_PUBLIC_BLOB L"CAPIDHPUBLICBLOB"
|
---|
293 | #define LEGACY_DH_PRIVATE_BLOB L"CAPIDHPRIVATEBLOB"
|
---|
294 |
|
---|
295 | #define BCRYPT_DH_PUBLIC_MAGIC 0x42504844
|
---|
296 | #define BCRYPT_DH_PRIVATE_MAGIC 0x56504844
|
---|
297 |
|
---|
298 | #define BCRYPT_DH_PARAMETERS L"DHParameters"
|
---|
299 | #define BCRYPT_DH_PARAMETERS_MAGIC 0x4d504844
|
---|
300 |
|
---|
301 | #define BCRYPT_DSA_PUBLIC_BLOB L"DSAPUBLICBLOB"
|
---|
302 | #define BCRYPT_DSA_PRIVATE_BLOB L"DSAPRIVATEBLOB"
|
---|
303 | #define LEGACY_DSA_PUBLIC_BLOB L"CAPIDSAPUBLICBLOB"
|
---|
304 | #define LEGACY_DSA_PRIVATE_BLOB L"CAPIDSAPRIVATEBLOB"
|
---|
305 | #define LEGACY_DSA_V2_PUBLIC_BLOB L"V2CAPIDSAPUBLICBLOB"
|
---|
306 | #define LEGACY_DSA_V2_PRIVATE_BLOB L"V2CAPIDSAPRIVATEBLOB"
|
---|
307 |
|
---|
308 | #define BCRYPT_DSA_PUBLIC_MAGIC 0x42505344
|
---|
309 | #define BCRYPT_DSA_PRIVATE_MAGIC 0x56505344
|
---|
310 | #define BCRYPT_DSA_PUBLIC_MAGIC_V2 0x32425044
|
---|
311 | #define BCRYPT_DSA_PRIVATE_MAGIC_V2 0x32565044
|
---|
312 |
|
---|
313 | #define BCRYPT_KEY_DATA_BLOB_MAGIC 0x4d42444b
|
---|
314 | #define BCRYPT_KEY_DATA_BLOB_VERSION1 0x1
|
---|
315 |
|
---|
316 | #define BCRYPT_DSA_PARAMETERS L"DSAParameters"
|
---|
317 | #define BCRYPT_DSA_PARAMETERS_MAGIC 0x4d505344
|
---|
318 | #define BCRYPT_DSA_PARAMETERS_MAGIC_V2 0x324d5044
|
---|
319 |
|
---|
320 | #define MS_PRIMITIVE_PROVIDER L"Microsoft Primitive Provider"
|
---|
321 | #define MS_PLATFORM_CRYPTO_PROVIDER L"Microsoft Platform Crypto Provider"
|
---|
322 |
|
---|
323 | #define BCRYPT_RSA_ALGORITHM L"RSA"
|
---|
324 | #define BCRYPT_RSA_SIGN_ALGORITHM L"RSA_SIGN"
|
---|
325 | #define BCRYPT_DH_ALGORITHM L"DH"
|
---|
326 | #define BCRYPT_DSA_ALGORITHM L"DSA"
|
---|
327 | #define BCRYPT_RC2_ALGORITHM L"RC2"
|
---|
328 | #define BCRYPT_RC4_ALGORITHM L"RC4"
|
---|
329 | #define BCRYPT_AES_ALGORITHM L"AES"
|
---|
330 | #define BCRYPT_DES_ALGORITHM L"DES"
|
---|
331 | #define BCRYPT_DESX_ALGORITHM L"DESX"
|
---|
332 | #define BCRYPT_3DES_ALGORITHM L"3DES"
|
---|
333 | #define BCRYPT_3DES_112_ALGORITHM L"3DES_112"
|
---|
334 | #define BCRYPT_MD2_ALGORITHM L"MD2"
|
---|
335 | #define BCRYPT_MD4_ALGORITHM L"MD4"
|
---|
336 | #define BCRYPT_MD5_ALGORITHM L"MD5"
|
---|
337 | #define BCRYPT_SHA1_ALGORITHM L"SHA1"
|
---|
338 | #define BCRYPT_SHA256_ALGORITHM L"SHA256"
|
---|
339 | #define BCRYPT_SHA384_ALGORITHM L"SHA384"
|
---|
340 | #define BCRYPT_SHA512_ALGORITHM L"SHA512"
|
---|
341 | #define BCRYPT_AES_GMAC_ALGORITHM L"AES-GMAC"
|
---|
342 | #define BCRYPT_AES_CMAC_ALGORITHM L"AES-CMAC"
|
---|
343 | #define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256"
|
---|
344 | #define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384"
|
---|
345 | #define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521"
|
---|
346 | #define BCRYPT_ECDH_P256_ALGORITHM L"ECDH_P256"
|
---|
347 | #define BCRYPT_ECDH_P384_ALGORITHM L"ECDH_P384"
|
---|
348 | #define BCRYPT_ECDH_P521_ALGORITHM L"ECDH_P521"
|
---|
349 | #define BCRYPT_RNG_ALGORITHM L"RNG"
|
---|
350 | #define BCRYPT_RNG_FIPS186_DSA_ALGORITHM L"FIPS186DSARNG"
|
---|
351 | #define BCRYPT_RNG_DUAL_EC_ALGORITHM L"DUALECRNG"
|
---|
352 | #define BCRYPT_SP800108_CTR_HMAC_ALGORITHM L"SP800_108_CTR_HMAC"
|
---|
353 | #define BCRYPT_SP80056A_CONCAT_ALGORITHM L"SP800_56A_CONCAT"
|
---|
354 | #define BCRYPT_PBKDF2_ALGORITHM L"PBKDF2"
|
---|
355 | #define BCRYPT_CAPI_KDF_ALGORITHM L"CAPI_KDF"
|
---|
356 |
|
---|
357 | #define BCRYPT_CIPHER_INTERFACE 0x00000001
|
---|
358 | #define BCRYPT_HASH_INTERFACE 0x00000002
|
---|
359 | #define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x00000003
|
---|
360 | #define BCRYPT_SECRET_AGREEMENT_INTERFACE 0x00000004
|
---|
361 | #define BCRYPT_SIGNATURE_INTERFACE 0x00000005
|
---|
362 | #define BCRYPT_RNG_INTERFACE 0x00000006
|
---|
363 | #define BCRYPT_KEY_DERIVATION_INTERFACE 0x00000007
|
---|
364 |
|
---|
365 | #define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008
|
---|
366 | #define BCRYPT_CAPI_AES_FLAG 0x00000010
|
---|
367 | #define BCRYPT_HASH_REUSABLE_FLAG 0x00000020
|
---|
368 |
|
---|
369 | #define BCRYPT_BUFFERS_LOCKED_FLAG 0x00000040
|
---|
370 |
|
---|
371 | #define BCRYPT_CIPHER_OPERATION 0x00000001
|
---|
372 | #define BCRYPT_HASH_OPERATION 0x00000002
|
---|
373 | #define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004
|
---|
374 | #define BCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008
|
---|
375 | #define BCRYPT_SIGNATURE_OPERATION 0x00000010
|
---|
376 | #define BCRYPT_RNG_OPERATION 0x00000020
|
---|
377 | #define BCRYPT_KEY_DERIVATION_OPERATION 0x00000040
|
---|
378 |
|
---|
379 | #define BCRYPT_PUBLIC_KEY_FLAG 0x00000001
|
---|
380 | #define BCRYPT_PRIVATE_KEY_FLAG 0x00000002
|
---|
381 |
|
---|
382 | #define BCRYPT_NO_KEY_VALIDATION 0x00000008
|
---|
383 |
|
---|
384 | #define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001
|
---|
385 | #define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002
|
---|
386 |
|
---|
387 | #define BCRYPT_MAKE_INTERFACE_VERSION(major, minor) { (USHORT)major,(USHORT)minor}
|
---|
388 | #define BCRYPT_IS_INTERFACE_VERSION_COMPATIBLE(loader, provider) ((loader).MajorVersion <= (provider).MajorVersion)
|
---|
389 |
|
---|
390 | #define BCRYPT_CIPHER_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
|
---|
391 | #define BCRYPT_HASH_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
|
---|
392 | #define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
|
---|
393 | #define BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
|
---|
394 | #define BCRYPT_SIGNATURE_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
|
---|
395 | #define BCRYPT_RNG_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
|
---|
396 |
|
---|
397 | #define CRYPT_MIN_DEPENDENCIES (0x00000001)
|
---|
398 | #define CRYPT_PROCESS_ISOLATE (0x00010000)
|
---|
399 |
|
---|
400 | #define CRYPT_UM (0x00000001)
|
---|
401 | #define CRYPT_KM (0x00000002)
|
---|
402 | #define CRYPT_MM (0x00000003)
|
---|
403 | #define CRYPT_ANY (0x00000004)
|
---|
404 |
|
---|
405 | #define CRYPT_OVERWRITE (0x00000001)
|
---|
406 |
|
---|
407 | #define CRYPT_LOCAL (0x00000001)
|
---|
408 | #define CRYPT_DOMAIN (0x00000002)
|
---|
409 |
|
---|
410 | #define CRYPT_EXCLUSIVE (0x00000001)
|
---|
411 | #define CRYPT_OVERRIDE (0x00010000)
|
---|
412 |
|
---|
413 | #define CRYPT_ALL_FUNCTIONS (0x00000001)
|
---|
414 | #define CRYPT_ALL_PROVIDERS (0x00000002)
|
---|
415 |
|
---|
416 | #define CRYPT_PRIORITY_TOP (0x00000000)
|
---|
417 | #define CRYPT_PRIORITY_BOTTOM (0xffffffff)
|
---|
418 |
|
---|
419 | #define CRYPT_DEFAULT_CONTEXT L"Default"
|
---|
420 |
|
---|
421 | typedef PVOID BCRYPT_HANDLE;
|
---|
422 | typedef PVOID BCRYPT_ALG_HANDLE;
|
---|
423 | typedef PVOID BCRYPT_KEY_HANDLE;
|
---|
424 | typedef PVOID BCRYPT_HASH_HANDLE;
|
---|
425 | typedef PVOID BCRYPT_SECRET_HANDLE;
|
---|
426 |
|
---|
427 | typedef struct _BCRYPT_KEY_BLOB {
|
---|
428 | ULONG Magic;
|
---|
429 | } BCRYPT_KEY_BLOB;
|
---|
430 |
|
---|
431 | typedef struct _BCRYPT_RSAKEY_BLOB {
|
---|
432 | ULONG Magic;
|
---|
433 | ULONG BitLength;
|
---|
434 | ULONG cbPublicExp;
|
---|
435 | ULONG cbModulus;
|
---|
436 | ULONG cbPrime1;
|
---|
437 | ULONG cbPrime2;
|
---|
438 | } BCRYPT_RSAKEY_BLOB;
|
---|
439 |
|
---|
440 | typedef struct _BCRYPT_ECCKEY_BLOB {
|
---|
441 | ULONG dwMagic;
|
---|
442 | ULONG cbKey;
|
---|
443 | } BCRYPT_ECCKEY_BLOB,*PBCRYPT_ECCKEY_BLOB;
|
---|
444 |
|
---|
445 | typedef struct _BCRYPT_DH_KEY_BLOB {
|
---|
446 | ULONG dwMagic;
|
---|
447 | ULONG cbKey;
|
---|
448 | } BCRYPT_DH_KEY_BLOB,*PBCRYPT_DH_KEY_BLOB;
|
---|
449 |
|
---|
450 | typedef struct _BCRYPT_DH_PARAMETER_HEADER {
|
---|
451 | ULONG cbLength;
|
---|
452 | ULONG dwMagic;
|
---|
453 | ULONG cbKeyLength;
|
---|
454 | } BCRYPT_DH_PARAMETER_HEADER;
|
---|
455 |
|
---|
456 | typedef struct _BCRYPT_DSA_KEY_BLOB {
|
---|
457 | ULONG dwMagic;
|
---|
458 | ULONG cbKey;
|
---|
459 | UCHAR Count[4];
|
---|
460 | UCHAR Seed[20];
|
---|
461 | UCHAR q[20];
|
---|
462 | } BCRYPT_DSA_KEY_BLOB,*PBCRYPT_DSA_KEY_BLOB;
|
---|
463 |
|
---|
464 | typedef enum {
|
---|
465 | DSA_HASH_ALGORITHM_SHA1,
|
---|
466 | DSA_HASH_ALGORITHM_SHA256,
|
---|
467 | DSA_HASH_ALGORITHM_SHA512
|
---|
468 | } HASHALGORITHM_ENUM;
|
---|
469 |
|
---|
470 | typedef enum {
|
---|
471 | DSA_FIPS186_2,
|
---|
472 | DSA_FIPS186_3
|
---|
473 | } DSAFIPSVERSION_ENUM;
|
---|
474 | typedef struct _BCRYPT_DSA_KEY_BLOB_V2 {
|
---|
475 | ULONG dwMagic;
|
---|
476 | ULONG cbKey;
|
---|
477 | HASHALGORITHM_ENUM hashAlgorithm;
|
---|
478 | DSAFIPSVERSION_ENUM standardVersion;
|
---|
479 | ULONG cbSeedLength;
|
---|
480 | ULONG cbGroupSize;
|
---|
481 | UCHAR Count[4];
|
---|
482 | } BCRYPT_DSA_KEY_BLOB_V2,*PBCRYPT_DSA_KEY_BLOB_V2;
|
---|
483 |
|
---|
484 | typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER {
|
---|
485 | ULONG dwMagic;
|
---|
486 | ULONG dwVersion;
|
---|
487 | ULONG cbKeyData;
|
---|
488 | } BCRYPT_KEY_DATA_BLOB_HEADER,*PBCRYPT_KEY_DATA_BLOB_HEADER;
|
---|
489 |
|
---|
490 | typedef struct _BCRYPT_DSA_PARAMETER_HEADER {
|
---|
491 | ULONG cbLength;
|
---|
492 | ULONG dwMagic;
|
---|
493 | ULONG cbKeyLength;
|
---|
494 | UCHAR Count[4];
|
---|
495 | UCHAR Seed[20];
|
---|
496 | UCHAR q[20];
|
---|
497 | } BCRYPT_DSA_PARAMETER_HEADER;
|
---|
498 |
|
---|
499 | typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2 {
|
---|
500 | ULONG cbLength;
|
---|
501 | ULONG dwMagic;
|
---|
502 | ULONG cbKeyLength;
|
---|
503 | HASHALGORITHM_ENUM hashAlgorithm;
|
---|
504 | DSAFIPSVERSION_ENUM standardVersion;
|
---|
505 | ULONG cbSeedLength;
|
---|
506 | ULONG cbGroupSize;
|
---|
507 | UCHAR Count[4];
|
---|
508 | } BCRYPT_DSA_PARAMETER_HEADER_V2;
|
---|
509 |
|
---|
510 | typedef struct _BCRYPT_ECC_CURVE_NAMES {
|
---|
511 | ULONG dwEccCurveNames;
|
---|
512 | LPWSTR *pEccCurveNames;
|
---|
513 | } BCRYPT_ECC_CURVE_NAMES;
|
---|
514 |
|
---|
515 | typedef enum {
|
---|
516 | BCRYPT_HASH_OPERATION_HASH_DATA = 1,
|
---|
517 | BCRYPT_HASH_OPERATION_FINISH_HASH = 2
|
---|
518 | } BCRYPT_HASH_OPERATION_TYPE;
|
---|
519 |
|
---|
520 | typedef struct _BCRYPT_MULTI_HASH_OPERATION {
|
---|
521 | ULONG iHash;
|
---|
522 | BCRYPT_HASH_OPERATION_TYPE hashOperation;
|
---|
523 | PUCHAR pbBuffer;
|
---|
524 | ULONG cbBuffer;
|
---|
525 | } BCRYPT_MULTI_HASH_OPERATION;
|
---|
526 |
|
---|
527 | typedef enum {
|
---|
528 | BCRYPT_OPERATION_TYPE_HASH = 1
|
---|
529 | } BCRYPT_MULTI_OPERATION_TYPE;
|
---|
530 |
|
---|
531 | typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT {
|
---|
532 | ULONG cbPerObject;
|
---|
533 | ULONG cbPerElement;
|
---|
534 | } BCRYPT_MULTI_OBJECT_LENGTH_STRUCT;
|
---|
535 |
|
---|
536 | typedef struct _BCRYPT_ALGORITHM_IDENTIFIER {
|
---|
537 | LPWSTR pszName;
|
---|
538 | ULONG dwClass;
|
---|
539 | ULONG dwFlags;
|
---|
540 | } BCRYPT_ALGORITHM_IDENTIFIER;
|
---|
541 |
|
---|
542 | typedef struct _BCRYPT_PROVIDER_NAME {
|
---|
543 | LPWSTR pszProviderName;
|
---|
544 | } BCRYPT_PROVIDER_NAME;
|
---|
545 |
|
---|
546 | typedef struct _BCRYPT_INTERFACE_VERSION {
|
---|
547 | USHORT MajorVersion;
|
---|
548 | USHORT MinorVersion;
|
---|
549 | } BCRYPT_INTERFACE_VERSION,*PBCRYPT_INTERFACE_VERSION;
|
---|
550 |
|
---|
551 | typedef struct _CRYPT_INTERFACE_REG {
|
---|
552 | ULONG dwInterface;
|
---|
553 | ULONG dwFlags;
|
---|
554 | ULONG cFunctions;
|
---|
555 | PWSTR *rgpszFunctions;
|
---|
556 | } CRYPT_INTERFACE_REG,*PCRYPT_INTERFACE_REG;
|
---|
557 |
|
---|
558 | typedef struct _CRYPT_IMAGE_REG {
|
---|
559 | PWSTR pszImage;
|
---|
560 | ULONG cInterfaces;
|
---|
561 | PCRYPT_INTERFACE_REG *rgpInterfaces;
|
---|
562 | } CRYPT_IMAGE_REG,*PCRYPT_IMAGE_REG;
|
---|
563 |
|
---|
564 | typedef struct _CRYPT_PROVIDER_REG {
|
---|
565 | ULONG cAliases;
|
---|
566 | PWSTR *rgpszAliases;
|
---|
567 | PCRYPT_IMAGE_REG pUM;
|
---|
568 | PCRYPT_IMAGE_REG pKM;
|
---|
569 | } CRYPT_PROVIDER_REG,*PCRYPT_PROVIDER_REG;
|
---|
570 |
|
---|
571 | typedef struct _CRYPT_PROVIDERS {
|
---|
572 | ULONG cProviders;
|
---|
573 | PWSTR *rgpszProviders;
|
---|
574 | } CRYPT_PROVIDERS,*PCRYPT_PROVIDERS;
|
---|
575 |
|
---|
576 | typedef struct _CRYPT_CONTEXT_CONFIG {
|
---|
577 | ULONG dwFlags;
|
---|
578 | ULONG dwReserved;
|
---|
579 | } CRYPT_CONTEXT_CONFIG,*PCRYPT_CONTEXT_CONFIG;
|
---|
580 |
|
---|
581 | typedef struct _CRYPT_CONTEXT_FUNCTION_CONFIG {
|
---|
582 | ULONG dwFlags;
|
---|
583 | ULONG dwReserved;
|
---|
584 | } CRYPT_CONTEXT_FUNCTION_CONFIG,*PCRYPT_CONTEXT_FUNCTION_CONFIG;
|
---|
585 |
|
---|
586 | typedef struct _CRYPT_CONTEXTS {
|
---|
587 | ULONG cContexts;
|
---|
588 | PWSTR *rgpszContexts;
|
---|
589 | } CRYPT_CONTEXTS,*PCRYPT_CONTEXTS;
|
---|
590 |
|
---|
591 | typedef struct _CRYPT_CONTEXT_FUNCTIONS {
|
---|
592 | ULONG cFunctions;
|
---|
593 | PWSTR *rgpszFunctions;
|
---|
594 | } CRYPT_CONTEXT_FUNCTIONS,*PCRYPT_CONTEXT_FUNCTIONS;
|
---|
595 |
|
---|
596 | typedef struct _CRYPT_CONTEXT_FUNCTION_PROVIDERS {
|
---|
597 | ULONG cProviders;
|
---|
598 | PWSTR *rgpszProviders;
|
---|
599 | } CRYPT_CONTEXT_FUNCTION_PROVIDERS,*PCRYPT_CONTEXT_FUNCTION_PROVIDERS;
|
---|
600 |
|
---|
601 | typedef struct _CRYPT_PROPERTY_REF {
|
---|
602 | PWSTR pszProperty;
|
---|
603 | ULONG cbValue;
|
---|
604 | PUCHAR pbValue;
|
---|
605 | } CRYPT_PROPERTY_REF,*PCRYPT_PROPERTY_REF;
|
---|
606 |
|
---|
607 | typedef struct _CRYPT_IMAGE_REF {
|
---|
608 | PWSTR pszImage;
|
---|
609 | ULONG dwFlags;
|
---|
610 | } CRYPT_IMAGE_REF,*PCRYPT_IMAGE_REF;
|
---|
611 |
|
---|
612 | typedef struct _CRYPT_PROVIDER_REF {
|
---|
613 | ULONG dwInterface;
|
---|
614 | PWSTR pszFunction;
|
---|
615 | PWSTR pszProvider;
|
---|
616 | ULONG cProperties;
|
---|
617 | PCRYPT_PROPERTY_REF *rgpProperties;
|
---|
618 | PCRYPT_IMAGE_REF pUM;
|
---|
619 | PCRYPT_IMAGE_REF pKM;
|
---|
620 | } CRYPT_PROVIDER_REF,*PCRYPT_PROVIDER_REF;
|
---|
621 |
|
---|
622 | typedef struct _CRYPT_PROVIDER_REFS {
|
---|
623 | ULONG cProviders;
|
---|
624 | PCRYPT_PROVIDER_REF *rgpProviders;
|
---|
625 | } CRYPT_PROVIDER_REFS,*PCRYPT_PROVIDER_REFS;
|
---|
626 |
|
---|
627 | NTSTATUS WINAPI BCryptOpenAlgorithmProvider (BCRYPT_ALG_HANDLE *phAlgorithm, LPCWSTR pszAlgId, LPCWSTR pszImplementation, ULONG dwFlags);
|
---|
628 | NTSTATUS WINAPI BCryptEnumAlgorithms (ULONG dwAlgOperations, ULONG *pAlgCount, BCRYPT_ALGORITHM_IDENTIFIER **ppAlgList, ULONG dwFlags);
|
---|
629 | NTSTATUS WINAPI BCryptEnumProviders (LPCWSTR pszAlgId, ULONG *pImplCount, BCRYPT_PROVIDER_NAME **ppImplList, ULONG dwFlags);
|
---|
630 | NTSTATUS WINAPI BCryptGetProperty (BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
|
---|
631 | NTSTATUS WINAPI BCryptSetProperty (BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
|
---|
632 | NTSTATUS WINAPI BCryptCloseAlgorithmProvider (BCRYPT_ALG_HANDLE hAlgorithm, ULONG dwFlags);
|
---|
633 | VOID WINAPI BCryptFreeBuffer (PVOID pvBuffer);
|
---|
634 | NTSTATUS WINAPI BCryptGenerateSymmetricKey (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags);
|
---|
635 | NTSTATUS WINAPI BCryptGenerateKeyPair (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, ULONG dwLength, ULONG dwFlags);
|
---|
636 | NTSTATUS WINAPI BCryptEncrypt (BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, VOID *pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
|
---|
637 | NTSTATUS WINAPI BCryptDecrypt (BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, VOID *pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
|
---|
638 | NTSTATUS WINAPI BCryptExportKey (BCRYPT_KEY_HANDLE hKey, BCRYPT_KEY_HANDLE hExportKey, LPCWSTR pszBlobType, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
|
---|
639 | NTSTATUS WINAPI BCryptImportKey (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
|
---|
640 | NTSTATUS WINAPI BCryptImportKeyPair (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
|
---|
641 | NTSTATUS WINAPI BCryptDuplicateKey (BCRYPT_KEY_HANDLE hKey, BCRYPT_KEY_HANDLE *phNewKey, PUCHAR pbKeyObject, ULONG cbKeyObject, ULONG dwFlags);
|
---|
642 | NTSTATUS WINAPI BCryptFinalizeKeyPair (BCRYPT_KEY_HANDLE hKey, ULONG dwFlags);
|
---|
643 | NTSTATUS WINAPI BCryptDestroyKey (BCRYPT_KEY_HANDLE hKey);
|
---|
644 | NTSTATUS WINAPI BCryptDestroySecret (BCRYPT_SECRET_HANDLE hSecret);
|
---|
645 | NTSTATUS WINAPI BCryptSignHash (BCRYPT_KEY_HANDLE hKey, VOID *pPaddingInfo, PUCHAR pbInput, ULONG cbInput, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
|
---|
646 | NTSTATUS WINAPI BCryptVerifySignature (BCRYPT_KEY_HANDLE hKey, VOID *pPaddingInfo, PUCHAR pbHash, ULONG cbHash, PUCHAR pbSignature, ULONG cbSignature, ULONG dwFlags);
|
---|
647 | NTSTATUS WINAPI BCryptSecretAgreement (BCRYPT_KEY_HANDLE hPrivKey, BCRYPT_KEY_HANDLE hPubKey, BCRYPT_SECRET_HANDLE *phAgreedSecret, ULONG dwFlags);
|
---|
648 | NTSTATUS WINAPI BCryptDeriveKey (BCRYPT_SECRET_HANDLE hSharedSecret, LPCWSTR pwszKDF, BCryptBufferDesc *pParameterList, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG *pcbResult, ULONG dwFlags);
|
---|
649 | NTSTATUS WINAPI BCryptKeyDerivation (BCRYPT_KEY_HANDLE hKey, BCryptBufferDesc *pParameterList, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG *pcbResult, ULONG dwFlags);
|
---|
650 | NTSTATUS WINAPI BCryptCreateHash (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_HASH_HANDLE *phHash, PUCHAR pbHashObject, ULONG cbHashObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags);
|
---|
651 | NTSTATUS WINAPI BCryptHashData (BCRYPT_HASH_HANDLE hHash, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
|
---|
652 | NTSTATUS WINAPI BCryptFinishHash (BCRYPT_HASH_HANDLE hHash, PUCHAR pbOutput, ULONG cbOutput, ULONG dwFlags);
|
---|
653 | #if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined(WINBLUE_KBSPRING14)))
|
---|
654 | NTSTATUS WINAPI BCryptCreateMultiHash (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_HASH_HANDLE *phHash, ULONG nHashes, PUCHAR pbHashObject, ULONG cbHashObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags);
|
---|
655 | NTSTATUS WINAPI BCryptProcessMultiOperations (BCRYPT_HANDLE hObject, BCRYPT_MULTI_OPERATION_TYPE operationType, PVOID pOperations, ULONG cbOperations, ULONG dwFlags);
|
---|
656 | #endif
|
---|
657 | NTSTATUS WINAPI BCryptDuplicateHash (BCRYPT_HASH_HANDLE hHash, BCRYPT_HASH_HANDLE *phNewHash, PUCHAR pbHashObject, ULONG cbHashObject, ULONG dwFlags);
|
---|
658 | NTSTATUS WINAPI BCryptDestroyHash (BCRYPT_HASH_HANDLE hHash);
|
---|
659 | #if NTDDI_VERSION >= NTDDI_WINTHRESHOLD
|
---|
660 | NTSTATUS WINAPI BCryptHash (BCRYPT_ALG_HANDLE hAlgorithm, PUCHAR pbSecret, ULONG cbSecret, PUCHAR pbInput, ULONG cbInput, PUCHAR pbOutput, ULONG cbOutput);
|
---|
661 | #endif
|
---|
662 | NTSTATUS WINAPI BCryptGenRandom (BCRYPT_ALG_HANDLE hAlgorithm, PUCHAR pbBuffer, ULONG cbBuffer, ULONG dwFlags);
|
---|
663 | NTSTATUS WINAPI BCryptDeriveKeyCapi (BCRYPT_HASH_HANDLE hHash, BCRYPT_ALG_HANDLE hTargetAlg, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags);
|
---|
664 | NTSTATUS WINAPI BCryptDeriveKeyPBKDF2 (BCRYPT_ALG_HANDLE hPrf, PUCHAR pbPassword, ULONG cbPassword, PUCHAR pbSalt, ULONG cbSalt, ULONGLONG cIterations, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags);
|
---|
665 | NTSTATUS WINAPI BCryptResolveProviders (LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProvider, ULONG dwMode, ULONG dwFlags, ULONG *pcbBuffer, PCRYPT_PROVIDER_REFS *ppBuffer);
|
---|
666 | NTSTATUS WINAPI BCryptGetFipsAlgorithmMode (BOOLEAN *pfEnabled);
|
---|
667 | #endif
|
---|
668 | #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
|
---|
669 | #ifndef KERNEL_MODE_CNG
|
---|
670 | NTSTATUS WINAPI BCryptQueryProviderRegistration (LPCWSTR pszProvider, ULONG dwMode, ULONG dwInterface, ULONG *pcbBuffer, PCRYPT_PROVIDER_REG *ppBuffer);
|
---|
671 | NTSTATUS WINAPI BCryptEnumRegisteredProviders (ULONG *pcbBuffer, PCRYPT_PROVIDERS *ppBuffer);
|
---|
672 | NTSTATUS WINAPI BCryptCreateContext (ULONG dwTable, LPCWSTR pszContext, PCRYPT_CONTEXT_CONFIG pConfig);
|
---|
673 | NTSTATUS WINAPI BCryptDeleteContext (ULONG dwTable, LPCWSTR pszContext);
|
---|
674 | NTSTATUS WINAPI BCryptEnumContexts (ULONG dwTable, ULONG *pcbBuffer, PCRYPT_CONTEXTS *ppBuffer);
|
---|
675 | NTSTATUS WINAPI BCryptConfigureContext (ULONG dwTable, LPCWSTR pszContext, PCRYPT_CONTEXT_CONFIG pConfig);
|
---|
676 | NTSTATUS WINAPI BCryptQueryContextConfiguration (ULONG dwTable, LPCWSTR pszContext, ULONG *pcbBuffer, PCRYPT_CONTEXT_CONFIG *ppBuffer);
|
---|
677 | NTSTATUS WINAPI BCryptAddContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG dwPosition);
|
---|
678 | NTSTATUS WINAPI BCryptRemoveContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction);
|
---|
679 | NTSTATUS WINAPI BCryptEnumContextFunctions (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTIONS *ppBuffer);
|
---|
680 | NTSTATUS WINAPI BCryptConfigureContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, PCRYPT_CONTEXT_FUNCTION_CONFIG pConfig);
|
---|
681 | NTSTATUS WINAPI BCryptQueryContextFunctionConfiguration (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTION_CONFIG *ppBuffer);
|
---|
682 | NTSTATUS WINAPI BCryptEnumContextFunctionProviders (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTION_PROVIDERS *ppBuffer);
|
---|
683 | NTSTATUS WINAPI BCryptSetContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG cbValue, PUCHAR pbValue);
|
---|
684 | NTSTATUS WINAPI BCryptQueryContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG *pcbValue, PUCHAR *ppbValue);
|
---|
685 | NTSTATUS WINAPI BCryptRegisterConfigChangeNotify (HANDLE *phEvent);
|
---|
686 | NTSTATUS WINAPI BCryptUnregisterConfigChangeNotify (HANDLE hEvent);
|
---|
687 | #else
|
---|
688 | NTSTATUS WINAPI BCryptRegisterConfigChangeNotify (PRKEVENT pEvent);
|
---|
689 | NTSTATUS WINAPI BCryptUnregisterConfigChangeNotify (PRKEVENT pEvent);
|
---|
690 | #endif
|
---|
691 | #endif
|
---|
692 |
|
---|
693 | #ifdef __cplusplus
|
---|
694 | }
|
---|
695 | #endif
|
---|
696 | #endif
|
---|