blob: 3058b7675c9793f1bf0c4073d26908763947da45 [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;
skdltmxn54268b62015-07-26 14:44:1824#[repr(C)] #[derive(Clone, Copy, Debug)]
25pub struct BCRYPT_KEY_LENGTHS_STRUCT {
26 pub dwMinLength: ::ULONG,
27 pub dwMaxLength: ::ULONG,
28 pub dwIncrement: ::ULONG,
29}
30pub type BCRYPT_AUTH_TAG_LENGTHS_STRUCT = BCRYPT_KEY_LENGTHS_STRUCT;
skdltmxn54268b62015-07-26 14:44:1831#[repr(C)] #[derive(Clone, Copy, Debug)]
32pub struct BCRYPT_OID {
33 pub cbOID: ::ULONG,
34 pub pbOID: ::PUCHAR,
35}
skdltmxn54268b62015-07-26 14:44:1836#[repr(C)] #[derive(Clone, Copy, Debug)]
37pub struct BCRYPT_OID_LIST {
38 pub dwOIDCount: ::ULONG,
39 pub pOIDs: *mut BCRYPT_OID,
40}
skdltmxn54268b62015-07-26 14:44:1841#[repr(C)] #[derive(Clone, Copy, Debug)]
42pub struct BCRYPT_PKCS1_PADDING_INFO {
43 pub pszAlgId: ::LPCWSTR,
44}
skdltmxn54268b62015-07-26 14:44:1845#[repr(C)] #[derive(Clone, Copy, Debug)]
46pub struct BCRYPT_PSS_PADDING_INFO {
47 pub pszAlgId: ::LPCWSTR,
48 pub cbSalt: ::ULONG,
49}
skdltmxn54268b62015-07-26 14:44:1850#[repr(C)] #[derive(Clone, Copy, Debug)]
51pub struct BCRYPT_OAEP_PADDING_INFO {
52 pub pszAlgId: ::LPCWSTR,
53 pub pbLabel: ::PUCHAR,
54 pub cbLabel: ::ULONG,
55}
skdltmxn54268b62015-07-26 14:44:1856pub const BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION: ::ULONG = 1;
skdltmxn54268b62015-07-26 14:44:1857pub const BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG: ::ULONG = 0x00000001;
58pub const BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG: ::ULONG = 0x00000002;
skdltmxn54268b62015-07-26 14:44:1859#[repr(C)] #[derive(Clone, Copy, Debug)]
60pub struct BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
61 pub cbSize: ::ULONG,
62 pub dwInfoVersion: ::ULONG,
63 pub pbNonce: ::PUCHAR,
64 pub cbNonce: ::ULONG,
65 pub pbAuthData: ::PUCHAR,
66 pub cbAuthData: ::ULONG,
67 pub pbTag: ::PUCHAR,
68 pub cbTag: ::ULONG,
69 pub pbMacContext: ::PUCHAR,
70 pub cbMacContext: ::ULONG,
71 pub cbAAD: ::ULONG,
72 pub cbData: ::ULONGLONG,
73 pub dwFlags: ::ULONG,
74}
75pub type PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO = *mut BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;
skdltmxn54268b62015-07-26 14:44:1876pub const BCRYPT_PROV_DISPATCH: ::ULONG = 0x00000001;
skdltmxn54268b62015-07-26 14:44:1877pub const BCRYPT_BLOCK_PADDING: ::ULONG = 0x00000001;
skdltmxn54268b62015-07-26 14:44:1878pub const BCRYPT_PAD_NONE: ::ULONG = 0x00000001;
79pub const BCRYPT_PAD_PKCS1: ::ULONG = 0x00000002;
80pub const BCRYPT_PAD_OAEP: ::ULONG = 0x00000004;
81pub const BCRYPT_PAD_PSS: ::ULONG = 0x00000008;
82pub const BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID: ::ULONG = 0x00000010;
skdltmxn54268b62015-07-26 14:44:1883pub const BCRYPTBUFFER_VERSION: ::ULONG = 0;
skdltmxn54268b62015-07-26 14:44:1884#[repr(C)] #[derive(Clone, Copy, Debug)]
85pub struct BCryptBuffer {
86 pub cbBuffer: ::ULONG,
87 pub BufferType: ::ULONG,
88 pub pvBuffer: ::PVOID,
89}
90pub type PBCryptBuffer = *mut BCryptBuffer;
skdltmxn54268b62015-07-26 14:44:1891#[repr(C)] #[derive(Clone, Copy, Debug)]
92pub struct BCryptBufferDesc {
93 pub ulVersion: ::ULONG,
94 pub cBuffers: ::ULONG,
95 pub pBuffers: PBCryptBuffer,
96}
97pub type PBCryptBufferDesc = *mut BCryptBufferDesc;
skdltmxn3ffa9c02015-07-17 09:48:3298//321
99pub type BCRYPT_HANDLE = ::PVOID;
100pub type BCRYPT_ALG_HANDLE = ::PVOID;
101pub type BCRYPT_KEY_HANDLE = ::PVOID;
102pub type BCRYPT_HASH_HANDLE = ::PVOID;
103pub type BCRYPT_SECRET_HANDLE = ::PVOID;
skdltmxn54268b62015-07-26 14:44:18104#[repr(C)] #[derive(Clone, Copy, Debug)]
105pub struct BCRYPT_KEY_BLOB {
106 pub Magic: ::ULONG,
107}
skdltmxn54268b62015-07-26 14:44:18108pub const BCRYPT_RSAPUBLIC_MAGIC: ::ULONG = 0x31415352;
109pub const BCRYPT_RSAPRIVATE_MAGIC: ::ULONG = 0x32415352;
skdltmxn54268b62015-07-26 14:44:18110#[repr(C)] #[derive(Clone, Copy, Debug)]
111pub struct BCRYPT_RSAKEY_BLOB {
112 pub Magic: ::ULONG,
113 pub BitLength: ::ULONG,
114 pub cbPublicExp: ::ULONG,
115 pub cbModulus: ::ULONG,
116 pub cbPrime1: ::ULONG,
117 pub cbPrime2: ::ULONG,
118}
skdltmxn54268b62015-07-26 14:44:18119pub const BCRYPT_RSAFULLPRIVATE_MAGIC: ::ULONG = 0x33415352;
skdltmxn54268b62015-07-26 14:44:18120pub const BCRYPT_ECDH_PUBLIC_P256_MAGIC: ::ULONG = 0x314B4345;
121pub const BCRYPT_ECDH_PRIVATE_P256_MAGIC: ::ULONG = 0x324B4345;
122pub const BCRYPT_ECDH_PUBLIC_P384_MAGIC: ::ULONG = 0x334B4345;
123pub const BCRYPT_ECDH_PRIVATE_P384_MAGIC: ::ULONG = 0x344B4345;
124pub const BCRYPT_ECDH_PUBLIC_P521_MAGIC: ::ULONG = 0x354B4345;
125pub const BCRYPT_ECDH_PRIVATE_P521_MAGIC: ::ULONG = 0x364B4345;
skdltmxn54268b62015-07-26 14:44:18126pub const BCRYPT_ECDSA_PUBLIC_P256_MAGIC: ::ULONG = 0x31534345;
127pub const BCRYPT_ECDSA_PRIVATE_P256_MAGIC: ::ULONG = 0x32534345;
128pub const BCRYPT_ECDSA_PUBLIC_P384_MAGIC: ::ULONG = 0x33534345;
129pub const BCRYPT_ECDSA_PRIVATE_P384_MAGIC: ::ULONG = 0x34534345;
130pub const BCRYPT_ECDSA_PUBLIC_P521_MAGIC: ::ULONG = 0x35534345;
131pub const BCRYPT_ECDSA_PRIVATE_P521_MAGIC: ::ULONG = 0x36534345;
skdltmxn54268b62015-07-26 14:44:18132#[repr(C)] #[derive(Clone, Copy, Debug)]
133pub struct BCRYPT_ECCKEY_BLOB {
134 pub dwMagic: ::ULONG,
135 pub cbKey: ::ULONG,
136}
137pub type PBCRYPT_ECCKEY_BLOB = *mut BCRYPT_ECCKEY_BLOB;
skdltmxn54268b62015-07-26 14:44:18138pub const BCRYPT_DH_PUBLIC_MAGIC: ::ULONG = 0x42504844;
139pub const BCRYPT_DH_PRIVATE_MAGIC: ::ULONG = 0x56504844;
skdltmxn54268b62015-07-26 14:44:18140#[repr(C)] #[derive(Clone, Copy, Debug)]
141pub struct BCRYPT_DH_KEY_BLOB {
142 pub dwMagic: ::ULONG,
143 pub cbKey: ::ULONG,
144}
145pub type PBCRYPT_DH_KEY_BLOB = *mut BCRYPT_DH_KEY_BLOB;
skdltmxn54268b62015-07-26 14:44:18146pub const BCRYPT_DH_PARAMETERS_MAGIC: ::ULONG = 0x4d504844;
skdltmxn54268b62015-07-26 14:44:18147#[repr(C)] #[derive(Clone, Copy, Debug)]
148pub struct BCRYPT_DH_PARAMETER_HEADER {
149 pub cbLength: ::ULONG,
150 pub dwMagic: ::ULONG,
151 pub cbKeyLength: ::ULONG,
152}
skdltmxn54268b62015-07-26 14:44:18153pub const BCRYPT_DSA_PUBLIC_MAGIC: ::ULONG = 0x42505344;
154pub const BCRYPT_DSA_PRIVATE_MAGIC: ::ULONG = 0x56505344;
155pub const BCRYPT_DSA_PUBLIC_MAGIC_V2: ::ULONG = 0x32425044;
156pub const BCRYPT_DSA_PRIVATE_MAGIC_V2: ::ULONG = 0x32565044;
skdltmxn54268b62015-07-26 14:44:18157#[repr(C)] #[derive(Clone, Copy, Debug)]
158pub struct BCRYPT_DSA_KEY_BLOB {
159 pub dwMagic: ::ULONG,
160 pub cbKey: ::ULONG,
161 pub Count: [::UCHAR; 4],
162 pub Seed: [::UCHAR; 20],
163 pub q: [::UCHAR; 20],
164}
165pub type PBCRYPT_DSA_KEY_BLOB = *mut BCRYPT_DSA_KEY_BLOB;
skdltmxn54268b62015-07-26 14:44:18166#[repr(i32)] #[derive(Clone, Copy, Debug)]
167pub enum HASHALGORITHM_ENUM {
168 DSA_HASH_ALGORITHM_SHA1,
169 DSA_HASH_ALGORITHM_SHA256,
170 DSA_HASH_ALGORITHM_SHA512,
171}
skdltmxn54268b62015-07-26 14:44:18172#[repr(i32)] #[derive(Clone, Copy, Debug)]
173pub enum DSAFIPSVERSION_ENUM {
174 DSA_FIPS186_2,
175 DSA_FIPS186_3,
176}
skdltmxn54268b62015-07-26 14:44:18177#[repr(C)] #[derive(Clone, Copy, Debug)]
178pub struct BCRYPT_DSA_KEY_BLOB_V2 {
179 pub dwMagic: ::ULONG,
180 pub cbKey: ::ULONG,
181 pub hashAlgorithm: HASHALGORITHM_ENUM,
182 pub standardVersion: DSAFIPSVERSION_ENUM,
183 pub cbSeedLength: ::ULONG,
184 pub cbGroupSize: ::ULONG,
185 pub Count: [::UCHAR; 4],
186}
187pub type PBCRYPT_DSA_KEY_BLOB_V2 = *mut BCRYPT_DSA_KEY_BLOB_V2;
skdltmxn54268b62015-07-26 14:44:18188#[repr(C)] #[derive(Clone, Copy, Debug)]
189pub struct BCRYPT_KEY_DATA_BLOB_HEADER {
190 pub dwMagic: ::ULONG,
191 pub dwVersion: ::ULONG,
192 pub cbKeyData: ::ULONG,
193}
194pub type PBCRYPT_KEY_DATA_BLOB_HEADER = *mut BCRYPT_KEY_DATA_BLOB_HEADER;
skdltmxn54268b62015-07-26 14:44:18195pub const BCRYPT_KEY_DATA_BLOB_MAGIC: ::ULONG = 0x4d42444b;
skdltmxn54268b62015-07-26 14:44:18196pub const BCRYPT_KEY_DATA_BLOB_VERSION1: ::ULONG = 0x1;
skdltmxn54268b62015-07-26 14:44:18197pub const BCRYPT_DSA_PARAMETERS_MAGIC: ::ULONG = 0x4d505344;
198pub const BCRYPT_DSA_PARAMETERS_MAGIC_V2: ::ULONG = 0x324d5044;
skdltmxn54268b62015-07-26 14:44:18199#[repr(C)] #[derive(Clone, Copy, Debug)]
200pub struct BCRYPT_DSA_PARAMETER_HEADER {
201 pub cbLength: ::ULONG,
202 pub dwMagic: ::ULONG,
203 pub cbKeyLength: ::ULONG,
204 pub Count: [::UCHAR; 4],
205 pub Seed: [::UCHAR; 20],
206 pub q: [::UCHAR; 20],
207}
skdltmxn54268b62015-07-26 14:44:18208#[repr(C)] #[derive(Clone, Copy, Debug)]
209pub struct BCRYPT_DSA_PARAMETER_HEADER_V2 {
210 pub cbLength: ::ULONG,
211 pub dwMagic: ::ULONG,
212 pub cbKeyLength: ::ULONG,
213 pub hashAlgorithm: HASHALGORITHM_ENUM,
214 pub standardVersion: DSAFIPSVERSION_ENUM,
215 pub cbSeedLength: ::ULONG,
216 pub cbGroupSize: ::ULONG,
217 pub Count: [::UCHAR; 4],
218}
skdltmxn54268b62015-07-26 14:44:18219#[repr(i32)] #[derive(Clone, Copy, Debug)]
220pub enum BCRYPT_HASH_OPERATION_TYPE {
221 BCRYPT_HASH_OPERATION_HASH_DATA = 1,
222 BCRYPT_HASH_OPERATION_FINISH_HASH = 2,
223}
skdltmxn54268b62015-07-26 14:44:18224#[repr(C)] #[derive(Clone, Copy, Debug)]
225pub struct BCRYPT_MULTI_HASH_OPERATION {
226 pub iHash: ::ULONG,
227 pub hashOperation: BCRYPT_HASH_OPERATION_TYPE,
228 pub pbBuffer: ::PUCHAR,
229 pub cbBuffer: ::ULONG,
230}
skdltmxn54268b62015-07-26 14:44:18231#[repr(i32)] #[derive(Clone, Copy, Debug)]
232pub enum BCRYPT_MULTI_OPERATION_TYPE {
233 BCRYPT_OPERATION_TYPE_HASH = 1,
234 DUMMY, // FIXME: due to `rustc --explain E0083`
235}
skdltmxn54268b62015-07-26 14:44:18236#[repr(C)] #[derive(Clone, Copy, Debug)]
237pub struct BCRYPT_MULTI_OBJECT_LENGTH_STRUCT {
238 pub cbPerObject: ::ULONG,
239 pub cbPerElement: ::ULONG,
240}
skdltmxn54268b62015-07-26 14:44:18241pub const BCRYPT_CIPHER_INTERFACE: ::ULONG = 0x00000001;
242pub const BCRYPT_HASH_INTERFACE: ::ULONG = 0x00000002;
243pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE: ::ULONG = 0x00000003;
244pub const BCRYPT_SECRET_AGREEMENT_INTERFACE: ::ULONG = 0x00000004;
245pub const BCRYPT_SIGNATURE_INTERFACE: ::ULONG = 0x00000005;
246pub const BCRYPT_RNG_INTERFACE: ::ULONG = 0x00000006;
247pub const BCRYPT_KEY_DERIVATION_INTERFACE: ::ULONG = 0x00000007;
skdltmxn54268b62015-07-26 14:44:18248pub const BCRYPT_ALG_HANDLE_HMAC_FLAG: ::ULONG = 0x00000008;
249pub const BCRYPT_CAPI_AES_FLAG: ::ULONG = 0x00000010;
250pub const BCRYPT_HASH_REUSABLE_FLAG: ::ULONG = 0x00000020;
251pub const BCRYPT_BUFFERS_LOCKED_FLAG: ::ULONG = 0x00000040;
252pub const BCRYPT_EXTENDED_KEYSIZE: ::ULONG = 0x00000080;
skdltmxn54268b62015-07-26 14:44:18253pub const BCRYPT_CIPHER_OPERATION: ::ULONG = 0x00000001;
254pub const BCRYPT_HASH_OPERATION: ::ULONG = 0x00000002;
255pub const BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION: ::ULONG = 0x00000004;
256pub const BCRYPT_SECRET_AGREEMENT_OPERATION: ::ULONG = 0x00000008;
257pub const BCRYPT_SIGNATURE_OPERATION: ::ULONG = 0x00000010;
258pub const BCRYPT_RNG_OPERATION: ::ULONG = 0x00000020;
259pub const BCRYPT_KEY_DERIVATION_OPERATION: ::ULONG = 0x00000040;
skdltmxn54268b62015-07-26 14:44:18260#[repr(C)] #[derive(Clone, Copy, Debug)]
261pub struct BCRYPT_ALGORITHM_IDENTIFIER {
262 pub pszName: ::LPWSTR,
263 pub dwClass: ::ULONG,
264 pub dwFlags: ::ULONG,
265}
skdltmxn54268b62015-07-26 14:44:18266#[repr(C)] #[derive(Clone, Copy, Debug)]
267pub struct BCRYPT_PROVIDER_NAME {
268 pub pszProviderName: ::LPWSTR,
269}
skdltmxn54268b62015-07-26 14:44:18270pub const BCRYPT_PUBLIC_KEY_FLAG: ::ULONG = 0x00000001;
271pub const BCRYPT_PRIVATE_KEY_FLAG: ::ULONG = 0x00000002;
skdltmxn54268b62015-07-26 14:44:18272pub const BCRYPT_RNG_USE_ENTROPY_IN_BUFFER: ::ULONG = 0x00000001;
273pub const BCRYPT_USE_SYSTEM_PREFERRED_RNG: ::ULONG = 0x00000002;
skdltmxn54268b62015-07-26 14:44:18274#[repr(C)] #[derive(Clone, Copy, Debug)]
275pub struct BCRYPT_INTERFACE_VERSION {
276 pub MajorVersion: ::USHORT,
277 pub MinorVersion: ::USHORT,
278}
279pub type PBCRYPT_INTERFACE_VERSION = *mut BCRYPT_INTERFACE_VERSION;
skdltmxn54268b62015-07-26 14:44:18280#[inline] #[allow(dead_code)]
281pub fn BCRYPT_MAKE_INTERFACE_VERSION(major: ::USHORT, minor: ::USHORT) -> BCRYPT_INTERFACE_VERSION {
282 BCRYPT_INTERFACE_VERSION{ MajorVersion: major, MinorVersion: minor }
283}
Peter Atashiand8e88202015-10-06 19:40:30284pub const BCRYPT_CIPHER_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
skdltmxn54268b62015-07-26 14:44:18285 BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 };
Peter Atashiand8e88202015-10-06 19:40:30286pub const BCRYPT_HASH_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
skdltmxn54268b62015-07-26 14:44:18287 BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 };
288pub const BCRYPT_HASH_INTERFACE_MAJORVERSION_2: ::USHORT = 2;
Peter Atashiand8e88202015-10-06 19:40:30289pub const BCRYPT_HASH_INTERFACE_VERSION_2: BCRYPT_INTERFACE_VERSION =
skdltmxn54268b62015-07-26 14:44:18290 BCRYPT_INTERFACE_VERSION{ MajorVersion: BCRYPT_HASH_INTERFACE_MAJORVERSION_2, MinorVersion: 0 };
Peter Atashiand8e88202015-10-06 19:40:30291pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
skdltmxn54268b62015-07-26 14:44:18292 BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 };
Peter Atashiand8e88202015-10-06 19:40:30293pub const BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
skdltmxn54268b62015-07-26 14:44:18294 BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 };
Peter Atashiand8e88202015-10-06 19:40:30295pub const BCRYPT_SIGNATURE_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
skdltmxn54268b62015-07-26 14:44:18296 BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 };
Peter Atashiand8e88202015-10-06 19:40:30297pub const BCRYPT_RNG_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION =
skdltmxn54268b62015-07-26 14:44:18298 BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 };
skdltmxn54268b62015-07-26 14:44:18299pub const CRYPT_MIN_DEPENDENCIES: ::ULONG = 0x00000001;
300pub const CRYPT_PROCESS_ISOLATE: ::ULONG = 0x00010000;
301pub const CRYPT_UM: ::ULONG = 0x00000001;
302pub const CRYPT_KM: ::ULONG = 0x00000002;
303pub const CRYPT_MM: ::ULONG = 0x00000003;
304pub const CRYPT_ANY: ::ULONG = 0x00000004;
305pub const CRYPT_OVERWRITE: ::ULONG = 0x00000001;
306pub const CRYPT_LOCAL: ::ULONG = 0x00000001;
307pub const CRYPT_DOMAIN: ::ULONG = 0x00000002;
308pub const CRYPT_EXCLUSIVE: ::ULONG = 0x00000001;
309pub const CRYPT_OVERRIDE: ::ULONG = 0x00010000;
310pub const CRYPT_ALL_FUNCTIONS: ::ULONG = 0x00000001;
311pub const CRYPT_ALL_PROVIDERS: ::ULONG = 0x00000002;
312pub const CRYPT_PRIORITY_TOP: ::ULONG = 0x00000000;
313pub const CRYPT_PRIORITY_BOTTOM: ::ULONG = 0xFFFFFFFF;
skdltmxn54268b62015-07-26 14:44:18314#[repr(C)] #[derive(Clone, Copy, Debug)]
315pub struct CRYPT_INTERFACE_REG {
316 pub dwInterface: ::ULONG,
317 pub dwFlags: ::ULONG,
318 pub cFunctions: ::ULONG,
319 pub rgpszFunctions: *mut ::PWSTR,
320}
321pub type PCRYPT_INTERFACE_REG = *mut CRYPT_INTERFACE_REG;
skdltmxn54268b62015-07-26 14:44:18322#[repr(C)] #[derive(Clone, Copy, Debug)]
323pub struct CRYPT_IMAGE_REG {
324 pub pszImage: ::PWSTR,
325 pub cInterfaces: ::ULONG,
326 pub rgpInterfaces: *mut PCRYPT_INTERFACE_REG,
327}
328pub type PCRYPT_IMAGE_REG = *mut CRYPT_IMAGE_REG;
skdltmxn54268b62015-07-26 14:44:18329#[repr(C)] #[derive(Clone, Copy, Debug)]
330pub struct CRYPT_PROVIDER_REG {
331 pub cAliases: ::ULONG,
332 pub rgpszAliases: *mut ::PWSTR,
333 pub pUM: PCRYPT_IMAGE_REG,
334 pub pKM: PCRYPT_IMAGE_REG,
335}
336pub type PCRYPT_PROVIDER_REG = *mut CRYPT_PROVIDER_REG;
skdltmxn54268b62015-07-26 14:44:18337#[repr(C)] #[derive(Clone, Copy, Debug)]
338pub struct CRYPT_PROVIDERS {
339 pub cProviders: ::ULONG,
340 pub rgpszProviders: *mut ::PWSTR,
341}
342pub type PCRYPT_PROVIDERS = *mut CRYPT_PROVIDERS;
skdltmxn54268b62015-07-26 14:44:18343#[repr(C)] #[derive(Clone, Copy, Debug)]
344pub struct CRYPT_CONTEXT_CONFIG {
345 pub dwFlags: ::ULONG,
346 pub dwReserved: ::ULONG,
347}
348pub type PCRYPT_CONTEXT_CONFIG = *mut CRYPT_CONTEXT_CONFIG;
skdltmxn54268b62015-07-26 14:44:18349#[repr(C)] #[derive(Clone, Copy, Debug)]
350pub struct CRYPT_CONTEXT_FUNCTION_CONFIG {
351 pub dwFlags: ::ULONG,
352 pub dwReserved: ::ULONG,
353}
354pub type PCRYPT_CONTEXT_FUNCTION_CONFIG = *mut CRYPT_CONTEXT_FUNCTION_CONFIG;
skdltmxn54268b62015-07-26 14:44:18355#[repr(C)] #[derive(Clone, Copy, Debug)]
356pub struct CRYPT_CONTEXTS {
357 pub cContexts: ::ULONG,
358 pub rgpszContexts: *mut ::PWSTR,
359}
360pub type PCRYPT_CONTEXTS = *mut CRYPT_CONTEXTS;
skdltmxn54268b62015-07-26 14:44:18361#[repr(C)] #[derive(Clone, Copy, Debug)]
362pub struct CRYPT_CONTEXT_FUNCTIONS {
363 pub cFunctions: ::ULONG,
364 pub rgpszFunctions: *mut ::PWSTR,
365}
366pub type PCRYPT_CONTEXT_FUNCTIONS = *mut CRYPT_CONTEXT_FUNCTIONS;
skdltmxn54268b62015-07-26 14:44:18367#[repr(C)] #[derive(Clone, Copy, Debug)]
368pub struct CRYPT_CONTEXT_FUNCTION_PROVIDERS {
369 pub cProviders: ::ULONG,
370 pub rgpszProviders: *mut ::PWSTR,
371}
372pub type PCRYPT_CONTEXT_FUNCTION_PROVIDERS = *mut CRYPT_CONTEXT_FUNCTION_PROVIDERS;
skdltmxn54268b62015-07-26 14:44:18373#[repr(C)] #[derive(Clone, Copy, Debug)]
374pub struct CRYPT_PROPERTY_REF {
375 pub pszProperty: ::PWSTR,
376 pub cbValue: ::ULONG,
377 pub pbValue: ::PUCHAR,
378}
379pub type PCRYPT_PROPERTY_REF = *mut CRYPT_PROPERTY_REF;
skdltmxn54268b62015-07-26 14:44:18380#[repr(C)] #[derive(Clone, Copy, Debug)]
381pub struct CRYPT_IMAGE_REF {
382 pub pszImage: ::PWSTR,
383 pub dwFlags: ::ULONG,
384}
385pub type PCRYPT_IMAGE_REF = *mut CRYPT_IMAGE_REF;
skdltmxn54268b62015-07-26 14:44:18386#[repr(C)] #[derive(Clone, Copy, Debug)]
387pub struct CRYPT_PROVIDER_REF {
388 pub dwInterface: ::ULONG,
389 pub pszFunction: ::PWSTR,
390 pub pszProvider: ::PWSTR,
391 pub cProperties: ::ULONG,
392 pub rgpProperties: *mut PCRYPT_PROPERTY_REF,
393 pub pUM: PCRYPT_IMAGE_REF,
394 pub pKM: PCRYPT_IMAGE_REF,
395}
396pub type PCRYPT_PROVIDER_REF = *mut CRYPT_PROVIDER_REF;
skdltmxn54268b62015-07-26 14:44:18397#[repr(C)] #[derive(Clone, Copy, Debug)]
398pub struct CRYPT_PROVIDER_REFS {
399 pub cProviders: ::ULONG,
400 pub rgpProviders: *mut PCRYPT_PROVIDER_REF,
401}
402pub type PCRYPT_PROVIDER_REFS = *mut CRYPT_PROVIDER_REFS;