blob: ee818a5bd0622d8f702d9252abb096b76490a29c [file] [log] [blame]
Peter Atashiand8608672015-05-30 12:35:541// Copyright © 2015, Peter Atashian
2// Licensed under the MIT License <LICENSE.md>
3//! Cryptographic Primitive API Prototypes and Definitions
skdltmxn54268b62015-07-26 14:44:184pub const KDF_HASH_ALGORITHM: ::ULONG = 0x0;
5pub const KDF_SECRET_PREPEND: ::ULONG = 0x1;
6pub const KDF_SECRET_APPEND: ::ULONG = 0x2;
7pub const KDF_HMAC_KEY: ::ULONG = 0x3;
8pub const KDF_TLS_PRF_LABEL: ::ULONG = 0x4;
9pub const KDF_TLS_PRF_SEED: ::ULONG = 0x5;
10pub const KDF_SECRET_HANDLE: ::ULONG = 0x6;
11pub const KDF_TLS_PRF_PROTOCOL: ::ULONG = 0x7;
12pub const KDF_ALGORITHMID: ::ULONG = 0x8;
13pub const KDF_PARTYUINFO: ::ULONG = 0x9;
14pub const KDF_PARTYVINFO: ::ULONG = 0xA;
15pub const KDF_SUPPPUBINFO: ::ULONG = 0xB;
16pub const KDF_SUPPPRIVINFO: ::ULONG = 0xC;
17pub const KDF_LABEL: ::ULONG = 0xD;
18pub const KDF_CONTEXT: ::ULONG = 0xE;
19pub const KDF_SALT: ::ULONG = 0xF;
20pub const KDF_ITERATION_COUNT: ::ULONG = 0x10;
21pub const KDF_GENERIC_PARAMETER: ::ULONG = 0x11;
22pub const KDF_KEYBITLENGTH: ::ULONG = 0x12;
skdltmxn54268b62015-07-26 14:44:1823pub const KDF_USE_SECRET_AS_HMAC_KEY_FLAG: ::ULONG = 0x1;
Peter Atashianc9a461a2015-10-24 22:29:5524STRUCT!{struct BCRYPT_KEY_LENGTHS_STRUCT {
25 dwMinLength: ::ULONG,
26 dwMaxLength: ::ULONG,
27 dwIncrement: ::ULONG,
28}}
skdltmxn54268b62015-07-26 14:44:1829pub type BCRYPT_AUTH_TAG_LENGTHS_STRUCT = BCRYPT_KEY_LENGTHS_STRUCT;
Peter Atashianc9a461a2015-10-24 22:29:5530STRUCT!{struct BCRYPT_OID {
31 cbOID: ::ULONG,
32 pbOID: ::PUCHAR,
33}}
34STRUCT!{struct BCRYPT_OID_LIST {
35 dwOIDCount: ::ULONG,
36 pOIDs: *mut BCRYPT_OID,
37}}
38STRUCT!{struct BCRYPT_PKCS1_PADDING_INFO {
39 pszAlgId: ::LPCWSTR,
40}}
41STRUCT!{struct BCRYPT_PSS_PADDING_INFO {
42 pszAlgId: ::LPCWSTR,
43 cbSalt: ::ULONG,
44}}
45STRUCT!{struct BCRYPT_OAEP_PADDING_INFO {
46 pszAlgId: ::LPCWSTR,
47 pbLabel: ::PUCHAR,
48 cbLabel: ::ULONG,
49}}
skdltmxn54268b62015-07-26 14:44:1850pub const BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION: ::ULONG = 1;
skdltmxn54268b62015-07-26 14:44:1851pub const BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG: ::ULONG = 0x00000001;
52pub const BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG: ::ULONG = 0x00000002;
Peter Atashianc9a461a2015-10-24 22:29:5553STRUCT!{struct BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
54 cbSize: ::ULONG,
55 dwInfoVersion: ::ULONG,
56 pbNonce: ::PUCHAR,
57 cbNonce: ::ULONG,
58 pbAuthData: ::PUCHAR,
59 cbAuthData: ::ULONG,
60 pbTag: ::PUCHAR,
61 cbTag: ::ULONG,
62 pbMacContext: ::PUCHAR,
63 cbMacContext: ::ULONG,
64 cbAAD: ::ULONG,
65 cbData: ::ULONGLONG,
66 dwFlags: ::ULONG,
67}}
skdltmxn54268b62015-07-26 14:44:1868pub type PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO = *mut BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;
skdltmxn54268b62015-07-26 14:44:1869pub const BCRYPT_PROV_DISPATCH: ::ULONG = 0x00000001;
skdltmxn54268b62015-07-26 14:44:1870pub const BCRYPT_BLOCK_PADDING: ::ULONG = 0x00000001;
skdltmxn54268b62015-07-26 14:44:1871pub const BCRYPT_PAD_NONE: ::ULONG = 0x00000001;
72pub const BCRYPT_PAD_PKCS1: ::ULONG = 0x00000002;
73pub const BCRYPT_PAD_OAEP: ::ULONG = 0x00000004;
74pub const BCRYPT_PAD_PSS: ::ULONG = 0x00000008;
75pub const BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID: ::ULONG = 0x00000010;
skdltmxn54268b62015-07-26 14:44:1876pub const BCRYPTBUFFER_VERSION: ::ULONG = 0;
Peter Atashianc9a461a2015-10-24 22:29:5577STRUCT!{struct BCryptBuffer {
78 cbBuffer: ::ULONG,
79 BufferType: ::ULONG,
80 pvBuffer: ::PVOID,
81}}
skdltmxn54268b62015-07-26 14:44:1882pub type PBCryptBuffer = *mut BCryptBuffer;
Peter Atashianc9a461a2015-10-24 22:29:5583STRUCT!{struct BCryptBufferDesc {
84 ulVersion: ::ULONG,
85 cBuffers: ::ULONG,
86 pBuffers: PBCryptBuffer,
87}}
skdltmxn54268b62015-07-26 14:44:1888pub type PBCryptBufferDesc = *mut BCryptBufferDesc;
skdltmxn3ffa9c02015-07-17 09:48:3289//321
90pub type BCRYPT_HANDLE = ::PVOID;
91pub type BCRYPT_ALG_HANDLE = ::PVOID;
92pub type BCRYPT_KEY_HANDLE = ::PVOID;
93pub type BCRYPT_HASH_HANDLE = ::PVOID;
94pub type BCRYPT_SECRET_HANDLE = ::PVOID;
Peter Atashianc9a461a2015-10-24 22:29:5595STRUCT!{struct BCRYPT_KEY_BLOB {
96 Magic: ::ULONG,
97}}
skdltmxn54268b62015-07-26 14:44:1898pub const BCRYPT_RSAPUBLIC_MAGIC: ::ULONG = 0x31415352;
99pub const BCRYPT_RSAPRIVATE_MAGIC: ::ULONG = 0x32415352;
Peter Atashianc9a461a2015-10-24 22:29:55100STRUCT!{struct BCRYPT_RSAKEY_BLOB {
101 Magic: ::ULONG,
102 BitLength: ::ULONG,
103 cbPublicExp: ::ULONG,
104 cbModulus: ::ULONG,
105 cbPrime1: ::ULONG,
106 cbPrime2: ::ULONG,
107}}
skdltmxn54268b62015-07-26 14:44:18108pub const BCRYPT_RSAFULLPRIVATE_MAGIC: ::ULONG = 0x33415352;
skdltmxn54268b62015-07-26 14:44:18109pub const BCRYPT_ECDH_PUBLIC_P256_MAGIC: ::ULONG = 0x314B4345;
110pub const BCRYPT_ECDH_PRIVATE_P256_MAGIC: ::ULONG = 0x324B4345;
111pub const BCRYPT_ECDH_PUBLIC_P384_MAGIC: ::ULONG = 0x334B4345;
112pub const BCRYPT_ECDH_PRIVATE_P384_MAGIC: ::ULONG = 0x344B4345;
113pub const BCRYPT_ECDH_PUBLIC_P521_MAGIC: ::ULONG = 0x354B4345;
114pub const BCRYPT_ECDH_PRIVATE_P521_MAGIC: ::ULONG = 0x364B4345;
skdltmxn54268b62015-07-26 14:44:18115pub const BCRYPT_ECDSA_PUBLIC_P256_MAGIC: ::ULONG = 0x31534345;
116pub const BCRYPT_ECDSA_PRIVATE_P256_MAGIC: ::ULONG = 0x32534345;
117pub const BCRYPT_ECDSA_PUBLIC_P384_MAGIC: ::ULONG = 0x33534345;
118pub const BCRYPT_ECDSA_PRIVATE_P384_MAGIC: ::ULONG = 0x34534345;
119pub const BCRYPT_ECDSA_PUBLIC_P521_MAGIC: ::ULONG = 0x35534345;
120pub const BCRYPT_ECDSA_PRIVATE_P521_MAGIC: ::ULONG = 0x36534345;
Peter Atashianc9a461a2015-10-24 22:29:55121STRUCT!{struct BCRYPT_ECCKEY_BLOB {
122 dwMagic: ::ULONG,
123 cbKey: ::ULONG,
124}}
skdltmxn54268b62015-07-26 14:44:18125pub type PBCRYPT_ECCKEY_BLOB = *mut BCRYPT_ECCKEY_BLOB;
skdltmxn54268b62015-07-26 14:44:18126pub const BCRYPT_DH_PUBLIC_MAGIC: ::ULONG = 0x42504844;
127pub const BCRYPT_DH_PRIVATE_MAGIC: ::ULONG = 0x56504844;
Peter Atashianc9a461a2015-10-24 22:29:55128STRUCT!{struct BCRYPT_DH_KEY_BLOB {
129 dwMagic: ::ULONG,
130 cbKey: ::ULONG,
131}}
skdltmxn54268b62015-07-26 14:44:18132pub type PBCRYPT_DH_KEY_BLOB = *mut BCRYPT_DH_KEY_BLOB;
skdltmxn54268b62015-07-26 14:44:18133pub const BCRYPT_DH_PARAMETERS_MAGIC: ::ULONG = 0x4d504844;
Peter Atashianc9a461a2015-10-24 22:29:55134STRUCT!{struct BCRYPT_DH_PARAMETER_HEADER {
135 cbLength: ::ULONG,
136 dwMagic: ::ULONG,
137 cbKeyLength: ::ULONG,
138}}
skdltmxn54268b62015-07-26 14:44:18139pub const BCRYPT_DSA_PUBLIC_MAGIC: ::ULONG = 0x42505344;
140pub const BCRYPT_DSA_PRIVATE_MAGIC: ::ULONG = 0x56505344;
141pub const BCRYPT_DSA_PUBLIC_MAGIC_V2: ::ULONG = 0x32425044;
142pub const BCRYPT_DSA_PRIVATE_MAGIC_V2: ::ULONG = 0x32565044;
Peter Atashianc9a461a2015-10-24 22:29:55143STRUCT!{struct BCRYPT_DSA_KEY_BLOB {
144 dwMagic: ::ULONG,
145 cbKey: ::ULONG,
146 Count: [::UCHAR; 4],
147 Seed: [::UCHAR; 20],
148 q: [::UCHAR; 20],
149}}
skdltmxn54268b62015-07-26 14:44:18150pub type PBCRYPT_DSA_KEY_BLOB = *mut BCRYPT_DSA_KEY_BLOB;
Peter Atashianc9a461a2015-10-24 22:29:55151ENUM!{enum HASHALGORITHM_ENUM {
skdltmxn54268b62015-07-26 14:44:18152 DSA_HASH_ALGORITHM_SHA1,
153 DSA_HASH_ALGORITHM_SHA256,
154 DSA_HASH_ALGORITHM_SHA512,
Peter Atashianc9a461a2015-10-24 22:29:55155}}
156ENUM!{enum DSAFIPSVERSION_ENUM {
skdltmxn54268b62015-07-26 14:44:18157 DSA_FIPS186_2,
158 DSA_FIPS186_3,
Peter Atashianc9a461a2015-10-24 22:29:55159}}
160STRUCT!{struct BCRYPT_DSA_KEY_BLOB_V2 {
161 dwMagic: ::ULONG,
162 cbKey: ::ULONG,
163 hashAlgorithm: HASHALGORITHM_ENUM,
164 standardVersion: DSAFIPSVERSION_ENUM,
165 cbSeedLength: ::ULONG,
166 cbGroupSize: ::ULONG,
167 Count: [::UCHAR; 4],
168}}
skdltmxn54268b62015-07-26 14:44:18169pub type PBCRYPT_DSA_KEY_BLOB_V2 = *mut BCRYPT_DSA_KEY_BLOB_V2;
Peter Atashianc9a461a2015-10-24 22:29:55170STRUCT!{struct BCRYPT_KEY_DATA_BLOB_HEADER {
171 dwMagic: ::ULONG,
172 dwVersion: ::ULONG,
173 cbKeyData: ::ULONG,
174}}
skdltmxn54268b62015-07-26 14:44:18175pub type PBCRYPT_KEY_DATA_BLOB_HEADER = *mut BCRYPT_KEY_DATA_BLOB_HEADER;
skdltmxn54268b62015-07-26 14:44:18176pub const BCRYPT_KEY_DATA_BLOB_MAGIC: ::ULONG = 0x4d42444b;
skdltmxn54268b62015-07-26 14:44:18177pub const BCRYPT_KEY_DATA_BLOB_VERSION1: ::ULONG = 0x1;
skdltmxn54268b62015-07-26 14:44:18178pub const BCRYPT_DSA_PARAMETERS_MAGIC: ::ULONG = 0x4d505344;
179pub const BCRYPT_DSA_PARAMETERS_MAGIC_V2: ::ULONG = 0x324d5044;
Peter Atashianc9a461a2015-10-24 22:29:55180STRUCT!{struct BCRYPT_DSA_PARAMETER_HEADER {
181 cbLength: ::ULONG,
182 dwMagic: ::ULONG,
183 cbKeyLength: ::ULONG,
184 Count: [::UCHAR; 4],
185 Seed: [::UCHAR; 20],
186 q: [::UCHAR; 20],
187}}
188STRUCT!{struct BCRYPT_DSA_PARAMETER_HEADER_V2 {
189 cbLength: ::ULONG,
190 dwMagic: ::ULONG,
191 cbKeyLength: ::ULONG,
192 hashAlgorithm: HASHALGORITHM_ENUM,
193 standardVersion: DSAFIPSVERSION_ENUM,
194 cbSeedLength: ::ULONG,
195 cbGroupSize: ::ULONG,
196 Count: [::UCHAR; 4],
197}}
198ENUM!{enum BCRYPT_HASH_OPERATION_TYPE {
skdltmxn54268b62015-07-26 14:44:18199 BCRYPT_HASH_OPERATION_HASH_DATA = 1,
200 BCRYPT_HASH_OPERATION_FINISH_HASH = 2,
Peter Atashianc9a461a2015-10-24 22:29:55201}}
202STRUCT!{struct BCRYPT_MULTI_HASH_OPERATION {
203 iHash: ::ULONG,
204 hashOperation: BCRYPT_HASH_OPERATION_TYPE,
205 pbBuffer: ::PUCHAR,
206 cbBuffer: ::ULONG,
207}}
208ENUM!{enum BCRYPT_MULTI_OPERATION_TYPE {
skdltmxn54268b62015-07-26 14:44:18209 BCRYPT_OPERATION_TYPE_HASH = 1,
Peter Atashianc9a461a2015-10-24 22:29:55210}}
211STRUCT!{struct BCRYPT_MULTI_OBJECT_LENGTH_STRUCT {
212 cbPerObject: ::ULONG,
213 cbPerElement: ::ULONG,
214}}
skdltmxn54268b62015-07-26 14:44:18215pub const BCRYPT_CIPHER_INTERFACE: ::ULONG = 0x00000001;
216pub const BCRYPT_HASH_INTERFACE: ::ULONG = 0x00000002;
217pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE: ::ULONG = 0x00000003;
218pub const BCRYPT_SECRET_AGREEMENT_INTERFACE: ::ULONG = 0x00000004;
219pub const BCRYPT_SIGNATURE_INTERFACE: ::ULONG = 0x00000005;
220pub const BCRYPT_RNG_INTERFACE: ::ULONG = 0x00000006;
221pub const BCRYPT_KEY_DERIVATION_INTERFACE: ::ULONG = 0x00000007;
skdltmxn54268b62015-07-26 14:44:18222pub const BCRYPT_ALG_HANDLE_HMAC_FLAG: ::ULONG = 0x00000008;
223pub const BCRYPT_CAPI_AES_FLAG: ::ULONG = 0x00000010;
224pub const BCRYPT_HASH_REUSABLE_FLAG: ::ULONG = 0x00000020;
225pub const BCRYPT_BUFFERS_LOCKED_FLAG: ::ULONG = 0x00000040;
226pub const BCRYPT_EXTENDED_KEYSIZE: ::ULONG = 0x00000080;
skdltmxn54268b62015-07-26 14:44:18227pub const BCRYPT_CIPHER_OPERATION: ::ULONG = 0x00000001;
228pub const BCRYPT_HASH_OPERATION: ::ULONG = 0x00000002;
229pub const BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION: ::ULONG = 0x00000004;
230pub const BCRYPT_SECRET_AGREEMENT_OPERATION: ::ULONG = 0x00000008;
231pub const BCRYPT_SIGNATURE_OPERATION: ::ULONG = 0x00000010;
232pub const BCRYPT_RNG_OPERATION: ::ULONG = 0x00000020;
233pub const BCRYPT_KEY_DERIVATION_OPERATION: ::ULONG = 0x00000040;
Peter Atashianc9a461a2015-10-24 22:29:55234STRUCT!{struct BCRYPT_ALGORITHM_IDENTIFIER {
235 pszName: ::LPWSTR,
236 dwClass: ::ULONG,
237 dwFlags: ::ULONG,
238}}
239STRUCT!{struct BCRYPT_PROVIDER_NAME {
240 pszProviderName: ::LPWSTR,
241}}
skdltmxn54268b62015-07-26 14:44:18242pub const BCRYPT_PUBLIC_KEY_FLAG: ::ULONG = 0x00000001;
243pub const BCRYPT_PRIVATE_KEY_FLAG: ::ULONG = 0x00000002;
skdltmxn54268b62015-07-26 14:44:18244pub const BCRYPT_RNG_USE_ENTROPY_IN_BUFFER: ::ULONG = 0x00000001;
245pub const BCRYPT_USE_SYSTEM_PREFERRED_RNG: ::ULONG = 0x00000002;
Peter Atashianc9a461a2015-10-24 22:29:55246STRUCT!{struct BCRYPT_INTERFACE_VERSION {
247 MajorVersion: ::USHORT,
248 MinorVersion: ::USHORT,
249}}
skdltmxn54268b62015-07-26 14:44:18250pub type PBCRYPT_INTERFACE_VERSION = *mut BCRYPT_INTERFACE_VERSION;
Peter Atashiand8e88202015-10-06 19:40:30251pub const BCRYPT_CIPHER_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
Peter Atashianc9a461a2015-10-24 22:29:55252 BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
Peter Atashiand8e88202015-10-06 19:40:30253pub const BCRYPT_HASH_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
Peter Atashianc9a461a2015-10-24 22:29:55254 BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
skdltmxn54268b62015-07-26 14:44:18255pub const BCRYPT_HASH_INTERFACE_MAJORVERSION_2: ::USHORT = 2;
Peter Atashiand8e88202015-10-06 19:40:30256pub const BCRYPT_HASH_INTERFACE_VERSION_2: BCRYPT_INTERFACE_VERSION =
Peter Atashianc9a461a2015-10-24 22:29:55257 BCRYPT_MAKE_INTERFACE_VERSION!(BCRYPT_HASH_INTERFACE_MAJORVERSION_2, 0);
Peter Atashiand8e88202015-10-06 19:40:30258pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
Peter Atashianc9a461a2015-10-24 22:29:55259 BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
Peter Atashiand8e88202015-10-06 19:40:30260pub const BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
Peter Atashianc9a461a2015-10-24 22:29:55261 BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
Peter Atashiand8e88202015-10-06 19:40:30262pub const BCRYPT_SIGNATURE_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
Peter Atashianc9a461a2015-10-24 22:29:55263 BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
Peter Atashiand8e88202015-10-06 19:40:30264pub const BCRYPT_RNG_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
Peter Atashianc9a461a2015-10-24 22:29:55265 BCRYPT_MAKE_INTERFACE_VERSION!(1, 0);
skdltmxn54268b62015-07-26 14:44:18266pub const CRYPT_MIN_DEPENDENCIES: ::ULONG = 0x00000001;
267pub const CRYPT_PROCESS_ISOLATE: ::ULONG = 0x00010000;
268pub const CRYPT_UM: ::ULONG = 0x00000001;
269pub const CRYPT_KM: ::ULONG = 0x00000002;
270pub const CRYPT_MM: ::ULONG = 0x00000003;
271pub const CRYPT_ANY: ::ULONG = 0x00000004;
272pub const CRYPT_OVERWRITE: ::ULONG = 0x00000001;
273pub const CRYPT_LOCAL: ::ULONG = 0x00000001;
274pub const CRYPT_DOMAIN: ::ULONG = 0x00000002;
275pub const CRYPT_EXCLUSIVE: ::ULONG = 0x00000001;
276pub const CRYPT_OVERRIDE: ::ULONG = 0x00010000;
277pub const CRYPT_ALL_FUNCTIONS: ::ULONG = 0x00000001;
278pub const CRYPT_ALL_PROVIDERS: ::ULONG = 0x00000002;
279pub const CRYPT_PRIORITY_TOP: ::ULONG = 0x00000000;
280pub const CRYPT_PRIORITY_BOTTOM: ::ULONG = 0xFFFFFFFF;
Peter Atashianc9a461a2015-10-24 22:29:55281STRUCT!{struct CRYPT_INTERFACE_REG {
282 dwInterface: ::ULONG,
283 dwFlags: ::ULONG,
284 cFunctions: ::ULONG,
285 rgpszFunctions: *mut ::PWSTR,
286}}
skdltmxn54268b62015-07-26 14:44:18287pub type PCRYPT_INTERFACE_REG = *mut CRYPT_INTERFACE_REG;
Peter Atashianc9a461a2015-10-24 22:29:55288STRUCT!{struct CRYPT_IMAGE_REG {
289 pszImage: ::PWSTR,
290 cInterfaces: ::ULONG,
291 rgpInterfaces: *mut PCRYPT_INTERFACE_REG,
292}}
skdltmxn54268b62015-07-26 14:44:18293pub type PCRYPT_IMAGE_REG = *mut CRYPT_IMAGE_REG;
Peter Atashianc9a461a2015-10-24 22:29:55294STRUCT!{struct CRYPT_PROVIDER_REG {
295 cAliases: ::ULONG,
296 rgpszAliases: *mut ::PWSTR,
297 pUM: PCRYPT_IMAGE_REG,
298 pKM: PCRYPT_IMAGE_REG,
299}}
skdltmxn54268b62015-07-26 14:44:18300pub type PCRYPT_PROVIDER_REG = *mut CRYPT_PROVIDER_REG;
Peter Atashianc9a461a2015-10-24 22:29:55301STRUCT!{struct CRYPT_PROVIDERS {
302 cProviders: ::ULONG,
303 rgpszProviders: *mut ::PWSTR,
304}}
skdltmxn54268b62015-07-26 14:44:18305pub type PCRYPT_PROVIDERS = *mut CRYPT_PROVIDERS;
Peter Atashianc9a461a2015-10-24 22:29:55306STRUCT!{struct CRYPT_CONTEXT_CONFIG {
307 dwFlags: ::ULONG,
308 dwReserved: ::ULONG,
309}}
skdltmxn54268b62015-07-26 14:44:18310pub type PCRYPT_CONTEXT_CONFIG = *mut CRYPT_CONTEXT_CONFIG;
Peter Atashianc9a461a2015-10-24 22:29:55311STRUCT!{struct CRYPT_CONTEXT_FUNCTION_CONFIG {
312 dwFlags: ::ULONG,
313 dwReserved: ::ULONG,
314}}
skdltmxn54268b62015-07-26 14:44:18315pub type PCRYPT_CONTEXT_FUNCTION_CONFIG = *mut CRYPT_CONTEXT_FUNCTION_CONFIG;
Peter Atashianc9a461a2015-10-24 22:29:55316STRUCT!{struct CRYPT_CONTEXTS {
317 cContexts: ::ULONG,
318 rgpszContexts: *mut ::PWSTR,
319}}
skdltmxn54268b62015-07-26 14:44:18320pub type PCRYPT_CONTEXTS = *mut CRYPT_CONTEXTS;
Peter Atashianc9a461a2015-10-24 22:29:55321STRUCT!{struct CRYPT_CONTEXT_FUNCTIONS {
322 cFunctions: ::ULONG,
323 rgpszFunctions: *mut ::PWSTR,
324}}
skdltmxn54268b62015-07-26 14:44:18325pub type PCRYPT_CONTEXT_FUNCTIONS = *mut CRYPT_CONTEXT_FUNCTIONS;
Peter Atashianc9a461a2015-10-24 22:29:55326STRUCT!{struct CRYPT_CONTEXT_FUNCTION_PROVIDERS {
327 cProviders: ::ULONG,
328 rgpszProviders: *mut ::PWSTR,
329}}
skdltmxn54268b62015-07-26 14:44:18330pub type PCRYPT_CONTEXT_FUNCTION_PROVIDERS = *mut CRYPT_CONTEXT_FUNCTION_PROVIDERS;
Peter Atashianc9a461a2015-10-24 22:29:55331STRUCT!{struct CRYPT_PROPERTY_REF {
332 pszProperty: ::PWSTR,
333 cbValue: ::ULONG,
334 pbValue: ::PUCHAR,
335}}
skdltmxn54268b62015-07-26 14:44:18336pub type PCRYPT_PROPERTY_REF = *mut CRYPT_PROPERTY_REF;
Peter Atashianc9a461a2015-10-24 22:29:55337STRUCT!{struct CRYPT_IMAGE_REF {
338 pszImage: ::PWSTR,
339 dwFlags: ::ULONG,
340}}
skdltmxn54268b62015-07-26 14:44:18341pub type PCRYPT_IMAGE_REF = *mut CRYPT_IMAGE_REF;
Peter Atashianc9a461a2015-10-24 22:29:55342STRUCT!{struct CRYPT_PROVIDER_REF {
343 dwInterface: ::ULONG,
344 pszFunction: ::PWSTR,
345 pszProvider: ::PWSTR,
346 cProperties: ::ULONG,
347 rgpProperties: *mut PCRYPT_PROPERTY_REF,
348 pUM: PCRYPT_IMAGE_REF,
349 pKM: PCRYPT_IMAGE_REF,
350}}
skdltmxn54268b62015-07-26 14:44:18351pub type PCRYPT_PROVIDER_REF = *mut CRYPT_PROVIDER_REF;
Peter Atashianc9a461a2015-10-24 22:29:55352STRUCT!{struct CRYPT_PROVIDER_REFS {
353 cProviders: ::ULONG,
354 rgpProviders: *mut PCRYPT_PROVIDER_REF,
355}}
skdltmxn54268b62015-07-26 14:44:18356pub type PCRYPT_PROVIDER_REFS = *mut CRYPT_PROVIDER_REFS;