1 // Copyright © 2015-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 //! Cryptographic API Prototypes and Definitions
8 use ctypes
::{c_int, c_uchar, c_uint, c_void}
;
9 use shared
::basetsd
::ULONG_PTR
;
10 use shared
::bcrypt
::BCRYPT_KEY_HANDLE
;
11 use shared
::guiddef
::{GUID, LPCGUID}
;
12 use shared
::minwindef
::{
13 BOOL
, BYTE
, DWORD
, FALSE
, FILETIME
, HKEY
, HMODULE
, LPFILETIME
, LPVOID
, PBYTE
, PDWORD
,
14 PFILETIME
, TRUE
, ULONG
, WORD
,
16 use um
::minwinbase
::PSYSTEMTIME
;
17 use um
::ncrypt
::NCRYPT_KEY_HANDLE
;
19 CHAR
, HANDLE
, HRESULT
, LONG
, LPCSTR
, LPCWSTR
, LPSTR
, LPWSTR
, PCWSTR
, PVOID
, PWSTR
, WCHAR
,
21 use vc
::vcruntime
::size_t
;
24 pub fn GET_ALG_CLASS(x
: ALG_ID
) -> ALG_ID
{
28 pub fn GET_ALG_TYPE(x
: ALG_ID
) -> ALG_ID
{
32 pub fn GET_ALG_SID(x
: ALG_ID
) -> ALG_ID
{
35 pub const ALG_CLASS_ANY
: ALG_ID
= 0;
36 pub const ALG_CLASS_SIGNATURE
: ALG_ID
= 1 << 13;
37 pub const ALG_CLASS_MSG_ENCRYPT
: ALG_ID
= 2 << 13;
38 pub const ALG_CLASS_DATA_ENCRYPT
: ALG_ID
= 3 << 13;
39 pub const ALG_CLASS_HASH
: ALG_ID
= 4 << 13;
40 pub const ALG_CLASS_KEY_EXCHANGE
: ALG_ID
= 5 << 13;
41 pub const ALG_CLASS_ALL
: ALG_ID
= 7 << 13;
42 pub const ALG_TYPE_ANY
: ALG_ID
= 0;
43 pub const ALG_TYPE_DSS
: ALG_ID
= 1 << 9;
44 pub const ALG_TYPE_RSA
: ALG_ID
= 2 << 9;
45 pub const ALG_TYPE_BLOCK
: ALG_ID
= 3 << 9;
46 pub const ALG_TYPE_STREAM
: ALG_ID
= 4 << 9;
47 pub const ALG_TYPE_DH
: ALG_ID
= 5 << 9;
48 pub const ALG_TYPE_SECURECHANNEL
: ALG_ID
= 6 << 9;
49 pub const ALG_TYPE_ECDH
: ALG_ID
= 7 << 9;
50 pub const ALG_TYPE_THIRDPARTY
: ALG_ID
= 8 << 9;
51 pub const ALG_SID_ANY
: ALG_ID
= 0;
52 pub const ALG_SID_THIRDPARTY_ANY
: ALG_ID
= 0;
53 pub const ALG_SID_RSA_ANY
: ALG_ID
= 0;
54 pub const ALG_SID_RSA_PKCS
: ALG_ID
= 1;
55 pub const ALG_SID_RSA_MSATWORK
: ALG_ID
= 2;
56 pub const ALG_SID_RSA_ENTRUST
: ALG_ID
= 3;
57 pub const ALG_SID_RSA_PGP
: ALG_ID
= 4;
58 pub const ALG_SID_DSS_ANY
: ALG_ID
= 0;
59 pub const ALG_SID_DSS_PKCS
: ALG_ID
= 1;
60 pub const ALG_SID_DSS_DMS
: ALG_ID
= 2;
61 pub const ALG_SID_ECDSA
: ALG_ID
= 3;
62 pub const ALG_SID_DES
: ALG_ID
= 1;
63 pub const ALG_SID_3DES
: ALG_ID
= 3;
64 pub const ALG_SID_DESX
: ALG_ID
= 4;
65 pub const ALG_SID_IDEA
: ALG_ID
= 5;
66 pub const ALG_SID_CAST
: ALG_ID
= 6;
67 pub const ALG_SID_SAFERSK64
: ALG_ID
= 7;
68 pub const ALG_SID_SAFERSK128
: ALG_ID
= 8;
69 pub const ALG_SID_3DES_112
: ALG_ID
= 9;
70 pub const ALG_SID_CYLINK_MEK
: ALG_ID
= 12;
71 pub const ALG_SID_RC5
: ALG_ID
= 13;
72 pub const ALG_SID_AES_128
: ALG_ID
= 14;
73 pub const ALG_SID_AES_192
: ALG_ID
= 15;
74 pub const ALG_SID_AES_256
: ALG_ID
= 16;
75 pub const ALG_SID_AES
: ALG_ID
= 17;
76 pub const ALG_SID_SKIPJACK
: ALG_ID
= 10;
77 pub const ALG_SID_TEK
: ALG_ID
= 11;
78 pub const CRYPT_MODE_CBCI
: ALG_ID
= 6;
79 pub const CRYPT_MODE_CFBP
: ALG_ID
= 7;
80 pub const CRYPT_MODE_OFBP
: ALG_ID
= 8;
81 pub const CRYPT_MODE_CBCOFM
: ALG_ID
= 9;
82 pub const CRYPT_MODE_CBCOFMI
: ALG_ID
= 10;
83 pub const ALG_SID_RC2
: ALG_ID
= 2;
84 pub const ALG_SID_RC4
: ALG_ID
= 1;
85 pub const ALG_SID_SEAL
: ALG_ID
= 2;
86 pub const ALG_SID_DH_SANDF
: ALG_ID
= 1;
87 pub const ALG_SID_DH_EPHEM
: ALG_ID
= 2;
88 pub const ALG_SID_AGREED_KEY_ANY
: ALG_ID
= 3;
89 pub const ALG_SID_KEA
: ALG_ID
= 4;
90 pub const ALG_SID_ECDH
: ALG_ID
= 5;
91 pub const ALG_SID_ECDH_EPHEM
: ALG_ID
= 6;
92 pub const ALG_SID_MD2
: ALG_ID
= 1;
93 pub const ALG_SID_MD4
: ALG_ID
= 2;
94 pub const ALG_SID_MD5
: ALG_ID
= 3;
95 pub const ALG_SID_SHA
: ALG_ID
= 4;
96 pub const ALG_SID_SHA1
: ALG_ID
= 4;
97 pub const ALG_SID_MAC
: ALG_ID
= 5;
98 pub const ALG_SID_RIPEMD
: ALG_ID
= 6;
99 pub const ALG_SID_RIPEMD160
: ALG_ID
= 7;
100 pub const ALG_SID_SSL3SHAMD5
: ALG_ID
= 8;
101 pub const ALG_SID_HMAC
: ALG_ID
= 9;
102 pub const ALG_SID_TLS1PRF
: ALG_ID
= 10;
103 pub const ALG_SID_HASH_REPLACE_OWF
: ALG_ID
= 11;
104 pub const ALG_SID_SHA_256
: ALG_ID
= 12;
105 pub const ALG_SID_SHA_384
: ALG_ID
= 13;
106 pub const ALG_SID_SHA_512
: ALG_ID
= 14;
107 pub const ALG_SID_SSL3_MASTER
: ALG_ID
= 1;
108 pub const ALG_SID_SCHANNEL_MASTER_HASH
: ALG_ID
= 2;
109 pub const ALG_SID_SCHANNEL_MAC_KEY
: ALG_ID
= 3;
110 pub const ALG_SID_PCT1_MASTER
: ALG_ID
= 4;
111 pub const ALG_SID_SSL2_MASTER
: ALG_ID
= 5;
112 pub const ALG_SID_TLS1_MASTER
: ALG_ID
= 6;
113 pub const ALG_SID_SCHANNEL_ENC_KEY
: ALG_ID
= 7;
114 pub const ALG_SID_ECMQV
: ALG_ID
= 1;
115 pub const ALG_SID_EXAMPLE
: ALG_ID
= 80;
116 pub type ALG_ID
= c_uint
;
117 pub const CALG_MD2
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_MD2
;
118 pub const CALG_MD4
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_MD4
;
119 pub const CALG_MD5
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_MD5
;
120 pub const CALG_SHA
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_SHA
;
121 pub const CALG_SHA1
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_SHA1
;
122 pub const CALG_MAC
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_MAC
;
123 pub const CALG_RSA_SIGN
: ALG_ID
= ALG_CLASS_SIGNATURE
| ALG_TYPE_RSA
| ALG_SID_RSA_ANY
;
124 pub const CALG_DSS_SIGN
: ALG_ID
= ALG_CLASS_SIGNATURE
| ALG_TYPE_DSS
| ALG_SID_DSS_ANY
;
125 pub const CALG_NO_SIGN
: ALG_ID
= ALG_CLASS_SIGNATURE
| ALG_TYPE_ANY
| ALG_SID_ANY
;
126 pub const CALG_RSA_KEYX
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_RSA
| ALG_SID_RSA_ANY
;
127 pub const CALG_DES
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_DES
;
128 pub const CALG_3DES_112
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_3DES_112
;
129 pub const CALG_3DES
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_3DES
;
130 pub const CALG_DESX
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_DESX
;
131 pub const CALG_RC2
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_RC2
;
132 pub const CALG_RC4
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_STREAM
| ALG_SID_RC4
;
133 pub const CALG_SEAL
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_STREAM
| ALG_SID_SEAL
;
134 pub const CALG_DH_SF
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_DH
| ALG_SID_DH_SANDF
;
135 pub const CALG_DH_EPHEM
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_DH
| ALG_SID_DH_EPHEM
;
136 pub const CALG_AGREEDKEY_ANY
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_DH
137 | ALG_SID_AGREED_KEY_ANY
;
138 pub const CALG_KEA_KEYX
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_DH
| ALG_SID_KEA
;
139 pub const CALG_HUGHES_MD5
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_ANY
| ALG_SID_MD5
;
140 pub const CALG_SKIPJACK
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_SKIPJACK
;
141 pub const CALG_TEK
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_TEK
;
142 pub const CALG_CYLINK_MEK
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_CYLINK_MEK
;
143 pub const CALG_SSL3_SHAMD5
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_SSL3SHAMD5
;
144 pub const CALG_SSL3_MASTER
: ALG_ID
= ALG_CLASS_MSG_ENCRYPT
| ALG_TYPE_SECURECHANNEL
145 | ALG_SID_SSL3_MASTER
;
146 pub const CALG_SCHANNEL_MASTER_HASH
: ALG_ID
= ALG_CLASS_MSG_ENCRYPT
| ALG_TYPE_SECURECHANNEL
147 | ALG_SID_SCHANNEL_MASTER_HASH
;
148 pub const CALG_SCHANNEL_MAC_KEY
: ALG_ID
= ALG_CLASS_MSG_ENCRYPT
| ALG_TYPE_SECURECHANNEL
149 | ALG_SID_SCHANNEL_MAC_KEY
;
150 pub const CALG_SCHANNEL_ENC_KEY
: ALG_ID
= ALG_CLASS_MSG_ENCRYPT
| ALG_TYPE_SECURECHANNEL
151 | ALG_SID_SCHANNEL_ENC_KEY
;
152 pub const CALG_PCT1_MASTER
: ALG_ID
= ALG_CLASS_MSG_ENCRYPT
| ALG_TYPE_SECURECHANNEL
153 | ALG_SID_PCT1_MASTER
;
154 pub const CALG_SSL2_MASTER
: ALG_ID
= ALG_CLASS_MSG_ENCRYPT
| ALG_TYPE_SECURECHANNEL
155 | ALG_SID_SSL2_MASTER
;
156 pub const CALG_TLS1_MASTER
: ALG_ID
= ALG_CLASS_MSG_ENCRYPT
| ALG_TYPE_SECURECHANNEL
157 | ALG_SID_TLS1_MASTER
;
158 pub const CALG_RC5
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_RC5
;
159 pub const CALG_HMAC
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_HMAC
;
160 pub const CALG_TLS1PRF
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_TLS1PRF
;
161 pub const CALG_HASH_REPLACE_OWF
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_HASH_REPLACE_OWF
;
162 pub const CALG_AES_128
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_AES_128
;
163 pub const CALG_AES_192
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_AES_192
;
164 pub const CALG_AES_256
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_AES_256
;
165 pub const CALG_AES
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_BLOCK
| ALG_SID_AES
;
166 pub const CALG_SHA_256
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_SHA_256
;
167 pub const CALG_SHA_384
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_SHA_384
;
168 pub const CALG_SHA_512
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_ANY
| ALG_SID_SHA_512
;
169 pub const CALG_ECDH
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_DH
| ALG_SID_ECDH
;
170 pub const CALG_ECDH_EPHEM
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_ECDH
| ALG_SID_ECDH_EPHEM
;
171 pub const CALG_ECMQV
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_ANY
| ALG_SID_ECMQV
;
172 pub const CALG_ECDSA
: ALG_ID
= ALG_CLASS_SIGNATURE
| ALG_TYPE_DSS
| ALG_SID_ECDSA
;
173 pub const CALG_NULLCIPHER
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_ANY
| 0;
174 pub const CALG_THIRDPARTY_KEY_EXCHANGE
: ALG_ID
= ALG_CLASS_KEY_EXCHANGE
| ALG_TYPE_THIRDPARTY
175 | ALG_SID_THIRDPARTY_ANY
;
176 pub const CALG_THIRDPARTY_SIGNATURE
: ALG_ID
= ALG_CLASS_SIGNATURE
| ALG_TYPE_THIRDPARTY
177 | ALG_SID_THIRDPARTY_ANY
;
178 pub const CALG_THIRDPARTY_CIPHER
: ALG_ID
= ALG_CLASS_DATA_ENCRYPT
| ALG_TYPE_THIRDPARTY
179 | ALG_SID_THIRDPARTY_ANY
;
180 pub const CALG_THIRDPARTY_HASH
: ALG_ID
= ALG_CLASS_HASH
| ALG_TYPE_THIRDPARTY
181 | ALG_SID_THIRDPARTY_ANY
;
182 pub type HCRYPTPROV
= ULONG_PTR
;
183 pub type HCRYPTKEY
= ULONG_PTR
;
184 pub type HCRYPTHASH
= ULONG_PTR
;
185 pub const CRYPT_VERIFYCONTEXT
: DWORD
= 0xF0000000;
186 pub const CRYPT_NEWKEYSET
: DWORD
= 0x00000008;
187 pub const CRYPT_DELETEKEYSET
: DWORD
= 0x00000010;
188 pub const CRYPT_MACHINE_KEYSET
: DWORD
= 0x00000020;
189 pub const CRYPT_SILENT
: DWORD
= 0x00000040;
190 pub const CRYPT_DEFAULT_CONTAINER_OPTIONAL
: DWORD
= 0x00000080;
191 pub const CRYPT_EXPORTABLE
: DWORD
= 0x00000001;
192 pub const CRYPT_USER_PROTECTED
: DWORD
= 0x00000002;
193 pub const CRYPT_CREATE_SALT
: DWORD
= 0x00000004;
194 pub const CRYPT_UPDATE_KEY
: DWORD
= 0x00000008;
195 pub const CRYPT_NO_SALT
: DWORD
= 0x00000010;
196 pub const CRYPT_PREGEN
: DWORD
= 0x00000040;
197 pub const CRYPT_RECIPIENT
: DWORD
= 0x00000010;
198 pub const CRYPT_INITIATOR
: DWORD
= 0x00000040;
199 pub const CRYPT_ONLINE
: DWORD
= 0x00000080;
200 pub const CRYPT_SF
: DWORD
= 0x00000100;
201 pub const CRYPT_CREATE_IV
: DWORD
= 0x00000200;
202 pub const CRYPT_KEK
: DWORD
= 0x00000400;
203 pub const CRYPT_DATA_KEY
: DWORD
= 0x00000800;
204 pub const CRYPT_VOLATILE
: DWORD
= 0x00001000;
205 pub const CRYPT_SGCKEY
: DWORD
= 0x00002000;
206 pub const CRYPT_USER_PROTECTED_STRONG
: DWORD
= 0x00100000;
207 pub const CRYPT_ARCHIVABLE
: DWORD
= 0x00004000;
208 pub const CRYPT_FORCE_KEY_PROTECTION_HIGH
: DWORD
= 0x00008000;
209 pub const RSA1024BIT_KEY
: DWORD
= 0x04000000;
210 pub const CRYPT_SERVER
: DWORD
= 0x00000400;
211 pub const KEY_LENGTH_MASK
: DWORD
= 0xFFFF0000;
212 pub const CRYPT_Y_ONLY
: DWORD
= 0x00000001;
213 pub const CRYPT_SSL2_FALLBACK
: DWORD
= 0x00000002;
214 pub const CRYPT_DESTROYKEY
: DWORD
= 0x00000004;
215 pub const CRYPT_OAEP
: DWORD
= 0x00000040;
216 pub const CRYPT_BLOB_VER3
: DWORD
= 0x00000080;
217 pub const CRYPT_IPSEC_HMAC_KEY
: DWORD
= 0x00000100;
218 pub const CRYPT_DECRYPT_RSA_NO_PADDING_CHECK
: DWORD
= 0x00000020;
219 pub const CRYPT_SECRETDIGEST
: DWORD
= 0x00000001;
220 pub const CRYPT_OWF_REPL_LM_HASH
: DWORD
= 0x00000001;
221 pub const CRYPT_LITTLE_ENDIAN
: DWORD
= 0x00000001;
222 pub const CRYPT_NOHASHOID
: DWORD
= 0x00000001;
223 pub const CRYPT_TYPE2_FORMAT
: DWORD
= 0x00000002;
224 pub const CRYPT_X931_FORMAT
: DWORD
= 0x00000004;
225 pub const CRYPT_MACHINE_DEFAULT
: DWORD
= 0x00000001;
226 pub const CRYPT_USER_DEFAULT
: DWORD
= 0x00000002;
227 pub const CRYPT_DELETE_DEFAULT
: DWORD
= 0x00000004;
228 pub const SIMPLEBLOB
: DWORD
= 0x1;
229 pub const PUBLICKEYBLOB
: DWORD
= 0x6;
230 pub const PRIVATEKEYBLOB
: DWORD
= 0x7;
231 pub const PLAINTEXTKEYBLOB
: DWORD
= 0x8;
232 pub const OPAQUEKEYBLOB
: DWORD
= 0x9;
233 pub const PUBLICKEYBLOBEX
: DWORD
= 0xA;
234 pub const SYMMETRICWRAPKEYBLOB
: DWORD
= 0xB;
235 pub const KEYSTATEBLOB
: DWORD
= 0xC;
236 pub const AT_KEYEXCHANGE
: DWORD
= 1;
237 pub const AT_SIGNATURE
: DWORD
= 2;
238 pub const CRYPT_USERDATA
: DWORD
= 1;
239 pub const KP_IV
: DWORD
= 1;
240 pub const KP_SALT
: DWORD
= 2;
241 pub const KP_PADDING
: DWORD
= 3;
242 pub const KP_MODE
: DWORD
= 4;
243 pub const KP_MODE_BITS
: DWORD
= 5;
244 pub const KP_PERMISSIONS
: DWORD
= 6;
245 pub const KP_ALGID
: DWORD
= 7;
246 pub const KP_BLOCKLEN
: DWORD
= 8;
247 pub const KP_KEYLEN
: DWORD
= 9;
248 pub const KP_SALT_EX
: DWORD
= 10;
249 pub const KP_P
: DWORD
= 11;
250 pub const KP_G
: DWORD
= 12;
251 pub const KP_Q
: DWORD
= 13;
252 pub const KP_X
: DWORD
= 14;
253 pub const KP_Y
: DWORD
= 15;
254 pub const KP_RA
: DWORD
= 16;
255 pub const KP_RB
: DWORD
= 17;
256 pub const KP_INFO
: DWORD
= 18;
257 pub const KP_EFFECTIVE_KEYLEN
: DWORD
= 19;
258 pub const KP_SCHANNEL_ALG
: DWORD
= 20;
259 pub const KP_CLIENT_RANDOM
: DWORD
= 21;
260 pub const KP_SERVER_RANDOM
: DWORD
= 22;
261 pub const KP_RP
: DWORD
= 23;
262 pub const KP_PRECOMP_MD5
: DWORD
= 24;
263 pub const KP_PRECOMP_SHA
: DWORD
= 25;
264 pub const KP_CERTIFICATE
: DWORD
= 26;
265 pub const KP_CLEAR_KEY
: DWORD
= 27;
266 pub const KP_PUB_EX_LEN
: DWORD
= 28;
267 pub const KP_PUB_EX_VAL
: DWORD
= 29;
268 pub const KP_KEYVAL
: DWORD
= 30;
269 pub const KP_ADMIN_PIN
: DWORD
= 31;
270 pub const KP_KEYEXCHANGE_PIN
: DWORD
= 32;
271 pub const KP_SIGNATURE_PIN
: DWORD
= 33;
272 pub const KP_PREHASH
: DWORD
= 34;
273 pub const KP_ROUNDS
: DWORD
= 35;
274 pub const KP_OAEP_PARAMS
: DWORD
= 36;
275 pub const KP_CMS_KEY_INFO
: DWORD
= 37;
276 pub const KP_CMS_DH_KEY_INFO
: DWORD
= 38;
277 pub const KP_PUB_PARAMS
: DWORD
= 39;
278 pub const KP_VERIFY_PARAMS
: DWORD
= 40;
279 pub const KP_HIGHEST_VERSION
: DWORD
= 41;
280 pub const KP_GET_USE_COUNT
: DWORD
= 42;
281 pub const KP_PIN_ID
: DWORD
= 43;
282 pub const KP_PIN_INFO
: DWORD
= 44;
283 pub const PKCS5_PADDING
: DWORD
= 1;
284 pub const RANDOM_PADDING
: DWORD
= 2;
285 pub const ZERO_PADDING
: DWORD
= 3;
286 pub const CRYPT_MODE_CBC
: DWORD
= 1;
287 pub const CRYPT_MODE_ECB
: DWORD
= 2;
288 pub const CRYPT_MODE_OFB
: DWORD
= 3;
289 pub const CRYPT_MODE_CFB
: DWORD
= 4;
290 pub const CRYPT_MODE_CTS
: DWORD
= 5;
291 pub const CRYPT_ENCRYPT
: DWORD
= 0x0001;
292 pub const CRYPT_DECRYPT
: DWORD
= 0x0002;
293 pub const CRYPT_EXPORT
: DWORD
= 0x0004;
294 pub const CRYPT_READ
: DWORD
= 0x0008;
295 pub const CRYPT_WRITE
: DWORD
= 0x0010;
296 pub const CRYPT_MAC
: DWORD
= 0x0020;
297 pub const CRYPT_EXPORT_KEY
: DWORD
= 0x0040;
298 pub const CRYPT_IMPORT_KEY
: DWORD
= 0x0080;
299 pub const CRYPT_ARCHIVE
: DWORD
= 0x0100;
300 pub const HP_ALGID
: DWORD
= 0x0001;
301 pub const HP_HASHVAL
: DWORD
= 0x0002;
302 pub const HP_HASHSIZE
: DWORD
= 0x0004;
303 pub const HP_HMAC_INFO
: DWORD
= 0x0005;
304 pub const HP_TLS1PRF_LABEL
: DWORD
= 0x0006;
305 pub const HP_TLS1PRF_SEED
: DWORD
= 0x0007;
306 pub const CRYPT_FAILED
: BOOL
= FALSE
;
307 pub const CRYPT_SUCCEED
: BOOL
= TRUE
;
309 pub fn RCRYPT_SUCCEEDED(rt
: BOOL
) -> bool
{
313 pub fn RCRYPT_FAILED(rt
: BOOL
) -> bool
{
316 pub const PP_ENUMALGS
: DWORD
= 1;
317 pub const PP_ENUMCONTAINERS
: DWORD
= 2;
318 pub const PP_IMPTYPE
: DWORD
= 3;
319 pub const PP_NAME
: DWORD
= 4;
320 pub const PP_VERSION
: DWORD
= 5;
321 pub const PP_CONTAINER
: DWORD
= 6;
322 pub const PP_CHANGE_PASSWORD
: DWORD
= 7;
323 pub const PP_KEYSET_SEC_DESCR
: DWORD
= 8;
324 pub const PP_CERTCHAIN
: DWORD
= 9;
325 pub const PP_KEY_TYPE_SUBTYPE
: DWORD
= 10;
326 pub const PP_PROVTYPE
: DWORD
= 16;
327 pub const PP_KEYSTORAGE
: DWORD
= 17;
328 pub const PP_APPLI_CERT
: DWORD
= 18;
329 pub const PP_SYM_KEYSIZE
: DWORD
= 19;
330 pub const PP_SESSION_KEYSIZE
: DWORD
= 20;
331 pub const PP_UI_PROMPT
: DWORD
= 21;
332 pub const PP_ENUMALGS_EX
: DWORD
= 22;
333 pub const PP_ENUMMANDROOTS
: DWORD
= 25;
334 pub const PP_ENUMELECTROOTS
: DWORD
= 26;
335 pub const PP_KEYSET_TYPE
: DWORD
= 27;
336 pub const PP_ADMIN_PIN
: DWORD
= 31;
337 pub const PP_KEYEXCHANGE_PIN
: DWORD
= 32;
338 pub const PP_SIGNATURE_PIN
: DWORD
= 33;
339 pub const PP_SIG_KEYSIZE_INC
: DWORD
= 34;
340 pub const PP_KEYX_KEYSIZE_INC
: DWORD
= 35;
341 pub const PP_UNIQUE_CONTAINER
: DWORD
= 36;
342 pub const PP_SGC_INFO
: DWORD
= 37;
343 pub const PP_USE_HARDWARE_RNG
: DWORD
= 38;
344 pub const PP_KEYSPEC
: DWORD
= 39;
345 pub const PP_ENUMEX_SIGNING_PROT
: DWORD
= 40;
346 pub const PP_CRYPT_COUNT_KEY_USE
: DWORD
= 41;
347 pub const PP_USER_CERTSTORE
: DWORD
= 42;
348 pub const PP_SMARTCARD_READER
: DWORD
= 43;
349 pub const PP_SMARTCARD_GUID
: DWORD
= 45;
350 pub const PP_ROOT_CERTSTORE
: DWORD
= 46;
351 pub const PP_SMARTCARD_READER_ICON
: DWORD
= 47;
352 pub const CRYPT_FIRST
: DWORD
= 1;
353 pub const CRYPT_NEXT
: DWORD
= 2;
354 pub const CRYPT_SGC_ENUM
: DWORD
= 4;
355 pub const CRYPT_IMPL_HARDWARE
: DWORD
= 1;
356 pub const CRYPT_IMPL_SOFTWARE
: DWORD
= 2;
357 pub const CRYPT_IMPL_MIXED
: DWORD
= 3;
358 pub const CRYPT_IMPL_UNKNOWN
: DWORD
= 4;
359 pub const CRYPT_IMPL_REMOVABLE
: DWORD
= 8;
360 pub const CRYPT_SEC_DESCR
: DWORD
= 0x00000001;
361 pub const CRYPT_PSTORE
: DWORD
= 0x00000002;
362 pub const CRYPT_UI_PROMPT
: DWORD
= 0x00000004;
363 pub const CRYPT_FLAG_PCT1
: DWORD
= 0x0001;
364 pub const CRYPT_FLAG_SSL2
: DWORD
= 0x0002;
365 pub const CRYPT_FLAG_SSL3
: DWORD
= 0x0004;
366 pub const CRYPT_FLAG_TLS1
: DWORD
= 0x0008;
367 pub const CRYPT_FLAG_IPSEC
: DWORD
= 0x0010;
368 pub const CRYPT_FLAG_SIGNING
: DWORD
= 0x0020;
369 pub const CRYPT_SGC
: DWORD
= 0x0001;
370 pub const CRYPT_FASTSGC
: DWORD
= 0x0002;
371 pub const PP_CLIENT_HWND
: DWORD
= 1;
372 pub const PP_CONTEXT_INFO
: DWORD
= 11;
373 pub const PP_KEYEXCHANGE_KEYSIZE
: DWORD
= 12;
374 pub const PP_SIGNATURE_KEYSIZE
: DWORD
= 13;
375 pub const PP_KEYEXCHANGE_ALG
: DWORD
= 14;
376 pub const PP_SIGNATURE_ALG
: DWORD
= 15;
377 pub const PP_DELETEKEY
: DWORD
= 24;
378 pub const PP_PIN_PROMPT_STRING
: DWORD
= 44;
379 pub const PP_SECURE_KEYEXCHANGE_PIN
: DWORD
= 47;
380 pub const PP_SECURE_SIGNATURE_PIN
: DWORD
= 48;
381 pub const PROV_RSA_FULL
: DWORD
= 1;
382 pub const PROV_RSA_SIG
: DWORD
= 2;
383 pub const PROV_DSS
: DWORD
= 3;
384 pub const PROV_FORTEZZA
: DWORD
= 4;
385 pub const PROV_MS_EXCHANGE
: DWORD
= 5;
386 pub const PROV_SSL
: DWORD
= 6;
387 pub const PROV_RSA_SCHANNEL
: DWORD
= 12;
388 pub const PROV_DSS_DH
: DWORD
= 13;
389 pub const PROV_EC_ECDSA_SIG
: DWORD
= 14;
390 pub const PROV_EC_ECNRA_SIG
: DWORD
= 15;
391 pub const PROV_EC_ECDSA_FULL
: DWORD
= 16;
392 pub const PROV_EC_ECNRA_FULL
: DWORD
= 17;
393 pub const PROV_DH_SCHANNEL
: DWORD
= 18;
394 pub const PROV_SPYRUS_LYNKS
: DWORD
= 20;
395 pub const PROV_RNG
: DWORD
= 21;
396 pub const PROV_INTEL_SEC
: DWORD
= 22;
397 pub const PROV_REPLACE_OWF
: DWORD
= 23;
398 pub const PROV_RSA_AES
: DWORD
= 24;
399 pub const MS_DEF_PROV
: &'
static str = "Microsoft Base Cryptographic Provider v1.0";
400 pub const MS_ENHANCED_PROV
: &'
static str = "Microsoft Enhanced Cryptographic Provider v1.0";
401 pub const MS_STRONG_PROV
: &'
static str = "Microsoft Strong Cryptographic Provider";
402 pub const MS_DEF_RSA_SIG_PROV
: &'
static str = "Microsoft RSA Signature Cryptographic Provider";
403 pub const MS_DEF_RSA_SCHANNEL_PROV
: &'
static str = "Microsoft RSA SChannel Cryptographic Provider";
404 pub const MS_DEF_DSS_PROV
: &'
static str = "Microsoft Base DSS Cryptographic Provider";
405 pub const MS_DEF_DSS_DH_PROV
: &'
static str
406 = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider";
407 pub const MS_ENH_DSS_DH_PROV
: &'
static str
408 = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider";
409 pub const MS_DEF_DH_SCHANNEL_PROV
: &'
static str = "Microsoft DH SChannel Cryptographic Provider";
410 pub const MS_SCARD_PROV
: &'
static str = "Microsoft Base Smart Card Crypto Provider";
411 pub const MS_ENH_RSA_AES_PROV
: &'
static str
412 = "Microsoft Enhanced RSA and AES Cryptographic Provider";
413 pub const MS_ENH_RSA_AES_PROV_XP
: &'
static str
414 = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
415 pub const MAXUIDLEN
: usize = 64;
416 pub const EXPO_OFFLOAD_REG_VALUE
: &'
static str = "ExpoOffload";
417 pub const EXPO_OFFLOAD_FUNC_NAME
: &'
static str = "OffloadModExpo";
418 pub const szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS
: &'
static str
419 = "Software\\Policies\\Microsoft\\Cryptography";
420 pub const szKEY_CACHE_ENABLED
: &'
static str = "CachePrivateKeys";
421 pub const szKEY_CACHE_SECONDS
: &'
static str = "PrivateKeyLifetimeSeconds";
422 pub const szPRIV_KEY_CACHE_MAX_ITEMS
: &'
static str = "PrivKeyCacheMaxItems";
423 pub const cPRIV_KEY_CACHE_MAX_ITEMS_DEFAULT
: DWORD
= 20;
424 pub const szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS
: &'
static str
425 = "PrivKeyCachePurgeIntervalSeconds";
426 pub const cPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS_DEFAULT
: DWORD
= 86400;
427 pub const CUR_BLOB_VERSION
: DWORD
= 2;
428 STRUCT
!{struct CMS_KEY_INFO
{
434 pub type PCMS_KEY_INFO
= *mut CMS_KEY_INFO
;
435 STRUCT
!{struct HMAC_INFO
{
437 pbInnerString
: *mut BYTE
,
438 cbInnerString
: DWORD
,
439 pbOuterString
: *mut BYTE
,
440 cbOuterString
: DWORD
,
442 pub type PHMAC_INFO
= *mut HMAC_INFO
;
443 STRUCT
!{struct SCHANNEL_ALG
{
450 pub type PSCHANNEL_ALG
= *mut SCHANNEL_ALG
;
451 pub const SCHANNEL_MAC_KEY
: DWORD
= 0x00000000;
452 pub const SCHANNEL_ENC_KEY
: DWORD
= 0x00000001;
453 pub const INTERNATIONAL_USAGE
: DWORD
= 0x00000001;
454 STRUCT
!{struct PROV_ENUMALGS
{
460 STRUCT
!{struct PROV_ENUMALGS_EX
{
468 dwLongNameLen
: DWORD
,
469 szLongName
: [CHAR
; 40],
471 STRUCT
!{struct BLOBHEADER
{
477 pub type PUBLICKEYSTRUC
= BLOBHEADER
;
478 STRUCT
!{struct RSAPUBKEY
{
483 STRUCT
!{struct DHPUBKEY
{
487 pub type DSSPUBKEY
= DHPUBKEY
;
488 pub type KEAPUBKEY
= DHPUBKEY
;
489 pub type TEKPUBKEY
= DHPUBKEY
;
490 STRUCT
!{struct DSSSEED
{
494 STRUCT
!{struct DHPUBKEY_VER3
{
501 pub type DSSPUBKEY_VER3
= DHPUBKEY_VER3
;
502 STRUCT
!{struct DHPRIVKEY_VER3
{
510 pub type DSSPRIVKEY_VER3
= DHPRIVKEY_VER3
;
511 STRUCT
!{struct KEY_TYPE_SUBTYPE
{
516 pub type PKEY_TYPE_SUBTYPE
= *mut KEY_TYPE_SUBTYPE
;
517 STRUCT
!{struct CERT_FORTEZZA_DATA_PROP
{
518 SerialNumber
: [c_uchar
; 8],
520 CertLabel
: [c_uchar
; 36],
522 STRUCT
!{struct CRYPT_RC4_KEY_STATE
{
524 SBox
: [c_uchar
; 256],
528 pub type PCRYPT_RC4_KEY_STATE
= *mut CRYPT_RC4_KEY_STATE
;
529 STRUCT
!{struct CRYPT_DES_KEY_STATE
{
532 Feedback
: [c_uchar
; 8],
534 pub type PCRYPT_DES_KEY_STATE
= *mut CRYPT_DES_KEY_STATE
;
535 STRUCT
!{struct CRYPT_3DES_KEY_STATE
{
538 Feedback
: [c_uchar
; 8],
540 pub type PCRYPT_3DES_KEY_STATE
= *mut CRYPT_3DES_KEY_STATE
;
541 STRUCT
!{struct CRYPT_AES_128_KEY_STATE
{
544 EncryptionState
: [[c_uchar
; 16]; 11],
545 DecryptionState
: [[c_uchar
; 16]; 11],
546 Feedback
: [c_uchar
; 16],
548 pub type PCRYPT_AES_128_KEY_STATE
= *mut CRYPT_AES_128_KEY_STATE
;
549 STRUCT
!{struct CRYPT_AES_256_KEY_STATE
{
552 EncryptionState
: [[c_uchar
; 16]; 15],
553 DecryptionState
: [[c_uchar
; 16]; 15],
554 Feedback
: [c_uchar
; 16],
556 pub type PCRYPT_AES_256_KEY_STATE
= *mut CRYPT_AES_256_KEY_STATE
;
557 STRUCT
!{struct CRYPTOAPI_BLOB
{
561 pub type CRYPT_INTEGER_BLOB
= CRYPTOAPI_BLOB
;
562 pub type PCRYPT_INTEGER_BLOB
= *mut CRYPTOAPI_BLOB
;
563 pub type CRYPT_UINT_BLOB
= CRYPTOAPI_BLOB
;
564 pub type PCRYPT_UINT_BLOB
= *mut CRYPTOAPI_BLOB
;
565 pub type CRYPT_OBJID_BLOB
= CRYPTOAPI_BLOB
;
566 pub type PCRYPT_OBJID_BLOB
= *mut CRYPTOAPI_BLOB
;
567 pub type CERT_NAME_BLOB
= CRYPTOAPI_BLOB
;
568 pub type PCERT_NAME_BLOB
= *mut CRYPTOAPI_BLOB
;
569 pub type CERT_RDN_VALUE_BLOB
= CRYPTOAPI_BLOB
;
570 pub type PCERT_RDN_VALUE_BLOB
= *mut CRYPTOAPI_BLOB
;
571 pub type CERT_BLOB
= CRYPTOAPI_BLOB
;
572 pub type PCERT_BLOB
= *mut CRYPTOAPI_BLOB
;
573 pub type CRL_BLOB
= CRYPTOAPI_BLOB
;
574 pub type PCRL_BLOB
= *mut CRYPTOAPI_BLOB
;
575 pub type DATA_BLOB
= CRYPTOAPI_BLOB
;
576 pub type PDATA_BLOB
= *mut CRYPTOAPI_BLOB
;
577 pub type CRYPT_DATA_BLOB
= CRYPTOAPI_BLOB
;
578 pub type PCRYPT_DATA_BLOB
= *mut CRYPTOAPI_BLOB
;
579 pub type CRYPT_HASH_BLOB
= CRYPTOAPI_BLOB
;
580 pub type PCRYPT_HASH_BLOB
= *mut CRYPTOAPI_BLOB
;
581 pub type CRYPT_DIGEST_BLOB
= CRYPTOAPI_BLOB
;
582 pub type PCRYPT_DIGEST_BLOB
= *mut CRYPTOAPI_BLOB
;
583 pub type CRYPT_DER_BLOB
= CRYPTOAPI_BLOB
;
584 pub type PCRYPT_DER_BLOB
= *mut CRYPTOAPI_BLOB
;
585 pub type CRYPT_ATTR_BLOB
= CRYPTOAPI_BLOB
;
586 pub type PCRYPT_ATTR_BLOB
= *mut CRYPTOAPI_BLOB
;
587 STRUCT
!{struct CMS_DH_KEY_INFO
{
590 pszContentEncObjId
: LPSTR
,
591 PubInfo
: CRYPT_DATA_BLOB
,
592 pReserved
: *mut c_void
,
594 pub type PCMS_DH_KEY_INFO
= *mut CMS_DH_KEY_INFO
;
596 pub fn CryptAcquireContextA(
597 phProv
: *mut HCRYPTPROV
,
603 pub fn CryptAcquireContextW(
604 phProv
: *mut HCRYPTPROV
,
605 szContainer
: LPCWSTR
,
610 pub fn CryptReleaseContext(
618 phKey
: *mut HCRYPTKEY
,
620 pub fn CryptDeriveKey(
623 hBaseData
: HCRYPTHASH
,
625 phKey
: *mut HCRYPTKEY
,
627 pub fn CryptDestroyKey(
630 pub fn CryptSetKeyParam(
636 pub fn CryptGetKeyParam(
640 pdwDataLen
: *mut DWORD
,
643 pub fn CryptSetHashParam(
649 pub fn CryptGetHashParam(
653 pdwDataLen
: *mut DWORD
,
656 pub fn CryptSetProvParam(
662 pub fn CryptGetProvParam(
666 pdwDataLen
: *mut DWORD
,
669 pub fn CryptGenRandom(
674 pub fn CryptGetUserKey(
677 phUserKey
: *mut HCRYPTKEY
,
679 pub fn CryptExportKey(
685 pdwDataLen
: *mut DWORD
,
687 pub fn CryptImportKey(
693 phKey
: *mut HCRYPTKEY
,
701 pdwDataLen
: *mut DWORD
,
710 pdwDataLen
: *mut DWORD
,
712 pub fn CryptCreateHash(
717 phHash
: *mut HCRYPTHASH
,
719 pub fn CryptHashData(
725 pub fn CryptHashSessionKey(
730 pub fn CryptDestroyHash(
733 pub fn CryptSignHashA(
736 szDescription
: LPCSTR
,
738 pbSignature
: *mut BYTE
,
739 pdwSigLen
: *mut DWORD
,
741 pub fn CryptSignHashW(
744 szDescription
: LPCWSTR
,
746 pbSignature
: *mut BYTE
,
747 pdwSigLen
: *mut DWORD
,
749 pub fn CryptVerifySignatureA(
751 pbSignature
: *const BYTE
,
754 szDescription
: LPCSTR
,
757 pub fn CryptVerifySignatureW(
759 pbSignature
: *const BYTE
,
762 szDescription
: LPCWSTR
,
765 pub fn CryptSetProviderA(
769 pub fn CryptSetProviderW(
770 pszProvName
: LPCWSTR
,
773 pub fn CryptSetProviderExA(
776 pdwReserved
: *mut DWORD
,
779 pub fn CryptSetProviderExW(
780 pszProvName
: LPCWSTR
,
782 pdwReserved
: *mut DWORD
,
785 pub fn CryptGetDefaultProviderA(
787 pdwReserved
: *mut DWORD
,
790 pcbProvName
: *mut DWORD
,
792 pub fn CryptGetDefaultProviderW(
794 pdwReserved
: *mut DWORD
,
797 pcbProvName
: *mut DWORD
,
799 pub fn CryptEnumProviderTypesA(
801 pdwReserved
: *mut DWORD
,
803 pdwProvType
: *mut DWORD
,
805 pcbTypeName
: *mut DWORD
,
807 pub fn CryptEnumProviderTypesW(
809 pdwReserved
: *mut DWORD
,
811 pdwProvType
: *mut DWORD
,
813 pcbTypeName
: *mut DWORD
,
815 pub fn CryptEnumProvidersA(
817 pdwReserved
: *mut DWORD
,
819 pdwProvType
: *mut DWORD
,
821 pcbProvName
: *mut DWORD
,
823 pub fn CryptEnumProvidersW(
825 pdwReserved
: *mut DWORD
,
827 pdwProvType
: *mut DWORD
,
829 pcbProvName
: *mut DWORD
,
831 pub fn CryptContextAddRef(
833 pdwReserved
: *mut DWORD
,
836 pub fn CryptDuplicateKey(
838 pdwReserved
: *mut DWORD
,
840 phKey
: *mut HCRYPTKEY
,
842 pub fn CryptDuplicateHash(
844 pdwReserved
: *mut DWORD
,
846 phHash
: *mut HCRYPTHASH
,
850 pub fn GetEncSChannel(
851 pData
: *mut *mut BYTE
,
852 dwDecSize
: *mut DWORD
,
855 pub type HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
= ULONG_PTR
;
856 pub type HCRYPTPROV_LEGACY
= ULONG_PTR
;
857 STRUCT
!{struct CRYPT_BIT_BLOB
{
862 pub type PCRYPT_BIT_BLOB
= *mut CRYPT_BIT_BLOB
;
863 STRUCT
!{struct CRYPT_ALGORITHM_IDENTIFIER
{
865 Parameters
: CRYPT_OBJID_BLOB
,
867 pub type PCRYPT_ALGORITHM_IDENTIFIER
= *mut CRYPT_ALGORITHM_IDENTIFIER
;
868 pub const szOID_RSA
: &'
static str = "1.2.840.113549";
869 pub const szOID_PKCS
: &'
static str = "1.2.840.113549.1";
870 pub const szOID_RSA_HASH
: &'
static str = "1.2.840.113549.2";
871 pub const szOID_RSA_ENCRYPT
: &'
static str = "1.2.840.113549.3";
872 pub const szOID_PKCS_1
: &'
static str = "1.2.840.113549.1.1";
873 pub const szOID_PKCS_2
: &'
static str = "1.2.840.113549.1.2";
874 pub const szOID_PKCS_3
: &'
static str = "1.2.840.113549.1.3";
875 pub const szOID_PKCS_4
: &'
static str = "1.2.840.113549.1.4";
876 pub const szOID_PKCS_5
: &'
static str = "1.2.840.113549.1.5";
877 pub const szOID_PKCS_6
: &'
static str = "1.2.840.113549.1.6";
878 pub const szOID_PKCS_7
: &'
static str = "1.2.840.113549.1.7";
879 pub const szOID_PKCS_8
: &'
static str = "1.2.840.113549.1.8";
880 pub const szOID_PKCS_9
: &'
static str = "1.2.840.113549.1.9";
881 pub const szOID_PKCS_10
: &'
static str = "1.2.840.113549.1.10";
882 pub const szOID_PKCS_12
: &'
static str = "1.2.840.113549.1.12";
883 pub const szOID_RSA_RSA
: &'
static str = "1.2.840.113549.1.1.1";
884 pub const szOID_RSA_MD2RSA
: &'
static str = "1.2.840.113549.1.1.2";
885 pub const szOID_RSA_MD4RSA
: &'
static str = "1.2.840.113549.1.1.3";
886 pub const szOID_RSA_MD5RSA
: &'
static str = "1.2.840.113549.1.1.4";
887 pub const szOID_RSA_SHA1RSA
: &'
static str = "1.2.840.113549.1.1.5";
888 pub const szOID_RSA_SETOAEP_RSA
: &'
static str = "1.2.840.113549.1.1.6";
889 pub const szOID_RSAES_OAEP
: &'
static str = "1.2.840.113549.1.1.7";
890 pub const szOID_RSA_MGF1
: &'
static str = "1.2.840.113549.1.1.8";
891 pub const szOID_RSA_PSPECIFIED
: &'
static str = "1.2.840.113549.1.1.9";
892 pub const szOID_RSA_SSA_PSS
: &'
static str = "1.2.840.113549.1.1.10";
893 pub const szOID_RSA_SHA256RSA
: &'
static str = "1.2.840.113549.1.1.11";
894 pub const szOID_RSA_SHA384RSA
: &'
static str = "1.2.840.113549.1.1.12";
895 pub const szOID_RSA_SHA512RSA
: &'
static str = "1.2.840.113549.1.1.13";
896 pub const szOID_RSA_DH
: &'
static str = "1.2.840.113549.1.3.1";
897 pub const szOID_RSA_data
: &'
static str = "1.2.840.113549.1.7.1";
898 pub const szOID_RSA_signedData
: &'
static str = "1.2.840.113549.1.7.2";
899 pub const szOID_RSA_envelopedData
: &'
static str = "1.2.840.113549.1.7.3";
900 pub const szOID_RSA_signEnvData
: &'
static str = "1.2.840.113549.1.7.4";
901 pub const szOID_RSA_digestedData
: &'
static str = "1.2.840.113549.1.7.5";
902 pub const szOID_RSA_hashedData
: &'
static str = "1.2.840.113549.1.7.5";
903 pub const szOID_RSA_encryptedData
: &'
static str = "1.2.840.113549.1.7.6";
904 pub const szOID_RSA_emailAddr
: &'
static str = "1.2.840.113549.1.9.1";
905 pub const szOID_RSA_unstructName
: &'
static str = "1.2.840.113549.1.9.2";
906 pub const szOID_RSA_contentType
: &'
static str = "1.2.840.113549.1.9.3";
907 pub const szOID_RSA_messageDigest
: &'
static str = "1.2.840.113549.1.9.4";
908 pub const szOID_RSA_signingTime
: &'
static str = "1.2.840.113549.1.9.5";
909 pub const szOID_RSA_counterSign
: &'
static str = "1.2.840.113549.1.9.6";
910 pub const szOID_RSA_challengePwd
: &'
static str = "1.2.840.113549.1.9.7";
911 pub const szOID_RSA_unstructAddr
: &'
static str = "1.2.840.113549.1.9.8";
912 pub const szOID_RSA_extCertAttrs
: &'
static str = "1.2.840.113549.1.9.9";
913 pub const szOID_RSA_certExtensions
: &'
static str = "1.2.840.113549.1.9.14";
914 pub const szOID_RSA_SMIMECapabilities
: &'
static str = "1.2.840.113549.1.9.15";
915 pub const szOID_RSA_preferSignedData
: &'
static str = "1.2.840.113549.1.9.15.1";
916 pub const szOID_TIMESTAMP_TOKEN
: &'
static str = "1.2.840.113549.1.9.16.1.4";
917 pub const szOID_RFC3161_counterSign
: &'
static str = "1.3.6.1.4.1.311.3.3.1";
918 pub const szOID_RSA_SMIMEalg
: &'
static str = "1.2.840.113549.1.9.16.3";
919 pub const szOID_RSA_SMIMEalgESDH
: &'
static str = "1.2.840.113549.1.9.16.3.5";
920 pub const szOID_RSA_SMIMEalgCMS3DESwrap
: &'
static str = "1.2.840.113549.1.9.16.3.6";
921 pub const szOID_RSA_SMIMEalgCMSRC2wrap
: &'
static str = "1.2.840.113549.1.9.16.3.7";
922 pub const szOID_RSA_MD2
: &'
static str = "1.2.840.113549.2.2";
923 pub const szOID_RSA_MD4
: &'
static str = "1.2.840.113549.2.4";
924 pub const szOID_RSA_MD5
: &'
static str = "1.2.840.113549.2.5";
925 pub const szOID_RSA_RC2CBC
: &'
static str = "1.2.840.113549.3.2";
926 pub const szOID_RSA_RC4
: &'
static str = "1.2.840.113549.3.4";
927 pub const szOID_RSA_DES_EDE3_CBC
: &'
static str = "1.2.840.113549.3.7";
928 pub const szOID_RSA_RC5_CBCPad
: &'
static str = "1.2.840.113549.3.9";
929 pub const szOID_ANSI_X942
: &'
static str = "1.2.840.10046";
930 pub const szOID_ANSI_X942_DH
: &'
static str = "1.2.840.10046.2.1";
931 pub const szOID_X957
: &'
static str = "1.2.840.10040";
932 pub const szOID_X957_DSA
: &'
static str = "1.2.840.10040.4.1";
933 pub const szOID_X957_SHA1DSA
: &'
static str = "1.2.840.10040.4.3";
934 pub const szOID_ECC_PUBLIC_KEY
: &'
static str = "1.2.840.10045.2.1";
935 pub const szOID_ECC_CURVE_P256
: &'
static str = "1.2.840.10045.3.1.7";
936 pub const szOID_ECC_CURVE_P384
: &'
static str = "1.3.132.0.34";
937 pub const szOID_ECC_CURVE_P521
: &'
static str = "1.3.132.0.35";
938 pub const szOID_ECC_CURVE_BRAINPOOLP160R1
: &'
static str = "1.3.36.3.3.2.8.1.1.1";
939 pub const szOID_ECC_CURVE_BRAINPOOLP160T1
: &'
static str = "1.3.36.3.3.2.8.1.1.2";
940 pub const szOID_ECC_CURVE_BRAINPOOLP192R1
: &'
static str = "1.3.36.3.3.2.8.1.1.3";
941 pub const szOID_ECC_CURVE_BRAINPOOLP192T1
: &'
static str = "1.3.36.3.3.2.8.1.1.4";
942 pub const szOID_ECC_CURVE_BRAINPOOLP224R1
: &'
static str = "1.3.36.3.3.2.8.1.1.5";
943 pub const szOID_ECC_CURVE_BRAINPOOLP224T1
: &'
static str = "1.3.36.3.3.2.8.1.1.6";
944 pub const szOID_ECC_CURVE_BRAINPOOLP256R1
: &'
static str = "1.3.36.3.3.2.8.1.1.7";
945 pub const szOID_ECC_CURVE_BRAINPOOLP256T1
: &'
static str = "1.3.36.3.3.2.8.1.1.8";
946 pub const szOID_ECC_CURVE_BRAINPOOLP320R1
: &'
static str = "1.3.36.3.3.2.8.1.1.9";
947 pub const szOID_ECC_CURVE_BRAINPOOLP320T1
: &'
static str = "1.3.36.3.3.2.8.1.1.10";
948 pub const szOID_ECC_CURVE_BRAINPOOLP384R1
: &'
static str = "1.3.36.3.3.2.8.1.1.11";
949 pub const szOID_ECC_CURVE_BRAINPOOLP384T1
: &'
static str = "1.3.36.3.3.2.8.1.1.12";
950 pub const szOID_ECC_CURVE_BRAINPOOLP512R1
: &'
static str = "1.3.36.3.3.2.8.1.1.13";
951 pub const szOID_ECC_CURVE_BRAINPOOLP512T1
: &'
static str = "1.3.36.3.3.2.8.1.1.14";
952 pub const szOID_ECC_CURVE_EC192WAPI
: &'
static str = "1.2.156.11235.1.1.2.1";
953 pub const szOID_CN_ECDSA_SHA256
: &'
static str = "1.2.156.11235.1.1.1";
954 pub const szOID_ECC_CURVE_NISTP192
: &'
static str = "1.2.840.10045.3.1.1";
955 pub const szOID_ECC_CURVE_NISTP224
: &'
static str = "1.3.132.0.33";
956 pub const szOID_ECC_CURVE_NISTP256
: &'
static str = szOID_ECC_CURVE_P256
;
957 pub const szOID_ECC_CURVE_NISTP384
: &'
static str = szOID_ECC_CURVE_P384
;
958 pub const szOID_ECC_CURVE_NISTP521
: &'
static str = szOID_ECC_CURVE_P521
;
959 pub const szOID_ECC_CURVE_SECP160K1
: &'
static str = "1.3.132.0.9";
960 pub const szOID_ECC_CURVE_SECP160R1
: &'
static str = "1.3.132.0.8";
961 pub const szOID_ECC_CURVE_SECP160R2
: &'
static str = "1.3.132.0.30";
962 pub const szOID_ECC_CURVE_SECP192K1
: &'
static str = "1.3.132.0.31";
963 pub const szOID_ECC_CURVE_SECP192R1
: &'
static str = szOID_ECC_CURVE_NISTP192
;
964 pub const szOID_ECC_CURVE_SECP224K1
: &'
static str = "1.3.132.0.32";
965 pub const szOID_ECC_CURVE_SECP224R1
: &'
static str = szOID_ECC_CURVE_NISTP224
;
966 pub const szOID_ECC_CURVE_SECP256K1
: &'
static str = "1.3.132.0.10";
967 pub const szOID_ECC_CURVE_SECP256R1
: &'
static str = szOID_ECC_CURVE_P256
;
968 pub const szOID_ECC_CURVE_SECP384R1
: &'
static str = szOID_ECC_CURVE_P384
;
969 pub const szOID_ECC_CURVE_SECP521R1
: &'
static str = szOID_ECC_CURVE_P521
;
970 pub const szOID_ECC_CURVE_WTLS7
: &'
static str = szOID_ECC_CURVE_SECP160R2
;
971 pub const szOID_ECC_CURVE_WTLS9
: &'
static str = "2.23.43.1.4.9";
972 pub const szOID_ECC_CURVE_WTLS12
: &'
static str = szOID_ECC_CURVE_NISTP224
;
973 pub const szOID_ECC_CURVE_X962P192V1
: &'
static str = "1.2.840.10045.3.1.1";
974 pub const szOID_ECC_CURVE_X962P192V2
: &'
static str = "1.2.840.10045.3.1.2";
975 pub const szOID_ECC_CURVE_X962P192V3
: &'
static str = "1.2.840.10045.3.1.3";
976 pub const szOID_ECC_CURVE_X962P239V1
: &'
static str = "1.2.840.10045.3.1.4";
977 pub const szOID_ECC_CURVE_X962P239V2
: &'
static str = "1.2.840.10045.3.1.5";
978 pub const szOID_ECC_CURVE_X962P239V3
: &'
static str = "1.2.840.10045.3.1.6";
979 pub const szOID_ECC_CURVE_X962P256V1
: &'
static str = szOID_ECC_CURVE_P256
;
980 pub const szOID_ECDSA_SHA1
: &'
static str = "1.2.840.10045.4.1";
981 pub const szOID_ECDSA_SPECIFIED
: &'
static str = "1.2.840.10045.4.3";
982 pub const szOID_ECDSA_SHA256
: &'
static str = "1.2.840.10045.4.3.2";
983 pub const szOID_ECDSA_SHA384
: &'
static str = "1.2.840.10045.4.3.3";
984 pub const szOID_ECDSA_SHA512
: &'
static str = "1.2.840.10045.4.3.4";
985 pub const szOID_NIST_AES128_CBC
: &'
static str = "2.16.840.1.101.3.4.1.2";
986 pub const szOID_NIST_AES192_CBC
: &'
static str = "2.16.840.1.101.3.4.1.22";
987 pub const szOID_NIST_AES256_CBC
: &'
static str = "2.16.840.1.101.3.4.1.42";
988 pub const szOID_NIST_AES128_WRAP
: &'
static str = "2.16.840.1.101.3.4.1.5";
989 pub const szOID_NIST_AES192_WRAP
: &'
static str = "2.16.840.1.101.3.4.1.25";
990 pub const szOID_NIST_AES256_WRAP
: &'
static str = "2.16.840.1.101.3.4.1.45";
991 pub const szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF
: &'
static str = "1.3.133.16.840.63.0.2";
992 pub const szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF
: &'
static str = "1.3.132.1.11.1";
993 pub const szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF
: &'
static str = "1.3.132.1.11.2";
994 pub const szOID_DS
: &'
static str = "2.5";
995 pub const szOID_DSALG
: &'
static str = "2.5.8";
996 pub const szOID_DSALG_CRPT
: &'
static str = "2.5.8.1";
997 pub const szOID_DSALG_HASH
: &'
static str = "2.5.8.2";
998 pub const szOID_DSALG_SIGN
: &'
static str = "2.5.8.3";
999 pub const szOID_DSALG_RSA
: &'
static str = "2.5.8.1.1";
1000 pub const szOID_OIW
: &'
static str = "1.3.14";
1001 pub const szOID_OIWSEC
: &'
static str = "1.3.14.3.2";
1002 pub const szOID_OIWSEC_md4RSA
: &'
static str = "1.3.14.3.2.2";
1003 pub const szOID_OIWSEC_md5RSA
: &'
static str = "1.3.14.3.2.3";
1004 pub const szOID_OIWSEC_md4RSA2
: &'
static str = "1.3.14.3.2.4";
1005 pub const szOID_OIWSEC_desECB
: &'
static str = "1.3.14.3.2.6";
1006 pub const szOID_OIWSEC_desCBC
: &'
static str = "1.3.14.3.2.7";
1007 pub const szOID_OIWSEC_desOFB
: &'
static str = "1.3.14.3.2.8";
1008 pub const szOID_OIWSEC_desCFB
: &'
static str = "1.3.14.3.2.9";
1009 pub const szOID_OIWSEC_desMAC
: &'
static str = "1.3.14.3.2.10";
1010 pub const szOID_OIWSEC_rsaSign
: &'
static str = "1.3.14.3.2.11";
1011 pub const szOID_OIWSEC_dsa
: &'
static str = "1.3.14.3.2.12";
1012 pub const szOID_OIWSEC_shaDSA
: &'
static str = "1.3.14.3.2.13";
1013 pub const szOID_OIWSEC_mdc2RSA
: &'
static str = "1.3.14.3.2.14";
1014 pub const szOID_OIWSEC_shaRSA
: &'
static str = "1.3.14.3.2.15";
1015 pub const szOID_OIWSEC_dhCommMod
: &'
static str = "1.3.14.3.2.16";
1016 pub const szOID_OIWSEC_desEDE
: &'
static str = "1.3.14.3.2.17";
1017 pub const szOID_OIWSEC_sha
: &'
static str = "1.3.14.3.2.18";
1018 pub const szOID_OIWSEC_mdc2
: &'
static str = "1.3.14.3.2.19";
1019 pub const szOID_OIWSEC_dsaComm
: &'
static str = "1.3.14.3.2.20";
1020 pub const szOID_OIWSEC_dsaCommSHA
: &'
static str = "1.3.14.3.2.21";
1021 pub const szOID_OIWSEC_rsaXchg
: &'
static str = "1.3.14.3.2.22";
1022 pub const szOID_OIWSEC_keyHashSeal
: &'
static str = "1.3.14.3.2.23";
1023 pub const szOID_OIWSEC_md2RSASign
: &'
static str = "1.3.14.3.2.24";
1024 pub const szOID_OIWSEC_md5RSASign
: &'
static str = "1.3.14.3.2.25";
1025 pub const szOID_OIWSEC_sha1
: &'
static str = "1.3.14.3.2.26";
1026 pub const szOID_OIWSEC_dsaSHA1
: &'
static str = "1.3.14.3.2.27";
1027 pub const szOID_OIWSEC_dsaCommSHA1
: &'
static str = "1.3.14.3.2.28";
1028 pub const szOID_OIWSEC_sha1RSASign
: &'
static str = "1.3.14.3.2.29";
1029 pub const szOID_OIWDIR
: &'
static str = "1.3.14.7.2";
1030 pub const szOID_OIWDIR_CRPT
: &'
static str = "1.3.14.7.2.1";
1031 pub const szOID_OIWDIR_HASH
: &'
static str = "1.3.14.7.2.2";
1032 pub const szOID_OIWDIR_SIGN
: &'
static str = "1.3.14.7.2.3";
1033 pub const szOID_OIWDIR_md2
: &'
static str = "1.3.14.7.2.2.1";
1034 pub const szOID_OIWDIR_md2RSA
: &'
static str = "1.3.14.7.2.3.1";
1035 pub const szOID_INFOSEC
: &'
static str = "2.16.840.1.101.2.1";
1036 pub const szOID_INFOSEC_sdnsSignature
: &'
static str = "2.16.840.1.101.2.1.1.1";
1037 pub const szOID_INFOSEC_mosaicSignature
: &'
static str = "2.16.840.1.101.2.1.1.2";
1038 pub const szOID_INFOSEC_sdnsConfidentiality
: &'
static str = "2.16.840.1.101.2.1.1.3";
1039 pub const szOID_INFOSEC_mosaicConfidentiality
: &'
static str = "2.16.840.1.101.2.1.1.4";
1040 pub const szOID_INFOSEC_sdnsIntegrity
: &'
static str = "2.16.840.1.101.2.1.1.5";
1041 pub const szOID_INFOSEC_mosaicIntegrity
: &'
static str = "2.16.840.1.101.2.1.1.6";
1042 pub const szOID_INFOSEC_sdnsTokenProtection
: &'
static str = "2.16.840.1.101.2.1.1.7";
1043 pub const szOID_INFOSEC_mosaicTokenProtection
: &'
static str = "2.16.840.1.101.2.1.1.8";
1044 pub const szOID_INFOSEC_sdnsKeyManagement
: &'
static str = "2.16.840.1.101.2.1.1.9";
1045 pub const szOID_INFOSEC_mosaicKeyManagement
: &'
static str = "2.16.840.1.101.2.1.1.10";
1046 pub const szOID_INFOSEC_sdnsKMandSig
: &'
static str = "2.16.840.1.101.2.1.1.11";
1047 pub const szOID_INFOSEC_mosaicKMandSig
: &'
static str = "2.16.840.1.101.2.1.1.12";
1048 pub const szOID_INFOSEC_SuiteASignature
: &'
static str = "2.16.840.1.101.2.1.1.13";
1049 pub const szOID_INFOSEC_SuiteAConfidentiality
: &'
static str = "2.16.840.1.101.2.1.1.14";
1050 pub const szOID_INFOSEC_SuiteAIntegrity
: &'
static str = "2.16.840.1.101.2.1.1.15";
1051 pub const szOID_INFOSEC_SuiteATokenProtection
: &'
static str = "2.16.840.1.101.2.1.1.16";
1052 pub const szOID_INFOSEC_SuiteAKeyManagement
: &'
static str = "2.16.840.1.101.2.1.1.17";
1053 pub const szOID_INFOSEC_SuiteAKMandSig
: &'
static str = "2.16.840.1.101.2.1.1.18";
1054 pub const szOID_INFOSEC_mosaicUpdatedSig
: &'
static str = "2.16.840.1.101.2.1.1.19";
1055 pub const szOID_INFOSEC_mosaicKMandUpdSig
: &'
static str = "2.16.840.1.101.2.1.1.20";
1056 pub const szOID_INFOSEC_mosaicUpdatedInteg
: &'
static str = "2.16.840.1.101.2.1.1.21";
1057 pub const szOID_NIST_sha256
: &'
static str = "2.16.840.1.101.3.4.2.1";
1058 pub const szOID_NIST_sha384
: &'
static str = "2.16.840.1.101.3.4.2.2";
1059 pub const szOID_NIST_sha512
: &'
static str = "2.16.840.1.101.3.4.2.3";
1060 STRUCT
!{struct CRYPT_OBJID_TABLE
{
1064 pub type PCRYPT_OBJID_TABLE
= *mut CRYPT_OBJID_TABLE
;
1065 STRUCT
!{struct CRYPT_HASH_INFO
{
1066 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1067 Hash
: CRYPT_HASH_BLOB
,
1069 pub type PCRYPT_HASH_INFO
= *mut CRYPT_HASH_INFO
;
1070 STRUCT
!{struct CERT_EXTENSION
{
1073 Value
: CRYPT_OBJID_BLOB
,
1075 pub type PCERT_EXTENSION
= *mut CERT_EXTENSION
;
1076 pub type PCCERT_EXTENSION
= *const CERT_EXTENSION
;
1077 STRUCT
!{struct CRYPT_ATTRIBUTE_TYPE_VALUE
{
1079 Value
: CRYPT_OBJID_BLOB
,
1081 pub type PCRYPT_ATTRIBUTE_TYPE_VALUE
= *mut CRYPT_ATTRIBUTE_TYPE_VALUE
;
1082 STRUCT
!{struct CRYPT_ATTRIBUTE
{
1085 rgValue
: PCRYPT_ATTR_BLOB
,
1087 pub type PCRYPT_ATTRIBUTE
= *mut CRYPT_ATTRIBUTE
;
1088 STRUCT
!{struct CRYPT_ATTRIBUTES
{
1090 rgAttr
: PCRYPT_ATTRIBUTE
,
1092 pub type PCRYPT_ATTRIBUTES
= *mut CRYPT_ATTRIBUTES
;
1093 STRUCT
!{struct CERT_RDN_ATTR
{
1096 Value
: CERT_RDN_VALUE_BLOB
,
1098 pub type PCERT_RDN_ATTR
= *mut CERT_RDN_ATTR
;
1099 pub const szOID_COMMON_NAME
: &'
static str = "2.5.4.3";
1100 pub const szOID_SUR_NAME
: &'
static str = "2.5.4.4";
1101 pub const szOID_DEVICE_SERIAL_NUMBER
: &'
static str = "2.5.4.5";
1102 pub const szOID_COUNTRY_NAME
: &'
static str = "2.5.4.6";
1103 pub const szOID_LOCALITY_NAME
: &'
static str = "2.5.4.7";
1104 pub const szOID_STATE_OR_PROVINCE_NAME
: &'
static str = "2.5.4.8";
1105 pub const szOID_STREET_ADDRESS
: &'
static str = "2.5.4.9";
1106 pub const szOID_ORGANIZATION_NAME
: &'
static str = "2.5.4.10";
1107 pub const szOID_ORGANIZATIONAL_UNIT_NAME
: &'
static str = "2.5.4.11";
1108 pub const szOID_TITLE
: &'
static str = "2.5.4.12";
1109 pub const szOID_DESCRIPTION
: &'
static str = "2.5.4.13";
1110 pub const szOID_SEARCH_GUIDE
: &'
static str = "2.5.4.14";
1111 pub const szOID_BUSINESS_CATEGORY
: &'
static str = "2.5.4.15";
1112 pub const szOID_POSTAL_ADDRESS
: &'
static str = "2.5.4.16";
1113 pub const szOID_POSTAL_CODE
: &'
static str = "2.5.4.17";
1114 pub const szOID_POST_OFFICE_BOX
: &'
static str = "2.5.4.18";
1115 pub const szOID_PHYSICAL_DELIVERY_OFFICE_NAME
: &'
static str = "2.5.4.19";
1116 pub const szOID_TELEPHONE_NUMBER
: &'
static str = "2.5.4.20";
1117 pub const szOID_TELEX_NUMBER
: &'
static str = "2.5.4.21";
1118 pub const szOID_TELETEXT_TERMINAL_IDENTIFIER
: &'
static str = "2.5.4.22";
1119 pub const szOID_FACSIMILE_TELEPHONE_NUMBER
: &'
static str = "2.5.4.23";
1120 pub const szOID_X21_ADDRESS
: &'
static str = "2.5.4.24";
1121 pub const szOID_INTERNATIONAL_ISDN_NUMBER
: &'
static str = "2.5.4.25";
1122 pub const szOID_REGISTERED_ADDRESS
: &'
static str = "2.5.4.26";
1123 pub const szOID_DESTINATION_INDICATOR
: &'
static str = "2.5.4.27";
1124 pub const szOID_PREFERRED_DELIVERY_METHOD
: &'
static str = "2.5.4.28";
1125 pub const szOID_PRESENTATION_ADDRESS
: &'
static str = "2.5.4.29";
1126 pub const szOID_SUPPORTED_APPLICATION_CONTEXT
: &'
static str = "2.5.4.30";
1127 pub const szOID_MEMBER
: &'
static str = "2.5.4.31";
1128 pub const szOID_OWNER
: &'
static str = "2.5.4.32";
1129 pub const szOID_ROLE_OCCUPANT
: &'
static str = "2.5.4.33";
1130 pub const szOID_SEE_ALSO
: &'
static str = "2.5.4.34";
1131 pub const szOID_USER_PASSWORD
: &'
static str = "2.5.4.35";
1132 pub const szOID_USER_CERTIFICATE
: &'
static str = "2.5.4.36";
1133 pub const szOID_CA_CERTIFICATE
: &'
static str = "2.5.4.37";
1134 pub const szOID_AUTHORITY_REVOCATION_LIST
: &'
static str = "2.5.4.38";
1135 pub const szOID_CERTIFICATE_REVOCATION_LIST
: &'
static str = "2.5.4.39";
1136 pub const szOID_CROSS_CERTIFICATE_PAIR
: &'
static str = "2.5.4.40";
1137 pub const szOID_GIVEN_NAME
: &'
static str = "2.5.4.42";
1138 pub const szOID_INITIALS
: &'
static str = "2.5.4.43";
1139 pub const szOID_DN_QUALIFIER
: &'
static str = "2.5.4.46";
1140 pub const szOID_DOMAIN_COMPONENT
: &'
static str = "0.9.2342.19200300.100.1.25";
1141 pub const szOID_PKCS_12_FRIENDLY_NAME_ATTR
: &'
static str = "1.2.840.113549.1.9.20";
1142 pub const szOID_PKCS_12_LOCAL_KEY_ID
: &'
static str = "1.2.840.113549.1.9.21";
1143 pub const szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR
: &'
static str = "1.3.6.1.4.1.311.17.1";
1144 pub const szOID_LOCAL_MACHINE_KEYSET
: &'
static str = "1.3.6.1.4.1.311.17.2";
1145 pub const szOID_PKCS_12_EXTENDED_ATTRIBUTES
: &'
static str = "1.3.6.1.4.1.311.17.3";
1146 pub const szOID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID
: &'
static str
1147 = "1.3.6.1.4.1.311.17.4";
1148 pub const szOID_KEYID_RDN
: &'
static str = "1.3.6.1.4.1.311.10.7.1";
1149 pub const szOID_EV_RDN_LOCALE
: &'
static str = "1.3.6.1.4.1.311.60.2.1.1";
1150 pub const szOID_EV_RDN_STATE_OR_PROVINCE
: &'
static str = "1.3.6.1.4.1.311.60.2.1.2";
1151 pub const szOID_EV_RDN_COUNTRY
: &'
static str = "1.3.6.1.4.1.311.60.2.1.3";
1152 pub const CERT_RDN_ANY_TYPE
: DWORD
= 0;
1153 pub const CERT_RDN_ENCODED_BLOB
: DWORD
= 1;
1154 pub const CERT_RDN_OCTET_STRING
: DWORD
= 2;
1155 pub const CERT_RDN_NUMERIC_STRING
: DWORD
= 3;
1156 pub const CERT_RDN_PRINTABLE_STRING
: DWORD
= 4;
1157 pub const CERT_RDN_TELETEX_STRING
: DWORD
= 5;
1158 pub const CERT_RDN_T61_STRING
: DWORD
= 5;
1159 pub const CERT_RDN_VIDEOTEX_STRING
: DWORD
= 6;
1160 pub const CERT_RDN_IA5_STRING
: DWORD
= 7;
1161 pub const CERT_RDN_GRAPHIC_STRING
: DWORD
= 8;
1162 pub const CERT_RDN_VISIBLE_STRING
: DWORD
= 9;
1163 pub const CERT_RDN_ISO646_STRING
: DWORD
= 9;
1164 pub const CERT_RDN_GENERAL_STRING
: DWORD
= 10;
1165 pub const CERT_RDN_UNIVERSAL_STRING
: DWORD
= 11;
1166 pub const CERT_RDN_INT4_STRING
: DWORD
= 11;
1167 pub const CERT_RDN_BMP_STRING
: DWORD
= 12;
1168 pub const CERT_RDN_UNICODE_STRING
: DWORD
= 12;
1169 pub const CERT_RDN_UTF8_STRING
: DWORD
= 13;
1170 pub const CERT_RDN_TYPE_MASK
: DWORD
= 0x000000FF;
1171 pub const CERT_RDN_FLAGS_MASK
: DWORD
= 0xFF000000;
1172 pub const CERT_RDN_ENABLE_T61_UNICODE_FLAG
: DWORD
= 0x80000000;
1173 pub const CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
: DWORD
= 0x20000000;
1174 pub const CERT_RDN_FORCE_UTF8_UNICODE_FLAG
: DWORD
= 0x10000000;
1175 pub const CERT_RDN_DISABLE_CHECK_TYPE_FLAG
: DWORD
= 0x40000000;
1176 pub const CERT_RDN_DISABLE_IE4_UTF8_FLAG
: DWORD
= 0x01000000;
1177 pub const CERT_RDN_ENABLE_PUNYCODE_FLAG
: DWORD
= 0x02000000;
1179 pub fn IS_CERT_RDN_CHAR_STRING(X
: DWORD
) -> bool
{
1180 (X
& CERT_RDN_TYPE_MASK
) >= CERT_RDN_NUMERIC_STRING
1182 STRUCT
!{struct CERT_RDN
{
1184 rgRDNAttr
: PCERT_RDN_ATTR
,
1186 pub type PCERT_RDN
= *mut CERT_RDN
;
1187 STRUCT
!{struct CERT_NAME_INFO
{
1191 pub type PCERT_NAME_INFO
= *mut CERT_NAME_INFO
;
1192 STRUCT
!{struct CERT_NAME_VALUE
{
1194 Value
: CERT_RDN_VALUE_BLOB
,
1196 pub type PCERT_NAME_VALUE
= *mut CERT_NAME_VALUE
;
1197 STRUCT
!{struct CERT_PUBLIC_KEY_INFO
{
1198 Algorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1199 PublicKey
: CRYPT_BIT_BLOB
,
1201 pub type PCERT_PUBLIC_KEY_INFO
= *mut CERT_PUBLIC_KEY_INFO
;
1202 pub const CERT_RSA_PUBLIC_KEY_OBJID
: &'
static str = szOID_RSA_RSA
;
1203 pub const CERT_DEFAULT_OID_PUBLIC_KEY_SIGN
: &'
static str = szOID_RSA_RSA
;
1204 pub const CERT_DEFAULT_OID_PUBLIC_KEY_XCHG
: &'
static str = szOID_RSA_RSA
;
1205 STRUCT
!{struct CRYPT_ECC_PRIVATE_KEY_INFO
{
1207 PrivateKey
: CRYPT_DER_BLOB
,
1209 PublicKey
: CRYPT_BIT_BLOB
,
1211 pub type PCRYPT_ECC_PRIVATE_KEY_INFO
= *mut CRYPT_ECC_PRIVATE_KEY_INFO
;
1212 pub const CRYPT_ECC_PRIVATE_KEY_INFO_v1
: DWORD
= 1;
1213 STRUCT
!{struct CRYPT_PRIVATE_KEY_INFO
{
1215 Algorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1216 PrivateKey
: CRYPT_DER_BLOB
,
1217 pAttributes
: PCRYPT_ATTRIBUTES
,
1219 pub type PCRYPT_PRIVATE_KEY_INFO
= *mut CRYPT_PRIVATE_KEY_INFO
;
1220 STRUCT
!{struct CRYPT_ENCRYPTED_PRIVATE_KEY_INFO
{
1221 EncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1222 EncryptedPrivateKey
: CRYPT_DATA_BLOB
,
1224 pub type PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO
= *mut CRYPT_ENCRYPTED_PRIVATE_KEY_INFO
;
1225 FN
!{stdcall
PCRYPT_DECRYPT_PRIVATE_KEY_FUNC(
1226 Algorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1227 EncryptedPrivateKey
: CRYPT_DATA_BLOB
,
1228 pbClearTextKey
: *mut BYTE
,
1229 pcbClearTextKey
: *mut DWORD
,
1230 pVoidDecryptFunc
: LPVOID
,
1232 FN
!{stdcall
PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC(
1233 Algorithm
: *mut CRYPT_ALGORITHM_IDENTIFIER
,
1234 pClearTextPrivateKey
: *mut CRYPT_DATA_BLOB
,
1235 pbEncryptedKey
: *mut BYTE
,
1236 pcbEncryptedKey
: *mut DWORD
,
1237 pVoidEncryptFunc
: LPVOID
,
1239 FN
!{stdcall
PCRYPT_RESOLVE_HCRYPTPROV_FUNC(
1240 pPrivateKeyInfo
: *mut CRYPT_PRIVATE_KEY_INFO
,
1241 phCryptProv
: *mut HCRYPTPROV
,
1242 pVoidResolveFunc
: LPVOID
,
1244 STRUCT
!{struct CRYPT_PKCS8_IMPORT_PARAMS
{
1245 PrivateKey
: CRYPT_DIGEST_BLOB
,
1246 pResolvehCryptProvFunc
: PCRYPT_RESOLVE_HCRYPTPROV_FUNC
,
1247 pVoidResolveFunc
: LPVOID
,
1248 pDecryptPrivateKeyFunc
: PCRYPT_DECRYPT_PRIVATE_KEY_FUNC
,
1249 pVoidDecryptFunc
: LPVOID
,
1251 pub type PCRYPT_PKCS8_IMPORT_PARAMS
= *mut CRYPT_PKCS8_IMPORT_PARAMS
;
1252 pub type CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS
= CRYPT_PKCS8_IMPORT_PARAMS
;
1253 pub type PPCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS
= *mut CRYPT_PKCS8_IMPORT_PARAMS
;
1254 STRUCT
!{struct CRYPT_PKCS8_EXPORT_PARAMS
{
1255 hCryptProv
: HCRYPTPROV
,
1257 pszPrivateKeyObjId
: LPSTR
,
1258 pEncryptPrivateKeyFunc
: PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC
,
1259 pVoidEncryptFunc
: LPVOID
,
1261 pub type PCRYPT_PKCS8_EXPORT_PARAMS
= *mut CRYPT_PKCS8_EXPORT_PARAMS
;
1262 STRUCT
!{struct CERT_INFO
{
1264 SerialNumber
: CRYPT_INTEGER_BLOB
,
1265 SignatureAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1266 Issuer
: CERT_NAME_BLOB
,
1267 NotBefore
: FILETIME
,
1269 Subject
: CERT_NAME_BLOB
,
1270 SubjectPublicKeyInfo
: CERT_PUBLIC_KEY_INFO
,
1271 IssuerUniqueId
: CRYPT_BIT_BLOB
,
1272 SubjectUniqueId
: CRYPT_BIT_BLOB
,
1274 rgExtension
: PCERT_EXTENSION
,
1276 pub type PCERT_INFO
= *mut CERT_INFO
;
1277 pub const CERT_V1
: DWORD
= 0;
1278 pub const CERT_V2
: DWORD
= 1;
1279 pub const CERT_V3
: DWORD
= 2;
1280 pub const CERT_INFO_VERSION_FLAG
: DWORD
= 1;
1281 pub const CERT_INFO_SERIAL_NUMBER_FLAG
: DWORD
= 2;
1282 pub const CERT_INFO_SIGNATURE_ALGORITHM_FLAG
: DWORD
= 3;
1283 pub const CERT_INFO_ISSUER_FLAG
: DWORD
= 4;
1284 pub const CERT_INFO_NOT_BEFORE_FLAG
: DWORD
= 5;
1285 pub const CERT_INFO_NOT_AFTER_FLAG
: DWORD
= 6;
1286 pub const CERT_INFO_SUBJECT_FLAG
: DWORD
= 7;
1287 pub const CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG
: DWORD
= 8;
1288 pub const CERT_INFO_ISSUER_UNIQUE_ID_FLAG
: DWORD
= 9;
1289 pub const CERT_INFO_SUBJECT_UNIQUE_ID_FLAG
: DWORD
= 10;
1290 pub const CERT_INFO_EXTENSION_FLAG
: DWORD
= 11;
1291 STRUCT
!{struct CRL_ENTRY
{
1292 SerialNumber
: CRYPT_INTEGER_BLOB
,
1293 RevocationDate
: FILETIME
,
1295 rgExtension
: PCERT_EXTENSION
,
1297 pub type PCRL_ENTRY
= *mut CRL_ENTRY
;
1298 STRUCT
!{struct CRL_INFO
{
1300 SignatureAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1301 Issuer
: CERT_NAME_BLOB
,
1302 ThisUpdate
: FILETIME
,
1303 NextUpdate
: FILETIME
,
1305 rgCRLEntry
: PCRL_ENTRY
,
1307 rgExtension
: PCERT_EXTENSION
,
1309 pub type PCRL_INFO
= *mut CRL_INFO
;
1310 pub const CRL_V1
: DWORD
= 0;
1311 pub const CRL_V2
: DWORD
= 1;
1312 pub const CERT_BUNDLE_CERTIFICATE
: DWORD
= 0;
1313 pub const CERT_BUNDLE_CRL
: DWORD
= 1;
1314 STRUCT
!{struct CERT_OR_CRL_BLOB
{
1317 pbEncoded
: *mut BYTE
,
1319 pub type PCERT_OR_CRL_BLOB
= *mut CERT_OR_CRL_BLOB
;
1320 STRUCT
!{struct CERT_OR_CRL_BUNDLE
{
1322 rgItem
: PCERT_OR_CRL_BLOB
,
1324 pub type PCERT_OR_CRL_BUNDLE
= *mut CERT_OR_CRL_BUNDLE
;
1325 STRUCT
!{struct CERT_REQUEST_INFO
{
1327 Subject
: CERT_NAME_BLOB
,
1328 SubjectPublicKeyInfo
: CERT_PUBLIC_KEY_INFO
,
1330 rgAttribute
: PCRYPT_ATTRIBUTE
,
1332 pub type PCERT_REQUEST_INFO
= *mut CERT_REQUEST_INFO
;
1333 pub const CERT_REQUEST_V1
: DWORD
= 0;
1334 STRUCT
!{struct CERT_KEYGEN_REQUEST_INFO
{
1336 SubjectPublicKeyInfo
: CERT_PUBLIC_KEY_INFO
,
1337 pwszChallengeString
: LPWSTR
,
1339 pub type PCERT_KEYGEN_REQUEST_INFO
= *mut CERT_KEYGEN_REQUEST_INFO
;
1340 pub const CERT_KEYGEN_REQUEST_V1
: DWORD
= 0;
1341 STRUCT
!{struct CERT_SIGNED_CONTENT_INFO
{
1342 ToBeSigned
: CRYPT_DER_BLOB
,
1343 SignatureAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1344 Signature
: CRYPT_BIT_BLOB
,
1346 pub type PCERT_SIGNED_CONTENT_INFO
= *mut CERT_SIGNED_CONTENT_INFO
;
1347 STRUCT
!{struct CTL_USAGE
{
1348 cUsageIdentifier
: DWORD
,
1349 rgpszUsageIdentifier
: *mut LPSTR
,
1351 pub type PCTL_USAGE
= *mut CTL_USAGE
;
1352 pub type CERT_ENHKEY_USAGE
= CTL_USAGE
;
1353 pub type PCERT_ENHKEY_USAGE
= *mut CERT_ENHKEY_USAGE
;
1354 pub type PCCTL_USAGE
= *const CTL_USAGE
;
1355 pub type PCCERT_ENHKEY_USAGE
= *const CERT_ENHKEY_USAGE
;
1356 STRUCT
!{struct CTL_ENTRY
{
1357 SubjectIdentifier
: CRYPT_DATA_BLOB
,
1359 rgAttribute
: PCRYPT_ATTRIBUTE
,
1361 pub type PCTL_ENTRY
= *mut CTL_ENTRY
;
1362 STRUCT
!{struct CTL_INFO
{
1364 SubjectUsage
: CTL_USAGE
,
1365 ListIdentifier
: CRYPT_DATA_BLOB
,
1366 SequenceNumber
: CRYPT_INTEGER_BLOB
,
1367 ThisUpdate
: FILETIME
,
1368 NextUpdate
: FILETIME
,
1369 SubjectAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
1371 rgCTLEntry
: PCTL_ENTRY
,
1373 rgExtension
: PCERT_EXTENSION
,
1375 pub type PCTL_INFO
= *mut CTL_INFO
;
1376 pub const CTL_V1
: DWORD
= 0;
1377 STRUCT
!{struct CRYPT_TIME_STAMP_REQUEST_INFO
{
1378 pszTimeStampAlgorithm
: LPSTR
,
1379 pszContentType
: LPSTR
,
1380 Content
: CRYPT_OBJID_BLOB
,
1382 rgAttribute
: PCRYPT_ATTRIBUTE
,
1384 pub type PCRYPT_TIME_STAMP_REQUEST_INFO
= *mut CRYPT_TIME_STAMP_REQUEST_INFO
;
1385 STRUCT
!{struct CRYPT_ENROLLMENT_NAME_VALUE_PAIR
{
1389 pub type PCRYPT_ENROLLMENT_NAME_VALUE_PAIR
= *mut CRYPT_ENROLLMENT_NAME_VALUE_PAIR
;
1390 STRUCT
!{struct CRYPT_CSP_PROVIDER
{
1392 pwszProviderName
: LPWSTR
,
1393 Signature
: CRYPT_BIT_BLOB
,
1395 pub type PCRYPT_CSP_PROVIDER
= *mut CRYPT_CSP_PROVIDER
;
1396 pub const CERT_ENCODING_TYPE_MASK
: DWORD
= 0x0000FFFF;
1397 pub const CMSG_ENCODING_TYPE_MASK
: DWORD
= 0xFFFF0000;
1399 pub fn GET_CERT_ENCODING_TYPE(X
: DWORD
) -> DWORD
{
1400 X
& CERT_ENCODING_TYPE_MASK
1403 pub fn GET_CMSG_ENCODING_TYPE(X
: DWORD
) -> DWORD
{
1404 X
& CMSG_ENCODING_TYPE_MASK
1406 pub const CRYPT_ASN_ENCODING
: DWORD
= 0x00000001;
1407 pub const CRYPT_NDR_ENCODING
: DWORD
= 0x00000002;
1408 pub const X509_ASN_ENCODING
: DWORD
= 0x00000001;
1409 pub const X509_NDR_ENCODING
: DWORD
= 0x00000002;
1410 pub const PKCS_7_ASN_ENCODING
: DWORD
= 0x00010000;
1411 pub const PKCS_7_NDR_ENCODING
: DWORD
= 0x00020000;
1413 pub fn CryptFormatObject(
1414 dwCertEncodingType
: DWORD
,
1415 dwFormatType
: DWORD
,
1416 dwFormatStrType
: DWORD
,
1417 pFormatStruct
: *mut c_void
,
1418 lpszStructType
: LPCSTR
,
1419 pbEncoded
: *const BYTE
,
1421 pbFormat
: *mut c_void
,
1422 pcbFormat
: *mut DWORD
,
1425 pub const CRYPT_FORMAT_STR_MULTI_LINE
: DWORD
= 0x0001;
1426 pub const CRYPT_FORMAT_STR_NO_HEX
: DWORD
= 0x0010;
1427 pub const CRYPT_FORMAT_SIMPLE
: DWORD
= 0x0001;
1428 pub const CRYPT_FORMAT_X509
: DWORD
= 0x0002;
1429 pub const CRYPT_FORMAT_OID
: DWORD
= 0x0004;
1430 pub const CRYPT_FORMAT_RDN_SEMICOLON
: DWORD
= 0x0100;
1431 pub const CRYPT_FORMAT_RDN_CRLF
: DWORD
= 0x0200;
1432 pub const CRYPT_FORMAT_RDN_UNQUOTE
: DWORD
= 0x0400;
1433 pub const CRYPT_FORMAT_RDN_REVERSE
: DWORD
= 0x0800;
1434 pub const CRYPT_FORMAT_COMMA
: DWORD
= 0x1000;
1435 pub const CRYPT_FORMAT_SEMICOLON
: DWORD
= CRYPT_FORMAT_RDN_SEMICOLON
;
1436 pub const CRYPT_FORMAT_CRLF
: DWORD
= CRYPT_FORMAT_RDN_CRLF
;
1437 FN
!{stdcall
PFN_CRYPT_ALLOC(
1440 FN
!{stdcall
PFN_CRYPT_FREE(
1443 STRUCT
!{struct CRYPT_ENCODE_PARA
{
1445 pfnAlloc
: PFN_CRYPT_ALLOC
,
1446 pfnFree
: PFN_CRYPT_FREE
,
1448 pub type PCRYPT_ENCODE_PARA
= *mut CRYPT_ENCODE_PARA
;
1450 pub fn CryptEncodeObjectEx(
1451 dwCertEncodingType
: DWORD
,
1452 lpszStructType
: LPCSTR
,
1453 pvStructInfo
: *const c_void
,
1455 pEncodePara
: PCRYPT_ENCODE_PARA
,
1456 pvEncoded
: *mut c_void
,
1457 pcbEncoded
: *mut DWORD
,
1459 pub fn CryptEncodeObject(
1460 dwCertEncodingType
: DWORD
,
1461 lpszStructType
: LPCSTR
,
1462 pvStructInfo
: *const c_void
,
1463 pbEncoded
: *mut BYTE
,
1464 pcbEncoded
: *mut DWORD
,
1467 pub const CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG
: DWORD
= 0x8;
1468 pub const CRYPT_ENCODE_ALLOC_FLAG
: DWORD
= 0x8000;
1469 pub const CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG
: DWORD
1470 = CERT_RDN_ENABLE_T61_UNICODE_FLAG
;
1471 pub const CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG
: DWORD
1472 = CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
;
1473 pub const CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG
: DWORD
1474 = CERT_RDN_FORCE_UTF8_UNICODE_FLAG
;
1475 pub const CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG
: DWORD
1476 = CERT_RDN_DISABLE_CHECK_TYPE_FLAG
;
1477 pub const CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG
: DWORD
= 0x10000;
1478 pub const CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG
: DWORD
= 0x20000;
1479 pub const CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG
: DWORD
= 0x40000;
1480 pub const CRYPT_ENCODE_ENABLE_IA5CONVERSION_FLAG
: DWORD
= CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG
1481 | CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG
;
1482 STRUCT
!{struct CRYPT_DECODE_PARA
{
1484 pfnAlloc
: PFN_CRYPT_ALLOC
,
1485 pfnFree
: PFN_CRYPT_FREE
,
1487 pub type PCRYPT_DECODE_PARA
= *mut CRYPT_DECODE_PARA
;
1489 pub fn CryptDecodeObjectEx(
1490 dwCertEncodingType
: DWORD
,
1491 lpszStructType
: LPCSTR
,
1492 pbEncoded
: *const BYTE
,
1495 pDecodePara
: PCRYPT_DECODE_PARA
,
1496 pvStructInfo
: *mut c_void
,
1497 pcbStructInfo
: *mut DWORD
,
1499 pub fn CryptDecodeObject(
1500 dwCertEncodingType
: DWORD
,
1501 lpszStructType
: LPCSTR
,
1502 pbEncoded
: *const BYTE
,
1505 pvStructInfo
: *mut c_void
,
1506 pcbStructInfo
: *mut DWORD
,
1509 pub const CRYPT_DECODE_NOCOPY_FLAG
: DWORD
= 0x1;
1510 pub const CRYPT_DECODE_TO_BE_SIGNED_FLAG
: DWORD
= 0x2;
1511 pub const CRYPT_DECODE_SHARE_OID_STRING_FLAG
: DWORD
= 0x4;
1512 pub const CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG
: DWORD
= 0x8;
1513 pub const CRYPT_DECODE_ALLOC_FLAG
: DWORD
= 0x8000;
1514 pub const CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG
: DWORD
1515 = CERT_RDN_DISABLE_IE4_UTF8_FLAG
;
1516 pub const CRYPT_DECODE_ENABLE_PUNYCODE_FLAG
: DWORD
= 0x02000000;
1517 pub const CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG
: DWORD
= 0x04000000;
1518 pub const CRYPT_DECODE_ENABLE_IA5CONVERSION_FLAG
: DWORD
= CRYPT_DECODE_ENABLE_PUNYCODE_FLAG
1519 | CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG
;
1520 pub const CRYPT_ENCODE_DECODE_NONE
: LPCSTR
= 0 as LPCSTR
;
1521 pub const X509_CERT
: LPCSTR
= 1 as LPCSTR
;
1522 pub const X509_CERT_TO_BE_SIGNED
: LPCSTR
= 2 as LPCSTR
;
1523 pub const X509_CERT_CRL_TO_BE_SIGNED
: LPCSTR
= 3 as LPCSTR
;
1524 pub const X509_CERT_REQUEST_TO_BE_SIGNED
: LPCSTR
= 4 as LPCSTR
;
1525 pub const X509_EXTENSIONS
: LPCSTR
= 5 as LPCSTR
;
1526 pub const X509_NAME_VALUE
: LPCSTR
= 6 as LPCSTR
;
1527 pub const X509_NAME
: LPCSTR
= 7 as LPCSTR
;
1528 pub const X509_PUBLIC_KEY_INFO
: LPCSTR
= 8 as LPCSTR
;
1529 pub const X509_AUTHORITY_KEY_ID
: LPCSTR
= 9 as LPCSTR
;
1530 pub const X509_KEY_ATTRIBUTES
: LPCSTR
= 10 as LPCSTR
;
1531 pub const X509_KEY_USAGE_RESTRICTION
: LPCSTR
= 11 as LPCSTR
;
1532 pub const X509_ALTERNATE_NAME
: LPCSTR
= 12 as LPCSTR
;
1533 pub const X509_BASIC_CONSTRAINTS
: LPCSTR
= 13 as LPCSTR
;
1534 pub const X509_KEY_USAGE
: LPCSTR
= 14 as LPCSTR
;
1535 pub const X509_BASIC_CONSTRAINTS2
: LPCSTR
= 15 as LPCSTR
;
1536 pub const X509_CERT_POLICIES
: LPCSTR
= 16 as LPCSTR
;
1537 pub const PKCS_UTC_TIME
: LPCSTR
= 17 as LPCSTR
;
1538 pub const PKCS_TIME_REQUEST
: LPCSTR
= 18 as LPCSTR
;
1539 pub const RSA_CSP_PUBLICKEYBLOB
: LPCSTR
= 19 as LPCSTR
;
1540 pub const X509_UNICODE_NAME
: LPCSTR
= 20 as LPCSTR
;
1541 pub const X509_KEYGEN_REQUEST_TO_BE_SIGNED
: LPCSTR
= 21 as LPCSTR
;
1542 pub const PKCS_ATTRIBUTE
: LPCSTR
= 22 as LPCSTR
;
1543 pub const PKCS_CONTENT_INFO_SEQUENCE_OF_ANY
: LPCSTR
= 23 as LPCSTR
;
1544 pub const X509_UNICODE_NAME_VALUE
: LPCSTR
= 24 as LPCSTR
;
1545 pub const X509_ANY_STRING
: LPCSTR
= X509_NAME_VALUE
;
1546 pub const X509_UNICODE_ANY_STRING
: LPCSTR
= X509_UNICODE_NAME_VALUE
;
1547 pub const X509_OCTET_STRING
: LPCSTR
= 25 as LPCSTR
;
1548 pub const X509_BITS
: LPCSTR
= 26 as LPCSTR
;
1549 pub const X509_INTEGER
: LPCSTR
= 27 as LPCSTR
;
1550 pub const X509_MULTI_BYTE_INTEGER
: LPCSTR
= 28 as LPCSTR
;
1551 pub const X509_ENUMERATED
: LPCSTR
= 29 as LPCSTR
;
1552 pub const X509_CHOICE_OF_TIME
: LPCSTR
= 30 as LPCSTR
;
1553 pub const X509_AUTHORITY_KEY_ID2
: LPCSTR
= 31 as LPCSTR
;
1554 pub const X509_AUTHORITY_INFO_ACCESS
: LPCSTR
= 32 as LPCSTR
;
1555 pub const X509_SUBJECT_INFO_ACCESS
: LPCSTR
= X509_AUTHORITY_INFO_ACCESS
;
1556 pub const X509_CRL_REASON_CODE
: LPCSTR
= X509_ENUMERATED
;
1557 pub const PKCS_CONTENT_INFO
: LPCSTR
= 33 as LPCSTR
;
1558 pub const X509_SEQUENCE_OF_ANY
: LPCSTR
= 34 as LPCSTR
;
1559 pub const X509_CRL_DIST_POINTS
: LPCSTR
= 35 as LPCSTR
;
1560 pub const X509_ENHANCED_KEY_USAGE
: LPCSTR
= 36 as LPCSTR
;
1561 pub const PKCS_CTL
: LPCSTR
= 37 as LPCSTR
;
1562 pub const X509_MULTI_BYTE_UINT
: LPCSTR
= 38 as LPCSTR
;
1563 pub const X509_DSS_PUBLICKEY
: LPCSTR
= X509_MULTI_BYTE_UINT
;
1564 pub const X509_DSS_PARAMETERS
: LPCSTR
= 39 as LPCSTR
;
1565 pub const X509_DSS_SIGNATURE
: LPCSTR
= 40 as LPCSTR
;
1566 pub const PKCS_RC2_CBC_PARAMETERS
: LPCSTR
= 41 as LPCSTR
;
1567 pub const PKCS_SMIME_CAPABILITIES
: LPCSTR
= 42 as LPCSTR
;
1568 pub const X509_QC_STATEMENTS_EXT
: LPCSTR
= 42 as LPCSTR
;
1569 pub const PKCS_RSA_PRIVATE_KEY
: LPCSTR
= 43 as LPCSTR
;
1570 pub const PKCS_PRIVATE_KEY_INFO
: LPCSTR
= 44 as LPCSTR
;
1571 pub const PKCS_ENCRYPTED_PRIVATE_KEY_INFO
: LPCSTR
= 45 as LPCSTR
;
1572 pub const X509_PKIX_POLICY_QUALIFIER_USERNOTICE
: LPCSTR
= 46 as LPCSTR
;
1573 pub const X509_DH_PUBLICKEY
: LPCSTR
= X509_MULTI_BYTE_UINT
;
1574 pub const X509_DH_PARAMETERS
: LPCSTR
= 47 as LPCSTR
;
1575 pub const PKCS_ATTRIBUTES
: LPCSTR
= 48 as LPCSTR
;
1576 pub const PKCS_SORTED_CTL
: LPCSTR
= 49 as LPCSTR
;
1577 pub const X509_ECC_SIGNATURE
: LPCSTR
= 47 as LPCSTR
;
1578 pub const X942_DH_PARAMETERS
: LPCSTR
= 50 as LPCSTR
;
1579 pub const X509_BITS_WITHOUT_TRAILING_ZEROES
: LPCSTR
= 51 as LPCSTR
;
1580 pub const X942_OTHER_INFO
: LPCSTR
= 52 as LPCSTR
;
1581 pub const X509_CERT_PAIR
: LPCSTR
= 53 as LPCSTR
;
1582 pub const X509_ISSUING_DIST_POINT
: LPCSTR
= 54 as LPCSTR
;
1583 pub const X509_NAME_CONSTRAINTS
: LPCSTR
= 55 as LPCSTR
;
1584 pub const X509_POLICY_MAPPINGS
: LPCSTR
= 56 as LPCSTR
;
1585 pub const X509_POLICY_CONSTRAINTS
: LPCSTR
= 57 as LPCSTR
;
1586 pub const X509_CROSS_CERT_DIST_POINTS
: LPCSTR
= 58 as LPCSTR
;
1587 pub const CMC_DATA
: LPCSTR
= 59 as LPCSTR
;
1588 pub const CMC_RESPONSE
: LPCSTR
= 60 as LPCSTR
;
1589 pub const CMC_STATUS
: LPCSTR
= 61 as LPCSTR
;
1590 pub const CMC_ADD_EXTENSIONS
: LPCSTR
= 62 as LPCSTR
;
1591 pub const CMC_ADD_ATTRIBUTES
: LPCSTR
= 63 as LPCSTR
;
1592 pub const X509_CERTIFICATE_TEMPLATE
: LPCSTR
= 64 as LPCSTR
;
1593 pub const OCSP_SIGNED_REQUEST
: LPCSTR
= 65 as LPCSTR
;
1594 pub const OCSP_REQUEST
: LPCSTR
= 66 as LPCSTR
;
1595 pub const OCSP_RESPONSE
: LPCSTR
= 67 as LPCSTR
;
1596 pub const OCSP_BASIC_SIGNED_RESPONSE
: LPCSTR
= 68 as LPCSTR
;
1597 pub const OCSP_BASIC_RESPONSE
: LPCSTR
= 69 as LPCSTR
;
1598 pub const X509_LOGOTYPE_EXT
: LPCSTR
= 70 as LPCSTR
;
1599 pub const X509_BIOMETRIC_EXT
: LPCSTR
= 71 as LPCSTR
;
1600 pub const CNG_RSA_PUBLIC_KEY_BLOB
: LPCSTR
= 72 as LPCSTR
;
1601 pub const X509_OBJECT_IDENTIFIER
: LPCSTR
= 73 as LPCSTR
;
1602 pub const X509_ALGORITHM_IDENTIFIER
: LPCSTR
= 74 as LPCSTR
;
1603 pub const PKCS_RSA_SSA_PSS_PARAMETERS
: LPCSTR
= 75 as LPCSTR
;
1604 pub const PKCS_RSAES_OAEP_PARAMETERS
: LPCSTR
= 76 as LPCSTR
;
1605 pub const ECC_CMS_SHARED_INFO
: LPCSTR
= 77 as LPCSTR
;
1606 pub const TIMESTAMP_REQUEST
: LPCSTR
= 78 as LPCSTR
;
1607 pub const TIMESTAMP_RESPONSE
: LPCSTR
= 79 as LPCSTR
;
1608 pub const TIMESTAMP_INFO
: LPCSTR
= 80 as LPCSTR
;
1609 pub const X509_CERT_BUNDLE
: LPCSTR
= 81 as LPCSTR
;
1610 pub const X509_ECC_PRIVATE_KEY
: LPCSTR
= 82 as LPCSTR
;
1611 pub const CNG_RSA_PRIVATE_KEY_BLOB
: LPCSTR
= 83 as LPCSTR
;
1612 pub const X509_SUBJECT_DIR_ATTRS
: LPCSTR
= 84 as LPCSTR
;
1613 pub const X509_ECC_PARAMETERS
: LPCSTR
= 85 as LPCSTR
;
1614 pub const PKCS7_SIGNER_INFO
: LPCSTR
= 500 as LPCSTR
;
1615 pub const CMS_SIGNER_INFO
: LPCSTR
= 501 as LPCSTR
;
1616 pub const szOID_AUTHORITY_KEY_IDENTIFIER
: &'
static str = "2.5.29.1";
1617 pub const szOID_KEY_ATTRIBUTES
: &'
static str = "2.5.29.2";
1618 pub const szOID_CERT_POLICIES_95
: &'
static str = "2.5.29.3";
1619 pub const szOID_KEY_USAGE_RESTRICTION
: &'
static str = "2.5.29.4";
1620 pub const szOID_SUBJECT_ALT_NAME
: &'
static str = "2.5.29.7";
1621 pub const szOID_ISSUER_ALT_NAME
: &'
static str = "2.5.29.8";
1622 pub const szOID_BASIC_CONSTRAINTS
: &'
static str = "2.5.29.10";
1623 pub const szOID_KEY_USAGE
: &'
static str = "2.5.29.15";
1624 pub const szOID_PRIVATEKEY_USAGE_PERIOD
: &'
static str = "2.5.29.16";
1625 pub const szOID_BASIC_CONSTRAINTS2
: &'
static str = "2.5.29.19";
1626 pub const szOID_CERT_POLICIES
: &'
static str = "2.5.29.32";
1627 pub const szOID_ANY_CERT_POLICY
: &'
static str = "2.5.29.32.0";
1628 pub const szOID_INHIBIT_ANY_POLICY
: &'
static str = "2.5.29.54";
1629 pub const szOID_AUTHORITY_KEY_IDENTIFIER2
: &'
static str = "2.5.29.35";
1630 pub const szOID_SUBJECT_KEY_IDENTIFIER
: &'
static str = "2.5.29.14";
1631 pub const szOID_SUBJECT_ALT_NAME2
: &'
static str = "2.5.29.17";
1632 pub const szOID_ISSUER_ALT_NAME2
: &'
static str = "2.5.29.18";
1633 pub const szOID_CRL_REASON_CODE
: &'
static str = "2.5.29.21";
1634 pub const szOID_REASON_CODE_HOLD
: &'
static str = "2.5.29.23";
1635 pub const szOID_CRL_DIST_POINTS
: &'
static str = "2.5.29.31";
1636 pub const szOID_ENHANCED_KEY_USAGE
: &'
static str = "2.5.29.37";
1637 pub const szOID_ANY_ENHANCED_KEY_USAGE
: &'
static str = "2.5.29.37.0";
1638 pub const szOID_CRL_NUMBER
: &'
static str = "2.5.29.20";
1639 pub const szOID_DELTA_CRL_INDICATOR
: &'
static str = "2.5.29.27";
1640 pub const szOID_ISSUING_DIST_POINT
: &'
static str = "2.5.29.28";
1641 pub const szOID_FRESHEST_CRL
: &'
static str = "2.5.29.46";
1642 pub const szOID_NAME_CONSTRAINTS
: &'
static str = "2.5.29.30";
1643 pub const szOID_POLICY_MAPPINGS
: &'
static str = "2.5.29.33";
1644 pub const szOID_LEGACY_POLICY_MAPPINGS
: &'
static str = "2.5.29.5";
1645 pub const szOID_POLICY_CONSTRAINTS
: &'
static str = "2.5.29.36";
1646 pub const szOID_RENEWAL_CERTIFICATE
: &'
static str = "1.3.6.1.4.1.311.13.1";
1647 pub const szOID_ENROLLMENT_NAME_VALUE_PAIR
: &'
static str = "1.3.6.1.4.1.311.13.2.1";
1648 pub const szOID_ENROLLMENT_CSP_PROVIDER
: &'
static str = "1.3.6.1.4.1.311.13.2.2";
1649 pub const szOID_OS_VERSION
: &'
static str = "1.3.6.1.4.1.311.13.2.3";
1650 pub const szOID_ENROLLMENT_AGENT
: &'
static str = "1.3.6.1.4.1.311.20.2.1";
1651 pub const szOID_PKIX
: &'
static str = "1.3.6.1.5.5.7";
1652 pub const szOID_PKIX_PE
: &'
static str = "1.3.6.1.5.5.7.1";
1653 pub const szOID_AUTHORITY_INFO_ACCESS
: &'
static str = "1.3.6.1.5.5.7.1.1";
1654 pub const szOID_SUBJECT_INFO_ACCESS
: &'
static str = "1.3.6.1.5.5.7.1.11";
1655 pub const szOID_BIOMETRIC_EXT
: &'
static str = "1.3.6.1.5.5.7.1.2";
1656 pub const szOID_QC_STATEMENTS_EXT
: &'
static str = "1.3.6.1.5.5.7.1.3";
1657 pub const szOID_LOGOTYPE_EXT
: &'
static str = "1.3.6.1.5.5.7.1.12";
1658 pub const szOID_TLS_FEATURES_EXT
: &'
static str = "1.3.6.1.5.5.7.1.24";
1659 pub const szOID_CERT_EXTENSIONS
: &'
static str = "1.3.6.1.4.1.311.2.1.14";
1660 pub const szOID_NEXT_UPDATE_LOCATION
: &'
static str = "1.3.6.1.4.1.311.10.2";
1661 pub const szOID_REMOVE_CERTIFICATE
: &'
static str = "1.3.6.1.4.1.311.10.8.1";
1662 pub const szOID_CROSS_CERT_DIST_POINTS
: &'
static str = "1.3.6.1.4.1.311.10.9.1";
1663 pub const szOID_CTL
: &'
static str = "1.3.6.1.4.1.311.10.1";
1664 pub const szOID_SORTED_CTL
: &'
static str = "1.3.6.1.4.1.311.10.1.1";
1665 pub const szOID_SERIALIZED
: &'
static str = "1.3.6.1.4.1.311.10.3.3.1";
1666 pub const szOID_NT_PRINCIPAL_NAME
: &'
static str = "1.3.6.1.4.1.311.20.2.3";
1667 pub const szOID_INTERNATIONALIZED_EMAIL_ADDRESS
: &'
static str = "1.3.6.1.4.1.311.20.2.4";
1668 pub const szOID_PRODUCT_UPDATE
: &'
static str = "1.3.6.1.4.1.311.31.1";
1669 pub const szOID_ANY_APPLICATION_POLICY
: &'
static str = "1.3.6.1.4.1.311.10.12.1";
1670 pub const szOID_AUTO_ENROLL_CTL_USAGE
: &'
static str = "1.3.6.1.4.1.311.20.1";
1671 pub const szOID_ENROLL_CERTTYPE_EXTENSION
: &'
static str = "1.3.6.1.4.1.311.20.2";
1672 pub const szOID_CERT_MANIFOLD
: &'
static str = "1.3.6.1.4.1.311.20.3";
1673 pub const szOID_CERTSRV_CA_VERSION
: &'
static str = "1.3.6.1.4.1.311.21.1";
1674 pub const szOID_CERTSRV_PREVIOUS_CERT_HASH
: &'
static str = "1.3.6.1.4.1.311.21.2";
1675 pub const szOID_CRL_VIRTUAL_BASE
: &'
static str = "1.3.6.1.4.1.311.21.3";
1676 pub const szOID_CRL_NEXT_PUBLISH
: &'
static str = "1.3.6.1.4.1.311.21.4";
1677 pub const szOID_KP_CA_EXCHANGE
: &'
static str = "1.3.6.1.4.1.311.21.5";
1678 pub const szOID_KP_PRIVACY_CA
: &'
static str = "1.3.6.1.4.1.311.21.36";
1679 pub const szOID_KP_KEY_RECOVERY_AGENT
: &'
static str = "1.3.6.1.4.1.311.21.6";
1680 pub const szOID_CERTIFICATE_TEMPLATE
: &'
static str = "1.3.6.1.4.1.311.21.7";
1681 pub const szOID_ENTERPRISE_OID_ROOT
: &'
static str = "1.3.6.1.4.1.311.21.8";
1682 pub const szOID_RDN_DUMMY_SIGNER
: &'
static str = "1.3.6.1.4.1.311.21.9";
1683 pub const szOID_APPLICATION_CERT_POLICIES
: &'
static str = "1.3.6.1.4.1.311.21.10";
1684 pub const szOID_APPLICATION_POLICY_MAPPINGS
: &'
static str = "1.3.6.1.4.1.311.21.11";
1685 pub const szOID_APPLICATION_POLICY_CONSTRAINTS
: &'
static str = "1.3.6.1.4.1.311.21.12";
1686 pub const szOID_ARCHIVED_KEY_ATTR
: &'
static str = "1.3.6.1.4.1.311.21.13";
1687 pub const szOID_CRL_SELF_CDP
: &'
static str = "1.3.6.1.4.1.311.21.14";
1688 pub const szOID_REQUIRE_CERT_CHAIN_POLICY
: &'
static str = "1.3.6.1.4.1.311.21.15";
1689 pub const szOID_ARCHIVED_KEY_CERT_HASH
: &'
static str = "1.3.6.1.4.1.311.21.16";
1690 pub const szOID_ISSUED_CERT_HASH
: &'
static str = "1.3.6.1.4.1.311.21.17";
1691 pub const szOID_DS_EMAIL_REPLICATION
: &'
static str = "1.3.6.1.4.1.311.21.19";
1692 pub const szOID_REQUEST_CLIENT_INFO
: &'
static str = "1.3.6.1.4.1.311.21.20";
1693 pub const szOID_ENCRYPTED_KEY_HASH
: &'
static str = "1.3.6.1.4.1.311.21.21";
1694 pub const szOID_CERTSRV_CROSSCA_VERSION
: &'
static str = "1.3.6.1.4.1.311.21.22";
1695 pub const szOID_NTDS_REPLICATION
: &'
static str = "1.3.6.1.4.1.311.25.1";
1696 pub const szOID_SUBJECT_DIR_ATTRS
: &'
static str = "2.5.29.9";
1697 pub const szOID_PKIX_KP
: &'
static str = "1.3.6.1.5.5.7.3";
1698 pub const szOID_PKIX_KP_SERVER_AUTH
: &'
static str = "1.3.6.1.5.5.7.3.1";
1699 pub const szOID_PKIX_KP_CLIENT_AUTH
: &'
static str = "1.3.6.1.5.5.7.3.2";
1700 pub const szOID_PKIX_KP_CODE_SIGNING
: &'
static str = "1.3.6.1.5.5.7.3.3";
1701 pub const szOID_PKIX_KP_EMAIL_PROTECTION
: &'
static str = "1.3.6.1.5.5.7.3.4";
1702 pub const szOID_PKIX_KP_IPSEC_END_SYSTEM
: &'
static str = "1.3.6.1.5.5.7.3.5";
1703 pub const szOID_PKIX_KP_IPSEC_TUNNEL
: &'
static str = "1.3.6.1.5.5.7.3.6";
1704 pub const szOID_PKIX_KP_IPSEC_USER
: &'
static str = "1.3.6.1.5.5.7.3.7";
1705 pub const szOID_PKIX_KP_TIMESTAMP_SIGNING
: &'
static str = "1.3.6.1.5.5.7.3.8";
1706 pub const szOID_PKIX_KP_OCSP_SIGNING
: &'
static str = "1.3.6.1.5.5.7.3.9";
1707 pub const szOID_PKIX_OCSP_NOCHECK
: &'
static str = "1.3.6.1.5.5.7.48.1.5";
1708 pub const szOID_PKIX_OCSP_NONCE
: &'
static str = "1.3.6.1.5.5.7.48.1.2";
1709 pub const szOID_IPSEC_KP_IKE_INTERMEDIATE
: &'
static str = "1.3.6.1.5.5.8.2.2";
1710 pub const szOID_PKINIT_KP_KDC
: &'
static str = "1.3.6.1.5.2.3.5";
1711 pub const szOID_KP_CTL_USAGE_SIGNING
: &'
static str = "1.3.6.1.4.1.311.10.3.1";
1712 pub const szOID_KP_TIME_STAMP_SIGNING
: &'
static str = "1.3.6.1.4.1.311.10.3.2";
1713 pub const szOID_SERVER_GATED_CRYPTO
: &'
static str = "1.3.6.1.4.1.311.10.3.3";
1714 pub const szOID_SGC_NETSCAPE
: &'
static str = "2.16.840.1.113730.4.1";
1715 pub const szOID_KP_EFS
: &'
static str = "1.3.6.1.4.1.311.10.3.4";
1716 pub const szOID_EFS_RECOVERY
: &'
static str = "1.3.6.1.4.1.311.10.3.4.1";
1717 pub const szOID_WHQL_CRYPTO
: &'
static str = "1.3.6.1.4.1.311.10.3.5";
1718 pub const szOID_ATTEST_WHQL_CRYPTO
: &'
static str = "1.3.6.1.4.1.311.10.3.5.1";
1719 pub const szOID_NT5_CRYPTO
: &'
static str = "1.3.6.1.4.1.311.10.3.6";
1720 pub const szOID_OEM_WHQL_CRYPTO
: &'
static str = "1.3.6.1.4.1.311.10.3.7";
1721 pub const szOID_EMBEDDED_NT_CRYPTO
: &'
static str = "1.3.6.1.4.1.311.10.3.8";
1722 pub const szOID_ROOT_LIST_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.9";
1723 pub const szOID_KP_QUALIFIED_SUBORDINATION
: &'
static str = "1.3.6.1.4.1.311.10.3.10";
1724 pub const szOID_KP_KEY_RECOVERY
: &'
static str = "1.3.6.1.4.1.311.10.3.11";
1725 pub const szOID_KP_DOCUMENT_SIGNING
: &'
static str = "1.3.6.1.4.1.311.10.3.12";
1726 pub const szOID_KP_LIFETIME_SIGNING
: &'
static str = "1.3.6.1.4.1.311.10.3.13";
1727 pub const szOID_KP_MOBILE_DEVICE_SOFTWARE
: &'
static str = "1.3.6.1.4.1.311.10.3.14";
1728 pub const szOID_KP_SMART_DISPLAY
: &'
static str = "1.3.6.1.4.1.311.10.3.15";
1729 pub const szOID_KP_CSP_SIGNATURE
: &'
static str = "1.3.6.1.4.1.311.10.3.16";
1730 pub const szOID_KP_FLIGHT_SIGNING
: &'
static str = "1.3.6.1.4.1.311.10.3.27";
1731 pub const szOID_PLATFORM_MANIFEST_BINARY_ID
: &'
static str = "1.3.6.1.4.1.311.10.3.28";
1732 pub const szOID_DRM
: &'
static str = "1.3.6.1.4.1.311.10.5.1";
1733 pub const szOID_DRM_INDIVIDUALIZATION
: &'
static str = "1.3.6.1.4.1.311.10.5.2";
1734 pub const szOID_LICENSES
: &'
static str = "1.3.6.1.4.1.311.10.6.1";
1735 pub const szOID_LICENSE_SERVER
: &'
static str = "1.3.6.1.4.1.311.10.6.2";
1736 pub const szOID_KP_SMARTCARD_LOGON
: &'
static str = "1.3.6.1.4.1.311.20.2.2";
1737 pub const szOID_KP_KERNEL_MODE_CODE_SIGNING
: &'
static str = "1.3.6.1.4.1.311.61.1.1";
1738 pub const szOID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING
: &'
static str = "1.3.6.1.4.1.311.61.4.1";
1739 pub const szOID_REVOKED_LIST_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.19";
1740 pub const szOID_WINDOWS_KITS_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.20";
1741 pub const szOID_WINDOWS_RT_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.21";
1742 pub const szOID_PROTECTED_PROCESS_LIGHT_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.22";
1743 pub const szOID_WINDOWS_TCB_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.23";
1744 pub const szOID_PROTECTED_PROCESS_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.24";
1745 pub const szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.25";
1746 pub const szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.26";
1747 pub const szOID_DISALLOWED_LIST
: &'
static str = "1.3.6.1.4.1.311.10.3.30";
1748 pub const szOID_PIN_RULES_SIGNER
: &'
static str = "1.3.6.1.4.1.311.10.3.31";
1749 pub const szOID_PIN_RULES_CTL
: &'
static str = "1.3.6.1.4.1.311.10.3.32";
1750 pub const szOID_PIN_RULES_EXT
: &'
static str = "1.3.6.1.4.1.311.10.3.33";
1751 pub const szOID_PIN_RULES_DOMAIN_NAME
: &'
static str = "1.3.6.1.4.1.311.10.3.34";
1752 pub const szOID_PIN_RULES_LOG_END_DATE_EXT
: &'
static str = "1.3.6.1.4.1.311.10.3.35";
1753 pub const szOID_IUM_SIGNING
: &'
static str = "1.3.6.1.4.1.311.10.3.37";
1754 pub const szOID_EV_WHQL_CRYPTO
: &'
static str = "1.3.6.1.4.1.311.10.3.39";
1755 pub const szOID_SYNC_ROOT_CTL_EXT
: &'
static str = "1.3.6.1.4.1.311.10.3.50";
1756 pub const szOID_HPKP_DOMAIN_NAME_CTL
: &'
static str = "1.3.6.1.4.1.311.10.3.60";
1757 pub const szOID_HPKP_HEADER_VALUE_CTL
: &'
static str = "1.3.6.1.4.1.311.10.3.61";
1758 pub const szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING
: &'
static str = "1.3.6.1.4.1.311.61.5.1";
1759 pub const szOID_WINDOWS_STORE_SIGNER
: &'
static str = "1.3.6.1.4.1.311.76.3.1";
1760 pub const szOID_DYNAMIC_CODE_GEN_SIGNER
: &'
static str = "1.3.6.1.4.1.311.76.5.1";
1761 pub const szOID_MICROSOFT_PUBLISHER_SIGNER
: &'
static str = "1.3.6.1.4.1.311.76.8.1";
1762 pub const szOID_YESNO_TRUST_ATTR
: &'
static str = "1.3.6.1.4.1.311.10.4.1";
1763 pub const szOID_SITE_PIN_RULES_INDEX_ATTR
: &'
static str = "1.3.6.1.4.1.311.10.4.2";
1764 pub const szOID_SITE_PIN_RULES_FLAGS_ATTR
: &'
static str = "1.3.6.1.4.1.311.10.4.3";
1765 pub const szOID_PKIX_POLICY_QUALIFIER_CPS
: &'
static str = "1.3.6.1.5.5.7.2.1";
1766 pub const szOID_PKIX_POLICY_QUALIFIER_USERNOTICE
: &'
static str = "1.3.6.1.5.5.7.2.2";
1767 pub const szOID_ROOT_PROGRAM_FLAGS
: &'
static str = "1.3.6.1.4.1.311.60.1.1";
1768 pub const CERT_ROOT_PROGRAM_FLAG_ORG
: DWORD
= 0x80;
1769 pub const CERT_ROOT_PROGRAM_FLAG_LSC
: DWORD
= 0x40;
1770 pub const CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO
: DWORD
= 0x20;
1771 pub const CERT_ROOT_PROGRAM_FLAG_OU
: DWORD
= 0x10;
1772 pub const CERT_ROOT_PROGRAM_FLAG_ADDRESS
: DWORD
= 0x08;
1773 pub const szOID_CERT_POLICIES_95_QUALIFIER1
: &'
static str = "2.16.840.1.113733.1.7.1.1";
1774 pub const szOID_RDN_TPM_MANUFACTURER
: &'
static str = "2.23.133.2.1";
1775 pub const szOID_RDN_TPM_MODEL
: &'
static str = "2.23.133.2.2";
1776 pub const szOID_RDN_TPM_VERSION
: &'
static str = "2.23.133.2.3";
1777 pub const szOID_RDN_TCG_PLATFORM_MANUFACTURER
: &'
static str = "2.23.133.2.4";
1778 pub const szOID_RDN_TCG_PLATFORM_MODEL
: &'
static str = "2.23.133.2.5";
1779 pub const szOID_RDN_TCG_PLATFORM_VERSION
: &'
static str = "2.23.133.2.6";
1780 pub const szOID_ENROLL_EK_INFO
: &'
static str = "1.3.6.1.4.1.311.21.23";
1781 pub const szOID_ENROLL_AIK_INFO
: &'
static str = "1.3.6.1.4.1.311.21.39";
1782 pub const szOID_ENROLL_ATTESTATION_STATEMENT
: &'
static str = "1.3.6.1.4.1.311.21.24";
1783 pub const szOID_ENROLL_KSP_NAME
: &'
static str = "1.3.6.1.4.1.311.21.25";
1784 pub const szOID_ENROLL_EKPUB_CHALLENGE
: &'
static str = "1.3.6.1.4.1.311.21.26";
1785 pub const szOID_ENROLL_CAXCHGCERT_HASH
: &'
static str = "1.3.6.1.4.1.311.21.27";
1786 pub const szOID_ENROLL_ATTESTATION_CHALLENGE
: &'
static str = "1.3.6.1.4.1.311.21.28";
1787 pub const szOID_ENROLL_ENCRYPTION_ALGORITHM
: &'
static str = "1.3.6.1.4.1.311.21.29";
1788 pub const szOID_KP_TPM_EK_CERTIFICATE
: &'
static str = "2.23.133.8.1";
1789 pub const szOID_KP_TPM_PLATFORM_CERTIFICATE
: &'
static str = "2.23.133.8.2";
1790 pub const szOID_KP_TPM_AIK_CERTIFICATE
: &'
static str = "2.23.133.8.3";
1791 pub const szOID_ENROLL_EKVERIFYKEY
: &'
static str = "1.3.6.1.4.1.311.21.30";
1792 pub const szOID_ENROLL_EKVERIFYCERT
: &'
static str = "1.3.6.1.4.1.311.21.31";
1793 pub const szOID_ENROLL_EKVERIFYCREDS
: &'
static str = "1.3.6.1.4.1.311.21.32";
1794 pub const szOID_ENROLL_SCEP_ERROR
: &'
static str = "1.3.6.1.4.1.311.21.33";
1795 pub const szOID_ENROLL_SCEP_SERVER_STATE
: &'
static str = "1.3.6.1.4.1.311.21.34";
1796 pub const szOID_ENROLL_SCEP_CHALLENGE_ANSWER
: &'
static str = "1.3.6.1.4.1.311.21.35";
1797 pub const szOID_ENROLL_SCEP_CLIENT_REQUEST
: &'
static str = "1.3.6.1.4.1.311.21.37";
1798 pub const szOID_ENROLL_SCEP_SERVER_MESSAGE
: &'
static str = "1.3.6.1.4.1.311.21.38";
1799 pub const szOID_ENROLL_SCEP_SERVER_SECRET
: &'
static str = "1.3.6.1.4.1.311.21.40";
1800 pub const szOID_ENROLL_KEY_AFFINITY
: &'
static str = "1.3.6.1.4.1.311.21.41";
1801 pub const szOID_ENROLL_SCEP_SIGNER_HASH
: &'
static str = "1.3.6.1.4.1.311.21.42";
1802 pub const szOID_ENROLL_EK_CA_KEYID
: &'
static str = "1.3.6.1.4.1.311.21.43";
1803 pub const szOID_ATTR_SUPPORTED_ALGORITHMS
: &'
static str = "2.5.4.52";
1804 pub const szOID_ATTR_TPM_SPECIFICATION
: &'
static str = "2.23.133.2.16";
1805 pub const szOID_ATTR_PLATFORM_SPECIFICATION
: &'
static str = "2.23.133.2.17";
1806 pub const szOID_ATTR_TPM_SECURITY_ASSERTIONS
: &'
static str = "2.23.133.2.18";
1807 STRUCT
!{struct CERT_EXTENSIONS
{
1809 rgExtension
: PCERT_EXTENSION
,
1811 pub type PCERT_EXTENSIONS
= *mut CERT_EXTENSIONS
;
1812 pub const CERT_UNICODE_RDN_ERR_INDEX_MASK
: DWORD
= 0x3FF;
1813 pub const CERT_UNICODE_RDN_ERR_INDEX_SHIFT
: DWORD
= 22;
1814 pub const CERT_UNICODE_ATTR_ERR_INDEX_MASK
: DWORD
= 0x003F;
1815 pub const CERT_UNICODE_ATTR_ERR_INDEX_SHIFT
: DWORD
= 16;
1816 pub const CERT_UNICODE_VALUE_ERR_INDEX_MASK
: DWORD
= 0x0000FFFF;
1817 pub const CERT_UNICODE_VALUE_ERR_INDEX_SHIFT
: DWORD
= 0;
1819 pub fn GET_CERT_UNICODE_RDN_ERR_INDEX(X
: DWORD
) -> DWORD
{
1820 (X
>> CERT_UNICODE_RDN_ERR_INDEX_SHIFT
) & CERT_UNICODE_RDN_ERR_INDEX_MASK
1823 pub fn GET_CERT_UNICODE_ATTR_ERR_INDEX(X
: DWORD
) -> DWORD
{
1824 (X
>> CERT_UNICODE_ATTR_ERR_INDEX_SHIFT
) & CERT_UNICODE_ATTR_ERR_INDEX_MASK
1827 pub fn GET_CERT_UNICODE_VALUE_ERR_INDEX(X
: DWORD
) -> DWORD
{
1828 X
& CERT_UNICODE_VALUE_ERR_INDEX_MASK
1830 STRUCT
!{struct CERT_AUTHORITY_KEY_ID_INFO
{
1831 KeyId
: CRYPT_DATA_BLOB
,
1832 CertIssuer
: CERT_NAME_BLOB
,
1833 CertSerialNumber
: CRYPT_INTEGER_BLOB
,
1835 pub type PCERT_AUTHORITY_KEY_ID_INFO
= *mut CERT_AUTHORITY_KEY_ID_INFO
;
1836 STRUCT
!{struct CERT_PRIVATE_KEY_VALIDITY
{
1837 NotBefore
: FILETIME
,
1840 pub type PCERT_PRIVATE_KEY_VALIDITY
= *mut CERT_PRIVATE_KEY_VALIDITY
;
1841 STRUCT
!{struct CERT_KEY_ATTRIBUTES_INFO
{
1842 KeyId
: CRYPT_DATA_BLOB
,
1843 IntendedKeyUsage
: CRYPT_BIT_BLOB
,
1844 pPrivateKeyUsagePeriod
: PCERT_PRIVATE_KEY_VALIDITY
,
1846 pub type PCERT_KEY_ATTRIBUTES_INFO
= *mut CERT_KEY_ATTRIBUTES_INFO
;
1847 pub const CERT_DIGITAL_SIGNATURE_KEY_USAGE
: DWORD
= 0x80;
1848 pub const CERT_NON_REPUDIATION_KEY_USAGE
: DWORD
= 0x40;
1849 pub const CERT_KEY_ENCIPHERMENT_KEY_USAGE
: DWORD
= 0x20;
1850 pub const CERT_DATA_ENCIPHERMENT_KEY_USAGE
: DWORD
= 0x10;
1851 pub const CERT_KEY_AGREEMENT_KEY_USAGE
: DWORD
= 0x08;
1852 pub const CERT_KEY_CERT_SIGN_KEY_USAGE
: DWORD
= 0x04;
1853 pub const CERT_OFFLINE_CRL_SIGN_KEY_USAGE
: DWORD
= 0x02;
1854 pub const CERT_CRL_SIGN_KEY_USAGE
: DWORD
= 0x02;
1855 pub const CERT_ENCIPHER_ONLY_KEY_USAGE
: DWORD
= 0x01;
1856 pub const CERT_DECIPHER_ONLY_KEY_USAGE
: DWORD
= 0x80;
1857 STRUCT
!{struct CERT_POLICY_ID
{
1858 cCertPolicyElementId
: DWORD
,
1859 rgpszCertPolicyElementId
: *mut LPSTR
,
1861 pub type PCERT_POLICY_ID
= *mut CERT_POLICY_ID
;
1862 STRUCT
!{struct CERT_KEY_USAGE_RESTRICTION_INFO
{
1863 cCertPolicyId
: DWORD
,
1864 rgCertPolicyId
: PCERT_POLICY_ID
,
1865 RestrictedKeyUsage
: CRYPT_BIT_BLOB
,
1867 pub type PCERT_KEY_USAGE_RESTRICTION_INFO
= *mut CERT_KEY_USAGE_RESTRICTION_INFO
;
1868 STRUCT
!{struct CERT_OTHER_NAME
{
1870 Value
: CRYPT_OBJID_BLOB
,
1872 pub type PCERT_OTHER_NAME
= *mut CERT_OTHER_NAME
;
1873 UNION
!{union CERT_ALT_NAME_ENTRY_u
{
1875 pOtherName pOtherName_mut
: PCERT_OTHER_NAME
,
1876 pwszRfc822Name pwszRfc822Name_mut
: LPWSTR
,
1877 pwszDNSName pwszDNSName_mut
: LPWSTR
,
1878 DirectoryName DirectoryName_mut
: CERT_NAME_BLOB
,
1879 pwszURL pwszURL_mut
: LPWSTR
,
1880 IPAddress IPAddress_mut
: CRYPT_DATA_BLOB
,
1881 pszRegisteredID pszRegisteredID_mut
: LPSTR
,
1883 STRUCT
!{struct CERT_ALT_NAME_ENTRY
{
1884 dwAltNameChoice
: DWORD
,
1885 u
: CERT_ALT_NAME_ENTRY_u
,
1887 pub type PCERT_ALT_NAME_ENTRY
= *mut CERT_ALT_NAME_ENTRY
;
1888 pub const CERT_ALT_NAME_OTHER_NAME
: DWORD
= 1;
1889 pub const CERT_ALT_NAME_RFC822_NAME
: DWORD
= 2;
1890 pub const CERT_ALT_NAME_DNS_NAME
: DWORD
= 3;
1891 pub const CERT_ALT_NAME_X400_ADDRESS
: DWORD
= 4;
1892 pub const CERT_ALT_NAME_DIRECTORY_NAME
: DWORD
= 5;
1893 pub const CERT_ALT_NAME_EDI_PARTY_NAME
: DWORD
= 6;
1894 pub const CERT_ALT_NAME_URL
: DWORD
= 7;
1895 pub const CERT_ALT_NAME_IP_ADDRESS
: DWORD
= 8;
1896 pub const CERT_ALT_NAME_REGISTERED_ID
: DWORD
= 9;
1897 STRUCT
!{struct CERT_ALT_NAME_INFO
{
1899 rgAltEntry
: PCERT_ALT_NAME_ENTRY
,
1901 pub type PCERT_ALT_NAME_INFO
= *mut CERT_ALT_NAME_INFO
;
1902 pub const CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK
: DWORD
= 0xFF;
1903 pub const CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT
: DWORD
= 16;
1904 pub const CERT_ALT_NAME_VALUE_ERR_INDEX_MASK
: DWORD
= 0x0000FFFF;
1905 pub const CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT
: DWORD
= 0;
1907 pub fn GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X
: DWORD
) -> DWORD
{
1908 (X
>> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT
) & CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK
1911 pub fn GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X
: DWORD
) -> DWORD
{
1912 X
& CERT_ALT_NAME_VALUE_ERR_INDEX_MASK
1914 STRUCT
!{struct CERT_BASIC_CONSTRAINTS_INFO
{
1915 SubjectType
: CRYPT_BIT_BLOB
,
1916 fPathLenConstraint
: BOOL
,
1917 dwPathLenConstraint
: DWORD
,
1918 cSubtreesConstraint
: DWORD
,
1919 rgSubtreesConstraint
: *mut CERT_NAME_BLOB
,
1921 pub type PCERT_BASIC_CONSTRAINTS_INFO
= *mut CERT_BASIC_CONSTRAINTS_INFO
;
1922 pub const CERT_CA_SUBJECT_FLAG
: DWORD
= 0x80;
1923 pub const CERT_END_ENTITY_SUBJECT_FLAG
: DWORD
= 0x40;
1924 STRUCT
!{struct CERT_BASIC_CONSTRAINTS2_INFO
{
1926 fPathLenConstraint
: BOOL
,
1927 dwPathLenConstraint
: DWORD
,
1929 pub type PCERT_BASIC_CONSTRAINTS2_INFO
= *mut CERT_BASIC_CONSTRAINTS2_INFO
;
1930 STRUCT
!{struct CERT_POLICY_QUALIFIER_INFO
{
1931 pszPolicyQualifierId
: LPSTR
,
1932 Qualifier
: CRYPT_OBJID_BLOB
,
1934 pub type PCERT_POLICY_QUALIFIER_INFO
= *mut CERT_POLICY_QUALIFIER_INFO
;
1935 STRUCT
!{struct CERT_POLICY_INFO
{
1936 pszPolicyIdentifier
: LPSTR
,
1937 cPolicyQualifier
: DWORD
,
1938 rgPolicyQualifier
: *mut CERT_POLICY_QUALIFIER_INFO
,
1940 pub type PCERT_POLICY_INFO
= *mut CERT_POLICY_INFO
;
1941 STRUCT
!{struct CERT_POLICIES_INFO
{
1943 rgPolicyInfo
: *mut CERT_POLICY_INFO
,
1945 pub type PCERT_POLICIES_INFO
= *mut CERT_POLICIES_INFO
;
1946 STRUCT
!{struct CERT_POLICY_QUALIFIER_NOTICE_REFERENCE
{
1947 pszOrganization
: LPSTR
,
1948 cNoticeNumbers
: DWORD
,
1949 rgNoticeNumbers
: *mut c_int
,
1951 pub type PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE
= *mut CERT_POLICY_QUALIFIER_NOTICE_REFERENCE
;
1952 STRUCT
!{struct CERT_POLICY_QUALIFIER_USER_NOTICE
{
1953 pNoticeReference
: *mut CERT_POLICY_QUALIFIER_NOTICE_REFERENCE
,
1954 pszDisplayText
: LPWSTR
,
1956 pub type PCERT_POLICY_QUALIFIER_USER_NOTICE
= *mut CERT_POLICY_QUALIFIER_USER_NOTICE
;
1957 STRUCT
!{struct CPS_URLS
{
1959 pAlgorithm
: *mut CRYPT_ALGORITHM_IDENTIFIER
,
1960 pDigest
: *mut CRYPT_DATA_BLOB
,
1962 pub type PCPS_URLS
= *mut CPS_URLS
;
1963 STRUCT
!{struct CERT_POLICY95_QUALIFIER1
{
1964 pszPracticesReference
: LPWSTR
,
1965 pszNoticeIdentifier
: LPSTR
,
1966 pszNSINoticeIdentifier
: LPSTR
,
1968 rgCPSURLs
: *mut CPS_URLS
,
1970 pub type PCERT_POLICY95_QUALIFIER1
= *mut CERT_POLICY95_QUALIFIER1
;
1971 STRUCT
!{struct CERT_POLICY_MAPPING
{
1972 pszIssuerDomainPolicy
: LPSTR
,
1973 pszSubjectDomainPolicy
: LPSTR
,
1975 pub type PCERT_POLICY_MAPPING
= *mut CERT_POLICY_MAPPING
;
1976 STRUCT
!{struct CERT_POLICY_MAPPINGS_INFO
{
1977 cPolicyMapping
: DWORD
,
1978 rgPolicyMapping
: PCERT_POLICY_MAPPING
,
1980 pub type PCERT_POLICY_MAPPINGS_INFO
= *mut CERT_POLICY_MAPPINGS_INFO
;
1981 STRUCT
!{struct CERT_POLICY_CONSTRAINTS_INFO
{
1982 fRequireExplicitPolicy
: BOOL
,
1983 dwRequireExplicitPolicySkipCerts
: DWORD
,
1984 fInhibitPolicyMapping
: BOOL
,
1985 dwInhibitPolicyMappingSkipCerts
: DWORD
,
1987 pub type PCERT_POLICY_CONSTRAINTS_INFO
= *mut CERT_POLICY_CONSTRAINTS_INFO
;
1988 STRUCT
!{struct CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY
{
1991 rgValue
: PCRYPT_DER_BLOB
,
1993 pub type PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY
= *mut CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY
;
1994 STRUCT
!{struct CRYPT_CONTENT_INFO
{
1996 Content
: CRYPT_DER_BLOB
,
1998 pub type PCRYPT_CONTENT_INFO
= *mut CRYPT_CONTENT_INFO
;
1999 STRUCT
!{struct CRYPT_SEQUENCE_OF_ANY
{
2001 rgValue
: PCRYPT_DER_BLOB
,
2003 pub type PCRYPT_SEQUENCE_OF_ANY
= *mut CRYPT_SEQUENCE_OF_ANY
;
2004 STRUCT
!{struct CERT_AUTHORITY_KEY_ID2_INFO
{
2005 KeyId
: CRYPT_DATA_BLOB
,
2006 AuthorityCertIssuer
: CERT_ALT_NAME_INFO
,
2007 AuthorityCertSerialNumber
: CRYPT_INTEGER_BLOB
,
2009 pub type PCERT_AUTHORITY_KEY_ID2_INFO
= *mut CERT_AUTHORITY_KEY_ID2_INFO
;
2010 STRUCT
!{struct CERT_ACCESS_DESCRIPTION
{
2011 pszAccessMethod
: LPSTR
,
2012 AccessLocation
: CERT_ALT_NAME_ENTRY
,
2014 pub type PCERT_ACCESS_DESCRIPTION
= *mut CERT_ACCESS_DESCRIPTION
;
2015 STRUCT
!{struct CERT_AUTHORITY_INFO_ACCESS
{
2017 rgAccDescr
: PCERT_ACCESS_DESCRIPTION
,
2019 pub type PCERT_AUTHORITY_INFO_ACCESS
= *mut CERT_AUTHORITY_INFO_ACCESS
;
2020 pub type CERT_SUBJECT_INFO_ACCESS
= CERT_AUTHORITY_INFO_ACCESS
;
2021 pub type PCERT_SUBJECT_INFO_ACCESS
= *mut CERT_AUTHORITY_INFO_ACCESS
;
2022 pub const szOID_PKIX_ACC_DESCR
: &'
static str = "1.3.6.1.5.5.7.48";
2023 pub const szOID_PKIX_OCSP
: &'
static str = "1.3.6.1.5.5.7.48.1";
2024 pub const szOID_PKIX_CA_ISSUERS
: &'
static str = "1.3.6.1.5.5.7.48.2";
2025 pub const szOID_PKIX_TIME_STAMPING
: &'
static str = "1.3.6.1.5.5.7.48.3";
2026 pub const szOID_PKIX_CA_REPOSITORY
: &'
static str = "1.3.6.1.5.5.7.48.5";
2027 pub const CRL_REASON_UNSPECIFIED
: DWORD
= 0;
2028 pub const CRL_REASON_KEY_COMPROMISE
: DWORD
= 1;
2029 pub const CRL_REASON_CA_COMPROMISE
: DWORD
= 2;
2030 pub const CRL_REASON_AFFILIATION_CHANGED
: DWORD
= 3;
2031 pub const CRL_REASON_SUPERSEDED
: DWORD
= 4;
2032 pub const CRL_REASON_CESSATION_OF_OPERATION
: DWORD
= 5;
2033 pub const CRL_REASON_CERTIFICATE_HOLD
: DWORD
= 6;
2034 pub const CRL_REASON_REMOVE_FROM_CRL
: DWORD
= 8;
2035 pub const CRL_REASON_PRIVILEGE_WITHDRAWN
: DWORD
= 9;
2036 pub const CRL_REASON_AA_COMPROMISE
: DWORD
= 10;
2037 UNION
!{union CRL_DIST_POINT_NAME_u
{
2039 FullName FullName_mut
: CERT_ALT_NAME_INFO
,
2041 STRUCT
!{struct CRL_DIST_POINT_NAME
{
2042 dwDistPointNameChoice
: DWORD
,
2043 u
: CRL_DIST_POINT_NAME_u
,
2045 pub type PCRL_DIST_POINT_NAME
= *mut CRL_DIST_POINT_NAME
;
2046 pub const CRL_DIST_POINT_NO_NAME
: DWORD
= 0;
2047 pub const CRL_DIST_POINT_FULL_NAME
: DWORD
= 1;
2048 pub const CRL_DIST_POINT_ISSUER_RDN_NAME
: DWORD
= 2;
2049 STRUCT
!{struct CRL_DIST_POINT
{
2050 DistPointName
: CRL_DIST_POINT_NAME
,
2051 ReasonFlags
: CRYPT_BIT_BLOB
,
2052 CRLIssuer
: CERT_ALT_NAME_INFO
,
2054 pub type PCRL_DIST_POINT
= *mut CRL_DIST_POINT
;
2055 pub const CRL_REASON_UNUSED_FLAG
: DWORD
= 0x80;
2056 pub const CRL_REASON_KEY_COMPROMISE_FLAG
: DWORD
= 0x40;
2057 pub const CRL_REASON_CA_COMPROMISE_FLAG
: DWORD
= 0x20;
2058 pub const CRL_REASON_AFFILIATION_CHANGED_FLAG
: DWORD
= 0x10;
2059 pub const CRL_REASON_SUPERSEDED_FLAG
: DWORD
= 0x08;
2060 pub const CRL_REASON_CESSATION_OF_OPERATION_FLAG
: DWORD
= 0x04;
2061 pub const CRL_REASON_CERTIFICATE_HOLD_FLAG
: DWORD
= 0x02;
2062 pub const CRL_REASON_PRIVILEGE_WITHDRAWN_FLAG
: DWORD
= 0x01;
2063 pub const CRL_REASON_AA_COMPROMISE_FLAG
: DWORD
= 0x80;
2064 STRUCT
!{struct CRL_DIST_POINTS_INFO
{
2066 rgDistPoint
: PCRL_DIST_POINT
,
2068 pub type PCRL_DIST_POINTS_INFO
= *mut CRL_DIST_POINTS_INFO
;
2069 pub const CRL_DIST_POINT_ERR_INDEX_MASK
: DWORD
= 0x7F;
2070 pub const CRL_DIST_POINT_ERR_INDEX_SHIFT
: DWORD
= 24;
2072 pub fn GET_CRL_DIST_POINT_ERR_INDEX(X
: DWORD
) -> DWORD
{
2073 (X
>> CRL_DIST_POINT_ERR_INDEX_SHIFT
) & CRL_DIST_POINT_ERR_INDEX_MASK
2075 pub const CRL_DIST_POINT_ERR_CRL_ISSUER_BIT
: DWORD
= 0x80000000;
2077 pub fn IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X
: DWORD
) -> bool
{
2078 0 != (X
& CRL_DIST_POINT_ERR_CRL_ISSUER_BIT
)
2080 STRUCT
!{struct CROSS_CERT_DIST_POINTS_INFO
{
2081 dwSyncDeltaTime
: DWORD
,
2083 rgDistPoint
: PCERT_ALT_NAME_INFO
,
2085 pub type PCROSS_CERT_DIST_POINTS_INFO
= *mut CROSS_CERT_DIST_POINTS_INFO
;
2086 pub const CROSS_CERT_DIST_POINT_ERR_INDEX_MASK
: DWORD
= 0xFF;
2087 pub const CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT
: DWORD
= 24;
2089 pub fn GET_CROSS_CERT_DIST_POINT_ERR_INDEX(X
: DWORD
) -> DWORD
{
2090 (X
>> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT
) & CROSS_CERT_DIST_POINT_ERR_INDEX_MASK
2092 STRUCT
!{struct CERT_PAIR
{
2096 pub type PCERT_PAIR
= *mut CERT_PAIR
;
2097 STRUCT
!{struct CRL_ISSUING_DIST_POINT
{
2098 DistPointName
: CRL_DIST_POINT_NAME
,
2099 fOnlyContainsUserCerts
: BOOL
,
2100 fOnlyContainsCACerts
: BOOL
,
2101 OnlySomeReasonFlags
: CRYPT_BIT_BLOB
,
2104 pub type PCRL_ISSUING_DIST_POINT
= *mut CRL_ISSUING_DIST_POINT
;
2105 STRUCT
!{struct CERT_GENERAL_SUBTREE
{
2106 Base
: CERT_ALT_NAME_ENTRY
,
2111 pub type PCERT_GENERAL_SUBTREE
= *mut CERT_GENERAL_SUBTREE
;
2112 STRUCT
!{struct CERT_NAME_CONSTRAINTS_INFO
{
2113 cPermittedSubtree
: DWORD
,
2114 rgPermittedSubtree
: PCERT_GENERAL_SUBTREE
,
2115 cExcludedSubtree
: DWORD
,
2116 rgExcludedSubtree
: PCERT_GENERAL_SUBTREE
,
2118 pub type PCERT_NAME_CONSTRAINTS_INFO
= *mut CERT_NAME_CONSTRAINTS_INFO
;
2119 pub const CERT_EXCLUDED_SUBTREE_BIT
: DWORD
= 0x80000000;
2121 pub fn IS_CERT_EXCLUDED_SUBTREE(X
: DWORD
) -> bool
{
2122 0 != (X
& CERT_EXCLUDED_SUBTREE_BIT
)
2124 pub const SORTED_CTL_EXT_FLAGS_OFFSET
: c_int
= 0 * 4;
2125 pub const SORTED_CTL_EXT_COUNT_OFFSET
: c_int
= 1 * 4;
2126 pub const SORTED_CTL_EXT_MAX_COLLISION_OFFSET
: c_int
= 2 * 4;
2127 pub const SORTED_CTL_EXT_HASH_BUCKET_OFFSET
: c_int
= 3 * 4;
2128 pub const SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG
: DWORD
= 0x1;
2129 STRUCT
!{struct CERT_DSS_PARAMETERS
{
2134 pub type PCERT_DSS_PARAMETERS
= *mut CERT_DSS_PARAMETERS
;
2135 pub const CERT_DSS_R_LEN
: usize = 20;
2136 pub const CERT_DSS_S_LEN
: usize = 20;
2137 pub const CERT_DSS_SIGNATURE_LEN
: usize = CERT_DSS_R_LEN
+ CERT_DSS_S_LEN
;
2138 pub const CERT_MAX_ASN_ENCODED_DSS_SIGNATURE_LEN
: usize = 2 + 2 * (2 + 20 + 1);
2139 STRUCT
!{struct CERT_DH_PARAMETERS
{
2143 pub type PCERT_DH_PARAMETERS
= *mut CERT_DH_PARAMETERS
;
2144 STRUCT
!{struct CERT_ECC_SIGNATURE
{
2148 pub type PCERT_ECC_SIGNATURE
= *mut CERT_ECC_SIGNATURE
;
2149 STRUCT
!{struct CERT_X942_DH_VALIDATION_PARAMS
{
2150 seed
: CRYPT_BIT_BLOB
,
2153 pub type PCERT_X942_DH_VALIDATION_PARAMS
= *mut CERT_X942_DH_VALIDATION_PARAMS
;
2154 STRUCT
!{struct CERT_X942_DH_PARAMETERS
{
2159 pValidationParams
: PCERT_X942_DH_VALIDATION_PARAMS
,
2161 pub type PCERT_X942_DH_PARAMETERS
= *mut CERT_X942_DH_PARAMETERS
;
2162 pub const CRYPT_X942_COUNTER_BYTE_LENGTH
: usize = 4;
2163 pub const CRYPT_X942_KEY_LENGTH_BYTE_LENGTH
: usize = 4;
2164 pub const CRYPT_X942_PUB_INFO_BYTE_LENGTH
: usize = 512 / 8;
2165 STRUCT
!{struct CRYPT_X942_OTHER_INFO
{
2166 pszContentEncryptionObjId
: LPSTR
,
2167 rgbCounter
: [BYTE
; CRYPT_X942_COUNTER_BYTE_LENGTH
],
2168 rgbKeyLength
: [BYTE
; CRYPT_X942_KEY_LENGTH_BYTE_LENGTH
],
2169 PubInfo
: CRYPT_DATA_BLOB
,
2171 pub type PCRYPT_X942_OTHER_INFO
= *mut CRYPT_X942_OTHER_INFO
;
2172 pub const CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH
: usize = 4;
2173 STRUCT
!{struct CRYPT_ECC_CMS_SHARED_INFO
{
2174 Algorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2175 EntityUInfo
: CRYPT_DATA_BLOB
,
2176 rgbSuppPubInfo
: [BYTE
; CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH
],
2178 pub type PCRYPT_ECC_CMS_SHARED_INFO
= *mut CRYPT_ECC_CMS_SHARED_INFO
;
2179 STRUCT
!{struct CRYPT_RC2_CBC_PARAMETERS
{
2184 pub type PCRYPT_RC2_CBC_PARAMETERS
= *mut CRYPT_RC2_CBC_PARAMETERS
;
2185 pub const CRYPT_RC2_40BIT_VERSION
: DWORD
= 160;
2186 pub const CRYPT_RC2_56BIT_VERSION
: DWORD
= 52;
2187 pub const CRYPT_RC2_64BIT_VERSION
: DWORD
= 120;
2188 pub const CRYPT_RC2_128BIT_VERSION
: DWORD
= 58;
2189 STRUCT
!{struct CRYPT_SMIME_CAPABILITY
{
2191 Parameters
: CRYPT_OBJID_BLOB
,
2193 pub type PCRYPT_SMIME_CAPABILITY
= *mut CRYPT_SMIME_CAPABILITY
;
2194 STRUCT
!{struct CRYPT_SMIME_CAPABILITIES
{
2196 rgCapability
: PCRYPT_SMIME_CAPABILITY
,
2198 pub type PCRYPT_SMIME_CAPABILITIES
= *mut CRYPT_SMIME_CAPABILITIES
;
2199 STRUCT
!{struct CERT_QC_STATEMENT
{
2200 pszStatementId
: LPSTR
,
2201 StatementInfo
: CRYPT_OBJID_BLOB
,
2203 pub type PCERT_QC_STATEMENT
= *mut CERT_QC_STATEMENT
;
2204 STRUCT
!{struct CERT_QC_STATEMENTS_EXT_INFO
{
2206 rgStatement
: PCERT_QC_STATEMENT
,
2208 pub type PCERT_QC_STATEMENTS_EXT_INFO
= *mut CERT_QC_STATEMENTS_EXT_INFO
;
2209 pub const szOID_QC_EU_COMPLIANCE
: &'
static str = "0.4.0.1862.1.1";
2210 pub const szOID_QC_SSCD
: &'
static str = "0.4.0.1862.1.4";
2211 STRUCT
!{struct CRYPT_MASK_GEN_ALGORITHM
{
2213 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2215 pub type PCRYPT_MASK_GEN_ALGORITHM
= *mut CRYPT_MASK_GEN_ALGORITHM
;
2216 STRUCT
!{struct CRYPT_RSA_SSA_PSS_PARAMETERS
{
2217 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2218 MaskGenAlgorithm
: CRYPT_MASK_GEN_ALGORITHM
,
2219 dwSaltLength
: DWORD
,
2220 dwTrailerField
: DWORD
,
2222 pub type PCRYPT_RSA_SSA_PSS_PARAMETERS
= *mut CRYPT_RSA_SSA_PSS_PARAMETERS
;
2223 pub const PKCS_RSA_SSA_PSS_TRAILER_FIELD_BC
: DWORD
= 1;
2224 STRUCT
!{struct CRYPT_PSOURCE_ALGORITHM
{
2226 EncodingParameters
: CRYPT_DATA_BLOB
,
2228 pub type PCRYPT_PSOURCE_ALGORITHM
= *mut CRYPT_PSOURCE_ALGORITHM
;
2229 STRUCT
!{struct CRYPT_RSAES_OAEP_PARAMETERS
{
2230 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2231 MaskGenAlgorithm
: CRYPT_MASK_GEN_ALGORITHM
,
2232 PSourceAlgorithm
: CRYPT_PSOURCE_ALGORITHM
,
2234 pub type PCRYPT_RSAES_OAEP_PARAMETERS
= *mut CRYPT_RSAES_OAEP_PARAMETERS
;
2235 pub const szOID_VERISIGN_PRIVATE_6_9
: &'
static str = "2.16.840.1.113733.1.6.9";
2236 pub const szOID_VERISIGN_ONSITE_JURISDICTION_HASH
: &'
static str = "2.16.840.1.113733.1.6.11";
2237 pub const szOID_VERISIGN_BITSTRING_6_13
: &'
static str = "2.16.840.1.113733.1.6.13";
2238 pub const szOID_VERISIGN_ISS_STRONG_CRYPTO
: &'
static str = "2.16.840.1.113733.1.8.1";
2239 pub const szOIDVerisign_MessageType
: &'
static str = "2.16.840.1.113733.1.9.2";
2240 pub const szOIDVerisign_PkiStatus
: &'
static str = "2.16.840.1.113733.1.9.3";
2241 pub const szOIDVerisign_FailInfo
: &'
static str = "2.16.840.1.113733.1.9.4";
2242 pub const szOIDVerisign_SenderNonce
: &'
static str = "2.16.840.1.113733.1.9.5";
2243 pub const szOIDVerisign_RecipientNonce
: &'
static str = "2.16.840.1.113733.1.9.6";
2244 pub const szOIDVerisign_TransactionID
: &'
static str = "2.16.840.1.113733.1.9.7";
2245 pub const szOID_NETSCAPE
: &'
static str = "2.16.840.1.113730";
2246 pub const szOID_NETSCAPE_CERT_EXTENSION
: &'
static str = "2.16.840.1.113730.1";
2247 pub const szOID_NETSCAPE_CERT_TYPE
: &'
static str = "2.16.840.1.113730.1.1";
2248 pub const szOID_NETSCAPE_BASE_URL
: &'
static str = "2.16.840.1.113730.1.2";
2249 pub const szOID_NETSCAPE_REVOCATION_URL
: &'
static str = "2.16.840.1.113730.1.3";
2250 pub const szOID_NETSCAPE_CA_REVOCATION_URL
: &'
static str = "2.16.840.1.113730.1.4";
2251 pub const szOID_NETSCAPE_CERT_RENEWAL_URL
: &'
static str = "2.16.840.1.113730.1.7";
2252 pub const szOID_NETSCAPE_CA_POLICY_URL
: &'
static str = "2.16.840.1.113730.1.8";
2253 pub const szOID_NETSCAPE_SSL_SERVER_NAME
: &'
static str = "2.16.840.1.113730.1.12";
2254 pub const szOID_NETSCAPE_COMMENT
: &'
static str = "2.16.840.1.113730.1.13";
2255 pub const szOID_NETSCAPE_DATA_TYPE
: &'
static str = "2.16.840.1.113730.2";
2256 pub const szOID_NETSCAPE_CERT_SEQUENCE
: &'
static str = "2.16.840.1.113730.2.5";
2257 pub const NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE
: DWORD
= 0x80;
2258 pub const NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE
: DWORD
= 0x40;
2259 pub const NETSCAPE_SMIME_CERT_TYPE
: DWORD
= 0x20;
2260 pub const NETSCAPE_SIGN_CERT_TYPE
: DWORD
= 0x10;
2261 pub const NETSCAPE_SSL_CA_CERT_TYPE
: DWORD
= 0x04;
2262 pub const NETSCAPE_SMIME_CA_CERT_TYPE
: DWORD
= 0x02;
2263 pub const NETSCAPE_SIGN_CA_CERT_TYPE
: DWORD
= 0x01;
2264 pub const szOID_CT_PKI_DATA
: &'
static str = "1.3.6.1.5.5.7.12.2";
2265 pub const szOID_CT_PKI_RESPONSE
: &'
static str = "1.3.6.1.5.5.7.12.3";
2266 pub const szOID_PKIX_NO_SIGNATURE
: &'
static str = "1.3.6.1.5.5.7.6.2";
2267 pub const szOID_CMC
: &'
static str = "1.3.6.1.5.5.7.7";
2268 pub const szOID_CMC_STATUS_INFO
: &'
static str = "1.3.6.1.5.5.7.7.1";
2269 pub const szOID_CMC_IDENTIFICATION
: &'
static str = "1.3.6.1.5.5.7.7.2";
2270 pub const szOID_CMC_IDENTITY_PROOF
: &'
static str = "1.3.6.1.5.5.7.7.3";
2271 pub const szOID_CMC_DATA_RETURN
: &'
static str = "1.3.6.1.5.5.7.7.4";
2272 pub const szOID_CMC_TRANSACTION_ID
: &'
static str = "1.3.6.1.5.5.7.7.5";
2273 pub const szOID_CMC_SENDER_NONCE
: &'
static str = "1.3.6.1.5.5.7.7.6";
2274 pub const szOID_CMC_RECIPIENT_NONCE
: &'
static str = "1.3.6.1.5.5.7.7.7";
2275 pub const szOID_CMC_ADD_EXTENSIONS
: &'
static str = "1.3.6.1.5.5.7.7.8";
2276 pub const szOID_CMC_ENCRYPTED_POP
: &'
static str = "1.3.6.1.5.5.7.7.9";
2277 pub const szOID_CMC_DECRYPTED_POP
: &'
static str = "1.3.6.1.5.5.7.7.10";
2278 pub const szOID_CMC_LRA_POP_WITNESS
: &'
static str = "1.3.6.1.5.5.7.7.11";
2279 pub const szOID_CMC_GET_CERT
: &'
static str = "1.3.6.1.5.5.7.7.15";
2280 pub const szOID_CMC_GET_CRL
: &'
static str = "1.3.6.1.5.5.7.7.16";
2281 pub const szOID_CMC_REVOKE_REQUEST
: &'
static str = "1.3.6.1.5.5.7.7.17";
2282 pub const szOID_CMC_REG_INFO
: &'
static str = "1.3.6.1.5.5.7.7.18";
2283 pub const szOID_CMC_RESPONSE_INFO
: &'
static str = "1.3.6.1.5.5.7.7.19";
2284 pub const szOID_CMC_QUERY_PENDING
: &'
static str = "1.3.6.1.5.5.7.7.21";
2285 pub const szOID_CMC_ID_POP_LINK_RANDOM
: &'
static str = "1.3.6.1.5.5.7.7.22";
2286 pub const szOID_CMC_ID_POP_LINK_WITNESS
: &'
static str = "1.3.6.1.5.5.7.7.23";
2287 pub const szOID_CMC_ID_CONFIRM_CERT_ACCEPTANCE
: &'
static str = "1.3.6.1.5.5.7.7.24";
2288 pub const szOID_CMC_ADD_ATTRIBUTES
: &'
static str = "1.3.6.1.4.1.311.10.10.1";
2289 STRUCT
!{struct CMC_TAGGED_ATTRIBUTE
{
2290 dwBodyPartID
: DWORD
,
2291 Attribute
: CRYPT_ATTRIBUTE
,
2293 pub type PCMC_TAGGED_ATTRIBUTE
= *mut CMC_TAGGED_ATTRIBUTE
;
2294 STRUCT
!{struct CMC_TAGGED_CERT_REQUEST
{
2295 dwBodyPartID
: DWORD
,
2296 SignedCertRequest
: CRYPT_DER_BLOB
,
2298 pub type PCMC_TAGGED_CERT_REQUEST
= *mut CMC_TAGGED_CERT_REQUEST
;
2299 UNION
!{union CMC_TAGGED_REQUEST_u
{
2301 pTaggedCertRequest pTaggedCertRequest_mut
: PCMC_TAGGED_CERT_REQUEST
,
2303 STRUCT
!{struct CMC_TAGGED_REQUEST
{
2304 dwTaggedRequestChoice
: DWORD
,
2305 u
: CMC_TAGGED_REQUEST_u
,
2307 pub type PCMC_TAGGED_REQUEST
= *mut CMC_TAGGED_REQUEST
;
2308 STRUCT
!{struct CMC_TAGGED_CONTENT_INFO
{
2309 dwBodyPartID
: DWORD
,
2310 EncodedContentInfo
: CRYPT_DER_BLOB
,
2312 pub type PCMC_TAGGED_CONTENT_INFO
= *mut CMC_TAGGED_CONTENT_INFO
;
2313 STRUCT
!{struct CMC_TAGGED_OTHER_MSG
{
2314 dwBodyPartID
: DWORD
,
2316 Value
: CRYPT_OBJID_BLOB
,
2318 pub type PCMC_TAGGED_OTHER_MSG
= *mut CMC_TAGGED_OTHER_MSG
;
2319 STRUCT
!{struct CMC_DATA_INFO
{
2320 cTaggedAttribute
: DWORD
,
2321 rgTaggedAttribute
: PCMC_TAGGED_ATTRIBUTE
,
2322 cTaggedRequest
: DWORD
,
2323 rgTaggedRequest
: PCMC_TAGGED_REQUEST
,
2324 cTaggedContentInfo
: DWORD
,
2325 rgTaggedContentInfo
: PCMC_TAGGED_CONTENT_INFO
,
2326 cTaggedOtherMsg
: DWORD
,
2327 rgTaggedOtherMsg
: PCMC_TAGGED_OTHER_MSG
,
2329 pub type PCMC_DATA_INFO
= *mut CMC_DATA_INFO
;
2330 STRUCT
!{struct CMC_RESPONSE_INFO
{
2331 cTaggedAttribute
: DWORD
,
2332 rgTaggedAttribute
: PCMC_TAGGED_ATTRIBUTE
,
2333 cTaggedContentInfo
: DWORD
,
2334 rgTaggedContentInfo
: PCMC_TAGGED_CONTENT_INFO
,
2335 cTaggedOtherMsg
: DWORD
,
2336 rgTaggedOtherMsg
: PCMC_TAGGED_OTHER_MSG
,
2338 pub type PCMC_RESPONSE_INFO
= *mut CMC_RESPONSE_INFO
;
2339 STRUCT
!{struct CMC_PEND_INFO
{
2340 PendToken
: CRYPT_DATA_BLOB
,
2343 pub type PCMC_PEND_INFO
= *mut CMC_PEND_INFO
;
2344 UNION
!{union CMC_STATUS_INFO_u
{
2346 dwFailInfo dwFailInfo_mut
: DWORD
,
2347 pPendInfo pPendInfo_mut
: PCMC_PEND_INFO
,
2349 STRUCT
!{struct CMC_STATUS_INFO
{
2352 rgdwBodyList
: *mut DWORD
,
2353 pwszStatusString
: LPWSTR
,
2354 dwOtherInfoChoice
: DWORD
,
2355 u
: CMC_STATUS_INFO_u
,
2357 pub type PCMC_STATUS_INFO
= *mut CMC_STATUS_INFO
;
2358 pub const CMC_OTHER_INFO_NO_CHOICE
: DWORD
= 0;
2359 pub const CMC_OTHER_INFO_FAIL_CHOICE
: DWORD
= 1;
2360 pub const CMC_OTHER_INFO_PEND_CHOICE
: DWORD
= 2;
2361 pub const CMC_STATUS_SUCCESS
: DWORD
= 0;
2362 pub const CMC_STATUS_FAILED
: DWORD
= 2;
2363 pub const CMC_STATUS_PENDING
: DWORD
= 3;
2364 pub const CMC_STATUS_NO_SUPPORT
: DWORD
= 4;
2365 pub const CMC_STATUS_CONFIRM_REQUIRED
: DWORD
= 5;
2366 pub const CMC_FAIL_BAD_ALG
: DWORD
= 0;
2367 pub const CMC_FAIL_BAD_MESSAGE_CHECK
: DWORD
= 1;
2368 pub const CMC_FAIL_BAD_REQUEST
: DWORD
= 2;
2369 pub const CMC_FAIL_BAD_TIME
: DWORD
= 3;
2370 pub const CMC_FAIL_BAD_CERT_ID
: DWORD
= 4;
2371 pub const CMC_FAIL_UNSUPORTED_EXT
: DWORD
= 5;
2372 pub const CMC_FAIL_MUST_ARCHIVE_KEYS
: DWORD
= 6;
2373 pub const CMC_FAIL_BAD_IDENTITY
: DWORD
= 7;
2374 pub const CMC_FAIL_POP_REQUIRED
: DWORD
= 8;
2375 pub const CMC_FAIL_POP_FAILED
: DWORD
= 9;
2376 pub const CMC_FAIL_NO_KEY_REUSE
: DWORD
= 10;
2377 pub const CMC_FAIL_INTERNAL_CA_ERROR
: DWORD
= 11;
2378 pub const CMC_FAIL_TRY_LATER
: DWORD
= 12;
2379 STRUCT
!{struct CMC_ADD_EXTENSIONS_INFO
{
2380 dwCmcDataReference
: DWORD
,
2381 cCertReference
: DWORD
,
2382 rgdwCertReference
: *mut DWORD
,
2384 rgExtension
: PCERT_EXTENSION
,
2386 pub type PCMC_ADD_EXTENSIONS_INFO
= *mut CMC_ADD_EXTENSIONS_INFO
;
2387 STRUCT
!{struct CMC_ADD_ATTRIBUTES_INFO
{
2388 dwCmcDataReference
: DWORD
,
2389 cCertReference
: DWORD
,
2390 rgdwCertReference
: *mut DWORD
,
2392 rgAttribute
: PCRYPT_ATTRIBUTE
,
2394 pub type PCMC_ADD_ATTRIBUTES_INFO
= *mut CMC_ADD_ATTRIBUTES_INFO
;
2395 STRUCT
!{struct CERT_TEMPLATE_EXT
{
2397 dwMajorVersion
: DWORD
,
2398 fMinorVersion
: BOOL
,
2399 dwMinorVersion
: DWORD
,
2401 pub type PCERT_TEMPLATE_EXT
= *mut CERT_TEMPLATE_EXT
;
2402 STRUCT
!{struct CERT_HASHED_URL
{
2403 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2404 Hash
: CRYPT_HASH_BLOB
,
2407 pub type PCERT_HASHED_URL
= *mut CERT_HASHED_URL
;
2408 STRUCT
!{struct CERT_LOGOTYPE_DETAILS
{
2409 pwszMimeType
: LPWSTR
,
2411 rgHashedUrl
: PCERT_HASHED_URL
,
2413 pub type PCERT_LOGOTYPE_DETAILS
= *mut CERT_LOGOTYPE_DETAILS
;
2414 STRUCT
!{struct CERT_LOGOTYPE_REFERENCE
{
2416 rgHashedUrl
: PCERT_HASHED_URL
,
2418 pub type PCERT_LOGOTYPE_REFERENCE
= *mut CERT_LOGOTYPE_REFERENCE
;
2419 UNION
!{union CERT_LOGOTYPE_IMAGE_INFO_u
{
2421 dwNumBits dwNumBits_mut
: DWORD
,
2422 dwTableSize dwTableSize_mut
: DWORD
,
2424 STRUCT
!{struct CERT_LOGOTYPE_IMAGE_INFO
{
2425 dwLogotypeImageInfoChoice
: DWORD
,
2429 dwLogotypeImageResolutionChoice
: DWORD
,
2430 u
: CERT_LOGOTYPE_IMAGE_INFO_u
,
2431 pwszLanguage
: LPWSTR
,
2433 pub type PCERT_LOGOTYPE_IMAGE_INFO
= *mut CERT_LOGOTYPE_IMAGE_INFO
;
2434 pub const CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE
: DWORD
= 1;
2435 pub const CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE
: DWORD
= 2;
2436 pub const CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE
: DWORD
= 0;
2437 pub const CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE
: DWORD
= 1;
2438 pub const CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE
: DWORD
= 2;
2439 STRUCT
!{struct CERT_LOGOTYPE_IMAGE
{
2440 LogotypeDetails
: CERT_LOGOTYPE_DETAILS
,
2441 pLogotypeImageInfo
: PCERT_LOGOTYPE_IMAGE_INFO
,
2443 pub type PCERT_LOGOTYPE_IMAGE
= *mut CERT_LOGOTYPE_IMAGE
;
2444 STRUCT
!{struct CERT_LOGOTYPE_AUDIO_INFO
{
2448 dwSampleRate
: DWORD
,
2449 pwszLanguage
: LPWSTR
,
2451 pub type PCERT_LOGOTYPE_AUDIO_INFO
= *mut CERT_LOGOTYPE_AUDIO_INFO
;
2452 STRUCT
!{struct CERT_LOGOTYPE_AUDIO
{
2453 LogotypeDetails
: CERT_LOGOTYPE_DETAILS
,
2454 pLogotypeAudioInfo
: PCERT_LOGOTYPE_AUDIO_INFO
,
2456 pub type PCERT_LOGOTYPE_AUDIO
= *mut CERT_LOGOTYPE_AUDIO
;
2457 STRUCT
!{struct CERT_LOGOTYPE_DATA
{
2458 cLogotypeImage
: DWORD
,
2459 rgLogotypeImage
: PCERT_LOGOTYPE_IMAGE
,
2460 cLogotypeAudio
: DWORD
,
2461 rgLogotypeAudio
: PCERT_LOGOTYPE_AUDIO
,
2463 pub type PCERT_LOGOTYPE_DATA
= *mut CERT_LOGOTYPE_DATA
;
2464 UNION
!{union CERT_LOGOTYPE_INFO_u
{
2466 pLogotypeDirectInfo pLogotypeDirectInfo_mut
: PCERT_LOGOTYPE_DATA
,
2467 pLogotypeIndirectInfo pLogotypeIndirectInfo__mut
: PCERT_LOGOTYPE_REFERENCE
,
2469 STRUCT
!{struct CERT_LOGOTYPE_INFO
{
2470 dwLogotypeInfoChoice
: DWORD
,
2471 u
: CERT_LOGOTYPE_INFO_u
,
2473 pub type PCERT_LOGOTYPE_INFO
= *mut CERT_LOGOTYPE_INFO
;
2474 pub const CERT_LOGOTYPE_DIRECT_INFO_CHOICE
: DWORD
= 1;
2475 pub const CERT_LOGOTYPE_INDIRECT_INFO_CHOICE
: DWORD
= 2;
2476 STRUCT
!{struct CERT_OTHER_LOGOTYPE_INFO
{
2478 LogotypeInfo
: CERT_LOGOTYPE_INFO
,
2480 pub type PCERT_OTHER_LOGOTYPE_INFO
= *mut CERT_OTHER_LOGOTYPE_INFO
;
2481 pub const szOID_LOYALTY_OTHER_LOGOTYPE
: &'
static str = "1.3.6.1.5.5.7.20.1";
2482 pub const szOID_BACKGROUND_OTHER_LOGOTYPE
: &'
static str = "1.3.6.1.5.5.7.20.2";
2483 STRUCT
!{struct CERT_LOGOTYPE_EXT_INFO
{
2484 cCommunityLogo
: DWORD
,
2485 rgCommunityLogo
: PCERT_LOGOTYPE_INFO
,
2486 pIssuerLogo
: PCERT_LOGOTYPE_INFO
,
2487 pSubjectLogo
: PCERT_LOGOTYPE_INFO
,
2489 rgOtherLogo
: PCERT_OTHER_LOGOTYPE_INFO
,
2491 pub type PCERT_LOGOTYPE_EXT_INFO
= *mut CERT_LOGOTYPE_EXT_INFO
;
2492 UNION
!{union CERT_BIOMETRIC_DATA_u
{
2494 dwPredefined dwPredefined_mut
: DWORD
,
2495 pszObjId pszObjId_mut
: LPSTR
,
2497 STRUCT
!{struct CERT_BIOMETRIC_DATA
{
2498 dwTypeOfBiometricDataChoice
: DWORD
,
2499 u
: CERT_BIOMETRIC_DATA_u
,
2500 HashedUrl
: CERT_HASHED_URL
,
2502 pub type PCERT_BIOMETRIC_DATA
= *mut CERT_BIOMETRIC_DATA
;
2503 pub const CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE
: DWORD
= 1;
2504 pub const CERT_BIOMETRIC_OID_DATA_CHOICE
: DWORD
= 2;
2505 pub const CERT_BIOMETRIC_PICTURE_TYPE
: DWORD
= 0;
2506 pub const CERT_BIOMETRIC_SIGNATURE_TYPE
: DWORD
= 1;
2507 STRUCT
!{struct CERT_BIOMETRIC_EXT_INFO
{
2508 cBiometricData
: DWORD
,
2509 rgBiometricData
: PCERT_BIOMETRIC_DATA
,
2511 pub type PCERT_BIOMETRIC_EXT_INFO
= *mut CERT_BIOMETRIC_EXT_INFO
;
2512 STRUCT
!{struct OCSP_SIGNATURE_INFO
{
2513 SignatureAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2514 Signature
: CRYPT_BIT_BLOB
,
2515 cCertEncoded
: DWORD
,
2516 rgCertEncoded
: PCERT_BLOB
,
2518 pub type POCSP_SIGNATURE_INFO
= *mut OCSP_SIGNATURE_INFO
;
2519 STRUCT
!{struct OCSP_SIGNED_REQUEST_INFO
{
2520 ToBeSigned
: CRYPT_DER_BLOB
,
2521 pOptionalSignatureInfo
: POCSP_SIGNATURE_INFO
,
2523 pub type POCSP_SIGNED_REQUEST_INFO
= *mut OCSP_SIGNED_REQUEST_INFO
;
2524 STRUCT
!{struct OCSP_CERT_ID
{
2525 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2526 IssuerNameHash
: CRYPT_HASH_BLOB
,
2527 IssuerKeyHash
: CRYPT_HASH_BLOB
,
2528 SerialNumber
: CRYPT_INTEGER_BLOB
,
2530 pub type POCSP_CERT_ID
= *mut OCSP_CERT_ID
;
2531 STRUCT
!{struct OCSP_REQUEST_ENTRY
{
2532 CertId
: OCSP_CERT_ID
,
2534 rgExtension
: PCERT_EXTENSION
,
2536 pub type POCSP_REQUEST_ENTRY
= *mut OCSP_REQUEST_ENTRY
;
2537 STRUCT
!{struct OCSP_REQUEST_INFO
{
2539 pRequestorName
: PCERT_ALT_NAME_ENTRY
,
2540 cRequestEntry
: DWORD
,
2541 rgRequestEntry
: POCSP_REQUEST_ENTRY
,
2543 rgExtension
: PCERT_EXTENSION
,
2545 pub type POCSP_REQUEST_INFO
= *mut OCSP_REQUEST_INFO
;
2546 pub const OCSP_REQUEST_V1
: DWORD
= 0;
2547 STRUCT
!{struct OCSP_RESPONSE_INFO
{
2550 Value
: CRYPT_OBJID_BLOB
,
2552 pub type POCSP_RESPONSE_INFO
= *mut OCSP_RESPONSE_INFO
;
2553 pub const OCSP_SUCCESSFUL_RESPONSE
: DWORD
= 0;
2554 pub const OCSP_MALFORMED_REQUEST_RESPONSE
: DWORD
= 1;
2555 pub const OCSP_INTERNAL_ERROR_RESPONSE
: DWORD
= 2;
2556 pub const OCSP_TRY_LATER_RESPONSE
: DWORD
= 3;
2557 pub const OCSP_SIG_REQUIRED_RESPONSE
: DWORD
= 5;
2558 pub const OCSP_UNAUTHORIZED_RESPONSE
: DWORD
= 6;
2559 pub const szOID_PKIX_OCSP_BASIC_SIGNED_RESPONSE
: &'
static str = "1.3.6.1.5.5.7.48.1.1";
2560 STRUCT
!{struct OCSP_BASIC_SIGNED_RESPONSE_INFO
{
2561 ToBeSigned
: CRYPT_DER_BLOB
,
2562 SignatureInfo
: OCSP_SIGNATURE_INFO
,
2564 pub type POCSP_BASIC_SIGNED_RESPONSE_INFO
= *mut OCSP_BASIC_SIGNED_RESPONSE_INFO
;
2565 STRUCT
!{struct OCSP_BASIC_REVOKED_INFO
{
2566 RevocationDate
: FILETIME
,
2567 dwCrlReasonCode
: DWORD
,
2569 pub type POCSP_BASIC_REVOKED_INFO
= *mut OCSP_BASIC_REVOKED_INFO
;
2570 UNION
!{union OCSP_BASIC_RESPONSE_ENTRY_u
{
2572 pRevokedInfo pRevokedInfo_mut
: POCSP_BASIC_REVOKED_INFO
,
2574 STRUCT
!{struct OCSP_BASIC_RESPONSE_ENTRY
{
2575 CertId
: OCSP_CERT_ID
,
2576 dwCertStatus
: DWORD
,
2577 u
: OCSP_BASIC_RESPONSE_ENTRY_u
,
2578 ThisUpdate
: FILETIME
,
2579 NextUpdate
: FILETIME
,
2581 rgExtension
: PCERT_EXTENSION
,
2583 pub type POCSP_BASIC_RESPONSE_ENTRY
= *mut OCSP_BASIC_RESPONSE_ENTRY
;
2584 pub const OCSP_BASIC_GOOD_CERT_STATUS
: DWORD
= 0;
2585 pub const OCSP_BASIC_REVOKED_CERT_STATUS
: DWORD
= 1;
2586 pub const OCSP_BASIC_UNKNOWN_CERT_STATUS
: DWORD
= 2;
2587 UNION
!{union OCSP_BASIC_RESPONSE_INFO_u
{
2589 ByNameResponderId ByNameResponderId_mut
: CERT_NAME_BLOB
,
2590 ByKeyResponderId ByKeyResponderId_mut
: CRYPT_HASH_BLOB
,
2592 STRUCT
!{struct OCSP_BASIC_RESPONSE_INFO
{
2594 dwResponderIdChoice
: DWORD
,
2595 u
: OCSP_BASIC_RESPONSE_INFO_u
,
2596 ProducedAt
: FILETIME
,
2597 cResponseEntry
: DWORD
,
2598 rgResponseEntry
: POCSP_BASIC_RESPONSE_ENTRY
,
2600 rgExtension
: PCERT_EXTENSION
,
2602 pub type POCSP_BASIC_RESPONSE_INFO
= *mut OCSP_BASIC_RESPONSE_INFO
;
2603 pub const OCSP_BASIC_RESPONSE_V1
: DWORD
= 0;
2604 pub const OCSP_BASIC_BY_NAME_RESPONDER_ID
: DWORD
= 1;
2605 pub const OCSP_BASIC_BY_KEY_RESPONDER_ID
: DWORD
= 2;
2606 STRUCT
!{struct CERT_SUPPORTED_ALGORITHM_INFO
{
2607 Algorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2608 IntendedKeyUsage
: CRYPT_BIT_BLOB
,
2609 IntendedCertPolicies
: CERT_POLICIES_INFO
,
2611 pub type PCERT_SUPPORTED_ALGORITHM_INFO
= *mut CERT_SUPPORTED_ALGORITHM_INFO
;
2612 STRUCT
!{struct CERT_TPM_SPECIFICATION_INFO
{
2617 pub type PCERT_TPM_SPECIFICATION_INFO
= *mut CERT_TPM_SPECIFICATION_INFO
;
2618 pub type HCRYPTOIDFUNCSET
= *mut c_void
;
2619 pub type HCRYPTOIDFUNCADDR
= *mut c_void
;
2620 pub const CRYPT_OID_ENCODE_OBJECT_FUNC
: &'
static str = "CryptDllEncodeObject";
2621 pub const CRYPT_OID_DECODE_OBJECT_FUNC
: &'
static str = "CryptDllDecodeObject";
2622 pub const CRYPT_OID_ENCODE_OBJECT_EX_FUNC
: &'
static str = "CryptDllEncodeObjectEx";
2623 pub const CRYPT_OID_DECODE_OBJECT_EX_FUNC
: &'
static str = "CryptDllDecodeObjectEx";
2624 pub const CRYPT_OID_CREATE_COM_OBJECT_FUNC
: &'
static str = "CryptDllCreateCOMObject";
2625 pub const CRYPT_OID_VERIFY_REVOCATION_FUNC
: &'
static str = "CertDllVerifyRevocation";
2626 pub const CRYPT_OID_VERIFY_CTL_USAGE_FUNC
: &'
static str = "CertDllVerifyCTLUsage";
2627 pub const CRYPT_OID_FORMAT_OBJECT_FUNC
: &'
static str = "CryptDllFormatObject";
2628 pub const CRYPT_OID_FIND_OID_INFO_FUNC
: &'
static str = "CryptDllFindOIDInfo";
2629 pub const CRYPT_OID_FIND_LOCALIZED_NAME_FUNC
: &'
static str = "CryptDllFindLocalizedName";
2630 pub const CRYPT_OID_REGPATH
: &'
static str = "Software\\Microsoft\\Cryptography\\OID";
2631 pub const CRYPT_OID_REG_ENCODING_TYPE_PREFIX
: &'
static str = "EncodingType ";
2632 pub const CRYPT_OID_REG_DLL_VALUE_NAME
: &'
static str = "Dll";
2633 pub const CRYPT_OID_REG_FUNC_NAME_VALUE_NAME
: &'
static str = "FuncName";
2634 pub const CRYPT_OID_REG_FLAGS_VALUE_NAME
: &'
static str = "CryptFlags";
2635 pub const CRYPT_DEFAULT_OID
: &'
static str = "DEFAULT";
2636 STRUCT
!{struct CRYPT_OID_FUNC_ENTRY
{
2638 pvFuncAddr
: *mut c_void
,
2640 pub type PCRYPT_OID_FUNC_ENTRY
= *mut CRYPT_OID_FUNC_ENTRY
;
2641 pub const CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG
: DWORD
= 1;
2643 pub fn CryptInstallOIDFunctionAddress(
2645 dwEncodingType
: DWORD
,
2646 pszFuncName
: LPCSTR
,
2648 rgFuncEntry
: *const CRYPT_OID_FUNC_ENTRY
,
2651 pub fn CryptInitOIDFunctionSet(
2652 pszFuncName
: LPCSTR
,
2654 ) -> HCRYPTOIDFUNCSET
;
2655 pub fn CryptGetOIDFunctionAddress(
2656 hFuncSet
: HCRYPTOIDFUNCSET
,
2657 dwEncodingType
: DWORD
,
2660 ppvFuncAddr
: *mut *mut c_void
,
2661 phFuncAddr
: *mut HCRYPTOIDFUNCADDR
,
2664 pub const CRYPT_GET_INSTALLED_OID_FUNC_FLAG
: DWORD
= 0x1;
2666 pub fn CryptGetDefaultOIDDllList(
2667 hFuncSet
: HCRYPTOIDFUNCSET
,
2668 dwEncodingType
: DWORD
,
2669 pwszDllList
: *mut WCHAR
,
2670 pcchDllList
: *mut DWORD
,
2672 pub fn CryptGetDefaultOIDFunctionAddress(
2673 hFuncSet
: HCRYPTOIDFUNCSET
,
2674 dwEncodingType
: DWORD
,
2677 ppvFuncAddr
: *mut *mut c_void
,
2678 phFuncAddr
: *mut HCRYPTOIDFUNCADDR
,
2680 pub fn CryptFreeOIDFunctionAddress(
2681 hFuncAddr
: HCRYPTOIDFUNCADDR
,
2684 pub fn CryptRegisterOIDFunction(
2685 dwEncodingType
: DWORD
,
2686 pszFuncName
: LPCSTR
,
2689 pszOverrideFuncName
: LPCSTR
,
2691 pub fn CryptUnregisterOIDFunction(
2692 dwEncodingType
: DWORD
,
2693 pszFuncName
: LPCSTR
,
2696 pub fn CryptRegisterDefaultOIDFunction(
2697 dwEncodingType
: DWORD
,
2698 pszFuncName
: LPCSTR
,
2703 pub const CRYPT_REGISTER_FIRST_INDEX
: DWORD
= 0;
2704 pub const CRYPT_REGISTER_LAST_INDEX
: DWORD
= 0xFFFFFFFF;
2706 pub fn CryptUnregisterDefaultOIDFunction(
2707 dwEncodingType
: DWORD
,
2708 pszFuncName
: LPCSTR
,
2711 pub fn CryptSetOIDFunctionValue(
2712 dwEncodingType
: DWORD
,
2713 pszFuncName
: LPCSTR
,
2715 pwszValueName
: LPCWSTR
,
2717 pbValueData
: *const BYTE
,
2720 pub fn CryptGetOIDFunctionValue(
2721 dwEncodingType
: DWORD
,
2722 pszFuncName
: LPCSTR
,
2724 pwszValueName
: LPCWSTR
,
2725 pdwValueType
: *mut DWORD
,
2726 pbValueData
: *mut BYTE
,
2727 pcbValueData
: *mut DWORD
,
2730 FN
!{stdcall
PFN_CRYPT_ENUM_OID_FUNC(
2731 dwEncodingType
: DWORD
,
2732 pszFuncName
: LPCSTR
,
2735 rgdwValueType
: *const DWORD
,
2736 rgpwszValueName
: *const LPCWSTR
,
2737 rgpbValueData
: *const *const BYTE
,
2738 rgcbValueData
: *const DWORD
,
2742 pub fn CryptEnumOIDFunction(
2743 dwEncodingType
: DWORD
,
2744 pszFuncName
: LPCSTR
,
2748 pfnEnumOIDFunc
: PFN_CRYPT_ENUM_OID_FUNC
,
2751 pub const CRYPT_MATCH_ANY_ENCODING_TYPE
: DWORD
= 0xFFFFFFFF;
2752 pub const CALG_OID_INFO_CNG_ONLY
: ALG_ID
= 0xFFFFFFFF;
2753 pub const CALG_OID_INFO_PARAMETERS
: ALG_ID
= 0xFFFFFFFE;
2755 pub fn IS_SPECIAL_OID_INFO_ALGID(Algid
: ALG_ID
) -> bool
{
2756 Algid
>= CALG_OID_INFO_PARAMETERS
2758 pub const CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM
: &'
static str = "CryptOIDInfoHashParameters";
2759 pub const CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM
: &'
static str = "CryptOIDInfoECCParameters";
2760 pub const CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM
: &'
static str = "CryptOIDInfoMgf1Parameters";
2761 pub const CRYPT_OID_INFO_NO_SIGN_ALGORITHM
: &'
static str = "CryptOIDInfoNoSign";
2762 pub const CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM
: &'
static str = "CryptOIDInfoOAEPParameters";
2763 pub const CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM
: &'
static str
2764 = "CryptOIDInfoECCWrapParameters";
2765 pub const CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM
: &'
static str = "CryptOIDInfoNoParameters";
2766 UNION
!{union CRYPT_OID_INFO_u
{
2768 dwValue dwValue_mut
: DWORD
,
2769 Algid Algid_mut
: ALG_ID
,
2770 dwLength dwLength_mut
: DWORD
,
2772 STRUCT
!{struct CRYPT_OID_INFO
{
2777 u
: CRYPT_OID_INFO_u
,
2778 ExtraInfo
: CRYPT_DATA_BLOB
,
2779 pwszCNGAlgid
: LPCWSTR
,
2780 pwszCNGExtraAlgid
: LPCWSTR
,
2782 pub type PCRYPT_OID_INFO
= *mut CRYPT_OID_INFO
;
2783 pub type PCCRYPT_OID_INFO
= *const CRYPT_OID_INFO
;
2784 pub const CRYPT_HASH_ALG_OID_GROUP_ID
: DWORD
= 1;
2785 pub const CRYPT_ENCRYPT_ALG_OID_GROUP_ID
: DWORD
= 2;
2786 pub const CRYPT_PUBKEY_ALG_OID_GROUP_ID
: DWORD
= 3;
2787 pub const CRYPT_SIGN_ALG_OID_GROUP_ID
: DWORD
= 4;
2788 pub const CRYPT_RDN_ATTR_OID_GROUP_ID
: DWORD
= 5;
2789 pub const CRYPT_EXT_OR_ATTR_OID_GROUP_ID
: DWORD
= 6;
2790 pub const CRYPT_ENHKEY_USAGE_OID_GROUP_ID
: DWORD
= 7;
2791 pub const CRYPT_POLICY_OID_GROUP_ID
: DWORD
= 8;
2792 pub const CRYPT_TEMPLATE_OID_GROUP_ID
: DWORD
= 9;
2793 pub const CRYPT_KDF_OID_GROUP_ID
: DWORD
= 10;
2794 pub const CRYPT_LAST_OID_GROUP_ID
: DWORD
= 10;
2795 pub const CRYPT_FIRST_ALG_OID_GROUP_ID
: DWORD
= CRYPT_HASH_ALG_OID_GROUP_ID
;
2796 pub const CRYPT_LAST_ALG_OID_GROUP_ID
: DWORD
= CRYPT_SIGN_ALG_OID_GROUP_ID
;
2797 pub const CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG
: DWORD
= 0x00000001;
2798 pub const CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG
: DWORD
= 0x00000002;
2799 pub const CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG
: DWORD
= 0x00000004;
2800 pub const CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG
: DWORD
= 0x80000000;
2801 pub const CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG
: DWORD
= 0x40000000;
2802 pub const CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG
: DWORD
= 0x20000000;
2803 pub const CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG
: DWORD
= 0x10000000;
2805 pub fn CryptFindOIDInfo(
2809 ) -> PCCRYPT_OID_INFO
;
2811 pub const CRYPT_OID_INFO_OID_KEY
: DWORD
= 1;
2812 pub const CRYPT_OID_INFO_NAME_KEY
: DWORD
= 2;
2813 pub const CRYPT_OID_INFO_ALGID_KEY
: DWORD
= 3;
2814 pub const CRYPT_OID_INFO_SIGN_KEY
: DWORD
= 4;
2815 pub const CRYPT_OID_INFO_CNG_ALGID_KEY
: DWORD
= 5;
2816 pub const CRYPT_OID_INFO_CNG_SIGN_KEY
: DWORD
= 6;
2817 pub const CRYPT_OID_INFO_OID_KEY_FLAGS_MASK
: DWORD
= 0xFFFF0000;
2818 pub const CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
: DWORD
= 0x80000000;
2819 pub const CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
: DWORD
= 0x40000000;
2820 pub const CRYPT_OID_DISABLE_SEARCH_DS_FLAG
: DWORD
= 0x80000000;
2821 pub const CRYPT_OID_PREFER_CNG_ALGID_FLAG
: DWORD
= 0x40000000;
2822 pub const CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK
: DWORD
= 0x0FFF0000;
2823 pub const CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT
: DWORD
= 16;
2825 pub fn CryptRegisterOIDInfo(
2826 pInfo
: PCCRYPT_OID_INFO
,
2829 pub fn CryptUnregisterOIDInfo(
2830 pInfo
: PCCRYPT_OID_INFO
,
2833 FN
!{stdcall
PFN_CRYPT_ENUM_OID_INFO(
2834 pInfo
: PCCRYPT_OID_INFO
,
2838 pub fn CryptEnumOIDInfo(
2842 pfnEnumOIDInfo
: PFN_CRYPT_ENUM_OID_INFO
,
2844 pub fn CryptFindLocalizedName(
2845 pwszCryptName
: LPCWSTR
,
2848 pub const CRYPT_LOCALIZED_NAME_ENCODING_TYPE
: DWORD
= 0;
2849 pub const CRYPT_LOCALIZED_NAME_OID
: &'
static str = "LocalizedNames";
2850 STRUCT
!{struct CERT_STRONG_SIGN_SERIALIZED_INFO
{
2852 pwszCNGSignHashAlgids
: LPWSTR
,
2853 pwszCNGPubKeyMinBitLengths
: LPWSTR
,
2855 pub type PCERT_STRONG_SIGN_SERIALIZED_INFO
= *mut CERT_STRONG_SIGN_SERIALIZED_INFO
;
2856 pub const CERT_STRONG_SIGN_ECDSA_ALGORITHM
: &'
static str = "ECDSA";
2857 UNION
!{union CERT_STRONG_SIGN_PARA_u
{
2859 pvInfo pvInfo_mut
: *mut c_void
,
2860 pSerializedInfo pSerializedInfo_mut
: PCERT_STRONG_SIGN_SERIALIZED_INFO
,
2861 pszOID pszOID_mut
: LPSTR
,
2863 STRUCT
!{struct CERT_STRONG_SIGN_PARA
{
2865 dwInfoChoice
: DWORD
,
2866 u
: CERT_STRONG_SIGN_PARA_u
,
2868 pub type PCERT_STRONG_SIGN_PARA
= *mut CERT_STRONG_SIGN_PARA
;
2869 pub type PCCERT_STRONG_SIGN_PARA
= *const CERT_STRONG_SIGN_PARA
;
2870 pub const CERT_STRONG_SIGN_SERIALIZED_INFO_CHOICE
: DWORD
= 1;
2871 pub const CERT_STRONG_SIGN_OID_INFO_CHOICE
: DWORD
= 2;
2872 pub const CERT_STRONG_SIGN_ENABLE_CRL_CHECK
: DWORD
= 0x1;
2873 pub const CERT_STRONG_SIGN_ENABLE_OCSP_CHECK
: DWORD
= 0x2;
2874 pub const szOID_CERT_STRONG_SIGN_OS_PREFIX
: &'
static str = "1.3.6.1.4.1.311.72.1.";
2875 pub const szOID_CERT_STRONG_SIGN_OS_1
: &'
static str = "1.3.6.1.4.1.311.72.1.1";
2876 pub const szOID_CERT_STRONG_SIGN_OS_CURRENT
: &'
static str = szOID_CERT_STRONG_SIGN_OS_1
;
2877 pub const szOID_CERT_STRONG_KEY_OS_PREFIX
: &'
static str = "1.3.6.1.4.1.311.72.2.";
2878 pub const szOID_CERT_STRONG_KEY_OS_1
: &'
static str = "1.3.6.1.4.1.311.72.2.1";
2879 pub const szOID_CERT_STRONG_KEY_OS_CURRENT
: &'
static str = szOID_CERT_STRONG_KEY_OS_1
;
2880 pub type HCRYPTMSG
= *mut c_void
;
2881 pub const szOID_PKCS_7_DATA
: &'
static str = "1.2.840.113549.1.7.1";
2882 pub const szOID_PKCS_7_SIGNED
: &'
static str = "1.2.840.113549.1.7.2";
2883 pub const szOID_PKCS_7_ENVELOPED
: &'
static str = "1.2.840.113549.1.7.3";
2884 pub const szOID_PKCS_7_SIGNEDANDENVELOPED
: &'
static str = "1.2.840.113549.1.7.4";
2885 pub const szOID_PKCS_7_DIGESTED
: &'
static str = "1.2.840.113549.1.7.5";
2886 pub const szOID_PKCS_7_ENCRYPTED
: &'
static str = "1.2.840.113549.1.7.6";
2887 pub const szOID_PKCS_9_CONTENT_TYPE
: &'
static str = "1.2.840.113549.1.9.3";
2888 pub const szOID_PKCS_9_MESSAGE_DIGEST
: &'
static str = "1.2.840.113549.1.9.4";
2889 pub const CMSG_DATA
: DWORD
= 1;
2890 pub const CMSG_SIGNED
: DWORD
= 2;
2891 pub const CMSG_ENVELOPED
: DWORD
= 3;
2892 pub const CMSG_SIGNED_AND_ENVELOPED
: DWORD
= 4;
2893 pub const CMSG_HASHED
: DWORD
= 5;
2894 pub const CMSG_ENCRYPTED
: DWORD
= 6;
2895 pub const CMSG_ALL_FLAGS
: DWORD
= !0;
2896 pub const CMSG_DATA_FLAG
: DWORD
= 1 << CMSG_DATA
;
2897 pub const CMSG_SIGNED_FLAG
: DWORD
= 1 << CMSG_SIGNED
;
2898 pub const CMSG_ENVELOPED_FLAG
: DWORD
= 1 << CMSG_ENVELOPED
;
2899 pub const CMSG_SIGNED_AND_ENVELOPED_FLAG
: DWORD
= 1 << CMSG_SIGNED_AND_ENVELOPED
;
2900 pub const CMSG_HASHED_FLAG
: DWORD
= 1 << CMSG_HASHED
;
2901 pub const CMSG_ENCRYPTED_FLAG
: DWORD
= 1 << CMSG_ENCRYPTED
;
2902 STRUCT
!{struct CERT_ISSUER_SERIAL_NUMBER
{
2903 Issuer
: CERT_NAME_BLOB
,
2904 SerialNumber
: CRYPT_INTEGER_BLOB
,
2906 pub type PCERT_ISSUER_SERIAL_NUMBER
= *mut CERT_ISSUER_SERIAL_NUMBER
;
2907 UNION
!{union CERT_ID_u
{
2909 IssuerSerialNumber IssuerSerialNumber_mut
: CERT_ISSUER_SERIAL_NUMBER
,
2910 KeyId KeyId_mut
: CRYPT_HASH_BLOB
,
2911 HashId HashId_mut
: CRYPT_HASH_BLOB
,
2913 STRUCT
!{struct CERT_ID
{
2917 pub type PCERT_ID
= *mut CERT_ID
;
2918 pub const CERT_ID_ISSUER_SERIAL_NUMBER
: DWORD
= 1;
2919 pub const CERT_ID_KEY_IDENTIFIER
: DWORD
= 2;
2920 pub const CERT_ID_SHA1_HASH
: DWORD
= 3;
2921 UNION
!{union CMSG_SIGNER_ENCODE_INFO_u
{
2923 hCryptProv hCryptProv_mut
: HCRYPTPROV
,
2924 hNCryptKey hNCryptKey_mut
: NCRYPT_KEY_HANDLE
,
2925 hBCryptKey hBCryptKey_mut
: BCRYPT_KEY_HANDLE
,
2927 STRUCT
!{struct CMSG_SIGNER_ENCODE_INFO
{
2929 pCertInfo
: PCERT_INFO
,
2930 u
: CMSG_SIGNER_ENCODE_INFO_u
,
2932 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2933 pvHashAuxInfo
: *mut c_void
,
2935 rgAuthAttr
: PCRYPT_ATTRIBUTE
,
2937 rgUnauthAttr
: PCRYPT_ATTRIBUTE
,
2939 HashEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2940 pvHashEncryptionAuxInfo
: *mut c_void
,
2942 pub type PCMSG_SIGNER_ENCODE_INFO
= *mut CMSG_SIGNER_ENCODE_INFO
;
2943 STRUCT
!{struct CMSG_SIGNED_ENCODE_INFO
{
2946 rgSigners
: PCMSG_SIGNER_ENCODE_INFO
,
2947 cCertEncoded
: DWORD
,
2948 rgCertEncoded
: PCERT_BLOB
,
2950 rgCrlEncoded
: PCRL_BLOB
,
2951 cAttrCertEncoded
: DWORD
,
2952 rgAttrCertEncoded
: PCERT_BLOB
,
2954 pub type PCMSG_SIGNED_ENCODE_INFO
= *mut CMSG_SIGNED_ENCODE_INFO
;
2955 pub type PCMSG_RECIPIENT_ENCODE_INFO
= *mut CMSG_RECIPIENT_ENCODE_INFO
;
2956 STRUCT
!{struct CMSG_ENVELOPED_ENCODE_INFO
{
2958 hCryptProv
: HCRYPTPROV_LEGACY
,
2959 ContentEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2960 pvEncryptionAuxInfo
: *mut c_void
,
2962 rgpRecipients
: *mut PCERT_INFO
,
2963 rgCmsRecipients
: PCMSG_RECIPIENT_ENCODE_INFO
,
2964 cCertEncoded
: DWORD
,
2965 rgCertEncoded
: PCERT_BLOB
,
2967 rgCrlEncoded
: PCRL_BLOB
,
2968 cAttrCertEncoded
: DWORD
,
2969 rgAttrCertEncoded
: PCERT_BLOB
,
2970 cUnprotectedAttr
: DWORD
,
2971 rgUnprotectedAttr
: PCRYPT_ATTRIBUTE
,
2973 pub type PCMSG_ENVELOPED_ENCODE_INFO
= *mut CMSG_ENVELOPED_ENCODE_INFO
;
2974 STRUCT
!{struct CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
{
2976 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2977 pvKeyEncryptionAuxInfo
: *mut c_void
,
2978 hCryptProv
: HCRYPTPROV_LEGACY
,
2979 RecipientPublicKey
: CRYPT_BIT_BLOB
,
2980 RecipientId
: CERT_ID
,
2982 pub type PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
= *mut CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
;
2983 STRUCT
!{struct CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
{
2985 RecipientPublicKey
: CRYPT_BIT_BLOB
,
2986 RecipientId
: CERT_ID
,
2988 pOtherAttr
: PCRYPT_ATTRIBUTE_TYPE_VALUE
,
2990 pub type PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
= *mut CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
;
2991 UNION
!{union CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO_u
{
2993 pEphemeralAlgorithm pEphemeralAlgorithm_mut
: PCRYPT_ALGORITHM_IDENTIFIER
,
2994 pSenderId pSenderId_mut
: PCERT_ID
,
2996 STRUCT
!{struct CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
{
2998 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
2999 pvKeyEncryptionAuxInfo
: *mut c_void
,
3000 KeyWrapAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3001 pvKeyWrapAuxInfo
: *mut c_void
,
3002 hCryptProv
: HCRYPTPROV_LEGACY
,
3005 u
: CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO_u
,
3006 UserKeyingMaterial
: CRYPT_DATA_BLOB
,
3007 cRecipientEncryptedKeys
: DWORD
,
3008 rgpRecipientEncryptedKeys
: *mut PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO
,
3010 pub type PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
= *mut CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
;
3011 pub const CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE
: DWORD
= 1;
3012 pub const CMSG_KEY_AGREE_STATIC_KEY_CHOICE
: DWORD
= 2;
3013 UNION
!{union CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO_u
{
3015 hKeyEncryptionKey hKeyEncryptionKey_mut
: HCRYPTKEY
,
3016 pvKeyEncryptionKey pvKeyEncryptionKey_mut
: *mut c_void
,
3018 STRUCT
!{struct CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
{
3020 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3021 pvKeyEncryptionAuxInfo
: *mut c_void
,
3022 hCryptProv
: HCRYPTPROV
,
3024 u
: CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO_u
,
3025 KeyId
: CRYPT_DATA_BLOB
,
3027 pOtherAttr
: PCRYPT_ATTRIBUTE_TYPE_VALUE
,
3029 pub type PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
= *mut CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
;
3030 pub const CMSG_MAIL_LIST_HANDLE_KEY_CHOICE
: DWORD
= 1;
3031 UNION
!{union CMSG_RECIPIENT_ENCODE_INFO_u
{
3033 pKeyTrans pKeyTrans_mut
: PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
,
3034 pKeyAgree pKeyAgree_mut
: PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
,
3035 pMailList pMailList_mut
: PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
,
3037 STRUCT
!{struct CMSG_RECIPIENT_ENCODE_INFO
{
3038 dwRecipientChoice
: DWORD
,
3039 u
: CMSG_RECIPIENT_ENCODE_INFO_u
,
3041 pub const CMSG_KEY_TRANS_RECIPIENT
: DWORD
= 1;
3042 pub const CMSG_KEY_AGREE_RECIPIENT
: DWORD
= 2;
3043 pub const CMSG_MAIL_LIST_RECIPIENT
: DWORD
= 3;
3044 STRUCT
!{struct CMSG_RC2_AUX_INFO
{
3048 pub type PCMSG_RC2_AUX_INFO
= *mut CMSG_RC2_AUX_INFO
;
3049 STRUCT
!{struct CMSG_SP3_COMPATIBLE_AUX_INFO
{
3053 pub type PCMSG_SP3_COMPATIBLE_AUX_INFO
= *mut CMSG_SP3_COMPATIBLE_AUX_INFO
;
3054 pub const CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG
: DWORD
= 0x80000000;
3055 STRUCT
!{struct CMSG_RC4_AUX_INFO
{
3059 pub type PCMSG_RC4_AUX_INFO
= *mut CMSG_RC4_AUX_INFO
;
3060 pub const CMSG_RC4_NO_SALT_FLAG
: DWORD
= 0x40000000;
3061 STRUCT
!{struct CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
{
3063 SignedInfo
: CMSG_SIGNED_ENCODE_INFO
,
3064 EnvelopedInfo
: CMSG_ENVELOPED_ENCODE_INFO
,
3066 pub type PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
= *mut CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO
;
3067 STRUCT
!{struct CMSG_HASHED_ENCODE_INFO
{
3069 hCryptProv
: HCRYPTPROV_LEGACY
,
3070 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3071 pvHashAuxInfo
: *mut c_void
,
3073 pub type PCMSG_HASHED_ENCODE_INFO
= *mut CMSG_HASHED_ENCODE_INFO
;
3074 STRUCT
!{struct CMSG_ENCRYPTED_ENCODE_INFO
{
3076 ContentEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3077 pvEncryptionAuxInfo
: *mut c_void
,
3079 pub type PCMSG_ENCRYPTED_ENCODE_INFO
= *mut CMSG_ENCRYPTED_ENCODE_INFO
;
3080 FN
!{stdcall
PFN_CMSG_STREAM_OUTPUT(
3081 pvArg
: *const c_void
,
3086 pub const CMSG_INDEFINITE_LENGTH
: DWORD
= 0xFFFFFFFF;
3087 STRUCT
!{struct CMSG_STREAM_INFO
{
3089 pfnStreamOutput
: PFN_CMSG_STREAM_OUTPUT
,
3092 pub type PCMSG_STREAM_INFO
= *mut CMSG_STREAM_INFO
;
3093 pub const CMSG_BARE_CONTENT_FLAG
: DWORD
= 0x00000001;
3094 pub const CMSG_LENGTH_ONLY_FLAG
: DWORD
= 0x00000002;
3095 pub const CMSG_DETACHED_FLAG
: DWORD
= 0x00000004;
3096 pub const CMSG_AUTHENTICATED_ATTRIBUTES_FLAG
: DWORD
= 0x00000008;
3097 pub const CMSG_CONTENTS_OCTETS_FLAG
: DWORD
= 0x00000010;
3098 pub const CMSG_MAX_LENGTH_FLAG
: DWORD
= 0x00000020;
3099 pub const CMSG_CMS_ENCAPSULATED_CONTENT_FLAG
: DWORD
= 0x00000040;
3100 pub const CMSG_SIGNED_DATA_NO_SIGN_FLAG
: DWORD
= 0x00000080;
3101 pub const CMSG_CRYPT_RELEASE_CONTEXT_FLAG
: DWORD
= 0x00008000;
3103 pub fn CryptMsgOpenToEncode(
3104 dwMsgEncodingType
: DWORD
,
3107 pvMsgEncodeInfo
: *mut c_void
,
3108 pszInnerContentObjID
: LPSTR
,
3109 pStreamInfo
: PCMSG_STREAM_INFO
,
3111 pub fn CryptMsgCalculateEncodedLength(
3112 dwMsgEncodingType
: DWORD
,
3115 pvMsgEncodeInfo
: *const c_void
,
3116 pszInnerContentObjID
: LPSTR
,
3119 pub fn CryptMsgOpenToDecode(
3120 dwMsgEncodingType
: DWORD
,
3123 hCryptProv
: HCRYPTPROV_LEGACY
,
3124 pRecipientInfo
: PCERT_INFO
,
3125 pStreamInfo
: PCMSG_STREAM_INFO
,
3127 pub fn CryptMsgDuplicate(
3128 hCryptMsg
: HCRYPTMSG
,
3130 pub fn CryptMsgClose(
3131 hCryptMsg
: HCRYPTMSG
,
3133 pub fn CryptMsgUpdate(
3134 hCryptMsg
: HCRYPTMSG
,
3135 pbData
: *const BYTE
,
3139 pub fn CryptMsgGetParam(
3140 hCryptMsg
: HCRYPTMSG
,
3143 pvData
: *mut c_void
,
3144 pcbData
: *mut DWORD
,
3147 pub const CMSG_TYPE_PARAM
: DWORD
= 1;
3148 pub const CMSG_CONTENT_PARAM
: DWORD
= 2;
3149 pub const CMSG_BARE_CONTENT_PARAM
: DWORD
= 3;
3150 pub const CMSG_INNER_CONTENT_TYPE_PARAM
: DWORD
= 4;
3151 pub const CMSG_SIGNER_COUNT_PARAM
: DWORD
= 5;
3152 pub const CMSG_SIGNER_INFO_PARAM
: DWORD
= 6;
3153 pub const CMSG_SIGNER_CERT_INFO_PARAM
: DWORD
= 7;
3154 pub const CMSG_SIGNER_HASH_ALGORITHM_PARAM
: DWORD
= 8;
3155 pub const CMSG_SIGNER_AUTH_ATTR_PARAM
: DWORD
= 9;
3156 pub const CMSG_SIGNER_UNAUTH_ATTR_PARAM
: DWORD
= 10;
3157 pub const CMSG_CERT_COUNT_PARAM
: DWORD
= 11;
3158 pub const CMSG_CERT_PARAM
: DWORD
= 12;
3159 pub const CMSG_CRL_COUNT_PARAM
: DWORD
= 13;
3160 pub const CMSG_CRL_PARAM
: DWORD
= 14;
3161 pub const CMSG_ENVELOPE_ALGORITHM_PARAM
: DWORD
= 15;
3162 pub const CMSG_RECIPIENT_COUNT_PARAM
: DWORD
= 17;
3163 pub const CMSG_RECIPIENT_INDEX_PARAM
: DWORD
= 18;
3164 pub const CMSG_RECIPIENT_INFO_PARAM
: DWORD
= 19;
3165 pub const CMSG_HASH_ALGORITHM_PARAM
: DWORD
= 20;
3166 pub const CMSG_HASH_DATA_PARAM
: DWORD
= 21;
3167 pub const CMSG_COMPUTED_HASH_PARAM
: DWORD
= 22;
3168 pub const CMSG_ENCRYPT_PARAM
: DWORD
= 26;
3169 pub const CMSG_ENCRYPTED_DIGEST
: DWORD
= 27;
3170 pub const CMSG_ENCODED_SIGNER
: DWORD
= 28;
3171 pub const CMSG_ENCODED_MESSAGE
: DWORD
= 29;
3172 pub const CMSG_VERSION_PARAM
: DWORD
= 30;
3173 pub const CMSG_ATTR_CERT_COUNT_PARAM
: DWORD
= 31;
3174 pub const CMSG_ATTR_CERT_PARAM
: DWORD
= 32;
3175 pub const CMSG_CMS_RECIPIENT_COUNT_PARAM
: DWORD
= 33;
3176 pub const CMSG_CMS_RECIPIENT_INDEX_PARAM
: DWORD
= 34;
3177 pub const CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM
: DWORD
= 35;
3178 pub const CMSG_CMS_RECIPIENT_INFO_PARAM
: DWORD
= 36;
3179 pub const CMSG_UNPROTECTED_ATTR_PARAM
: DWORD
= 37;
3180 pub const CMSG_SIGNER_CERT_ID_PARAM
: DWORD
= 38;
3181 pub const CMSG_CMS_SIGNER_INFO_PARAM
: DWORD
= 39;
3182 STRUCT
!{struct CMSG_SIGNER_INFO
{
3184 Issuer
: CERT_NAME_BLOB
,
3185 SerialNumber
: CRYPT_INTEGER_BLOB
,
3186 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3187 HashEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3188 EncryptedHash
: CRYPT_DATA_BLOB
,
3189 AuthAttrs
: CRYPT_ATTRIBUTES
,
3190 UnauthAttrs
: CRYPT_ATTRIBUTES
,
3192 pub type PCMSG_SIGNER_INFO
= *mut CMSG_SIGNER_INFO
;
3193 STRUCT
!{struct CMSG_CMS_SIGNER_INFO
{
3196 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3197 HashEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3198 EncryptedHash
: CRYPT_DATA_BLOB
,
3199 AuthAttrs
: CRYPT_ATTRIBUTES
,
3200 UnauthAttrs
: CRYPT_ATTRIBUTES
,
3202 pub type PCMSG_CMS_SIGNER_INFO
= *mut CMSG_CMS_SIGNER_INFO
;
3203 pub type CMSG_ATTR
= CRYPT_ATTRIBUTES
;
3204 pub type PCMSG_ATTR
= *mut CRYPT_ATTRIBUTES
;
3205 pub const CMSG_SIGNED_DATA_V1
: DWORD
= 1;
3206 pub const CMSG_SIGNED_DATA_V3
: DWORD
= 3;
3207 pub const CMSG_SIGNED_DATA_PKCS_1_5_VERSION
: DWORD
= CMSG_SIGNED_DATA_V1
;
3208 pub const CMSG_SIGNED_DATA_CMS_VERSION
: DWORD
= CMSG_SIGNED_DATA_V3
;
3209 pub const CMSG_SIGNER_INFO_V1
: DWORD
= 1;
3210 pub const CMSG_SIGNER_INFO_V3
: DWORD
= 3;
3211 pub const CMSG_SIGNER_INFO_PKCS_1_5_VERSION
: DWORD
= CMSG_SIGNER_INFO_V1
;
3212 pub const CMSG_SIGNER_INFO_CMS_VERSION
: DWORD
= CMSG_SIGNER_INFO_V3
;
3213 pub const CMSG_HASHED_DATA_V0
: DWORD
= 0;
3214 pub const CMSG_HASHED_DATA_V2
: DWORD
= 2;
3215 pub const CMSG_HASHED_DATA_PKCS_1_5_VERSION
: DWORD
= CMSG_HASHED_DATA_V0
;
3216 pub const CMSG_HASHED_DATA_CMS_VERSION
: DWORD
= CMSG_HASHED_DATA_V2
;
3217 pub const CMSG_ENVELOPED_DATA_V0
: DWORD
= 0;
3218 pub const CMSG_ENVELOPED_DATA_V2
: DWORD
= 2;
3219 pub const CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION
: DWORD
= CMSG_ENVELOPED_DATA_V0
;
3220 pub const CMSG_ENVELOPED_DATA_CMS_VERSION
: DWORD
= CMSG_ENVELOPED_DATA_V2
;
3221 STRUCT
!{struct CMSG_KEY_TRANS_RECIPIENT_INFO
{
3223 RecipientId
: CERT_ID
,
3224 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3225 EncryptedKey
: CRYPT_DATA_BLOB
,
3227 pub type PCMSG_KEY_TRANS_RECIPIENT_INFO
= *mut CMSG_KEY_TRANS_RECIPIENT_INFO
;
3228 STRUCT
!{struct CMSG_RECIPIENT_ENCRYPTED_KEY_INFO
{
3229 RecipientId
: CERT_ID
,
3230 EncryptedKey
: CRYPT_DATA_BLOB
,
3232 pOtherAttr
: PCRYPT_ATTRIBUTE_TYPE_VALUE
,
3234 pub type PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO
= *mut CMSG_RECIPIENT_ENCRYPTED_KEY_INFO
;
3235 UNION
!{union CMSG_KEY_AGREE_RECIPIENT_INFO_u
{
3237 OriginatorCertId OriginatorCertId_mut
: CERT_ID
,
3238 OriginatorPublicKeyInfo OriginatorPublicKeyInfo_mut
: CERT_PUBLIC_KEY_INFO
,
3240 STRUCT
!{struct CMSG_KEY_AGREE_RECIPIENT_INFO
{
3242 dwOriginatorChoice
: DWORD
,
3243 u
: CMSG_KEY_AGREE_RECIPIENT_INFO_u
,
3244 UserKeyingMaterial
: CRYPT_DATA_BLOB
,
3245 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3246 cRecipientEncryptedKeys
: DWORD
,
3247 rgpRecipientEncryptedKeys
: *mut PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO
,
3249 pub type PCMSG_KEY_AGREE_RECIPIENT_INFO
= *mut CMSG_KEY_AGREE_RECIPIENT_INFO
;
3250 pub const CMSG_KEY_AGREE_ORIGINATOR_CERT
: DWORD
= 1;
3251 pub const CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY
: DWORD
= 2;
3252 STRUCT
!{struct CMSG_MAIL_LIST_RECIPIENT_INFO
{
3254 KeyId
: CRYPT_DATA_BLOB
,
3255 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3256 EncryptedKey
: CRYPT_DATA_BLOB
,
3258 pOtherAttr
: PCRYPT_ATTRIBUTE_TYPE_VALUE
,
3260 pub type PCMSG_MAIL_LIST_RECIPIENT_INFO
= *mut CMSG_MAIL_LIST_RECIPIENT_INFO
;
3261 UNION
!{union CMSG_CMS_RECIPIENT_INFO_u
{
3263 pKeyTrans pKeyTrans_mut
: PCMSG_KEY_TRANS_RECIPIENT_INFO
,
3264 pKeyAgree pKeyAgree_mut
: PCMSG_KEY_AGREE_RECIPIENT_INFO
,
3265 pMailList pMailList_mut
: PCMSG_MAIL_LIST_RECIPIENT_INFO
,
3267 STRUCT
!{struct CMSG_CMS_RECIPIENT_INFO
{
3268 dwRecipientChoice
: DWORD
,
3269 u
: CMSG_CMS_RECIPIENT_INFO_u
,
3271 pub type PCMSG_CMS_RECIPIENT_INFO
= *mut CMSG_CMS_RECIPIENT_INFO
;
3272 pub const CMSG_ENVELOPED_RECIPIENT_V0
: DWORD
= 0;
3273 pub const CMSG_ENVELOPED_RECIPIENT_V2
: DWORD
= 2;
3274 pub const CMSG_ENVELOPED_RECIPIENT_V3
: DWORD
= 3;
3275 pub const CMSG_ENVELOPED_RECIPIENT_V4
: DWORD
= 4;
3276 pub const CMSG_KEY_TRANS_PKCS_1_5_VERSION
: DWORD
= CMSG_ENVELOPED_RECIPIENT_V0
;
3277 pub const CMSG_KEY_TRANS_CMS_VERSION
: DWORD
= CMSG_ENVELOPED_RECIPIENT_V2
;
3278 pub const CMSG_KEY_AGREE_VERSION
: DWORD
= CMSG_ENVELOPED_RECIPIENT_V3
;
3279 pub const CMSG_MAIL_LIST_VERSION
: DWORD
= CMSG_ENVELOPED_RECIPIENT_V4
;
3281 pub fn CryptMsgControl(
3282 hCryptMsg
: HCRYPTMSG
,
3285 pvCtrlPara
: *const c_void
,
3288 pub const CMSG_CTRL_VERIFY_SIGNATURE
: DWORD
= 1;
3289 pub const CMSG_CTRL_DECRYPT
: DWORD
= 2;
3290 pub const CMSG_CTRL_VERIFY_HASH
: DWORD
= 5;
3291 pub const CMSG_CTRL_ADD_SIGNER
: DWORD
= 6;
3292 pub const CMSG_CTRL_DEL_SIGNER
: DWORD
= 7;
3293 pub const CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR
: DWORD
= 8;
3294 pub const CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR
: DWORD
= 9;
3295 pub const CMSG_CTRL_ADD_CERT
: DWORD
= 10;
3296 pub const CMSG_CTRL_DEL_CERT
: DWORD
= 11;
3297 pub const CMSG_CTRL_ADD_CRL
: DWORD
= 12;
3298 pub const CMSG_CTRL_DEL_CRL
: DWORD
= 13;
3299 pub const CMSG_CTRL_ADD_ATTR_CERT
: DWORD
= 14;
3300 pub const CMSG_CTRL_DEL_ATTR_CERT
: DWORD
= 15;
3301 pub const CMSG_CTRL_KEY_TRANS_DECRYPT
: DWORD
= 16;
3302 pub const CMSG_CTRL_KEY_AGREE_DECRYPT
: DWORD
= 17;
3303 pub const CMSG_CTRL_MAIL_LIST_DECRYPT
: DWORD
= 18;
3304 pub const CMSG_CTRL_VERIFY_SIGNATURE_EX
: DWORD
= 19;
3305 pub const CMSG_CTRL_ADD_CMS_SIGNER_INFO
: DWORD
= 20;
3306 pub const CMSG_CTRL_ENABLE_STRONG_SIGNATURE
: DWORD
= 21;
3307 STRUCT
!{struct CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA
{
3309 hCryptProv
: HCRYPTPROV_LEGACY
,
3310 dwSignerIndex
: DWORD
,
3311 dwSignerType
: DWORD
,
3312 pvSigner
: *mut c_void
,
3314 pub type PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA
= *mut CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA
;
3315 pub const CMSG_VERIFY_SIGNER_PUBKEY
: DWORD
= 1;
3316 pub const CMSG_VERIFY_SIGNER_CERT
: DWORD
= 2;
3317 pub const CMSG_VERIFY_SIGNER_CHAIN
: DWORD
= 3;
3318 pub const CMSG_VERIFY_SIGNER_NULL
: DWORD
= 4;
3319 UNION
!{union CMSG_CTRL_DECRYPT_PARA_u
{
3321 hCryptProv hCryptProv_mut
: HCRYPTPROV
,
3322 hNCryptKey hNCryptKey_mut
: NCRYPT_KEY_HANDLE
,
3324 STRUCT
!{struct CMSG_CTRL_DECRYPT_PARA
{
3326 u
: CMSG_CTRL_DECRYPT_PARA_u
,
3328 dwRecipientIndex
: DWORD
,
3330 pub type PCMSG_CTRL_DECRYPT_PARA
= *mut CMSG_CTRL_DECRYPT_PARA
;
3331 UNION
!{union CMSG_CTRL_KEY_TRANS_DECRYPT_PARA_u
{
3333 hCryptProv hCryptProv_mut
: HCRYPTPROV
,
3334 hNCryptKey hNCryptKey_mut
: NCRYPT_KEY_HANDLE
,
3336 STRUCT
!{struct CMSG_CTRL_KEY_TRANS_DECRYPT_PARA
{
3338 u
: CMSG_CTRL_KEY_TRANS_DECRYPT_PARA_u
,
3340 pKeyTrans
: PCMSG_KEY_TRANS_RECIPIENT_INFO
,
3341 dwRecipientIndex
: DWORD
,
3343 pub type PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA
= *mut CMSG_CTRL_KEY_TRANS_DECRYPT_PARA
;
3344 UNION
!{union CMSG_CTRL_KEY_AGREE_DECRYPT_PARA_u
{
3346 hCryptProv hCryptProv_mut
: HCRYPTPROV
,
3347 hNCryptKey hNCryptKey_mut
: NCRYPT_KEY_HANDLE
,
3349 STRUCT
!{struct CMSG_CTRL_KEY_AGREE_DECRYPT_PARA
{
3351 u
: CMSG_CTRL_KEY_AGREE_DECRYPT_PARA_u
,
3353 pKeyAgree
: PCMSG_KEY_AGREE_RECIPIENT_INFO
,
3354 dwRecipientIndex
: DWORD
,
3355 dwRecipientEncryptedKeyIndex
: DWORD
,
3356 OriginatorPublicKey
: CRYPT_BIT_BLOB
,
3358 pub type PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA
= *mut CMSG_CTRL_KEY_AGREE_DECRYPT_PARA
;
3359 UNION
!{union CMSG_CTRL_MAIL_LIST_DECRYPT_PARA_u
{
3361 hKeyEncryptionKey hKeyEncryptionKey_mut
: HCRYPTKEY
,
3362 pvKeyEncryptionKey pvKeyEncryptionKey_mut
: *mut c_void
,
3364 STRUCT
!{struct CMSG_CTRL_MAIL_LIST_DECRYPT_PARA
{
3366 hCryptProv
: HCRYPTPROV
,
3367 pMailList
: PCMSG_MAIL_LIST_RECIPIENT_INFO
,
3368 dwRecipientIndex
: DWORD
,
3370 u
: CMSG_CTRL_MAIL_LIST_DECRYPT_PARA_u
,
3372 pub type PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA
= *mut CMSG_CTRL_MAIL_LIST_DECRYPT_PARA
;
3373 STRUCT
!{struct CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
{
3375 dwSignerIndex
: DWORD
,
3376 blob
: CRYPT_DATA_BLOB
,
3378 pub type PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
= *mut CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA
;
3379 STRUCT
!{struct CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
{
3381 dwSignerIndex
: DWORD
,
3382 dwUnauthAttrIndex
: DWORD
,
3384 pub type PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
= *mut CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA
;
3386 pub fn CryptMsgVerifyCountersignatureEncoded(
3387 hCryptProv
: HCRYPTPROV_LEGACY
,
3388 dwEncodingType
: DWORD
,
3389 pbSignerInfo
: PBYTE
,
3390 cbSignerInfo
: DWORD
,
3391 pbSignerInfoCountersignature
: PBYTE
,
3392 cbSignerInfoCountersignature
: DWORD
,
3393 pciCountersigner
: PCERT_INFO
,
3395 pub fn CryptMsgVerifyCountersignatureEncodedEx(
3396 hCryptProv
: HCRYPTPROV_LEGACY
,
3397 dwEncodingType
: DWORD
,
3398 pbSignerInfo
: PBYTE
,
3399 cbSignerInfo
: DWORD
,
3400 pbSignerInfoCountersignature
: PBYTE
,
3401 cbSignerInfoCountersignature
: DWORD
,
3402 dwSignerType
: DWORD
,
3403 pvSigner
: *mut c_void
,
3405 pvExtra
: *mut c_void
,
3408 pub const CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG
: DWORD
= 0x00000001;
3410 pub fn CryptMsgCountersign(
3411 hCryptMsg
: HCRYPTMSG
,
3413 cCountersigners
: DWORD
,
3414 rgCountersigners
: PCMSG_SIGNER_ENCODE_INFO
,
3416 pub fn CryptMsgCountersignEncoded(
3417 dwEncodingType
: DWORD
,
3418 pbSignerInfo
: PBYTE
,
3419 cbSignerInfo
: DWORD
,
3420 cCountersigners
: DWORD
,
3421 rgCountersigners
: PCMSG_SIGNER_ENCODE_INFO
,
3422 pbCountersignature
: PBYTE
,
3423 pcbCountersignature
: PDWORD
,
3426 FN
!{stdcall
PFN_CMSG_ALLOC(
3429 FN
!{stdcall
PFN_CMSG_FREE(
3432 pub const CMSG_OID_GEN_ENCRYPT_KEY_FUNC
: &'
static str = "CryptMsgDllGenEncryptKey";
3433 FN
!{stdcall
PFN_CMSG_GEN_ENCRYPT_KEY(
3434 phCryptProv
: *mut HCRYPTPROV
,
3435 paiEncrypt
: PCRYPT_ALGORITHM_IDENTIFIER
,
3436 pvEncryptAuxInfo
: PVOID
,
3437 pPublicKeyInfo
: PCERT_PUBLIC_KEY_INFO
,
3438 pfnAlloc
: PFN_CMSG_ALLOC
,
3439 phEncryptKey
: *mut HCRYPTKEY
,
3440 ppbEncryptParameters
: *mut PBYTE
,
3441 pcbEncryptParameters
: PDWORD
,
3443 pub const CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC
: &'
static str = "CryptMsgDllExportEncryptKey";
3444 FN
!{stdcall
PFN_CMSG_EXPORT_ENCRYPT_KEY(
3445 hCryptProv
: HCRYPTPROV
,
3446 hEncryptKey
: HCRYPTKEY
,
3447 pPublicKeyInfo
: PCERT_PUBLIC_KEY_INFO
,
3451 pub const CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC
: &'
static str = "CryptMsgDllImportEncryptKey";
3452 FN
!{stdcall
PFN_CMSG_IMPORT_ENCRYPT_KEY(
3453 hCryptProv
: HCRYPTPROV
,
3455 paiEncrypt
: PCRYPT_ALGORITHM_IDENTIFIER
,
3456 paiPubKey
: PCRYPT_ALGORITHM_IDENTIFIER
,
3457 pbEncodedKey
: PBYTE
,
3458 cbEncodedKey
: DWORD
,
3459 phEncryptKey
: *mut HCRYPTKEY
,
3461 pub const CMSG_DEFAULT_INSTALLABLE_FUNC_OID
: LPCSTR
= 1 as LPCSTR
;
3462 UNION
!{union CMSG_CONTENT_ENCRYPT_INFO_u
{
3464 hContentEncryptKey hContentEncryptKey_mut
: HCRYPTKEY
,
3465 hCNGContentEncryptKey hCNGContentEncryptKey_mut
: BCRYPT_KEY_HANDLE
,
3467 STRUCT
!{struct CMSG_CONTENT_ENCRYPT_INFO
{
3469 hCryptProv
: HCRYPTPROV_LEGACY
,
3470 ContentEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3471 pvEncryptionAuxInfo
: *mut c_void
,
3473 rgCmsRecipients
: PCMSG_RECIPIENT_ENCODE_INFO
,
3474 pfnAlloc
: PFN_CMSG_ALLOC
,
3475 pfnFree
: PFN_CMSG_FREE
,
3476 dwEncryptFlags
: DWORD
,
3477 u
: CMSG_CONTENT_ENCRYPT_INFO_u
,
3480 pbCNGContentEncryptKeyObject
: *mut BYTE
,
3481 pbContentEncryptKey
: *mut BYTE
,
3482 cbContentEncryptKey
: DWORD
,
3484 pub type PCMSG_CONTENT_ENCRYPT_INFO
= *mut CMSG_CONTENT_ENCRYPT_INFO
;
3485 pub const CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG
: DWORD
= 0x00000001;
3486 pub const CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG
: DWORD
= 0x00000001;
3487 pub const CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG
: DWORD
= 0x00000002;
3488 pub const CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG
: DWORD
= 0x00008000;
3489 pub const CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC
: &'
static str = "CryptMsgDllGenContentEncryptKey";
3490 pub const CMSG_OID_CAPI1_GEN_CONTENT_ENCRYPT_KEY_FUNC
: &'
static str
3491 = CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC
;
3492 FN
!{stdcall
PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY(
3493 pContentEncryptInfo
: PCMSG_CONTENT_ENCRYPT_INFO
,
3495 pvReserved
: *mut c_void
,
3497 pub const CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC
: &'
static str
3498 = "CryptMsgDllCNGGenContentEncryptKey";
3499 STRUCT
!{struct CMSG_KEY_TRANS_ENCRYPT_INFO
{
3501 dwRecipientIndex
: DWORD
,
3502 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3503 EncryptedKey
: CRYPT_DATA_BLOB
,
3506 pub type PCMSG_KEY_TRANS_ENCRYPT_INFO
= *mut CMSG_KEY_TRANS_ENCRYPT_INFO
;
3507 pub const CMSG_KEY_TRANS_ENCRYPT_FREE_PARA_FLAG
: DWORD
= 0x00000001;
3508 pub const CMSG_KEY_TRANS_ENCRYPT_FREE_OBJID_FLAG
: DWORD
= 0x00000002;
3509 pub const CMSG_OID_EXPORT_KEY_TRANS_FUNC
: &'
static str = "CryptMsgDllExportKeyTrans";
3510 pub const CMSG_OID_CAPI1_EXPORT_KEY_TRANS_FUNC
: &'
static str = CMSG_OID_EXPORT_KEY_TRANS_FUNC
;
3511 FN
!{stdcall
PFN_CMSG_EXPORT_KEY_TRANS(
3512 pContentEncryptInfo
: PCMSG_CONTENT_ENCRYPT_INFO
,
3513 pKeyTransEncodeInfo
: PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO
,
3514 pKeyTransEncryptInfo
: PCMSG_KEY_TRANS_ENCRYPT_INFO
,
3516 pvReserved
: *mut c_void
,
3518 pub const CMSG_OID_CNG_EXPORT_KEY_TRANS_FUNC
: &'
static str = "CryptMsgDllCNGExportKeyTrans";
3519 STRUCT
!{struct CMSG_KEY_AGREE_KEY_ENCRYPT_INFO
{
3521 EncryptedKey
: CRYPT_DATA_BLOB
,
3523 pub type PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO
= *mut CMSG_KEY_AGREE_KEY_ENCRYPT_INFO
;
3524 UNION
!{union CMSG_KEY_AGREE_ENCRYPT_INFO_u
{
3526 OriginatorCertId OriginatorCertId_mut
: CERT_ID
,
3527 OriginatorPublicKeyInfo OriginatorPublicKeyInfo_mut
: CERT_PUBLIC_KEY_INFO
,
3529 STRUCT
!{struct CMSG_KEY_AGREE_ENCRYPT_INFO
{
3531 dwRecipientIndex
: DWORD
,
3532 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3533 UserKeyingMaterial
: CRYPT_DATA_BLOB
,
3534 dwOriginatorChoice
: DWORD
,
3535 u
: CMSG_KEY_AGREE_ENCRYPT_INFO_u
,
3536 cKeyAgreeKeyEncryptInfo
: DWORD
,
3537 rgpKeyAgreeKeyEncryptInfo
: *mut PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO
,
3540 pub type PCMSG_KEY_AGREE_ENCRYPT_INFO
= *mut CMSG_KEY_AGREE_ENCRYPT_INFO
;
3541 pub const CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG
: DWORD
= 0x00000001;
3542 pub const CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG
: DWORD
= 0x00000002;
3543 pub const CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG
: DWORD
= 0x00000004;
3544 pub const CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG
: DWORD
= 0x00000008;
3545 pub const CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG
: DWORD
= 0x00000010;
3546 pub const CMSG_KEY_AGREE_ENCRYPT_FREE_OBJID_FLAG
: DWORD
= 0x00000020;
3547 pub const CMSG_OID_EXPORT_KEY_AGREE_FUNC
: &'
static str = "CryptMsgDllExportKeyAgree";
3548 pub const CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC
: &'
static str = CMSG_OID_EXPORT_KEY_AGREE_FUNC
;
3549 FN
!{stdcall
PFN_CMSG_EXPORT_KEY_AGREE(
3550 pContentEncryptInfo
: PCMSG_CONTENT_ENCRYPT_INFO
,
3551 pKeyAgreeEncodeInfo
: PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO
,
3552 pKeyAgreeEncryptInfo
: PCMSG_KEY_AGREE_ENCRYPT_INFO
,
3554 pvReserved
: *mut c_void
,
3556 pub const CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC
: &'
static str = "CryptMsgDllCNGExportKeyAgree";
3557 STRUCT
!{struct CMSG_MAIL_LIST_ENCRYPT_INFO
{
3559 dwRecipientIndex
: DWORD
,
3560 KeyEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3561 EncryptedKey
: CRYPT_DATA_BLOB
,
3564 pub type PCMSG_MAIL_LIST_ENCRYPT_INFO
= *mut CMSG_MAIL_LIST_ENCRYPT_INFO
;
3565 pub const CMSG_MAIL_LIST_ENCRYPT_FREE_PARA_FLAG
: DWORD
= 0x00000001;
3566 pub const CMSG_MAIL_LIST_ENCRYPT_FREE_OBJID_FLAG
: DWORD
= 0x00000002;
3567 pub const CMSG_OID_EXPORT_MAIL_LIST_FUNC
: &'
static str = "CryptMsgDllExportMailList";
3568 pub const CMSG_OID_CAPI1_EXPORT_MAIL_LIST_FUNC
: &'
static str = CMSG_OID_EXPORT_MAIL_LIST_FUNC
;
3569 FN
!{stdcall
PFN_CMSG_EXPORT_MAIL_LIST(
3570 pContentEncryptInfo
: PCMSG_CONTENT_ENCRYPT_INFO
,
3571 pMailListEncodeInfo
: PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO
,
3572 pMailListEncryptInfo
: PCMSG_MAIL_LIST_ENCRYPT_INFO
,
3574 pvReserved
: *mut c_void
,
3576 pub const CMSG_OID_IMPORT_KEY_TRANS_FUNC
: &'
static str = "CryptMsgDllImportKeyTrans";
3577 pub const CMSG_OID_CAPI1_IMPORT_KEY_TRANS_FUNC
: &'
static str = CMSG_OID_IMPORT_KEY_TRANS_FUNC
;
3578 FN
!{stdcall
PFN_CMSG_IMPORT_KEY_TRANS(
3579 pContentEncryptionAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
3580 pKeyTransDecryptPara
: PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA
,
3582 pvReserved
: *mut c_void
,
3583 phContentEncryptKey
: *mut HCRYPTKEY
,
3585 pub const CMSG_OID_IMPORT_KEY_AGREE_FUNC
: &'
static str = "CryptMsgDllImportKeyAgree";
3586 pub const CMSG_OID_CAPI1_IMPORT_KEY_AGREE_FUNC
: &'
static str = CMSG_OID_IMPORT_KEY_AGREE_FUNC
;
3587 FN
!{stdcall
PFN_CMSG_IMPORT_KEY_AGREE(
3588 pContentEncryptionAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
3589 pKeyAgreeDecryptPara
: PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA
,
3591 pvReserved
: *mut c_void
,
3592 phContentEncryptKey
: *mut HCRYPTKEY
,
3594 pub const CMSG_OID_IMPORT_MAIL_LIST_FUNC
: &'
static str = "CryptMsgDllImportMailList";
3595 pub const CMSG_OID_CAPI1_IMPORT_MAIL_LIST_FUNC
: &'
static str = CMSG_OID_IMPORT_MAIL_LIST_FUNC
;
3596 FN
!{stdcall
PFN_CMSG_IMPORT_MAIL_LIST(
3597 pContentEncryptionAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
3598 pMailListDecryptPara
: PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA
,
3600 pvReserved
: *mut c_void
,
3601 phContentEncryptKey
: *mut HCRYPTKEY
,
3603 STRUCT
!{struct CMSG_CNG_CONTENT_DECRYPT_INFO
{
3605 ContentEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
3606 pfnAlloc
: PFN_CMSG_ALLOC
,
3607 pfnFree
: PFN_CMSG_FREE
,
3608 hNCryptKey
: NCRYPT_KEY_HANDLE
,
3609 pbContentEncryptKey
: *mut BYTE
,
3610 cbContentEncryptKey
: DWORD
,
3611 hCNGContentEncryptKey
: BCRYPT_KEY_HANDLE
,
3612 pbCNGContentEncryptKeyObject
: *mut BYTE
,
3614 pub type PCMSG_CNG_CONTENT_DECRYPT_INFO
= *mut CMSG_CNG_CONTENT_DECRYPT_INFO
;
3615 pub const CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC
: &'
static str = "CryptMsgDllCNGImportKeyTrans";
3616 FN
!{stdcall
PFN_CMSG_CNG_IMPORT_KEY_TRANS(
3617 pCNGContentDecryptInfo
: PCMSG_CNG_CONTENT_DECRYPT_INFO
,
3618 pKeyTransDecryptPara
: PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA
,
3620 pvReserved
: *mut c_void
,
3622 pub const CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC
: &'
static str = "CryptMsgDllCNGImportKeyAgree";
3623 FN
!{stdcall
PFN_CMSG_CNG_IMPORT_KEY_AGREE(
3624 pCNGContentDecryptInfo
: PCMSG_CNG_CONTENT_DECRYPT_INFO
,
3625 pKeyAgreeDecryptPara
: PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA
,
3627 pvReserved
: *mut c_void
,
3629 pub const CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC
: &'
static str
3630 = "CryptMsgDllCNGImportContentEncryptKey";
3631 FN
!{stdcall
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY(
3632 pCNGContentDecryptInfo
: PCMSG_CNG_CONTENT_DECRYPT_INFO
,
3634 pvReserved
: *mut c_void
,
3636 pub type HCERTSTORE
= *mut c_void
;
3637 STRUCT
!{struct CERT_CONTEXT
{
3638 dwCertEncodingType
: DWORD
,
3639 pbCertEncoded
: *mut BYTE
,
3640 cbCertEncoded
: DWORD
,
3641 pCertInfo
: PCERT_INFO
,
3642 hCertStore
: HCERTSTORE
,
3644 pub type PCERT_CONTEXT
= *mut CERT_CONTEXT
;
3645 pub type PCCERT_CONTEXT
= *const CERT_CONTEXT
;
3646 STRUCT
!{struct CRL_CONTEXT
{
3647 dwCertEncodingType
: DWORD
,
3648 pbCrlEncoded
: *mut BYTE
,
3649 cbCrlEncoded
: DWORD
,
3650 pCrlInfo
: PCRL_INFO
,
3651 hCertStore
: HCERTSTORE
,
3653 pub type PCRL_CONTEXT
= *mut CRL_CONTEXT
;
3654 pub type PCCRL_CONTEXT
= *const CRL_CONTEXT
;
3655 STRUCT
!{struct CTL_CONTEXT
{
3656 dwMsgAndCertEncodingType
: DWORD
,
3657 pbCtlEncoded
: *mut BYTE
,
3658 cbCtlEncoded
: DWORD
,
3659 pCtlInfo
: PCTL_INFO
,
3660 hCertStore
: HCERTSTORE
,
3661 hCryptMsg
: HCRYPTMSG
,
3662 pbCtlContent
: *mut BYTE
,
3663 cbCtlContent
: DWORD
,
3665 pub type PCTL_CONTEXT
= *mut CTL_CONTEXT
;
3666 pub type PCCTL_CONTEXT
= *const CTL_CONTEXT
;
3667 pub const CERT_KEY_PROV_HANDLE_PROP_ID
: DWORD
= 1;
3668 pub const CERT_KEY_PROV_INFO_PROP_ID
: DWORD
= 2;
3669 pub const CERT_SHA1_HASH_PROP_ID
: DWORD
= 3;
3670 pub const CERT_MD5_HASH_PROP_ID
: DWORD
= 4;
3671 pub const CERT_HASH_PROP_ID
: DWORD
= CERT_SHA1_HASH_PROP_ID
;
3672 pub const CERT_KEY_CONTEXT_PROP_ID
: DWORD
= 5;
3673 pub const CERT_KEY_SPEC_PROP_ID
: DWORD
= 6;
3674 pub const CERT_IE30_RESERVED_PROP_ID
: DWORD
= 7;
3675 pub const CERT_PUBKEY_HASH_RESERVED_PROP_ID
: DWORD
= 8;
3676 pub const CERT_ENHKEY_USAGE_PROP_ID
: DWORD
= 9;
3677 pub const CERT_CTL_USAGE_PROP_ID
: DWORD
= CERT_ENHKEY_USAGE_PROP_ID
;
3678 pub const CERT_NEXT_UPDATE_LOCATION_PROP_ID
: DWORD
= 10;
3679 pub const CERT_FRIENDLY_NAME_PROP_ID
: DWORD
= 11;
3680 pub const CERT_PVK_FILE_PROP_ID
: DWORD
= 12;
3681 pub const CERT_DESCRIPTION_PROP_ID
: DWORD
= 13;
3682 pub const CERT_ACCESS_STATE_PROP_ID
: DWORD
= 14;
3683 pub const CERT_SIGNATURE_HASH_PROP_ID
: DWORD
= 15;
3684 pub const CERT_SMART_CARD_DATA_PROP_ID
: DWORD
= 16;
3685 pub const CERT_EFS_PROP_ID
: DWORD
= 17;
3686 pub const CERT_FORTEZZA_DATA_PROP_ID
: DWORD
= 18;
3687 pub const CERT_ARCHIVED_PROP_ID
: DWORD
= 19;
3688 pub const CERT_KEY_IDENTIFIER_PROP_ID
: DWORD
= 20;
3689 pub const CERT_AUTO_ENROLL_PROP_ID
: DWORD
= 21;
3690 pub const CERT_PUBKEY_ALG_PARA_PROP_ID
: DWORD
= 22;
3691 pub const CERT_CROSS_CERT_DIST_POINTS_PROP_ID
: DWORD
= 23;
3692 pub const CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
: DWORD
= 24;
3693 pub const CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
: DWORD
= 25;
3694 pub const CERT_ENROLLMENT_PROP_ID
: DWORD
= 26;
3695 pub const CERT_DATE_STAMP_PROP_ID
: DWORD
= 27;
3696 pub const CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID
: DWORD
= 28;
3697 pub const CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
: DWORD
= 29;
3698 pub const CERT_EXTENDED_ERROR_INFO_PROP_ID
: DWORD
= 30;
3699 pub const CERT_RENEWAL_PROP_ID
: DWORD
= 64;
3700 pub const CERT_ARCHIVED_KEY_HASH_PROP_ID
: DWORD
= 65;
3701 pub const CERT_AUTO_ENROLL_RETRY_PROP_ID
: DWORD
= 66;
3702 pub const CERT_AIA_URL_RETRIEVED_PROP_ID
: DWORD
= 67;
3703 pub const CERT_AUTHORITY_INFO_ACCESS_PROP_ID
: DWORD
= 68;
3704 pub const CERT_BACKED_UP_PROP_ID
: DWORD
= 69;
3705 pub const CERT_OCSP_RESPONSE_PROP_ID
: DWORD
= 70;
3706 pub const CERT_REQUEST_ORIGINATOR_PROP_ID
: DWORD
= 71;
3707 pub const CERT_SOURCE_LOCATION_PROP_ID
: DWORD
= 72;
3708 pub const CERT_SOURCE_URL_PROP_ID
: DWORD
= 73;
3709 pub const CERT_NEW_KEY_PROP_ID
: DWORD
= 74;
3710 pub const CERT_OCSP_CACHE_PREFIX_PROP_ID
: DWORD
= 75;
3711 pub const CERT_SMART_CARD_ROOT_INFO_PROP_ID
: DWORD
= 76;
3712 pub const CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID
: DWORD
= 77;
3713 pub const CERT_NCRYPT_KEY_HANDLE_PROP_ID
: DWORD
= 78;
3714 pub const CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID
: DWORD
= 79;
3715 pub const CERT_SUBJECT_INFO_ACCESS_PROP_ID
: DWORD
= 80;
3716 pub const CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID
: DWORD
= 81;
3717 pub const CERT_CA_DISABLE_CRL_PROP_ID
: DWORD
= 82;
3718 pub const CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID
: DWORD
= 83;
3719 pub const CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID
: DWORD
= 84;
3720 pub const CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID
: DWORD
= 85;
3721 pub const CERT_SUBJECT_DISABLE_CRL_PROP_ID
: DWORD
= 86;
3722 pub const CERT_CEP_PROP_ID
: DWORD
= 87;
3723 pub const CERT_SIGN_HASH_CNG_ALG_PROP_ID
: DWORD
= 89;
3724 pub const CERT_SCARD_PIN_ID_PROP_ID
: DWORD
= 90;
3725 pub const CERT_SCARD_PIN_INFO_PROP_ID
: DWORD
= 91;
3726 pub const CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID
: DWORD
= 92;
3727 pub const CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID
: DWORD
= 93;
3728 pub const CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID
: DWORD
= 94;
3729 pub const CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID
: DWORD
= 95;
3730 pub const CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID
: DWORD
= 96;
3731 pub const CERT_NO_EXPIRE_NOTIFICATION_PROP_ID
: DWORD
= 97;
3732 pub const CERT_AUTH_ROOT_SHA256_HASH_PROP_ID
: DWORD
= 98;
3733 pub const CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID
: DWORD
= 99;
3734 pub const CERT_HCRYPTPROV_TRANSFER_PROP_ID
: DWORD
= 100;
3735 pub const CERT_SMART_CARD_READER_PROP_ID
: DWORD
= 101;
3736 pub const CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID
: DWORD
= 102;
3737 pub const CERT_KEY_REPAIR_ATTEMPTED_PROP_ID
: DWORD
= 103;
3738 pub const CERT_DISALLOWED_FILETIME_PROP_ID
: DWORD
= 104;
3739 pub const CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID
: DWORD
= 105;
3740 pub const CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID
: DWORD
= 106;
3741 pub const CERT_SHA256_HASH_PROP_ID
: DWORD
= 107;
3742 pub const CERT_SCEP_SERVER_CERTS_PROP_ID
: DWORD
= 108;
3743 pub const CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID
: DWORD
= 109;
3744 pub const CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID
: DWORD
= 110;
3745 pub const CERT_SCEP_CA_CERT_PROP_ID
: DWORD
= 111;
3746 pub const CERT_SCEP_SIGNER_CERT_PROP_ID
: DWORD
= 112;
3747 pub const CERT_SCEP_NONCE_PROP_ID
: DWORD
= 113;
3748 pub const CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID
: DWORD
= 114;
3749 pub const CERT_SCEP_FLAGS_PROP_ID
: DWORD
= 115;
3750 pub const CERT_SCEP_GUID_PROP_ID
: DWORD
= 116;
3751 pub const CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID
: DWORD
= 117;
3752 pub const CERT_ISOLATED_KEY_PROP_ID
: DWORD
= 118;
3753 pub const CERT_SERIAL_CHAIN_PROP_ID
: DWORD
= 119;
3754 pub const CERT_KEY_CLASSIFICATION_PROP_ID
: DWORD
= 120;
3755 pub const CERT_OCSP_MUST_STAPLE_PROP_ID
: DWORD
= 121;
3756 pub const CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID
: DWORD
= 122;
3757 pub const CERT_NONCOMPLIANT_ROOT_URL_PROP_ID
: DWORD
= 123;
3758 pub const CERT_PIN_SHA256_HASH_PROP_ID
: DWORD
= 124;
3759 pub const CERT_CLR_DELETE_KEY_PROP_ID
: DWORD
= 125;
3760 pub const CERT_NOT_BEFORE_FILETIME_PROP_ID
: DWORD
= 126;
3761 pub const CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID
: DWORD
= 127;
3762 pub const CERT_FIRST_RESERVED_PROP_ID
: DWORD
= 128;
3763 pub const CERT_LAST_RESERVED_PROP_ID
: DWORD
= 0x00007FFF;
3764 pub const CERT_FIRST_USER_PROP_ID
: DWORD
= 0x00008000;
3765 pub const CERT_LAST_USER_PROP_ID
: DWORD
= 0x0000FFFF;
3766 ENUM
!{enum CertKeyType
{
3768 KeyTypeVirtualSmartCard
= 1,
3769 KeyTypePhysicalSmartCard
= 2,
3770 KeyTypePassport
= 3,
3771 KeyTypePassportRemote
= 4,
3772 KeyTypePassportSmartCard
= 5,
3773 KeyTypeHardware
= 6,
3774 KeyTypeSoftware
= 7,
3775 KeyTypeSelfSigned
= 8,
3778 pub fn IS_CERT_HASH_PROP_ID(X
: DWORD
) -> bool
{
3779 CERT_SHA1_HASH_PROP_ID
== X
|| CERT_MD5_HASH_PROP_ID
== X
|| CERT_SHA256_HASH_PROP_ID
== X
3780 || CERT_SIGNATURE_HASH_PROP_ID
== X
3783 pub fn IS_PUBKEY_HASH_PROP_ID(X
: DWORD
) -> bool
{
3784 CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
== X
|| CERT_PIN_SHA256_HASH_PROP_ID
== X
3785 || CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
== X
3788 pub fn IS_CHAIN_HASH_PROP_ID(X
: DWORD
) -> bool
{
3789 CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID
== X
|| CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID
== X
3790 || CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID
== X
|| CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
== X
3793 pub fn IS_STRONG_SIGN_PROP_ID(X
: DWORD
) -> bool
{
3794 CERT_SIGN_HASH_CNG_ALG_PROP_ID
== X
|| CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID
== X
3795 || CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID
== X
3797 pub const szOID_CERT_PROP_ID_PREFIX
: &'
static str = "1.3.6.1.4.1.311.10.11.";
3798 pub const szOID_CERT_KEY_IDENTIFIER_PROP_ID
: &'
static str = "1.3.6.1.4.1.311.10.11.20";
3799 pub const szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID
: &'
static str
3800 = "1.3.6.1.4.1.311.10.11.28";
3801 pub const szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID
: &'
static str = "1.3.6.1.4.1.311.10.11.29";
3802 pub const szOID_CERT_MD5_HASH_PROP_ID
: &'
static str = "1.3.6.1.4.1.311.10.11.4";
3803 pub const szOID_CERT_SIGNATURE_HASH_PROP_ID
: &'
static str = "1.3.6.1.4.1.311.10.11.15";
3804 pub const szOID_DISALLOWED_HASH
: &'
static str = szOID_CERT_SIGNATURE_HASH_PROP_ID
;
3805 pub const szOID_CERT_DISALLOWED_FILETIME_PROP_ID
: &'
static str = "1.3.6.1.4.1.311.10.11.104";
3806 pub const CERT_ACCESS_STATE_WRITE_PERSIST_FLAG
: DWORD
= 0x1;
3807 pub const CERT_ACCESS_STATE_SYSTEM_STORE_FLAG
: DWORD
= 0x2;
3808 pub const CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG
: DWORD
= 0x4;
3809 pub const CERT_ACCESS_STATE_GP_SYSTEM_STORE_FLAG
: DWORD
= 0x8;
3810 pub const CERT_ACCESS_STATE_SHARED_USER_FLAG
: DWORD
= 0x10;
3811 pub const szOID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION
: &'
static str = "1.3.6.1.4.1.311.60.3.1";
3812 pub const szOID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION
: &'
static str = "1.3.6.1.4.1.311.60.3.2";
3813 pub const szOID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL
: &'
static str = "1.3.6.1.4.1.311.60.3.3";
3814 STRUCT
!{struct CRYPT_KEY_PROV_PARAM
{
3820 pub type PCRYPT_KEY_PROV_PARAM
= *mut CRYPT_KEY_PROV_PARAM
;
3821 STRUCT
!{struct CRYPT_KEY_PROV_INFO
{
3822 pwszContainerName
: LPWSTR
,
3823 pwszProvName
: LPWSTR
,
3827 rgProvParam
: PCRYPT_KEY_PROV_PARAM
,
3830 pub type PCRYPT_KEY_PROV_INFO
= *mut CRYPT_KEY_PROV_INFO
;
3831 pub const CERT_SET_KEY_PROV_HANDLE_PROP_ID
: DWORD
= 0x00000001;
3832 pub const CERT_SET_KEY_CONTEXT_PROP_ID
: DWORD
= 0x00000001;
3833 pub const CERT_NCRYPT_KEY_SPEC
: DWORD
= 0xFFFFFFFF;
3834 UNION
!{union CERT_KEY_CONTEXT_u
{
3836 hCryptProv hCryptProv_mut
: HCRYPTPROV
,
3837 hNCryptKey hNCryptKey_mut
: NCRYPT_KEY_HANDLE
,
3839 STRUCT
!{struct CERT_KEY_CONTEXT
{
3841 u
: CERT_KEY_CONTEXT_u
,
3844 pub type PCERT_KEY_CONTEXT
= *mut CERT_KEY_CONTEXT
;
3845 STRUCT
!{struct ROOT_INFO_LUID
{
3849 pub type PROOT_INFO_LUID
= *mut ROOT_INFO_LUID
;
3850 STRUCT
!{struct CRYPT_SMART_CARD_ROOT_INFO
{
3851 rgbCardID
: [BYTE
; 16],
3852 luid
: ROOT_INFO_LUID
,
3854 pub type PCRYPT_SMART_CARD_ROOT_INFO
= *mut CRYPT_SMART_CARD_ROOT_INFO
;
3855 pub const CERT_STORE_PROV_MSG
: LPCSTR
= 1 as LPCSTR
;
3856 pub const CERT_STORE_PROV_MEMORY
: LPCSTR
= 2 as LPCSTR
;
3857 pub const CERT_STORE_PROV_FILE
: LPCSTR
= 3 as LPCSTR
;
3858 pub const CERT_STORE_PROV_REG
: LPCSTR
= 4 as LPCSTR
;
3859 pub const CERT_STORE_PROV_PKCS7
: LPCSTR
= 5 as LPCSTR
;
3860 pub const CERT_STORE_PROV_SERIALIZED
: LPCSTR
= 6 as LPCSTR
;
3861 pub const CERT_STORE_PROV_FILENAME_A
: LPCSTR
= 7 as LPCSTR
;
3862 pub const CERT_STORE_PROV_FILENAME_W
: LPCSTR
= 8 as LPCSTR
;
3863 pub const CERT_STORE_PROV_FILENAME
: LPCSTR
= CERT_STORE_PROV_FILENAME_W
;
3864 pub const CERT_STORE_PROV_SYSTEM_A
: LPCSTR
= 9 as LPCSTR
;
3865 pub const CERT_STORE_PROV_SYSTEM_W
: LPCSTR
= 10 as LPCSTR
;
3866 pub const CERT_STORE_PROV_SYSTEM
: LPCSTR
= CERT_STORE_PROV_SYSTEM_W
;
3867 pub const CERT_STORE_PROV_COLLECTION
: LPCSTR
= 11 as LPCSTR
;
3868 pub const CERT_STORE_PROV_SYSTEM_REGISTRY_A
: LPCSTR
= 12 as LPCSTR
;
3869 pub const CERT_STORE_PROV_SYSTEM_REGISTRY_W
: LPCSTR
= 13 as LPCSTR
;
3870 pub const CERT_STORE_PROV_SYSTEM_REGISTRY
: LPCSTR
= CERT_STORE_PROV_SYSTEM_REGISTRY_W
;
3871 pub const CERT_STORE_PROV_PHYSICAL_W
: LPCSTR
= 14 as LPCSTR
;
3872 pub const CERT_STORE_PROV_PHYSICAL
: LPCSTR
= CERT_STORE_PROV_PHYSICAL_W
;
3873 pub const CERT_STORE_PROV_SMART_CARD_W
: LPCSTR
= 15 as LPCSTR
;
3874 pub const CERT_STORE_PROV_SMART_CARD
: LPCSTR
= CERT_STORE_PROV_SMART_CARD_W
;
3875 pub const CERT_STORE_PROV_LDAP_W
: LPCSTR
= 16 as LPCSTR
;
3876 pub const CERT_STORE_PROV_LDAP
: LPCSTR
= CERT_STORE_PROV_LDAP_W
;
3877 pub const CERT_STORE_PROV_PKCS12
: LPCSTR
= 17 as LPCSTR
;
3878 pub const sz_CERT_STORE_PROV_MEMORY
: &'
static str = "Memory";
3879 pub const sz_CERT_STORE_PROV_FILENAME_W
: &'
static str = "File";
3880 pub const sz_CERT_STORE_PROV_FILENAME
: &'
static str = sz_CERT_STORE_PROV_FILENAME_W
;
3881 pub const sz_CERT_STORE_PROV_SYSTEM_W
: &'
static str = "System";
3882 pub const sz_CERT_STORE_PROV_SYSTEM
: &'
static str = sz_CERT_STORE_PROV_SYSTEM_W
;
3883 pub const sz_CERT_STORE_PROV_PKCS7
: &'
static str = "PKCS7";
3884 pub const sz_CERT_STORE_PROV_PKCS12
: &'
static str = "PKCS12";
3885 pub const sz_CERT_STORE_PROV_SERIALIZED
: &'
static str = "Serialized";
3886 pub const sz_CERT_STORE_PROV_COLLECTION
: &'
static str = "Collection";
3887 pub const sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W
: &'
static str = "SystemRegistry";
3888 pub const sz_CERT_STORE_PROV_SYSTEM_REGISTRY
: &'
static str = sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W
;
3889 pub const sz_CERT_STORE_PROV_PHYSICAL_W
: &'
static str = "Physical";
3890 pub const sz_CERT_STORE_PROV_PHYSICAL
: &'
static str = sz_CERT_STORE_PROV_PHYSICAL_W
;
3891 pub const sz_CERT_STORE_PROV_SMART_CARD_W
: &'
static str = "SmartCard";
3892 pub const sz_CERT_STORE_PROV_SMART_CARD
: &'
static str = sz_CERT_STORE_PROV_SMART_CARD_W
;
3893 pub const sz_CERT_STORE_PROV_LDAP_W
: &'
static str = "Ldap";
3894 pub const sz_CERT_STORE_PROV_LDAP
: &'
static str = sz_CERT_STORE_PROV_LDAP_W
;
3895 pub const CERT_STORE_SIGNATURE_FLAG
: DWORD
= 0x00000001;
3896 pub const CERT_STORE_TIME_VALIDITY_FLAG
: DWORD
= 0x00000002;
3897 pub const CERT_STORE_REVOCATION_FLAG
: DWORD
= 0x00000004;
3898 pub const CERT_STORE_NO_CRL_FLAG
: DWORD
= 0x00010000;
3899 pub const CERT_STORE_NO_ISSUER_FLAG
: DWORD
= 0x00020000;
3900 pub const CERT_STORE_BASE_CRL_FLAG
: DWORD
= 0x00000100;
3901 pub const CERT_STORE_DELTA_CRL_FLAG
: DWORD
= 0x00000200;
3902 pub const CERT_STORE_NO_CRYPT_RELEASE_FLAG
: DWORD
= 0x00000001;
3903 pub const CERT_STORE_SET_LOCALIZED_NAME_FLAG
: DWORD
= 0x00000002;
3904 pub const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG
: DWORD
= 0x00000004;
3905 pub const CERT_STORE_DELETE_FLAG
: DWORD
= 0x00000010;
3906 pub const CERT_STORE_SHARE_STORE_FLAG
: DWORD
= 0x00000040;
3907 pub const CERT_STORE_SHARE_CONTEXT_FLAG
: DWORD
= 0x00000080;
3908 pub const CERT_STORE_MANIFOLD_FLAG
: DWORD
= 0x00000100;
3909 pub const CERT_STORE_ENUM_ARCHIVED_FLAG
: DWORD
= 0x00000200;
3910 pub const CERT_STORE_UPDATE_KEYID_FLAG
: DWORD
= 0x00000400;
3911 pub const CERT_STORE_BACKUP_RESTORE_FLAG
: DWORD
= 0x00000800;
3912 pub const CERT_STORE_READONLY_FLAG
: DWORD
= 0x00008000;
3913 pub const CERT_STORE_OPEN_EXISTING_FLAG
: DWORD
= 0x00004000;
3914 pub const CERT_STORE_CREATE_NEW_FLAG
: DWORD
= 0x00002000;
3915 pub const CERT_STORE_MAXIMUM_ALLOWED_FLAG
: DWORD
= 0x00001000;
3916 pub const CERT_SYSTEM_STORE_MASK
: DWORD
= 0xFFFF0000;
3917 pub const CERT_SYSTEM_STORE_RELOCATE_FLAG
: DWORD
= 0x80000000;
3918 UNION
!{union CERT_SYSTEM_STORE_RELOCATE_PARA_u1
{
3920 hKeyBase hKeyBase_mut
: HKEY
,
3921 pvBase pvBase_mut
: *mut c_void
,
3923 UNION
!{union CERT_SYSTEM_STORE_RELOCATE_PARA_u2
{
3925 pvSystemStore pvSystemStore__mut
: *mut c_void
,
3926 pszSystemStore pszSystemStore_mut
: LPCSTR
,
3927 pwszSystemStore pwszSystemStore_mut
: LPCWSTR
,
3929 STRUCT
!{struct CERT_SYSTEM_STORE_RELOCATE_PARA
{
3930 u1
: CERT_SYSTEM_STORE_RELOCATE_PARA_u1
,
3931 u2
: CERT_SYSTEM_STORE_RELOCATE_PARA_u2
,
3933 pub type PCERT_SYSTEM_STORE_RELOCATE_PARA
= *mut CERT_SYSTEM_STORE_RELOCATE_PARA
;
3934 pub const CERT_SYSTEM_STORE_UNPROTECTED_FLAG
: DWORD
= 0x40000000;
3935 pub const CERT_SYSTEM_STORE_LOCATION_MASK
: DWORD
= 0x00FF0000;
3936 pub const CERT_SYSTEM_STORE_LOCATION_SHIFT
: DWORD
= 16;
3937 pub const CERT_SYSTEM_STORE_CURRENT_USER_ID
: DWORD
= 1;
3938 pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_ID
: DWORD
= 2;
3939 pub const CERT_SYSTEM_STORE_CURRENT_SERVICE_ID
: DWORD
= 4;
3940 pub const CERT_SYSTEM_STORE_SERVICES_ID
: DWORD
= 5;
3941 pub const CERT_SYSTEM_STORE_USERS_ID
: DWORD
= 6;
3942 pub const CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID
: DWORD
= 7;
3943 pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID
: DWORD
= 8;
3944 pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID
: DWORD
= 9;
3945 pub const CERT_SYSTEM_STORE_CURRENT_USER
: DWORD
= CERT_SYSTEM_STORE_CURRENT_USER_ID
3946 << CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3947 pub const CERT_SYSTEM_STORE_LOCAL_MACHINE
: DWORD
= CERT_SYSTEM_STORE_LOCAL_MACHINE_ID
3948 << CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3949 pub const CERT_SYSTEM_STORE_CURRENT_SERVICE
: DWORD
= CERT_SYSTEM_STORE_CURRENT_SERVICE_ID
3950 << CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3951 pub const CERT_SYSTEM_STORE_SERVICES
: DWORD
= CERT_SYSTEM_STORE_SERVICES_ID
3952 << CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3953 pub const CERT_SYSTEM_STORE_USERS
: DWORD
= CERT_SYSTEM_STORE_USERS_ID
3954 << CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3955 pub const CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY
: DWORD
3956 = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID
<< CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3957 pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY
: DWORD
3958 = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID
<< CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3959 pub const CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE
: DWORD
3960 = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID
<< CERT_SYSTEM_STORE_LOCATION_SHIFT
;
3961 pub const CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH
: &'
static str
3962 = "Software\\Policies\\Microsoft\\SystemCertificates";
3963 pub const CERT_EFSBLOB_REGPATH
: &'
static str
3964 = "Software\\Policies\\Microsoft\\SystemCertificates\\EFS";
3965 pub const CERT_EFSBLOB_VALUE_NAME
: &'
static str = "EFSBlob";
3966 pub const CERT_PROT_ROOT_FLAGS_REGPATH
: &'
static str
3967 = "Software\\Policies\\Microsoft\\SystemCertificates\\Root\\ProtectedRoots";
3968 pub const CERT_PROT_ROOT_FLAGS_VALUE_NAME
: &'
static str = "Flags";
3969 pub const CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG
: DWORD
= 0x1;
3970 pub const CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG
: DWORD
= 0x2;
3971 pub const CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG
: DWORD
= 0x4;
3972 pub const CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG
: DWORD
= 0x8;
3973 pub const CERT_PROT_ROOT_ONLY_LM_GPT_FLAG
: DWORD
= 0x8;
3974 pub const CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG
: DWORD
= 0x10;
3975 pub const CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG
: DWORD
= 0x20;
3976 pub const CERT_PROT_ROOT_DISABLE_PEER_TRUST
: DWORD
= 0x10000;
3977 pub const CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME
: &'
static str = "PeerUsages";
3978 pub const CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME_A
: &'
static str = "PeerUsages";
3979 pub const CERT_PROT_ROOT_PEER_USAGES_DEFAULT_A
: &'
static str
3980 = "1.3.6.1.5.5.7.3.2\01.3.6.1.5.5.7.3.4\01.3.6.1.4.1.311.10.3.4\0";
3981 pub const CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH
: &'
static str
3982 = "Software\\Policies\\Microsoft\\SystemCertificates\\TrustedPublisher\\Safer";
3983 pub const CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH
: &'
static str
3984 = "Software\\Microsoft\\SystemCertificates";
3985 pub const CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH
: &'
static str
3986 = "Software\\Microsoft\\SystemCertificates\\TrustedPublisher\\Safer";
3987 pub const CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME
: &'
static str = "AuthenticodeFlags";
3988 pub const CERT_TRUST_PUB_ALLOW_TRUST_MASK
: DWORD
= 0x00000003;
3989 pub const CERT_TRUST_PUB_ALLOW_END_USER_TRUST
: DWORD
= 0x00000000;
3990 pub const CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST
: DWORD
= 0x00000001;
3991 pub const CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST
: DWORD
= 0x00000002;
3992 pub const CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG
: DWORD
= 0x00000100;
3993 pub const CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG
: DWORD
= 0x00000200;
3994 pub const CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH
: &'
static str
3995 = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents";
3996 pub const CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME
: &'
static str = "RootAutoUpdate";
3997 pub const CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH
: &'
static str
3998 = "Software\\Policies\\Microsoft\\SystemCertificates\\AuthRoot";
3999 pub const CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME
: &'
static str = "DisableRootAutoUpdate";
4000 pub const CERT_ENABLE_DISALLOWED_CERT_AUTO_UPDATE_VALUE_NAME
: &'
static str
4001 = "EnableDisallowedCertAutoUpdate";
4002 pub const CERT_DISABLE_PIN_RULES_AUTO_UPDATE_VALUE_NAME
: &'
static str
4003 = "DisablePinRulesAutoUpdate";
4004 pub const CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH
: &'
static str
4005 = "Software\\Microsoft\\SystemCertificates\\AuthRoot\\AutoUpdate";
4006 pub const CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME
: &'
static str = "RootDirUrl";
4007 pub const CERT_AUTO_UPDATE_SYNC_FROM_DIR_URL_VALUE_NAME
: &'
static str = "SyncFromDirUrl";
4008 pub const CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH
: &'
static str
4009 = CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH
;
4010 pub const CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME
: &'
static str
4011 = CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME
;
4012 pub const CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME
: &'
static str = "SyncDeltaTime";
4013 pub const CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME
: &'
static str = "Flags";
4014 pub const CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG
: DWORD
= 0x1;
4015 pub const CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_PARTIAL_CHAIN_LOGGING_FLAG
: DWORD
= 0x2;
4016 pub const CERT_AUTO_UPDATE_DISABLE_RANDOM_QUERY_STRING_FLAG
: DWORD
= 0x4;
4017 pub const CERT_AUTH_ROOT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME
: &'
static str = "LastSyncTime";
4018 pub const CERT_AUTH_ROOT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME
: &'
static str = "EncodedCt";
4019 pub const CERT_AUTH_ROOT_CTL_FILENAME
: &'
static str = "authroot.st";
4020 pub const CERT_AUTH_ROOT_CTL_FILENAME_A
: &'
static str = "authroot.st";
4021 pub const CERT_AUTH_ROOT_CAB_FILENAME
: &'
static str = "authrootstl.cab";
4022 pub const CERT_AUTH_ROOT_SEQ_FILENAME
: &'
static str = "authrootseq.txt";
4023 pub const CERT_AUTH_ROOT_CERT_EXT
: &'
static str = ".crt";
4024 pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME
: &'
static str
4025 = "DisallowedCertSyncDeltaTime";
4026 pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME
: &'
static str
4027 = "DisallowedCertLastSyncTime";
4028 pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME
: &'
static str
4029 = "DisallowedCertEncodedCt";
4030 pub const CERT_DISALLOWED_CERT_CTL_FILENAME
: &'
static str = "disallowedcert.st";
4031 pub const CERT_DISALLOWED_CERT_CTL_FILENAME_A
: &'
static str = "disallowedcert.st";
4032 pub const CERT_DISALLOWED_CERT_CAB_FILENAME
: &'
static str = "disallowedcertstl.cab";
4033 pub const CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER
: &'
static str
4034 = "DisallowedCert_AutoUpdate_1";
4035 pub const CERT_PIN_RULES_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME
: &'
static str
4036 = "PinRulesSyncDeltaTime";
4037 pub const CERT_PIN_RULES_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME
: &'
static str
4038 = "PinRulesLastSyncTime";
4039 pub const CERT_PIN_RULES_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME
: &'
static str = "PinRulesEncodedCt";
4040 pub const CERT_PIN_RULES_CTL_FILENAME
: &'
static str = "pinrules.st";
4041 pub const CERT_PIN_RULES_CTL_FILENAME_A
: &'
static str = "pinrules.st";
4042 pub const CERT_PIN_RULES_CAB_FILENAME
: &'
static str = "pinrulesstl.cab";
4043 pub const CERT_PIN_RULES_AUTO_UPDATE_LIST_IDENTIFIER
: &'
static str = "PinRules_AutoUpdate_1";
4044 pub const CERT_REGISTRY_STORE_REMOTE_FLAG
: DWORD
= 0x10000;
4045 pub const CERT_REGISTRY_STORE_SERIALIZED_FLAG
: DWORD
= 0x20000;
4046 pub const CERT_REGISTRY_STORE_CLIENT_GPT_FLAG
: DWORD
= 0x80000000;
4047 pub const CERT_REGISTRY_STORE_LM_GPT_FLAG
: DWORD
= 0x01000000;
4048 STRUCT
!{struct CERT_REGISTRY_STORE_CLIENT_GPT_PARA
{
4050 pwszRegPath
: LPWSTR
,
4052 pub type PCERT_REGISTRY_STORE_CLIENT_GPT_PARA
= *mut CERT_REGISTRY_STORE_CLIENT_GPT_PARA
;
4053 pub const CERT_REGISTRY_STORE_ROAMING_FLAG
: DWORD
= 0x40000;
4054 STRUCT
!{struct CERT_REGISTRY_STORE_ROAMING_PARA
{
4056 pwszStoreDirectory
: LPWSTR
,
4058 pub type PCERT_REGISTRY_STORE_ROAMING_PARA
= *mut CERT_REGISTRY_STORE_ROAMING_PARA
;
4059 pub const CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG
: DWORD
= 0x80000;
4060 pub const CERT_REGISTRY_STORE_EXTERNAL_FLAG
: DWORD
= 0x100000;
4061 pub const CERT_IE_DIRTY_FLAGS_REGPATH
: &'
static str
4062 = "Software\\Microsoft\\Cryptography\\IEDirtyFlags";
4063 pub const CERT_FILE_STORE_COMMIT_ENABLE_FLAG
: DWORD
= 0x10000;
4064 pub const CERT_LDAP_STORE_SIGN_FLAG
: DWORD
= 0x10000;
4065 pub const CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG
: DWORD
= 0x20000;
4066 pub const CERT_LDAP_STORE_OPENED_FLAG
: DWORD
= 0x40000;
4067 STRUCT
!{struct CERT_LDAP_STORE_OPENED_PARA
{
4068 pvLdapSessionHandle
: *mut c_void
,
4069 pwszLdapUrl
: LPCWSTR
,
4071 pub type PCERT_LDAP_STORE_OPENED_PARA
= *mut CERT_LDAP_STORE_OPENED_PARA
;
4072 pub const CERT_LDAP_STORE_UNBIND_FLAG
: DWORD
= 0x80000;
4074 pub fn CertOpenStore(
4075 lpszStoreProvider
: LPCSTR
,
4076 dwEncodingType
: DWORD
,
4077 hCryptProv
: HCRYPTPROV_LEGACY
,
4079 pvPara
: *const c_void
,
4082 pub type HCERTSTOREPROV
= *mut c_void
;
4083 pub const CRYPT_OID_OPEN_STORE_PROV_FUNC
: &'
static str = "CertDllOpenStoreProv";
4084 STRUCT
!{struct CERT_STORE_PROV_INFO
{
4086 cStoreProvFunc
: DWORD
,
4087 rgpvStoreProvFunc
: *mut *mut c_void
,
4088 hStoreProv
: HCERTSTOREPROV
,
4089 dwStoreProvFlags
: DWORD
,
4090 hStoreProvFuncAddr2
: HCRYPTOIDFUNCADDR
,
4092 pub type PCERT_STORE_PROV_INFO
= *mut CERT_STORE_PROV_INFO
;
4093 FN
!{stdcall
PFN_CERT_DLL_OPEN_STORE_PROV_FUNC(
4094 lpszStoreProvider
: LPCSTR
,
4095 dwEncodingType
: DWORD
,
4096 hCryptProv
: HCRYPTPROV_LEGACY
,
4098 pvPara
: *const c_void
,
4099 hCertStore
: HCERTSTORE
,
4100 pStoreProvInfo
: PCERT_STORE_PROV_INFO
,
4102 pub const CERT_STORE_PROV_EXTERNAL_FLAG
: DWORD
= 0x1;
4103 pub const CERT_STORE_PROV_DELETED_FLAG
: DWORD
= 0x2;
4104 pub const CERT_STORE_PROV_NO_PERSIST_FLAG
: DWORD
= 0x4;
4105 pub const CERT_STORE_PROV_SYSTEM_STORE_FLAG
: DWORD
= 0x8;
4106 pub const CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG
: DWORD
= 0x10;
4107 pub const CERT_STORE_PROV_GP_SYSTEM_STORE_FLAG
: DWORD
= 0x20;
4108 pub const CERT_STORE_PROV_SHARED_USER_FLAG
: DWORD
= 0x40;
4109 pub const CERT_STORE_PROV_CLOSE_FUNC
: DWORD
= 0;
4110 pub const CERT_STORE_PROV_READ_CERT_FUNC
: DWORD
= 1;
4111 pub const CERT_STORE_PROV_WRITE_CERT_FUNC
: DWORD
= 2;
4112 pub const CERT_STORE_PROV_DELETE_CERT_FUNC
: DWORD
= 3;
4113 pub const CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC
: DWORD
= 4;
4114 pub const CERT_STORE_PROV_READ_CRL_FUNC
: DWORD
= 5;
4115 pub const CERT_STORE_PROV_WRITE_CRL_FUNC
: DWORD
= 6;
4116 pub const CERT_STORE_PROV_DELETE_CRL_FUNC
: DWORD
= 7;
4117 pub const CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC
: DWORD
= 8;
4118 pub const CERT_STORE_PROV_READ_CTL_FUNC
: DWORD
= 9;
4119 pub const CERT_STORE_PROV_WRITE_CTL_FUNC
: DWORD
= 10;
4120 pub const CERT_STORE_PROV_DELETE_CTL_FUNC
: DWORD
= 11;
4121 pub const CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC
: DWORD
= 12;
4122 pub const CERT_STORE_PROV_CONTROL_FUNC
: DWORD
= 13;
4123 pub const CERT_STORE_PROV_FIND_CERT_FUNC
: DWORD
= 14;
4124 pub const CERT_STORE_PROV_FREE_FIND_CERT_FUNC
: DWORD
= 15;
4125 pub const CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC
: DWORD
= 16;
4126 pub const CERT_STORE_PROV_FIND_CRL_FUNC
: DWORD
= 17;
4127 pub const CERT_STORE_PROV_FREE_FIND_CRL_FUNC
: DWORD
= 18;
4128 pub const CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC
: DWORD
= 19;
4129 pub const CERT_STORE_PROV_FIND_CTL_FUNC
: DWORD
= 20;
4130 pub const CERT_STORE_PROV_FREE_FIND_CTL_FUNC
: DWORD
= 21;
4131 pub const CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC
: DWORD
= 22;
4132 FN
!{stdcall
PFN_CERT_STORE_PROV_CLOSE(
4133 hStoreProv
: HCERTSTOREPROV
,
4136 FN
!{stdcall
PFN_CERT_STORE_PROV_READ_CERT(
4137 hStoreProv
: HCERTSTOREPROV
,
4138 pStoreCertContext
: PCCERT_CONTEXT
,
4140 ppProvCertContext
: *mut PCCERT_CONTEXT
,
4142 pub const CERT_STORE_PROV_WRITE_ADD_FLAG
: DWORD
= 0x1;
4143 FN
!{stdcall
PFN_CERT_STORE_PROV_WRITE_CERT(
4144 hStoreProv
: HCERTSTOREPROV
,
4145 pCertContext
: PCCERT_CONTEXT
,
4148 FN
!{stdcall
PFN_CERT_STORE_PROV_DELETE_CERT(
4149 hStoreProv
: HCERTSTOREPROV
,
4150 pCertContext
: PCCERT_CONTEXT
,
4153 FN
!{stdcall
PFN_CERT_STORE_PROV_SET_CERT_PROPERTY(
4154 hStoreProv
: HCERTSTOREPROV
,
4155 pCertContext
: PCCERT_CONTEXT
,
4158 pvData
: *const c_void
,
4160 FN
!{stdcall
PFN_CERT_STORE_PROV_READ_CRL(
4161 hStoreProv
: HCERTSTOREPROV
,
4162 pStoreCrlContext
: PCCRL_CONTEXT
,
4164 ppProvCrlContext
: *mut PCCRL_CONTEXT
,
4166 FN
!{stdcall
PFN_CERT_STORE_PROV_WRITE_CRL(
4167 hStoreProv
: HCERTSTOREPROV
,
4168 pCrlContext
: PCCRL_CONTEXT
,
4171 FN
!{stdcall
PFN_CERT_STORE_PROV_DELETE_CRL(
4172 hStoreProv
: HCERTSTOREPROV
,
4173 pCrlContext
: PCCRL_CONTEXT
,
4176 FN
!{stdcall
PFN_CERT_STORE_PROV_SET_CRL_PROPERTY(
4177 hStoreProv
: HCERTSTOREPROV
,
4178 pCrlContext
: PCCRL_CONTEXT
,
4181 pvData
: *const c_void
,
4183 FN
!{stdcall
PFN_CERT_STORE_PROV_READ_CTL(
4184 hStoreProv
: HCERTSTOREPROV
,
4185 pStoreCtlContext
: PCCTL_CONTEXT
,
4187 ppProvCtlContext
: *mut PCCTL_CONTEXT
,
4189 FN
!{stdcall
PFN_CERT_STORE_PROV_WRITE_CTL(
4190 hStoreProv
: HCERTSTOREPROV
,
4191 pCtlContext
: PCCTL_CONTEXT
,
4194 FN
!{stdcall
PFN_CERT_STORE_PROV_DELETE_CTL(
4195 hStoreProv
: HCERTSTOREPROV
,
4196 pCtlContext
: PCCTL_CONTEXT
,
4199 FN
!{stdcall
PFN_CERT_STORE_PROV_SET_CTL_PROPERTY(
4200 hStoreProv
: HCERTSTOREPROV
,
4201 pCtlContext
: PCCTL_CONTEXT
,
4204 pvData
: *const c_void
,
4206 FN
!{stdcall
PFN_CERT_STORE_PROV_CONTROL(
4207 hStoreProv
: HCERTSTOREPROV
,
4210 pvCtrlPara
: *const c_void
,
4212 STRUCT
!{struct CERT_STORE_PROV_FIND_INFO
{
4214 dwMsgAndCertEncodingType
: DWORD
,
4217 pvFindPara
: *const c_void
,
4219 pub type PCERT_STORE_PROV_FIND_INFO
= *mut CERT_STORE_PROV_FIND_INFO
;
4220 pub type CCERT_STORE_PROV_FIND_INFO
= CERT_STORE_PROV_FIND_INFO
;
4221 pub type PCCERT_STORE_PROV_FIND_INFO
= *const CERT_STORE_PROV_FIND_INFO
;
4222 FN
!{stdcall
PFN_CERT_STORE_PROV_FIND_CERT(
4223 hStoreProv
: HCERTSTOREPROV
,
4224 pFindInfo
: PCCERT_STORE_PROV_FIND_INFO
,
4225 pPrevCertContext
: PCCERT_CONTEXT
,
4227 ppvStoreProvFindInfo
: *mut *mut c_void
,
4228 ppProvCertContext
: *mut PCCERT_CONTEXT
,
4230 FN
!{stdcall
PFN_CERT_STORE_PROV_FREE_FIND_CERT(
4231 hStoreProv
: HCERTSTOREPROV
,
4232 pCertContext
: PCCERT_CONTEXT
,
4233 pvStoreProvFindInfo
: *mut c_void
,
4236 FN
!{stdcall
PFN_CERT_STORE_PROV_GET_CERT_PROPERTY(
4237 hStoreProv
: HCERTSTOREPROV
,
4238 pCertContext
: PCCERT_CONTEXT
,
4241 pvData
: *mut c_void
,
4242 pcbData
: *mut DWORD
,
4244 FN
!{stdcall
PFN_CERT_STORE_PROV_FIND_CRL(
4245 hStoreProv
: HCERTSTOREPROV
,
4246 pFindInfo
: PCCERT_STORE_PROV_FIND_INFO
,
4247 pPrevCrlContext
: PCCRL_CONTEXT
,
4249 ppvStoreProvFindInfo
: *mut *mut c_void
,
4250 ppProvCrlContext
: *mut PCCRL_CONTEXT
,
4252 FN
!{stdcall
PFN_CERT_STORE_PROV_FREE_FIND_CRL(
4253 hStoreProv
: HCERTSTOREPROV
,
4254 pCrlContext
: PCCRL_CONTEXT
,
4255 pvStoreProvFindInfo
: *mut c_void
,
4258 FN
!{stdcall
PFN_CERT_STORE_PROV_GET_CRL_PROPERTY(
4259 hStoreProv
: HCERTSTOREPROV
,
4260 pCrlContext
: PCCRL_CONTEXT
,
4263 pvData
: *mut c_void
,
4264 pcbData
: *mut DWORD
,
4266 FN
!{stdcall
PFN_CERT_STORE_PROV_FIND_CTL(
4267 hStoreProv
: HCERTSTOREPROV
,
4268 pFindInfo
: PCCERT_STORE_PROV_FIND_INFO
,
4269 pPrevCtlContext
: PCCTL_CONTEXT
,
4271 ppvStoreProvFindInfo
: *mut *mut c_void
,
4272 ppProvCtlContext
: *mut PCCTL_CONTEXT
,
4274 FN
!{stdcall
PFN_CERT_STORE_PROV_FREE_FIND_CTL(
4275 hStoreProv
: HCERTSTOREPROV
,
4276 pCtlContext
: PCCTL_CONTEXT
,
4277 pvStoreProvFindInfo
: *mut c_void
,
4280 FN
!{stdcall
PFN_CERT_STORE_PROV_GET_CTL_PROPERTY(
4281 hStoreProv
: HCERTSTOREPROV
,
4282 pCtlContext
: PCCTL_CONTEXT
,
4285 pvData
: *mut c_void
,
4286 pcbData
: *mut DWORD
,
4289 pub fn CertDuplicateStore(
4290 hCertStore
: HCERTSTORE
,
4293 pub const CERT_STORE_SAVE_AS_STORE
: DWORD
= 1;
4294 pub const CERT_STORE_SAVE_AS_PKCS7
: DWORD
= 2;
4295 pub const CERT_STORE_SAVE_AS_PKCS12
: DWORD
= 3;
4296 pub const CERT_STORE_SAVE_TO_FILE
: DWORD
= 1;
4297 pub const CERT_STORE_SAVE_TO_MEMORY
: DWORD
= 2;
4298 pub const CERT_STORE_SAVE_TO_FILENAME_A
: DWORD
= 3;
4299 pub const CERT_STORE_SAVE_TO_FILENAME_W
: DWORD
= 4;
4300 pub const CERT_STORE_SAVE_TO_FILENAME
: DWORD
= CERT_STORE_SAVE_TO_FILENAME_W
;
4302 pub fn CertSaveStore(
4303 hCertStore
: HCERTSTORE
,
4304 dwEncodingType
: DWORD
,
4307 pvSaveToPara
: *mut c_void
,
4311 pub const CERT_CLOSE_STORE_FORCE_FLAG
: DWORD
= 0x00000001;
4312 pub const CERT_CLOSE_STORE_CHECK_FLAG
: DWORD
= 0x00000002;
4314 pub fn CertCloseStore(
4315 hCertStore
: HCERTSTORE
,
4318 pub fn CertGetSubjectCertificateFromStore(
4319 hCertStore
: HCERTSTORE
,
4320 dwCertEncodingType
: DWORD
,
4321 pCertId
: PCERT_INFO
,
4322 ) -> PCCERT_CONTEXT
;
4323 pub fn CertEnumCertificatesInStore(
4324 hCertStore
: HCERTSTORE
,
4325 pPrevCertContext
: PCCERT_CONTEXT
,
4326 ) -> PCCERT_CONTEXT
;
4327 pub fn CertFindCertificateInStore(
4328 hCertStore
: HCERTSTORE
,
4329 dwCertEncodingType
: DWORD
,
4332 pvFindPara
: *const c_void
,
4333 pPrevCertContext
: PCCERT_CONTEXT
,
4334 ) -> PCCERT_CONTEXT
;
4336 pub const CERT_COMPARE_MASK
: DWORD
= 0xFFFF;
4337 pub const CERT_COMPARE_SHIFT
: DWORD
= 16;
4338 pub const CERT_COMPARE_ANY
: DWORD
= 0;
4339 pub const CERT_COMPARE_SHA1_HASH
: DWORD
= 1;
4340 pub const CERT_COMPARE_NAME
: DWORD
= 2;
4341 pub const CERT_COMPARE_ATTR
: DWORD
= 3;
4342 pub const CERT_COMPARE_MD5_HASH
: DWORD
= 4;
4343 pub const CERT_COMPARE_PROPERTY
: DWORD
= 5;
4344 pub const CERT_COMPARE_PUBLIC_KEY
: DWORD
= 6;
4345 pub const CERT_COMPARE_HASH
: DWORD
= CERT_COMPARE_SHA1_HASH
;
4346 pub const CERT_COMPARE_NAME_STR_A
: DWORD
= 7;
4347 pub const CERT_COMPARE_NAME_STR_W
: DWORD
= 8;
4348 pub const CERT_COMPARE_KEY_SPEC
: DWORD
= 9;
4349 pub const CERT_COMPARE_ENHKEY_USAGE
: DWORD
= 10;
4350 pub const CERT_COMPARE_CTL_USAGE
: DWORD
= CERT_COMPARE_ENHKEY_USAGE
;
4351 pub const CERT_COMPARE_SUBJECT_CERT
: DWORD
= 11;
4352 pub const CERT_COMPARE_ISSUER_OF
: DWORD
= 12;
4353 pub const CERT_COMPARE_EXISTING
: DWORD
= 13;
4354 pub const CERT_COMPARE_SIGNATURE_HASH
: DWORD
= 14;
4355 pub const CERT_COMPARE_KEY_IDENTIFIER
: DWORD
= 15;
4356 pub const CERT_COMPARE_CERT_ID
: DWORD
= 16;
4357 pub const CERT_COMPARE_CROSS_CERT_DIST_POINTS
: DWORD
= 17;
4358 pub const CERT_COMPARE_PUBKEY_MD5_HASH
: DWORD
= 18;
4359 pub const CERT_COMPARE_SUBJECT_INFO_ACCESS
: DWORD
= 19;
4360 pub const CERT_COMPARE_HASH_STR
: DWORD
= 20;
4361 pub const CERT_COMPARE_HAS_PRIVATE_KEY
: DWORD
= 21;
4362 pub const CERT_FIND_ANY
: DWORD
= CERT_COMPARE_ANY
<< CERT_COMPARE_SHIFT
;
4363 pub const CERT_FIND_SHA1_HASH
: DWORD
= CERT_COMPARE_SHA1_HASH
<< CERT_COMPARE_SHIFT
;
4364 pub const CERT_FIND_MD5_HASH
: DWORD
= CERT_COMPARE_MD5_HASH
<< CERT_COMPARE_SHIFT
;
4365 pub const CERT_FIND_SIGNATURE_HASH
: DWORD
= CERT_COMPARE_SIGNATURE_HASH
<< CERT_COMPARE_SHIFT
;
4366 pub const CERT_FIND_KEY_IDENTIFIER
: DWORD
= CERT_COMPARE_KEY_IDENTIFIER
<< CERT_COMPARE_SHIFT
;
4367 pub const CERT_FIND_HASH
: DWORD
= CERT_FIND_SHA1_HASH
;
4368 pub const CERT_FIND_PROPERTY
: DWORD
= CERT_COMPARE_PROPERTY
<< CERT_COMPARE_SHIFT
;
4369 pub const CERT_FIND_PUBLIC_KEY
: DWORD
= CERT_COMPARE_PUBLIC_KEY
<< CERT_COMPARE_SHIFT
;
4370 pub const CERT_FIND_SUBJECT_NAME
: DWORD
= (CERT_COMPARE_NAME
<< CERT_COMPARE_SHIFT
)
4371 | CERT_INFO_SUBJECT_FLAG
;
4372 pub const CERT_FIND_SUBJECT_ATTR
: DWORD
= (CERT_COMPARE_ATTR
<< CERT_COMPARE_SHIFT
)
4373 | CERT_INFO_SUBJECT_FLAG
;
4374 pub const CERT_FIND_ISSUER_NAME
: DWORD
= (CERT_COMPARE_NAME
<< CERT_COMPARE_SHIFT
)
4375 | CERT_INFO_ISSUER_FLAG
;
4376 pub const CERT_FIND_ISSUER_ATTR
: DWORD
= (CERT_COMPARE_ATTR
<< CERT_COMPARE_SHIFT
)
4377 | CERT_INFO_ISSUER_FLAG
;
4378 pub const CERT_FIND_SUBJECT_STR_A
: DWORD
= (CERT_COMPARE_NAME_STR_A
<< CERT_COMPARE_SHIFT
)
4379 | CERT_INFO_SUBJECT_FLAG
;
4380 pub const CERT_FIND_SUBJECT_STR_W
: DWORD
= (CERT_COMPARE_NAME_STR_W
<< CERT_COMPARE_SHIFT
)
4381 | CERT_INFO_SUBJECT_FLAG
;
4382 pub const CERT_FIND_SUBJECT_STR
: DWORD
= CERT_FIND_SUBJECT_STR_W
;
4383 pub const CERT_FIND_ISSUER_STR_A
: DWORD
= (CERT_COMPARE_NAME_STR_A
<< CERT_COMPARE_SHIFT
)
4384 | CERT_INFO_ISSUER_FLAG
;
4385 pub const CERT_FIND_ISSUER_STR_W
: DWORD
= (CERT_COMPARE_NAME_STR_W
<< CERT_COMPARE_SHIFT
)
4386 | CERT_INFO_ISSUER_FLAG
;
4387 pub const CERT_FIND_ISSUER_STR
: DWORD
= CERT_FIND_ISSUER_STR_W
;
4388 pub const CERT_FIND_KEY_SPEC
: DWORD
= CERT_COMPARE_KEY_SPEC
<< CERT_COMPARE_SHIFT
;
4389 pub const CERT_FIND_ENHKEY_USAGE
: DWORD
= CERT_COMPARE_ENHKEY_USAGE
<< CERT_COMPARE_SHIFT
;
4390 pub const CERT_FIND_CTL_USAGE
: DWORD
= CERT_FIND_ENHKEY_USAGE
;
4391 pub const CERT_FIND_SUBJECT_CERT
: DWORD
= CERT_COMPARE_SUBJECT_CERT
<< CERT_COMPARE_SHIFT
;
4392 pub const CERT_FIND_ISSUER_OF
: DWORD
= CERT_COMPARE_ISSUER_OF
<< CERT_COMPARE_SHIFT
;
4393 pub const CERT_FIND_EXISTING
: DWORD
= CERT_COMPARE_EXISTING
<< CERT_COMPARE_SHIFT
;
4394 pub const CERT_FIND_CERT_ID
: DWORD
= CERT_COMPARE_CERT_ID
<< CERT_COMPARE_SHIFT
;
4395 pub const CERT_FIND_CROSS_CERT_DIST_POINTS
: DWORD
= CERT_COMPARE_CROSS_CERT_DIST_POINTS
4396 << CERT_COMPARE_SHIFT
;
4397 pub const CERT_FIND_PUBKEY_MD5_HASH
: DWORD
= CERT_COMPARE_PUBKEY_MD5_HASH
<< CERT_COMPARE_SHIFT
;
4398 pub const CERT_FIND_SUBJECT_INFO_ACCESS
: DWORD
= CERT_COMPARE_SUBJECT_INFO_ACCESS
4399 << CERT_COMPARE_SHIFT
;
4400 pub const CERT_FIND_HASH_STR
: DWORD
= CERT_COMPARE_HASH_STR
<< CERT_COMPARE_SHIFT
;
4401 pub const CERT_FIND_HAS_PRIVATE_KEY
: DWORD
= CERT_COMPARE_HAS_PRIVATE_KEY
<< CERT_COMPARE_SHIFT
;
4402 pub const CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG
: DWORD
= 0x1;
4403 pub const CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG
: DWORD
= 0x2;
4404 pub const CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG
: DWORD
= 0x4;
4405 pub const CERT_FIND_NO_ENHKEY_USAGE_FLAG
: DWORD
= 0x8;
4406 pub const CERT_FIND_OR_ENHKEY_USAGE_FLAG
: DWORD
= 0x10;
4407 pub const CERT_FIND_VALID_ENHKEY_USAGE_FLAG
: DWORD
= 0x20;
4408 pub const CERT_FIND_OPTIONAL_CTL_USAGE_FLAG
: DWORD
= CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG
;
4409 pub const CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG
: DWORD
= CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG
;
4410 pub const CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG
: DWORD
= CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG
;
4411 pub const CERT_FIND_NO_CTL_USAGE_FLAG
: DWORD
= CERT_FIND_NO_ENHKEY_USAGE_FLAG
;
4412 pub const CERT_FIND_OR_CTL_USAGE_FLAG
: DWORD
= CERT_FIND_OR_ENHKEY_USAGE_FLAG
;
4413 pub const CERT_FIND_VALID_CTL_USAGE_FLAG
: DWORD
= CERT_FIND_VALID_ENHKEY_USAGE_FLAG
;
4415 pub fn CertGetIssuerCertificateFromStore(
4416 hCertStore
: HCERTSTORE
,
4417 pSubjectContext
: PCCERT_CONTEXT
,
4418 pPrevIssuerContext
: PCCERT_CONTEXT
,
4419 pdwFlags
: *mut DWORD
,
4420 ) -> PCCERT_CONTEXT
;
4421 pub fn CertVerifySubjectCertificateContext(
4422 pSubject
: PCCERT_CONTEXT
,
4423 pIssuer
: PCCERT_CONTEXT
,
4424 pdwFlags
: *mut DWORD
,
4426 pub fn CertDuplicateCertificateContext(
4427 pCertContext
: PCCERT_CONTEXT
,
4428 ) -> PCCERT_CONTEXT
;
4429 pub fn CertCreateCertificateContext(
4430 dwCertEncodingType
: DWORD
,
4431 pbCertEncoded
: *const BYTE
,
4432 cbCertEncoded
: DWORD
,
4433 ) -> PCCERT_CONTEXT
;
4434 pub fn CertFreeCertificateContext(
4435 pCertContext
: PCCERT_CONTEXT
,
4437 pub fn CertSetCertificateContextProperty(
4438 pCertContext
: PCCERT_CONTEXT
,
4441 pvData
: *const c_void
,
4444 pub const CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG
: DWORD
= 0x80000000;
4445 pub const CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG
: DWORD
= 0x40000000;
4447 pub fn CertGetCertificateContextProperty(
4448 pCertContext
: PCCERT_CONTEXT
,
4450 pvData
: *mut c_void
,
4451 pcbData
: *mut DWORD
,
4453 pub fn CertEnumCertificateContextProperties(
4454 pCertContext
: PCCERT_CONTEXT
,
4457 pub fn CertCreateCTLEntryFromCertificateContextProperties(
4458 pCertContext
: PCCERT_CONTEXT
,
4460 rgOptAttr
: PCRYPT_ATTRIBUTE
,
4462 pvReserved
: *mut c_void
,
4463 pCtlEntry
: PCTL_ENTRY
,
4464 pcbCtlEntry
: *mut DWORD
,
4466 pub fn CertSetCertificateContextPropertiesFromCTLEntry(
4467 pCertContext
: PCCERT_CONTEXT
,
4468 pCtlEntry
: PCTL_ENTRY
,
4471 pub fn CertGetCRLFromStore(
4472 hCertStore
: HCERTSTORE
,
4473 pIssuerContext
: PCCERT_CONTEXT
,
4474 pPrevCrlContext
: PCCRL_CONTEXT
,
4475 pdwFlags
: *mut DWORD
,
4477 pub fn CertEnumCRLsInStore(
4478 hCertStore
: HCERTSTORE
,
4479 pPrevCrlContext
: PCCRL_CONTEXT
,
4481 pub fn CertFindCRLInStore(
4482 hCertStore
: HCERTSTORE
,
4483 dwCertEncodingType
: DWORD
,
4486 pvFindPara
: *const c_void
,
4487 pPrevCrlContext
: PCCRL_CONTEXT
,
4490 pub const CRL_FIND_ANY
: DWORD
= 0;
4491 pub const CRL_FIND_ISSUED_BY
: DWORD
= 1;
4492 pub const CRL_FIND_EXISTING
: DWORD
= 2;
4493 pub const CRL_FIND_ISSUED_FOR
: DWORD
= 3;
4494 pub const CRL_FIND_ISSUED_BY_AKI_FLAG
: DWORD
= 0x1;
4495 pub const CRL_FIND_ISSUED_BY_SIGNATURE_FLAG
: DWORD
= 0x2;
4496 pub const CRL_FIND_ISSUED_BY_DELTA_FLAG
: DWORD
= 0x4;
4497 pub const CRL_FIND_ISSUED_BY_BASE_FLAG
: DWORD
= 0x8;
4498 STRUCT
!{struct CRL_FIND_ISSUED_FOR_PARA
{
4499 pSubjectCert
: PCCERT_CONTEXT
,
4500 pIssuerCert
: PCCERT_CONTEXT
,
4502 pub type PCRL_FIND_ISSUED_FOR_PARA
= *mut CRL_FIND_ISSUED_FOR_PARA
;
4503 pub const CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG
: DWORD
= 0x10;
4505 pub fn CertDuplicateCRLContext(
4506 pCrlContext
: PCCRL_CONTEXT
,
4508 pub fn CertCreateCRLContext(
4509 dwCertEncodingType
: DWORD
,
4510 pbCrlEncoded
: *const BYTE
,
4511 cbCrlEncoded
: DWORD
,
4513 pub fn CertFreeCRLContext(
4514 pCrlContext
: PCCRL_CONTEXT
,
4516 pub fn CertSetCRLContextProperty(
4517 pCrlContext
: PCCRL_CONTEXT
,
4520 pvData
: *const c_void
,
4522 pub fn CertGetCRLContextProperty(
4523 pCrlContext
: PCCRL_CONTEXT
,
4525 pvData
: *mut c_void
,
4526 pcbData
: *mut DWORD
,
4528 pub fn CertEnumCRLContextProperties(
4529 pCrlContext
: PCCRL_CONTEXT
,
4532 pub fn CertFindCertificateInCRL(
4533 pCert
: PCCERT_CONTEXT
,
4534 pCrlContext
: PCCRL_CONTEXT
,
4536 pvReserved
: *mut c_void
,
4537 ppCrlEntry
: *mut PCRL_ENTRY
,
4539 pub fn CertIsValidCRLForCertificate(
4540 pCert
: PCCERT_CONTEXT
,
4541 pCrl
: PCCRL_CONTEXT
,
4543 pvReserved
: *mut c_void
,
4546 pub const CERT_STORE_ADD_NEW
: DWORD
= 1;
4547 pub const CERT_STORE_ADD_USE_EXISTING
: DWORD
= 2;
4548 pub const CERT_STORE_ADD_REPLACE_EXISTING
: DWORD
= 3;
4549 pub const CERT_STORE_ADD_ALWAYS
: DWORD
= 4;
4550 pub const CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES
: DWORD
= 5;
4551 pub const CERT_STORE_ADD_NEWER
: DWORD
= 6;
4552 pub const CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES
: DWORD
= 7;
4554 pub fn CertAddEncodedCertificateToStore(
4555 hCertStore
: HCERTSTORE
,
4556 dwCertEncodingType
: DWORD
,
4557 pbCertEncoded
: *const BYTE
,
4558 cbCertEncoded
: DWORD
,
4559 dwAddDisposition
: DWORD
,
4560 ppCertContext
: *mut PCCERT_CONTEXT
,
4562 pub fn CertAddCertificateContextToStore(
4563 hCertStore
: HCERTSTORE
,
4564 pCertContext
: PCCERT_CONTEXT
,
4565 dwAddDisposition
: DWORD
,
4566 ppStoreContext
: *mut PCCERT_CONTEXT
,
4569 pub const CERT_STORE_CERTIFICATE_CONTEXT
: DWORD
= 1;
4570 pub const CERT_STORE_CRL_CONTEXT
: DWORD
= 2;
4571 pub const CERT_STORE_CTL_CONTEXT
: DWORD
= 3;
4572 pub const CERT_STORE_ALL_CONTEXT_FLAG
: DWORD
= !0;
4573 pub const CERT_STORE_CERTIFICATE_CONTEXT_FLAG
: DWORD
= 1 << CERT_STORE_CERTIFICATE_CONTEXT
;
4574 pub const CERT_STORE_CRL_CONTEXT_FLAG
: DWORD
= 1 << CERT_STORE_CRL_CONTEXT
;
4575 pub const CERT_STORE_CTL_CONTEXT_FLAG
: DWORD
= 1 << CERT_STORE_CTL_CONTEXT
;
4577 pub fn CertAddSerializedElementToStore(
4578 hCertStore
: HCERTSTORE
,
4579 pbElement
: *const BYTE
,
4581 dwAddDisposition
: DWORD
,
4583 dwContextTypeFlags
: DWORD
,
4584 pdwContextType
: *mut DWORD
,
4585 ppvContext
: *mut *const c_void
,
4587 pub fn CertDeleteCertificateFromStore(
4588 pCertContext
: PCCERT_CONTEXT
,
4590 pub fn CertAddEncodedCRLToStore(
4591 hCertStore
: HCERTSTORE
,
4592 dwCertEncodingType
: DWORD
,
4593 pbCrlEncoded
: *const BYTE
,
4594 cbCrlEncoded
: DWORD
,
4595 dwAddDisposition
: DWORD
,
4596 ppCrlContext
: *mut PCCRL_CONTEXT
,
4598 pub fn CertAddCRLContextToStore(
4599 hCertStore
: HCERTSTORE
,
4600 pCrlContext
: PCCRL_CONTEXT
,
4601 dwAddDisposition
: DWORD
,
4602 ppStoreContext
: *mut PCCRL_CONTEXT
,
4604 pub fn CertDeleteCRLFromStore(
4605 pCrlContext
: PCCRL_CONTEXT
,
4607 pub fn CertSerializeCertificateStoreElement(
4608 pCertContext
: PCCERT_CONTEXT
,
4610 pbElement
: *mut BYTE
,
4611 pcbElement
: *mut DWORD
,
4613 pub fn CertSerializeCRLStoreElement(
4614 pCrlContext
: PCCRL_CONTEXT
,
4616 pbElement
: *mut BYTE
,
4617 pcbElement
: *mut DWORD
,
4619 pub fn CertDuplicateCTLContext(
4620 pCtlContext
: PCCTL_CONTEXT
,
4622 pub fn CertCreateCTLContext(
4623 dwMsgAndCertEncodingType
: DWORD
,
4624 pbCtlEncoded
: *const BYTE
,
4625 cbCtlEncoded
: DWORD
,
4627 pub fn CertFreeCTLContext(
4628 pCtlContext
: PCCTL_CONTEXT
,
4630 pub fn CertSetCTLContextProperty(
4631 pCtlContext
: PCCTL_CONTEXT
,
4634 pvData
: *const c_void
,
4636 pub fn CertGetCTLContextProperty(
4637 pCtlContext
: PCCTL_CONTEXT
,
4639 pvData
: *mut c_void
,
4640 pcbData
: *mut DWORD
,
4642 pub fn CertEnumCTLContextProperties(
4643 pCtlContext
: PCCTL_CONTEXT
,
4646 pub fn CertEnumCTLsInStore(
4647 hCertStore
: HCERTSTORE
,
4648 pPrevCtlContext
: PCCTL_CONTEXT
,
4650 pub fn CertFindSubjectInCTL(
4651 dwEncodingType
: DWORD
,
4652 dwSubjectType
: DWORD
,
4653 pvSubject
: *mut c_void
,
4654 pCtlContext
: PCCTL_CONTEXT
,
4658 pub const CTL_ANY_SUBJECT_TYPE
: DWORD
= 1;
4659 pub const CTL_CERT_SUBJECT_TYPE
: DWORD
= 2;
4660 STRUCT
!{struct CTL_ANY_SUBJECT_INFO
{
4661 SubjectAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
4662 SubjectIdentifier
: CRYPT_DATA_BLOB
,
4664 pub type PCTL_ANY_SUBJECT_INFO
= *mut CTL_ANY_SUBJECT_INFO
;
4666 pub fn CertFindCTLInStore(
4667 hCertStore
: HCERTSTORE
,
4668 dwMsgAndCertEncodingType
: DWORD
,
4671 pvFindPara
: *const c_void
,
4672 pPrevCtlContext
: PCCTL_CONTEXT
,
4675 pub const CTL_FIND_ANY
: DWORD
= 0;
4676 pub const CTL_FIND_SHA1_HASH
: DWORD
= 1;
4677 pub const CTL_FIND_MD5_HASH
: DWORD
= 2;
4678 pub const CTL_FIND_USAGE
: DWORD
= 3;
4679 pub const CTL_FIND_SUBJECT
: DWORD
= 4;
4680 pub const CTL_FIND_EXISTING
: DWORD
= 5;
4681 STRUCT
!{struct CTL_FIND_USAGE_PARA
{
4683 SubjectUsage
: CTL_USAGE
,
4684 ListIdentifier
: CRYPT_DATA_BLOB
,
4685 pSigner
: PCERT_INFO
,
4687 pub type PCTL_FIND_USAGE_PARA
= *mut CTL_FIND_USAGE_PARA
;
4688 pub const CTL_FIND_NO_LIST_ID_CBDATA
: DWORD
= 0xFFFFFFFF;
4689 pub const CTL_FIND_NO_SIGNER_PTR
: PCERT_INFO
= -1isize
as PCERT_INFO
;
4690 pub const CTL_FIND_SAME_USAGE_FLAG
: DWORD
= 0x1;
4691 STRUCT
!{struct CTL_FIND_SUBJECT_PARA
{
4693 pUsagePara
: PCTL_FIND_USAGE_PARA
,
4694 dwSubjectType
: DWORD
,
4695 pvSubject
: *mut c_void
,
4697 pub type PCTL_FIND_SUBJECT_PARA
= *mut CTL_FIND_SUBJECT_PARA
;
4699 pub fn CertAddEncodedCTLToStore(
4700 hCertStore
: HCERTSTORE
,
4701 dwMsgAndCertEncodingType
: DWORD
,
4702 pbCtlEncoded
: *const BYTE
,
4703 cbCtlEncoded
: DWORD
,
4704 dwAddDisposition
: DWORD
,
4705 ppCtlContext
: *mut PCCTL_CONTEXT
,
4707 pub fn CertAddCTLContextToStore(
4708 hCertStore
: HCERTSTORE
,
4709 pCtlContext
: PCCTL_CONTEXT
,
4710 dwAddDisposition
: DWORD
,
4711 ppStoreContext
: *mut PCCTL_CONTEXT
,
4713 pub fn CertSerializeCTLStoreElement(
4714 pCtlContext
: PCCTL_CONTEXT
,
4716 pbElement
: *mut BYTE
,
4717 pcbElement
: *mut DWORD
,
4719 pub fn CertDeleteCTLFromStore(
4720 pCtlContext
: PCCTL_CONTEXT
,
4722 pub fn CertAddCertificateLinkToStore(
4723 hCertStore
: HCERTSTORE
,
4724 pCertContext
: PCCERT_CONTEXT
,
4725 dwAddDisposition
: DWORD
,
4726 ppStoreContext
: *mut PCCERT_CONTEXT
,
4728 pub fn CertAddCRLLinkToStore(
4729 hCertStore
: HCERTSTORE
,
4730 pCrlContext
: PCCRL_CONTEXT
,
4731 dwAddDisposition
: DWORD
,
4732 ppStoreContext
: *mut PCCRL_CONTEXT
,
4734 pub fn CertAddCTLLinkToStore(
4735 hCertStore
: HCERTSTORE
,
4736 pCtlContext
: PCCTL_CONTEXT
,
4737 dwAddDisposition
: DWORD
,
4738 ppStoreContext
: *mut PCCTL_CONTEXT
,
4740 pub fn CertAddStoreToCollection(
4741 hCollectionStore
: HCERTSTORE
,
4742 hSiblingStore
: HCERTSTORE
,
4743 dwUpdateFlags
: DWORD
,
4746 pub fn CertRemoveStoreFromCollection(
4747 hCollectionStore
: HCERTSTORE
,
4748 hSiblingStore
: HCERTSTORE
,
4750 pub fn CertControlStore(
4751 hCertStore
: HCERTSTORE
,
4754 pvCtrlPara
: *const c_void
,
4757 pub const CERT_STORE_CTRL_RESYNC
: DWORD
= 1;
4758 pub const CERT_STORE_CTRL_NOTIFY_CHANGE
: DWORD
= 2;
4759 pub const CERT_STORE_CTRL_COMMIT
: DWORD
= 3;
4760 pub const CERT_STORE_CTRL_AUTO_RESYNC
: DWORD
= 4;
4761 pub const CERT_STORE_CTRL_CANCEL_NOTIFY
: DWORD
= 5;
4762 pub const CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG
: DWORD
= 0x1;
4763 pub const CERT_STORE_CTRL_COMMIT_FORCE_FLAG
: DWORD
= 0x1;
4764 pub const CERT_STORE_CTRL_COMMIT_CLEAR_FLAG
: DWORD
= 0x2;
4765 pub const CERT_STORE_LOCALIZED_NAME_PROP_ID
: DWORD
= 0x1000;
4767 pub fn CertSetStoreProperty(
4768 hCertStore
: HCERTSTORE
,
4771 pvData
: *const c_void
,
4773 pub fn CertGetStoreProperty(
4774 hCertStore
: HCERTSTORE
,
4776 pvData
: *mut c_void
,
4777 pcbData
: *mut DWORD
,
4780 FN
!{stdcall
PFN_CERT_CREATE_CONTEXT_SORT_FUNC(
4781 cbTotalEncoded
: DWORD
,
4782 cbRemainEncoded
: DWORD
,
4784 pvSort
: *mut c_void
,
4786 STRUCT
!{struct CERT_CREATE_CONTEXT_PARA
{
4788 pfnFree
: PFN_CRYPT_FREE
,
4789 pvFree
: *mut c_void
,
4790 pfnSort
: PFN_CERT_CREATE_CONTEXT_SORT_FUNC
,
4791 pvSort
: *mut c_void
,
4793 pub type PCERT_CREATE_CONTEXT_PARA
= *mut CERT_CREATE_CONTEXT_PARA
;
4795 pub fn CertCreateContext(
4796 dwContextType
: DWORD
,
4797 dwEncodingType
: DWORD
,
4798 pbEncoded
: *const BYTE
,
4801 pCreatePara
: PCERT_CREATE_CONTEXT_PARA
,
4804 pub const CERT_CREATE_CONTEXT_NOCOPY_FLAG
: DWORD
= 0x1;
4805 pub const CERT_CREATE_CONTEXT_SORTED_FLAG
: DWORD
= 0x2;
4806 pub const CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG
: DWORD
= 0x4;
4807 pub const CERT_CREATE_CONTEXT_NO_ENTRY_FLAG
: DWORD
= 0x8;
4808 STRUCT
!{struct CERT_SYSTEM_STORE_INFO
{
4811 pub type PCERT_SYSTEM_STORE_INFO
= *mut CERT_SYSTEM_STORE_INFO
;
4812 STRUCT
!{struct CERT_PHYSICAL_STORE_INFO
{
4814 pszOpenStoreProvider
: LPSTR
,
4815 dwOpenEncodingType
: DWORD
,
4817 OpenParameters
: CRYPT_DATA_BLOB
,
4821 pub type PCERT_PHYSICAL_STORE_INFO
= *mut CERT_PHYSICAL_STORE_INFO
;
4822 pub const CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG
: DWORD
= 0x1;
4823 pub const CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG
: DWORD
= 0x2;
4824 pub const CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG
: DWORD
= 0x4;
4825 pub const CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG
: DWORD
= 0x8;
4827 pub fn CertRegisterSystemStore(
4828 pvSystemStore
: *const c_void
,
4830 pStoreInfo
: PCERT_SYSTEM_STORE_INFO
,
4831 pvReserved
: *mut c_void
,
4833 pub fn CertRegisterPhysicalStore(
4834 pvSystemStore
: *const c_void
,
4836 pwszStoreName
: LPCWSTR
,
4837 pStoreInfo
: PCERT_PHYSICAL_STORE_INFO
,
4838 pvReserved
: *mut c_void
,
4840 pub fn CertUnregisterSystemStore(
4841 pvSystemStore
: *const c_void
,
4844 pub fn CertUnregisterPhysicalStore(
4845 pvSystemStore
: *const c_void
,
4847 pwszStoreName
: LPCWSTR
,
4850 FN
!{stdcall
PFN_CERT_ENUM_SYSTEM_STORE_LOCATION(
4851 pwszStoreLocation
: LPCWSTR
,
4853 pvReserved
: *mut c_void
,
4856 FN
!{stdcall
PFN_CERT_ENUM_SYSTEM_STORE(
4857 pvSystemStore
: *const c_void
,
4859 pStoreInfo
: PCERT_SYSTEM_STORE_INFO
,
4860 pvReserved
: *mut c_void
,
4863 FN
!{stdcall
PFN_CERT_ENUM_PHYSICAL_STORE(
4864 pvSystemStore
: *const c_void
,
4866 pwszStoreName
: LPCWSTR
,
4867 pStoreInfo
: PCERT_PHYSICAL_STORE_INFO
,
4868 pvReserved
: *mut c_void
,
4871 pub const CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG
: DWORD
= 0x1;
4872 pub const CERT_PHYSICAL_STORE_DEFAULT_NAME
: &'
static str = ".Default";
4873 pub const CERT_PHYSICAL_STORE_GROUP_POLICY_NAME
: &'
static str = ".GroupPolicy";
4874 pub const CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME
: &'
static str = ".LocalMachine";
4875 pub const CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME
: &'
static str = ".UserCertificate";
4876 pub const CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME
: &'
static str
4877 = ".LocalMachineGroupPolicy";
4878 pub const CERT_PHYSICAL_STORE_ENTERPRISE_NAME
: &'
static str = ".Enterprise";
4879 pub const CERT_PHYSICAL_STORE_AUTH_ROOT_NAME
: &'
static str = ".AuthRoot";
4880 pub const CERT_PHYSICAL_STORE_SMART_CARD_NAME
: &'
static str = ".SmartCard";
4882 pub fn CertEnumSystemStoreLocation(
4885 pfnEnum
: PFN_CERT_ENUM_SYSTEM_STORE_LOCATION
,
4887 pub fn CertEnumSystemStore(
4889 pvSystemStoreLocationPara
: *mut c_void
,
4891 pfnEnum
: PFN_CERT_ENUM_SYSTEM_STORE
,
4893 pub fn CertEnumPhysicalStore(
4894 pvSystemStore
: *const c_void
,
4897 pfnEnum
: PFN_CERT_ENUM_PHYSICAL_STORE
,
4900 pub const CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC
: &'
static str = "CertDllOpenSystemStoreProv";
4901 pub const CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC
: &'
static str = "CertDllRegisterSystemStore";
4902 pub const CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC
: &'
static str = "CertDllUnregisterSystemStore";
4903 pub const CRYPT_OID_ENUM_SYSTEM_STORE_FUNC
: &'
static str = "CertDllEnumSystemStore";
4904 pub const CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC
: &'
static str = "CertDllRegisterPhysicalStore";
4905 pub const CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC
: &'
static str
4906 = "CertDllUnregisterPhysicalStore";
4907 pub const CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC
: &'
static str = "CertDllEnumPhysicalStore";
4908 pub const CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME
: &'
static str = "SystemStoreLocation";
4910 pub fn CertGetEnhancedKeyUsage(
4911 pCertContext
: PCCERT_CONTEXT
,
4913 pUsage
: PCERT_ENHKEY_USAGE
,
4914 pcbUsage
: *mut DWORD
,
4916 pub fn CertSetEnhancedKeyUsage(
4917 pCertContext
: PCCERT_CONTEXT
,
4918 pUsage
: PCERT_ENHKEY_USAGE
,
4920 pub fn CertAddEnhancedKeyUsageIdentifier(
4921 pCertContext
: PCCERT_CONTEXT
,
4922 pszUsageIdentifier
: LPCSTR
,
4924 pub fn CertRemoveEnhancedKeyUsageIdentifier(
4925 pCertContext
: PCCERT_CONTEXT
,
4926 pszUsageIdentifier
: LPCSTR
,
4928 pub fn CertGetValidUsages(
4930 rghCerts
: *mut PCCERT_CONTEXT
,
4931 cNumOIDs
: *mut c_int
,
4932 rghOIDs
: *mut LPSTR
,
4933 pcbOIDs
: *mut DWORD
,
4935 pub fn CryptMsgGetAndVerifySigner(
4936 hCryptMsg
: HCRYPTMSG
,
4937 cSignerStore
: DWORD
,
4938 rghSignerStore
: *mut HCERTSTORE
,
4940 ppSigner
: *mut PCCERT_CONTEXT
,
4941 pdwSignerIndex
: *mut DWORD
,
4944 pub const CMSG_TRUSTED_SIGNER_FLAG
: DWORD
= 0x1;
4945 pub const CMSG_SIGNER_ONLY_FLAG
: DWORD
= 0x2;
4946 pub const CMSG_USE_SIGNER_INDEX_FLAG
: DWORD
= 0x4;
4948 pub fn CryptMsgSignCTL(
4949 dwMsgEncodingType
: DWORD
,
4950 pbCtlContent
: *mut BYTE
,
4951 cbCtlContent
: DWORD
,
4952 pSignInfo
: PCMSG_SIGNED_ENCODE_INFO
,
4954 pbEncoded
: *mut BYTE
,
4955 pcbEncoded
: *mut DWORD
,
4957 pub fn CryptMsgEncodeAndSignCTL(
4958 dwMsgEncodingType
: DWORD
,
4959 pCtlInfo
: PCTL_INFO
,
4960 pSignInfo
: PCMSG_SIGNED_ENCODE_INFO
,
4962 pbEncoded
: *mut BYTE
,
4963 pcbEncoded
: *mut DWORD
,
4966 pub const CMSG_ENCODE_SORTED_CTL_FLAG
: DWORD
= 0x1;
4967 pub const CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG
: DWORD
= 0x2;
4969 pub fn CertFindSubjectInSortedCTL(
4970 pSubjectIdentifier
: PCRYPT_DATA_BLOB
,
4971 pCtlContext
: PCCTL_CONTEXT
,
4973 pvReserved
: *mut c_void
,
4974 pEncodedAttributes
: PCRYPT_DER_BLOB
,
4976 pub fn CertEnumSubjectInSortedCTL(
4977 pCtlContext
: PCCTL_CONTEXT
,
4978 ppvNextSubject
: *mut *mut c_void
,
4979 pSubjectIdentifier
: PCRYPT_DER_BLOB
,
4980 pEncodedAttributes
: PCRYPT_DER_BLOB
,
4983 STRUCT
!{struct CTL_VERIFY_USAGE_PARA
{
4985 ListIdentifier
: CRYPT_DATA_BLOB
,
4987 rghCtlStore
: *mut HCERTSTORE
,
4988 cSignerStore
: DWORD
,
4989 rghSignerStore
: *mut HCERTSTORE
,
4991 pub type PCTL_VERIFY_USAGE_PARA
= *mut CTL_VERIFY_USAGE_PARA
;
4992 STRUCT
!{struct CTL_VERIFY_USAGE_STATUS
{
4996 ppCtl
: *mut PCCTL_CONTEXT
,
4997 dwCtlEntryIndex
: DWORD
,
4998 ppSigner
: *mut PCCERT_CONTEXT
,
4999 dwSignerIndex
: DWORD
,
5001 pub type PCTL_VERIFY_USAGE_STATUS
= *mut CTL_VERIFY_USAGE_STATUS
;
5002 pub const CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG
: DWORD
= 0x1;
5003 pub const CERT_VERIFY_TRUSTED_SIGNERS_FLAG
: DWORD
= 0x2;
5004 pub const CERT_VERIFY_NO_TIME_CHECK_FLAG
: DWORD
= 0x4;
5005 pub const CERT_VERIFY_ALLOW_MORE_USAGE_FLAG
: DWORD
= 0x8;
5006 pub const CERT_VERIFY_UPDATED_CTL_FLAG
: DWORD
= 0x1;
5008 pub fn CertVerifyCTLUsage(
5009 dwEncodingType
: DWORD
,
5010 dwSubjectType
: DWORD
,
5011 pvSubject
: *mut c_void
,
5012 pSubjectUsage
: PCTL_USAGE
,
5014 pVerifyUsagePara
: PCTL_VERIFY_USAGE_PARA
,
5015 pVerifyUsageStatus
: PCTL_VERIFY_USAGE_STATUS
,
5018 STRUCT
!{struct CERT_REVOCATION_CRL_INFO
{
5020 pBaseCrlContext
: PCCRL_CONTEXT
,
5021 pDeltaCrlContext
: PCCRL_CONTEXT
,
5022 pCrlEntry
: PCRL_ENTRY
,
5023 fDeltaCrlEntry
: BOOL
,
5025 pub type PCERT_REVOCATION_CRL_INFO
= *mut CERT_REVOCATION_CRL_INFO
;
5026 pub type PCERT_REVOCATION_CHAIN_PARA
= *mut CERT_REVOCATION_CHAIN_PARA
;
5027 STRUCT
!{struct CERT_REVOCATION_PARA
{
5029 pIssuerCert
: PCCERT_CONTEXT
,
5031 rgCertStore
: *mut HCERTSTORE
,
5032 hCrlStore
: HCERTSTORE
,
5033 pftTimeToUse
: LPFILETIME
,
5034 dwUrlRetrievalTimeout
: DWORD
,
5035 fCheckFreshnessTime
: BOOL
,
5036 dwFreshnessTime
: DWORD
,
5037 pftCurrentTime
: LPFILETIME
,
5038 pCrlInfo
: PCERT_REVOCATION_CRL_INFO
,
5039 pftCacheResync
: LPFILETIME
,
5040 pChainPara
: PCERT_REVOCATION_CHAIN_PARA
,
5042 pub type PCERT_REVOCATION_PARA
= *mut CERT_REVOCATION_PARA
;
5043 STRUCT
!{struct CERT_REVOCATION_STATUS
{
5048 fHasFreshnessTime
: BOOL
,
5049 dwFreshnessTime
: DWORD
,
5051 pub type PCERT_REVOCATION_STATUS
= *mut CERT_REVOCATION_STATUS
;
5053 pub fn CertVerifyRevocation(
5054 dwEncodingType
: DWORD
,
5057 rgpvContext
: *mut PVOID
,
5059 pRevPara
: PCERT_REVOCATION_PARA
,
5060 pRevStatus
: PCERT_REVOCATION_STATUS
,
5063 pub const CERT_CONTEXT_REVOCATION_TYPE
: DWORD
= 1;
5064 pub const CERT_VERIFY_REV_CHAIN_FLAG
: DWORD
= 0x00000001;
5065 pub const CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION
: DWORD
= 0x00000002;
5066 pub const CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG
: DWORD
= 0x00000004;
5067 pub const CERT_VERIFY_REV_SERVER_OCSP_FLAG
: DWORD
= 0x00000008;
5068 pub const CERT_VERIFY_REV_NO_OCSP_FAILOVER_TO_CRL_FLAG
: DWORD
= 0x00000010;
5070 pub fn CertCompareIntegerBlob(
5071 pInt1
: PCRYPT_INTEGER_BLOB
,
5072 pInt2
: PCRYPT_INTEGER_BLOB
,
5074 pub fn CertCompareCertificate(
5075 dwCertEncodingType
: DWORD
,
5076 pCertId1
: PCERT_INFO
,
5077 pCertId2
: PCERT_INFO
,
5079 pub fn CertCompareCertificateName(
5080 dwCertEncodingType
: DWORD
,
5081 pCertName1
: PCERT_NAME_BLOB
,
5082 pCertName2
: PCERT_NAME_BLOB
,
5084 pub fn CertIsRDNAttrsInCertificateName(
5085 dwCertEncodingType
: DWORD
,
5087 pCertName
: PCERT_NAME_BLOB
,
5090 pub fn CertComparePublicKeyInfo(
5091 dwCertEncodingType
: DWORD
,
5092 pPublicKey1
: PCERT_PUBLIC_KEY_INFO
,
5093 pPublicKey2
: PCERT_PUBLIC_KEY_INFO
,
5095 pub fn CertGetPublicKeyLength(
5096 dwCertEncodingType
: DWORD
,
5097 pPublicKey
: PCERT_PUBLIC_KEY_INFO
,
5099 pub fn CryptVerifyCertificateSignature(
5100 hCryptProv
: HCRYPTPROV_LEGACY
,
5101 dwCertEncodingType
: DWORD
,
5102 pbEncoded
: *const BYTE
,
5104 pPublicKey
: PCERT_PUBLIC_KEY_INFO
,
5106 pub fn CryptVerifyCertificateSignatureEx(
5107 hCryptProv
: HCRYPTPROV_LEGACY
,
5108 dwCertEncodingType
: DWORD
,
5109 dwSubjectType
: DWORD
,
5110 pvSubject
: *mut c_void
,
5111 dwIssuerType
: DWORD
,
5112 pvIssuer
: *mut c_void
,
5114 pvExtra
: *mut c_void
,
5117 pub const CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB
: DWORD
= 1;
5118 pub const CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT
: DWORD
= 2;
5119 pub const CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL
: DWORD
= 3;
5120 pub const CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE
: DWORD
= 4;
5121 pub const CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY
: DWORD
= 1;
5122 pub const CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT
: DWORD
= 2;
5123 pub const CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN
: DWORD
= 3;
5124 pub const CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL
: DWORD
= 4;
5125 pub const CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG
: DWORD
= 0x00000001;
5126 pub const CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG
: DWORD
= 0x00000002;
5127 pub const CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG
: DWORD
= 0x00000004;
5128 STRUCT
!{struct CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO
{
5129 CertSignHashCNGAlgPropData
: CRYPT_DATA_BLOB
,
5130 CertIssuerPubKeyBitLengthPropData
: CRYPT_DATA_BLOB
,
5132 pub type PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO
5133 = *mut CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO
;
5134 STRUCT
!{struct CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO
{
5135 cCNGHashAlgid
: DWORD
,
5136 rgpwszCNGHashAlgid
: *mut PCWSTR
,
5139 pub type PCRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO
= *mut CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO
;
5141 pub fn CertIsStrongHashToSign(
5142 pStrongSignPara
: PCCERT_STRONG_SIGN_PARA
,
5143 pwszCNGHashAlgid
: LPCWSTR
,
5144 pSigningCert
: PCCERT_CONTEXT
,
5146 pub fn CryptHashToBeSigned(
5147 hCryptProv
: HCRYPTPROV_LEGACY
,
5148 dwCertEncodingType
: DWORD
,
5149 pbEncoded
: *const BYTE
,
5151 pbComputedHash
: *mut BYTE
,
5152 pcbComputedHash
: *mut DWORD
,
5154 pub fn CryptHashCertificate(
5155 hCryptProv
: HCRYPTPROV_LEGACY
,
5158 pbEncoded
: *const BYTE
,
5160 pbComputedHash
: *mut BYTE
,
5161 pcbComputedHash
: *mut DWORD
,
5163 pub fn CryptHashCertificate2(
5164 pwszCNGHashAlgid
: LPCWSTR
,
5166 pvReserved
: *mut c_void
,
5167 pbEncoded
: *const BYTE
,
5169 pbComputedHash
: *mut BYTE
,
5170 pcbComputedHash
: *mut DWORD
,
5172 pub fn CryptSignCertificate(
5173 hCryptProvOrNCryptKey
: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
,
5175 dwCertEncodingType
: DWORD
,
5176 pbEncodedToBeSigned
: *const BYTE
,
5177 cbEncodedToBeSigned
: DWORD
,
5178 pSignatureAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
5179 pvHashAuxInfo
: *const c_void
,
5180 pbSignature
: *mut BYTE
,
5181 pcbSignature
: *mut DWORD
,
5183 pub fn CryptSignAndEncodeCertificate(
5184 hCryptProvOrNCryptKey
: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
,
5186 dwCertEncodingType
: DWORD
,
5187 lpszStructType
: LPCSTR
,
5188 pvStructInfo
: *const c_void
,
5189 pSignatureAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
5190 pvHashAuxInfo
: *const c_void
,
5191 pbEncoded
: *mut BYTE
,
5192 pcbEncoded
: *mut DWORD
,
5195 pub const CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC
: &'
static str
5196 = "CryptDllExtractEncodedSignatureParameters";
5197 FN
!{stdcall
PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC(
5198 dwCertEncodingType
: DWORD
,
5199 pSignatureAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
5200 ppvDecodedSignPara
: *mut *mut c_void
,
5201 ppwszCNGHashAlgid
: LPWSTR
,
5203 pub const CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC
: &'
static str = "CryptDllSignAndEncodeHash";
5204 FN
!{stdcall
PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC(
5205 hKey
: NCRYPT_KEY_HANDLE
,
5206 dwCertEncodingType
: DWORD
,
5207 pSignatureAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
5208 pvDecodedSignPara
: *mut c_void
,
5209 pwszCNGPubKeyAlgid
: LPCWSTR
,
5210 pwszCNGHashAlgid
: LPCWSTR
,
5211 pbComputedHash
: *mut BYTE
,
5212 cbComputedHash
: DWORD
,
5213 pbSignature
: *mut BYTE
,
5214 pcbSignature
: *mut DWORD
,
5216 pub const CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC
: &'
static str = "CryptDllVerifyEncodedSignature";
5217 FN
!{stdcall
PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC(
5218 dwCertEncodingType
: DWORD
,
5219 pPubKeyInfo
: PCERT_PUBLIC_KEY_INFO
,
5220 pSignatureAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
5221 pvDecodedSignPara
: *mut c_void
,
5222 pwszCNGPubKeyAlgid
: LPCWSTR
,
5223 pwszCNGHashAlgid
: LPCWSTR
,
5224 pbComputedHash
: *mut BYTE
,
5225 cbComputedHash
: DWORD
,
5226 pbSignature
: *mut BYTE
,
5230 pub fn CertVerifyTimeValidity(
5231 pTimeToVerify
: LPFILETIME
,
5232 pCertInfo
: PCERT_INFO
,
5234 pub fn CertVerifyCRLTimeValidity(
5235 pTimeToVerify
: LPFILETIME
,
5236 pCrlInfo
: PCRL_INFO
,
5238 pub fn CertVerifyValidityNesting(
5239 pSubjectInfo
: PCERT_INFO
,
5240 pIssuerInfo
: PCERT_INFO
,
5242 pub fn CertVerifyCRLRevocation(
5243 dwCertEncodingType
: DWORD
,
5244 pCertId
: PCERT_INFO
,
5246 rgpCrlInfo
: *mut PCRL_INFO
,
5248 pub fn CertAlgIdToOID(
5251 pub fn CertOIDToAlgId(
5254 pub fn CertFindExtension(
5257 rgExtensions
: *mut CERT_EXTENSION
,
5258 ) -> PCERT_EXTENSION
;
5259 pub fn CertFindAttribute(
5262 rgAttr
: *mut CRYPT_ATTRIBUTE
,
5263 ) -> PCRYPT_ATTRIBUTE
;
5264 pub fn CertFindRDNAttr(
5266 pName
: PCERT_NAME_INFO
,
5267 ) -> PCERT_RDN_ATTR
;
5268 pub fn CertGetIntendedKeyUsage(
5269 dwCertEncodingType
: DWORD
,
5270 pCertInfo
: PCERT_INFO
,
5271 pbKeyUsage
: *mut BYTE
,
5275 pub type HCRYPTDEFAULTCONTEXT
= *mut c_void
;
5277 pub fn CryptInstallDefaultContext(
5278 hCryptProv
: HCRYPTPROV
,
5279 dwDefaultType
: DWORD
,
5280 pvDefaultPara
: *const c_void
,
5282 pvReserved
: *mut c_void
,
5283 phDefaultContext
: *mut HCRYPTDEFAULTCONTEXT
,
5286 pub const CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG
: DWORD
= 0x00000001;
5287 pub const CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG
: DWORD
= 0x00000002;
5288 pub const CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID
: DWORD
= 1;
5289 pub const CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID
: DWORD
= 2;
5290 STRUCT
!{struct CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA
{
5292 rgpszOID
: *mut LPSTR
,
5294 pub type PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA
= *mut CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA
;
5296 pub fn CryptUninstallDefaultContext(
5297 hDefaultContext
: HCRYPTDEFAULTCONTEXT
,
5299 pvReserved
: *mut c_void
,
5301 pub fn CryptExportPublicKeyInfo(
5302 hCryptProvOrNCryptKey
: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
,
5304 dwCertEncodingType
: DWORD
,
5305 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5306 pcbInfo
: *mut DWORD
,
5308 pub fn CryptExportPublicKeyInfoEx(
5309 hCryptProvOrNCryptKey
: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
,
5311 dwCertEncodingType
: DWORD
,
5312 pszPublicKeyObjId
: LPSTR
,
5314 pvAuxInfo
: *mut c_void
,
5315 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5316 pcbInfo
: *mut DWORD
,
5319 pub const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC
: &'
static str = "CryptDllExportPublicKeyInfoEx";
5320 pub const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC
: &'
static str
5321 = "CryptDllExportPublicKeyInfoEx2";
5322 FN
!{stdcall
PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC(
5323 hNCryptKey
: NCRYPT_KEY_HANDLE
,
5324 dwCertEncodingType
: DWORD
,
5325 pszPublicKeyObjId
: LPSTR
,
5327 pvAuxInfo
: *mut c_void
,
5328 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5329 pcbInfo
: *mut DWORD
,
5332 pub fn CryptExportPublicKeyInfoFromBCryptKeyHandle(
5333 hBCryptKey
: BCRYPT_KEY_HANDLE
,
5334 dwCertEncodingType
: DWORD
,
5335 pszPublicKeyObjId
: LPSTR
,
5337 pvAuxInfo
: *mut c_void
,
5338 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5339 pcbInfo
: *mut DWORD
,
5342 pub const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC
: &'
static str
5343 = "CryptDllExportPublicKeyInfoFromBCryptKeyHandle";
5344 FN
!{stdcall
PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC(
5345 hBCryptKey
: BCRYPT_KEY_HANDLE
,
5346 dwCertEncodingType
: DWORD
,
5347 pszPublicKeyObjId
: LPSTR
,
5349 pvAuxInfo
: *mut c_void
,
5350 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5351 pcbInfo
: *mut DWORD
,
5354 pub fn CryptImportPublicKeyInfo(
5355 hCryptProv
: HCRYPTPROV
,
5356 dwCertEncodingType
: DWORD
,
5357 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5358 phKey
: *mut HCRYPTKEY
,
5361 pub const CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC
: &'
static str = "CryptDllImportPublicKeyInfoEx";
5363 pub fn CryptImportPublicKeyInfoEx(
5364 hCryptProv
: HCRYPTPROV
,
5365 dwCertEncodingType
: DWORD
,
5366 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5369 pvAuxInfo
: *mut c_void
,
5370 phKey
: *mut HCRYPTKEY
,
5372 pub fn CryptImportPublicKeyInfoEx2(
5373 dwCertEncodingType
: DWORD
,
5374 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5376 pvAuxInfo
: *mut c_void
,
5377 phKey
: *mut BCRYPT_KEY_HANDLE
,
5380 pub const CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC
: &'
static str
5381 = "CryptDllImportPublicKeyInfoEx2";
5382 FN
!{stdcall
PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC(
5383 dwCertEncodingType
: DWORD
,
5384 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5386 pvAuxInfo
: *mut c_void
,
5387 phKey
: *mut BCRYPT_KEY_HANDLE
,
5390 pub fn CryptAcquireCertificatePrivateKey(
5391 pCert
: PCCERT_CONTEXT
,
5393 pvParameters
: *mut c_void
,
5394 phCryptProvOrNCryptKey
: *mut HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
,
5395 pdwKeySpec
: *mut DWORD
,
5396 pfCallerFreeProvOrNCryptKey
: *mut BOOL
,
5399 pub const CRYPT_ACQUIRE_CACHE_FLAG
: DWORD
= 0x00000001;
5400 pub const CRYPT_ACQUIRE_USE_PROV_INFO_FLAG
: DWORD
= 0x00000002;
5401 pub const CRYPT_ACQUIRE_COMPARE_KEY_FLAG
: DWORD
= 0x00000004;
5402 pub const CRYPT_ACQUIRE_NO_HEALING
: DWORD
= 0x00000008;
5403 pub const CRYPT_ACQUIRE_SILENT_FLAG
: DWORD
= 0x00000040;
5404 pub const CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG
: DWORD
= 0x00000080;
5405 pub const CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK
: DWORD
= 0x00070000;
5406 pub const CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG
: DWORD
= 0x00010000;
5407 pub const CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG
: DWORD
= 0x00020000;
5408 pub const CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG
: DWORD
= 0x00040000;
5410 pub fn CryptFindCertificateKeyProvInfo(
5411 pCert
: PCCERT_CONTEXT
,
5413 pvReserved
: *mut c_void
,
5416 pub const CRYPT_FIND_USER_KEYSET_FLAG
: DWORD
= 0x00000001;
5417 pub const CRYPT_FIND_MACHINE_KEYSET_FLAG
: DWORD
= 0x00000002;
5418 pub const CRYPT_FIND_SILENT_KEYSET_FLAG
: DWORD
= 0x00000040;
5419 FN
!{stdcall
PFN_IMPORT_PRIV_KEY_FUNC(
5420 hCryptProv
: HCRYPTPROV
,
5421 pPrivateKeyInfo
: *mut CRYPT_PRIVATE_KEY_INFO
,
5423 pvAuxInfo
: *mut c_void
,
5425 pub const CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC
: &'
static str = "CryptDllImportPrivateKeyInfoEx";
5427 pub fn CryptImportPKCS8(
5428 sPrivateKeyAndParams
: CRYPT_PKCS8_IMPORT_PARAMS
,
5430 phCryptProv
: *mut HCRYPTPROV
,
5431 pvAuxInfo
: *mut c_void
,
5434 FN
!{stdcall
PFN_EXPORT_PRIV_KEY_FUNC(
5435 hCryptProv
: HCRYPTPROV
,
5437 pszPrivateKeyObjId
: LPSTR
,
5439 pvAuxInfo
: *mut c_void
,
5440 pPrivateKeyInfo
: *mut CRYPT_PRIVATE_KEY_INFO
,
5441 pcbPrivateKeyInfo
: *mut DWORD
,
5443 pub const CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC
: &'
static str = "CryptDllExportPrivateKeyInfoEx";
5444 pub const CRYPT_DELETE_KEYSET
: DWORD
= CRYPT_DELETEKEYSET
;
5446 pub fn CryptExportPKCS8(
5447 hCryptProv
: HCRYPTPROV
,
5449 pszPrivateKeyObjId
: LPSTR
,
5451 pvAuxInfo
: *mut c_void
,
5452 pbPrivateKeyBlob
: *mut BYTE
,
5453 pcbPrivateKeyBlob
: *mut DWORD
,
5455 pub fn CryptExportPKCS8Ex(
5456 psExportParams
: CRYPT_PKCS8_EXPORT_PARAMS
,
5458 pvAuxInfo
: *mut c_void
,
5459 pbPrivateKeyBlob
: *mut BYTE
,
5460 pcbPrivateKeyBlob
: *mut DWORD
,
5462 pub fn CryptHashPublicKeyInfo(
5463 hCryptProv
: HCRYPTPROV_LEGACY
,
5466 dwCertEncodingType
: DWORD
,
5467 pInfo
: PCERT_PUBLIC_KEY_INFO
,
5468 pbComputedHash
: *mut BYTE
,
5469 pcbComputedHash
: *mut DWORD
,
5471 pub fn CertRDNValueToStrA(
5473 pValue
: PCERT_RDN_VALUE_BLOB
,
5477 pub fn CertRDNValueToStrW(
5479 pValue
: PCERT_RDN_VALUE_BLOB
,
5483 pub fn CertNameToStrA(
5484 dwCertEncodingType
: DWORD
,
5485 pName
: PCERT_NAME_BLOB
,
5490 pub fn CertNameToStrW(
5491 dwCertEncodingType
: DWORD
,
5492 pName
: PCERT_NAME_BLOB
,
5498 pub const CERT_SIMPLE_NAME_STR
: DWORD
= 1;
5499 pub const CERT_OID_NAME_STR
: DWORD
= 2;
5500 pub const CERT_X500_NAME_STR
: DWORD
= 3;
5501 pub const CERT_XML_NAME_STR
: DWORD
= 4;
5502 pub const CERT_NAME_STR_SEMICOLON_FLAG
: DWORD
= 0x40000000;
5503 pub const CERT_NAME_STR_NO_PLUS_FLAG
: DWORD
= 0x20000000;
5504 pub const CERT_NAME_STR_NO_QUOTING_FLAG
: DWORD
= 0x10000000;
5505 pub const CERT_NAME_STR_CRLF_FLAG
: DWORD
= 0x08000000;
5506 pub const CERT_NAME_STR_COMMA_FLAG
: DWORD
= 0x04000000;
5507 pub const CERT_NAME_STR_REVERSE_FLAG
: DWORD
= 0x02000000;
5508 pub const CERT_NAME_STR_FORWARD_FLAG
: DWORD
= 0x01000000;
5509 pub const CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG
: DWORD
= 0x00010000;
5510 pub const CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG
: DWORD
= 0x00020000;
5511 pub const CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG
: DWORD
= 0x00040000;
5512 pub const CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG
: DWORD
= 0x00080000;
5513 pub const CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG
: DWORD
= 0x00100000;
5514 pub const CERT_NAME_STR_ENABLE_PUNYCODE_FLAG
: DWORD
= 0x00200000;
5516 pub fn CertStrToNameA(
5517 dwCertEncodingType
: DWORD
,
5520 pvReserved
: *mut c_void
,
5521 pbEncoded
: *mut BYTE
,
5522 pcbEncoded
: *mut DWORD
,
5523 ppszError
: *mut LPCSTR
,
5525 pub fn CertStrToNameW(
5526 dwCertEncodingType
: DWORD
,
5529 pvReserved
: *mut c_void
,
5530 pbEncoded
: *mut BYTE
,
5531 pcbEncoded
: *mut DWORD
,
5532 ppszError
: *mut LPCWSTR
,
5534 pub fn CertGetNameStringA(
5535 pCertContext
: PCCERT_CONTEXT
,
5538 pvTypePara
: *mut c_void
,
5539 pszNameString
: LPSTR
,
5540 cchNameString
: DWORD
,
5542 pub fn CertGetNameStringW(
5543 pCertContext
: PCCERT_CONTEXT
,
5546 pvTypePara
: *mut c_void
,
5547 pszNameString
: LPWSTR
,
5548 cchNameString
: DWORD
,
5551 pub const CERT_NAME_EMAIL_TYPE
: DWORD
= 1;
5552 pub const CERT_NAME_RDN_TYPE
: DWORD
= 2;
5553 pub const CERT_NAME_ATTR_TYPE
: DWORD
= 3;
5554 pub const CERT_NAME_SIMPLE_DISPLAY_TYPE
: DWORD
= 4;
5555 pub const CERT_NAME_FRIENDLY_DISPLAY_TYPE
: DWORD
= 5;
5556 pub const CERT_NAME_DNS_TYPE
: DWORD
= 6;
5557 pub const CERT_NAME_URL_TYPE
: DWORD
= 7;
5558 pub const CERT_NAME_UPN_TYPE
: DWORD
= 8;
5559 pub const CERT_NAME_ISSUER_FLAG
: DWORD
= 0x1;
5560 pub const CERT_NAME_DISABLE_IE4_UTF8_FLAG
: DWORD
= 0x00010000;
5561 pub const CERT_NAME_SEARCH_ALL_NAMES_FLAG
: DWORD
= 0x2;
5562 FN
!{stdcall
PFN_CRYPT_GET_SIGNER_CERTIFICATE(
5563 pvGetArg
: *mut c_void
,
5564 dwCertEncodingType
: DWORD
,
5565 pSignerId
: PCERT_INFO
,
5566 hMsgCertStore
: HCERTSTORE
,
5567 ) -> PCCERT_CONTEXT
}
5568 STRUCT
!{struct CRYPT_SIGN_MESSAGE_PARA
{
5570 dwMsgEncodingType
: DWORD
,
5571 pSigningCert
: PCCERT_CONTEXT
,
5572 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
5573 pvHashAuxInfo
: *mut c_void
,
5575 rgpMsgCert
: *mut PCCERT_CONTEXT
,
5577 rgpMsgCrl
: *mut PCCRL_CONTEXT
,
5579 rgAuthAttr
: PCRYPT_ATTRIBUTE
,
5581 rgUnauthAttr
: PCRYPT_ATTRIBUTE
,
5583 dwInnerContentType
: DWORD
,
5584 HashEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
5585 pvHashEncryptionAuxInfo
: *mut c_void
,
5587 pub type PCRYPT_SIGN_MESSAGE_PARA
= *mut CRYPT_SIGN_MESSAGE_PARA
;
5588 pub const CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG
: DWORD
= 0x00000001;
5589 pub const CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG
: DWORD
= 0x00000002;
5590 pub const CRYPT_MESSAGE_KEYID_SIGNER_FLAG
: DWORD
= 0x00000004;
5591 pub const CRYPT_MESSAGE_SILENT_KEYSET_FLAG
: DWORD
= 0x00000040;
5592 STRUCT
!{struct CRYPT_VERIFY_MESSAGE_PARA
{
5594 dwMsgAndCertEncodingType
: DWORD
,
5595 hCryptProv
: HCRYPTPROV_LEGACY
,
5596 pfnGetSignerCertificate
: PFN_CRYPT_GET_SIGNER_CERTIFICATE
,
5597 pvGetArg
: *mut c_void
,
5598 pStrongSignPara
: PCCERT_STRONG_SIGN_PARA
,
5600 pub type PCRYPT_VERIFY_MESSAGE_PARA
= *mut CRYPT_VERIFY_MESSAGE_PARA
;
5601 STRUCT
!{struct CRYPT_ENCRYPT_MESSAGE_PARA
{
5603 dwMsgEncodingType
: DWORD
,
5604 hCryptProv
: HCRYPTPROV_LEGACY
,
5605 ContentEncryptionAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
5606 pvEncryptionAuxInfo
: *mut c_void
,
5608 dwInnerContentType
: DWORD
,
5610 pub type PCRYPT_ENCRYPT_MESSAGE_PARA
= *mut CRYPT_DECRYPT_MESSAGE_PARA
;
5611 pub const CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG
: DWORD
= 0x4;
5612 STRUCT
!{struct CRYPT_DECRYPT_MESSAGE_PARA
{
5614 dwMsgAndCertEncodingType
: DWORD
,
5616 rghCertStore
: *mut HCERTSTORE
,
5619 pub type PCRYPT_DECRYPT_MESSAGE_PARA
= *mut CRYPT_DECRYPT_MESSAGE_PARA
;
5620 STRUCT
!{struct CRYPT_HASH_MESSAGE_PARA
{
5622 dwMsgEncodingType
: DWORD
,
5623 hCryptProv
: HCRYPTPROV_LEGACY
,
5624 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
5625 pvHashAuxInfo
: *mut c_void
,
5627 pub type PCRYPT_HASH_MESSAGE_PARA
= *mut CRYPT_HASH_MESSAGE_PARA
;
5628 UNION
!{union CRYPT_KEY_SIGN_MESSAGE_PARA_u
{
5630 hCryptProv hCryptProv_mut
: HCRYPTPROV
,
5631 hNCryptKey hNCryptKey_mut
: NCRYPT_KEY_HANDLE
,
5633 STRUCT
!{struct CRYPT_KEY_SIGN_MESSAGE_PARA
{
5635 dwMsgAndCertEncodingType
: DWORD
,
5636 u
: CRYPT_KEY_SIGN_MESSAGE_PARA_u
,
5638 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
5639 pvHashAuxInfo
: *mut c_void
,
5640 PubKeyAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
5642 pub type PCRYPT_KEY_SIGN_MESSAGE_PARA
= *mut CRYPT_KEY_SIGN_MESSAGE_PARA
;
5643 STRUCT
!{struct CRYPT_KEY_VERIFY_MESSAGE_PARA
{
5645 dwMsgEncodingType
: DWORD
,
5646 hCryptProv
: HCRYPTPROV_LEGACY
,
5648 pub type PCRYPT_KEY_VERIFY_MESSAGE_PARA
= *mut CRYPT_KEY_VERIFY_MESSAGE_PARA
;
5650 pub fn CryptSignMessage(
5651 pSignPara
: PCRYPT_SIGN_MESSAGE_PARA
,
5652 fDetachedSignature
: BOOL
,
5654 rgpbToBeSigned
: *mut *const BYTE
,
5655 rgcbToBeSigned
: *mut DWORD
,
5656 pbSignedBlob
: *mut BYTE
,
5657 pcbSignedBlob
: *mut DWORD
,
5659 pub fn CryptVerifyMessageSignature(
5660 pVerifyPara
: PCRYPT_VERIFY_MESSAGE_PARA
,
5661 dwSignerIndex
: DWORD
,
5662 pbSignedBlob
: *const BYTE
,
5663 cbSignedBlob
: DWORD
,
5664 pbDecoded
: *mut BYTE
,
5665 pcbDecoded
: *mut DWORD
,
5666 ppSignerCert
: *mut PCCERT_CONTEXT
,
5668 pub fn CryptGetMessageSignerCount(
5669 dwMsgEncodingType
: DWORD
,
5670 pbSignedBlob
: *const BYTE
,
5671 cbSignedBlob
: DWORD
,
5673 pub fn CryptGetMessageCertificates(
5674 dwMsgAndCertEncodingType
: DWORD
,
5675 hCryptProv
: HCRYPTPROV_LEGACY
,
5677 pbSignedBlob
: *const BYTE
,
5678 cbSignedBlob
: DWORD
,
5680 pub fn CryptVerifyDetachedMessageSignature(
5681 pVerifyPara
: PCRYPT_VERIFY_MESSAGE_PARA
,
5682 dwSignerIndex
: DWORD
,
5683 pbDetachedSignBlob
: *const BYTE
,
5684 cbDetachedSignBlob
: DWORD
,
5686 rgpbToBeSigned
: *mut *const BYTE
,
5687 rgcbToBeSigned
: *mut DWORD
,
5688 ppSignerCert
: *mut PCCERT_CONTEXT
,
5690 pub fn CryptEncryptMessage(
5691 pEncryptPara
: PCRYPT_ENCRYPT_MESSAGE_PARA
,
5692 cRecipientCert
: DWORD
,
5693 rgpRecipientCert
: *mut PCCERT_CONTEXT
,
5694 pbToBeEncrypted
: *const BYTE
,
5695 cbToBeEncrypted
: DWORD
,
5696 pbEncryptedBlob
: *mut BYTE
,
5697 pcbEncryptedBlob
: *mut DWORD
,
5699 pub fn CryptDecryptMessage(
5700 pDecryptPara
: PCRYPT_DECRYPT_MESSAGE_PARA
,
5701 pbEncryptedBlob
: *const BYTE
,
5702 cbEncryptedBlob
: DWORD
,
5703 pbDecrypted
: *mut BYTE
,
5704 pcbDecrypted
: *mut DWORD
,
5705 ppXchgCert
: *mut PCCERT_CONTEXT
,
5707 pub fn CryptSignAndEncryptMessage(
5708 pSignPara
: PCRYPT_SIGN_MESSAGE_PARA
,
5709 pEncryptPara
: PCRYPT_ENCRYPT_MESSAGE_PARA
,
5710 cRecipientCert
: DWORD
,
5711 rgpRecipientCert
: *mut PCCERT_CONTEXT
,
5712 pbToBeSignedAndEncrypted
: *const BYTE
,
5713 cbToBeSignedAndEncrypted
: DWORD
,
5714 pbSignedAndEncryptedBlob
: *mut BYTE
,
5715 pcbSignedAndEncryptedBlob
: *mut DWORD
,
5717 pub fn CryptDecryptAndVerifyMessageSignature(
5718 pDecryptPara
: PCRYPT_DECRYPT_MESSAGE_PARA
,
5719 pVerifyPara
: PCRYPT_VERIFY_MESSAGE_PARA
,
5720 dwSignerIndex
: DWORD
,
5721 pbEncryptedBlob
: *const BYTE
,
5722 cbEncryptedBlob
: DWORD
,
5723 pbDecrypted
: *mut BYTE
,
5724 pcbDecrypted
: *mut DWORD
,
5725 ppXchgCert
: *mut PCCERT_CONTEXT
,
5726 ppSignerCert
: *mut PCCERT_CONTEXT
,
5728 pub fn CryptDecodeMessage(
5729 dwMsgTypeFlags
: DWORD
,
5730 pDecryptPara
: PCRYPT_DECRYPT_MESSAGE_PARA
,
5731 pVerifyPara
: PCRYPT_VERIFY_MESSAGE_PARA
,
5732 dwSignerIndex
: DWORD
,
5733 pbEncodedBlob
: *const BYTE
,
5734 cbEncodedBlob
: DWORD
,
5735 dwPrevInnerContentType
: DWORD
,
5736 pdwMsgType
: *mut DWORD
,
5737 pdwInnerContentType
: *mut DWORD
,
5738 pbDecoded
: *mut BYTE
,
5739 pcbDecoded
: *mut DWORD
,
5740 ppXchgCert
: *mut PCCERT_CONTEXT
,
5741 ppSignerCert
: *mut PCCERT_CONTEXT
,
5743 pub fn CryptHashMessage(
5744 pHashPara
: PCRYPT_HASH_MESSAGE_PARA
,
5745 fDetachedHash
: BOOL
,
5747 rgpbToBeHashed
: *mut *const BYTE
,
5748 rgcbToBeHashed
: *mut DWORD
,
5749 pbHashedBlob
: *mut BYTE
,
5750 pcbHashedBlob
: *mut DWORD
,
5751 pbComputedHash
: *mut BYTE
,
5752 pcbComputedHash
: *mut DWORD
,
5754 pub fn CryptVerifyMessageHash(
5755 pHashPara
: PCRYPT_HASH_MESSAGE_PARA
,
5756 pbHashedBlob
: *mut BYTE
,
5757 cbHashedBlob
: DWORD
,
5758 pbToBeHashed
: *mut BYTE
,
5759 pcbToBeHashed
: *mut DWORD
,
5760 pbComputedHash
: *mut BYTE
,
5761 pcbComputedHash
: *mut DWORD
,
5763 pub fn CryptVerifyDetachedMessageHash(
5764 pHashPara
: PCRYPT_HASH_MESSAGE_PARA
,
5765 pbDetachedHashBlob
: *mut BYTE
,
5766 cbDetachedHashBlob
: DWORD
,
5768 rgpbToBeHashed
: *mut *const BYTE
,
5769 rgcbToBeHashed
: *mut DWORD
,
5770 pbComputedHash
: *mut BYTE
,
5771 pcbComputedHash
: *mut DWORD
,
5773 pub fn CryptSignMessageWithKey(
5774 pSignPara
: PCRYPT_KEY_SIGN_MESSAGE_PARA
,
5775 pbToBeSigned
: *const BYTE
,
5776 cbToBeSigned
: DWORD
,
5777 pbSignedBlob
: *mut BYTE
,
5778 pcbSignedBlob
: *mut DWORD
,
5780 pub fn CryptVerifyMessageSignatureWithKey(
5781 pVerifyPara
: PCRYPT_KEY_VERIFY_MESSAGE_PARA
,
5782 pPublicKeyInfo
: PCERT_PUBLIC_KEY_INFO
,
5783 pbSignedBlob
: *const BYTE
,
5784 cbSignedBlob
: DWORD
,
5785 pbDecoded
: *mut BYTE
,
5786 pcbDecoded
: *mut DWORD
,
5788 pub fn CertOpenSystemStoreA(
5789 hProv
: HCRYPTPROV_LEGACY
,
5790 szSubsystemProtocol
: LPCSTR
,
5792 pub fn CertOpenSystemStoreW(
5793 hProv
: HCRYPTPROV_LEGACY
,
5794 szSubsystemProtocol
: LPCWSTR
,
5796 pub fn CertAddEncodedCertificateToSystemStoreA(
5797 szCertStoreName
: LPCSTR
,
5798 pbCertEncoded
: *const BYTE
,
5799 cbCertEncoded
: DWORD
,
5801 pub fn CertAddEncodedCertificateToSystemStoreW(
5802 szCertStoreName
: LPCWSTR
,
5803 pbCertEncoded
: *const BYTE
,
5804 cbCertEncoded
: DWORD
,
5807 STRUCT
!{struct CERT_CHAIN
{
5810 keyLocatorInfo
: CRYPT_KEY_PROV_INFO
,
5812 pub type PCERT_CHAIN
= *mut CERT_CHAIN
;
5814 pub fn FindCertsByIssuer(
5815 pCertChains
: PCERT_CHAIN
,
5816 pcbCertChains
: *mut DWORD
,
5817 pcCertChains
: *mut DWORD
,
5818 pbEncodedIssuerName
: *mut BYTE
,
5819 cbEncodedIssuerName
: DWORD
,
5820 pwszPurpose
: LPCWSTR
,
5823 pub fn CryptQueryObject(
5824 dwObjectType
: DWORD
,
5825 pvObject
: *const c_void
,
5826 dwExpectedContentTypeFlags
: DWORD
,
5827 dwExpectedFormatTypeFlags
: DWORD
,
5829 pdwMsgAndCertEncodingType
: *mut DWORD
,
5830 pdwContentType
: *mut DWORD
,
5831 pdwFormatType
: *mut DWORD
,
5832 phCertStore
: *mut HCERTSTORE
,
5833 phMsg
: *mut HCRYPTMSG
,
5834 ppvContext
: *mut *const c_void
,
5837 pub const CERT_QUERY_OBJECT_FILE
: DWORD
= 0x00000001;
5838 pub const CERT_QUERY_OBJECT_BLOB
: DWORD
= 0x00000002;
5839 pub const CERT_QUERY_CONTENT_CERT
: DWORD
= 1;
5840 pub const CERT_QUERY_CONTENT_CTL
: DWORD
= 2;
5841 pub const CERT_QUERY_CONTENT_CRL
: DWORD
= 3;
5842 pub const CERT_QUERY_CONTENT_SERIALIZED_STORE
: DWORD
= 4;
5843 pub const CERT_QUERY_CONTENT_SERIALIZED_CERT
: DWORD
= 5;
5844 pub const CERT_QUERY_CONTENT_SERIALIZED_CTL
: DWORD
= 6;
5845 pub const CERT_QUERY_CONTENT_SERIALIZED_CRL
: DWORD
= 7;
5846 pub const CERT_QUERY_CONTENT_PKCS7_SIGNED
: DWORD
= 8;
5847 pub const CERT_QUERY_CONTENT_PKCS7_UNSIGNED
: DWORD
= 9;
5848 pub const CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
: DWORD
= 10;
5849 pub const CERT_QUERY_CONTENT_PKCS10
: DWORD
= 11;
5850 pub const CERT_QUERY_CONTENT_PFX
: DWORD
= 12;
5851 pub const CERT_QUERY_CONTENT_CERT_PAIR
: DWORD
= 13;
5852 pub const CERT_QUERY_CONTENT_PFX_AND_LOAD
: DWORD
= 14;
5853 pub const CERT_QUERY_CONTENT_FLAG_CERT
: DWORD
= 1 << CERT_QUERY_CONTENT_CERT
;
5854 pub const CERT_QUERY_CONTENT_FLAG_CTL
: DWORD
= 1 << CERT_QUERY_CONTENT_CTL
;
5855 pub const CERT_QUERY_CONTENT_FLAG_CRL
: DWORD
= 1 << CERT_QUERY_CONTENT_CRL
;
5856 pub const CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
: DWORD
5857 = 1<< CERT_QUERY_CONTENT_SERIALIZED_STORE
;
5858 pub const CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
: DWORD
= 1 << CERT_QUERY_CONTENT_SERIALIZED_CERT
;
5859 pub const CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
: DWORD
= 1 << CERT_QUERY_CONTENT_SERIALIZED_CTL
;
5860 pub const CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
: DWORD
= 1 << CERT_QUERY_CONTENT_SERIALIZED_CRL
;
5861 pub const CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
: DWORD
= 1 << CERT_QUERY_CONTENT_PKCS7_SIGNED
;
5862 pub const CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
: DWORD
= 1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED
;
5863 pub const CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
: DWORD
5864 = 1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED
;
5865 pub const CERT_QUERY_CONTENT_FLAG_PKCS10
: DWORD
= 1 << CERT_QUERY_CONTENT_PKCS10
;
5866 pub const CERT_QUERY_CONTENT_FLAG_PFX
: DWORD
= 1 << CERT_QUERY_CONTENT_PFX
;
5867 pub const CERT_QUERY_CONTENT_FLAG_CERT_PAIR
: DWORD
= 1 << CERT_QUERY_CONTENT_CERT_PAIR
;
5868 pub const CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD
: DWORD
= 1 << CERT_QUERY_CONTENT_PFX_AND_LOAD
;
5869 pub const CERT_QUERY_CONTENT_FLAG_ALL
: DWORD
= CERT_QUERY_CONTENT_FLAG_CERT
5870 | CERT_QUERY_CONTENT_FLAG_CTL
| CERT_QUERY_CONTENT_FLAG_CRL
5871 | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
| CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
5872 | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL
| CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL
5873 | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
| CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
5874 | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED
| CERT_QUERY_CONTENT_FLAG_PKCS10
5875 | CERT_QUERY_CONTENT_FLAG_PFX
| CERT_QUERY_CONTENT_FLAG_CERT_PAIR
;
5876 pub const CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT
: DWORD
= CERT_QUERY_CONTENT_FLAG_CERT
5877 | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE
| CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT
5878 | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED
| CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED
;
5879 pub const CERT_QUERY_FORMAT_BINARY
: DWORD
= 1;
5880 pub const CERT_QUERY_FORMAT_BASE64_ENCODED
: DWORD
= 2;
5881 pub const CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
: DWORD
= 3;
5882 pub const CERT_QUERY_FORMAT_FLAG_BINARY
: DWORD
= 1 << CERT_QUERY_FORMAT_BINARY
;
5883 pub const CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
: DWORD
= 1 << CERT_QUERY_FORMAT_BASE64_ENCODED
;
5884 pub const CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
: DWORD
5885 = 1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED
;
5886 pub const CERT_QUERY_FORMAT_FLAG_ALL
: DWORD
= CERT_QUERY_FORMAT_FLAG_BINARY
5887 | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED
| CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED
;
5889 pub fn CryptMemAlloc(
5892 pub fn CryptMemRealloc(
5896 pub fn CryptMemFree(
5900 pub type HCRYPTASYNC
= HANDLE
;
5901 pub type PHCRYPTASYNC
= *mut HANDLE
;
5902 FN
!{stdcall
PFN_CRYPT_ASYNC_PARAM_FREE_FUNC(
5907 pub fn CryptCreateAsyncHandle(
5909 phAsync
: PHCRYPTASYNC
,
5911 pub fn CryptSetAsyncParam(
5912 hAsync
: HCRYPTASYNC
,
5915 pfnFree
: PFN_CRYPT_ASYNC_PARAM_FREE_FUNC
,
5917 pub fn CryptGetAsyncParam(
5918 hAsync
: HCRYPTASYNC
,
5920 ppvParam
: *mut LPVOID
,
5921 ppfnFree
: *mut PFN_CRYPT_ASYNC_PARAM_FREE_FUNC
,
5923 pub fn CryptCloseAsyncHandle(
5924 hAsync
: HCRYPTASYNC
,
5927 STRUCT
!{struct CRYPT_BLOB_ARRAY
{
5929 rgBlob
: PCRYPT_DATA_BLOB
,
5931 pub type PCRYPT_BLOB_ARRAY
= *mut CRYPT_BLOB_ARRAY
;
5932 STRUCT
!{struct CRYPT_CREDENTIALS
{
5934 pszCredentialsOid
: LPCSTR
,
5935 pvCredentials
: LPVOID
,
5937 pub type PCRYPT_CREDENTIALS
= *mut CRYPT_CREDENTIALS
;
5938 pub const CREDENTIAL_OID_PASSWORD_CREDENTIALS_A
: LPCSTR
= 1 as LPCSTR
;
5939 pub const CREDENTIAL_OID_PASSWORD_CREDENTIALS_W
: LPCSTR
= 2 as LPCSTR
;
5940 STRUCT
!{struct CRYPT_PASSWORD_CREDENTIALSA
{
5945 pub type PCRYPT_PASSWORD_CREDENTIALSA
= *mut CRYPT_PASSWORD_CREDENTIALSA
;
5946 STRUCT
!{struct CRYPT_PASSWORD_CREDENTIALSW
{
5948 pszUsername
: LPWSTR
,
5949 pszPassword
: LPWSTR
,
5951 pub type PCRYPT_PASSWORD_CREDENTIALSW
= *mut CRYPT_PASSWORD_CREDENTIALSW
;
5952 pub const SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC
: &'
static str = "SchemeDllRetrieveEncodedObject";
5953 pub const SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC
: &'
static str
5954 = "SchemeDllRetrieveEncodedObjectW";
5955 FN
!{stdcall
PFN_FREE_ENCODED_OBJECT_FUNC(
5956 pszObjectOid
: LPCSTR
,
5957 pObject
: PCRYPT_BLOB_ARRAY
,
5958 pvFreeContext
: LPVOID
,
5960 pub const CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC
: &'
static str = "ContextDllCreateObjectContext";
5961 pub const CONTEXT_OID_CERTIFICATE
: LPCSTR
= 1 as LPCSTR
;
5962 pub const CONTEXT_OID_CRL
: LPCSTR
= 2 as LPCSTR
;
5963 pub const CONTEXT_OID_CTL
: LPCSTR
= 3 as LPCSTR
;
5964 pub const CONTEXT_OID_PKCS7
: LPCSTR
= 4 as LPCSTR
;
5965 pub const CONTEXT_OID_CAPI2_ANY
: LPCSTR
= 5 as LPCSTR
;
5966 pub const CONTEXT_OID_OCSP_RESP
: LPCSTR
= 6 as LPCSTR
;
5967 pub const CRYPT_RETRIEVE_MULTIPLE_OBJECTS
: DWORD
= 0x00000001;
5968 pub const CRYPT_CACHE_ONLY_RETRIEVAL
: DWORD
= 0x00000002;
5969 pub const CRYPT_WIRE_ONLY_RETRIEVAL
: DWORD
= 0x00000004;
5970 pub const CRYPT_DONT_CACHE_RESULT
: DWORD
= 0x00000008;
5971 pub const CRYPT_ASYNC_RETRIEVAL
: DWORD
= 0x00000010;
5972 pub const CRYPT_STICKY_CACHE_RETRIEVAL
: DWORD
= 0x00001000;
5973 pub const CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL
: DWORD
= 0x00002000;
5974 pub const CRYPT_OFFLINE_CHECK_RETRIEVAL
: DWORD
= 0x00004000;
5975 pub const CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE
: DWORD
= 0x00008000;
5976 pub const CRYPT_LDAP_SIGN_RETRIEVAL
: DWORD
= 0x00010000;
5977 pub const CRYPT_NO_AUTH_RETRIEVAL
: DWORD
= 0x00020000;
5978 pub const CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL
: DWORD
= 0x00040000;
5979 pub const CRYPT_AIA_RETRIEVAL
: DWORD
= 0x00080000;
5980 pub const CRYPT_HTTP_POST_RETRIEVAL
: DWORD
= 0x00100000;
5981 pub const CRYPT_PROXY_CACHE_RETRIEVAL
: DWORD
= 0x00200000;
5982 pub const CRYPT_NOT_MODIFIED_RETRIEVAL
: DWORD
= 0x00400000;
5983 pub const CRYPT_ENABLE_SSL_REVOCATION_RETRIEVAL
: DWORD
= 0x00800000;
5984 pub const CRYPT_RANDOM_QUERY_STRING_RETRIEVAL
: DWORD
= 0x04000000;
5985 pub const CRYPT_ENABLE_FILE_RETRIEVAL
: DWORD
= 0x08000000;
5986 pub const CRYPT_CREATE_NEW_FLUSH_ENTRY
: DWORD
= 0x10000000;
5987 pub const CRYPT_VERIFY_CONTEXT_SIGNATURE
: DWORD
= 0x00000020;
5988 pub const CRYPT_VERIFY_DATA_HASH
: DWORD
= 0x00000040;
5989 pub const CRYPT_KEEP_TIME_VALID
: DWORD
= 0x00000080;
5990 pub const CRYPT_DONT_VERIFY_SIGNATURE
: DWORD
= 0x00000100;
5991 pub const CRYPT_DONT_CHECK_TIME_VALIDITY
: DWORD
= 0x00000200;
5992 pub const CRYPT_CHECK_FRESHNESS_TIME_VALIDITY
: DWORD
= 0x00000400;
5993 pub const CRYPT_ACCUMULATIVE_TIMEOUT
: DWORD
= 0x00000800;
5994 pub const CRYPT_OCSP_ONLY_RETRIEVAL
: DWORD
= 0x01000000;
5995 pub const CRYPT_NO_OCSP_FAILOVER_TO_CRL_RETRIEVAL
: DWORD
= 0x02000000;
5996 STRUCT
!{struct CRYPTNET_URL_CACHE_PRE_FETCH_INFO
{
5998 dwObjectType
: DWORD
,
6001 ThisUpdateTime
: FILETIME
,
6002 NextUpdateTime
: FILETIME
,
6003 PublishTime
: FILETIME
,
6005 pub type PCRYPTNET_URL_CACHE_PRE_FETCH_INFO
= *mut CRYPTNET_URL_CACHE_PRE_FETCH_INFO
;
6006 pub const CRYPTNET_URL_CACHE_PRE_FETCH_NONE
: DWORD
= 0;
6007 pub const CRYPTNET_URL_CACHE_PRE_FETCH_BLOB
: DWORD
= 1;
6008 pub const CRYPTNET_URL_CACHE_PRE_FETCH_CRL
: DWORD
= 2;
6009 pub const CRYPTNET_URL_CACHE_PRE_FETCH_OCSP
: DWORD
= 3;
6010 pub const CRYPTNET_URL_CACHE_PRE_FETCH_AUTOROOT_CAB
: DWORD
= 5;
6011 pub const CRYPTNET_URL_CACHE_PRE_FETCH_DISALLOWED_CERT_CAB
: DWORD
= 6;
6012 pub const CRYPTNET_URL_CACHE_PRE_FETCH_PIN_RULES_CAB
: DWORD
= 7;
6013 STRUCT
!{struct CRYPTNET_URL_CACHE_FLUSH_INFO
{
6015 dwExemptSeconds
: DWORD
,
6016 ExpireTime
: FILETIME
,
6018 pub type PCRYPTNET_URL_CACHE_FLUSH_INFO
= *mut CRYPTNET_URL_CACHE_FLUSH_INFO
;
6019 pub const CRYPTNET_URL_CACHE_DEFAULT_FLUSH
: DWORD
= 0;
6020 pub const CRYPTNET_URL_CACHE_DISABLE_FLUSH
: DWORD
= 0xFFFFFFFF;
6021 STRUCT
!{struct CRYPTNET_URL_CACHE_RESPONSE_INFO
{
6023 wResponseType
: WORD
,
6024 wResponseFlags
: WORD
,
6025 LastModifiedTime
: FILETIME
,
6030 pub type PCRYPTNET_URL_CACHE_RESPONSE_INFO
= *mut CRYPTNET_URL_CACHE_RESPONSE_INFO
;
6031 pub const CRYPTNET_URL_CACHE_RESPONSE_NONE
: WORD
= 0;
6032 pub const CRYPTNET_URL_CACHE_RESPONSE_HTTP
: WORD
= 1;
6033 pub const CRYPTNET_URL_CACHE_RESPONSE_VALIDATED
: WORD
= 0x8000;
6034 STRUCT
!{struct CRYPT_RETRIEVE_AUX_INFO
{
6036 pLastSyncTime
: *mut FILETIME
,
6037 dwMaxUrlRetrievalByteCount
: DWORD
,
6038 pPreFetchInfo
: PCRYPTNET_URL_CACHE_PRE_FETCH_INFO
,
6039 pFlushInfo
: PCRYPTNET_URL_CACHE_FLUSH_INFO
,
6040 ppResponseInfo
: *mut PCRYPTNET_URL_CACHE_RESPONSE_INFO
,
6041 pwszCacheFileNamePrefix
: LPWSTR
,
6042 pftCacheResync
: LPFILETIME
,
6043 fProxyCacheRetrieval
: BOOL
,
6044 dwHttpStatusCode
: DWORD
,
6045 ppwszErrorResponseHeaders
: *mut LPWSTR
,
6046 ppErrorContentBlob
: *mut PCRYPT_DATA_BLOB
,
6048 pub type PCRYPT_RETRIEVE_AUX_INFO
= *mut CRYPT_RETRIEVE_AUX_INFO
;
6049 pub const CRYPT_RETRIEVE_MAX_ERROR_CONTENT_LENGTH
: DWORD
= 0x1000;
6051 pub fn CryptRetrieveObjectByUrlA(
6053 pszObjectOid
: LPCSTR
,
6054 dwRetrievalFlags
: DWORD
,
6056 ppvObject
: *mut LPVOID
,
6057 hAsyncRetrieve
: HCRYPTASYNC
,
6058 pCredentials
: PCRYPT_CREDENTIALS
,
6060 pAuxInfo
: PCRYPT_RETRIEVE_AUX_INFO
,
6062 pub fn CryptRetrieveObjectByUrlW(
6064 pszObjectOid
: LPCSTR
,
6065 dwRetrievalFlags
: DWORD
,
6067 ppvObject
: *mut LPVOID
,
6068 hAsyncRetrieve
: HCRYPTASYNC
,
6069 pCredentials
: PCRYPT_CREDENTIALS
,
6071 pAuxInfo
: PCRYPT_RETRIEVE_AUX_INFO
,
6074 FN
!{stdcall
PFN_CRYPT_CANCEL_RETRIEVAL(
6079 pub fn CryptInstallCancelRetrieval(
6080 pfnCancel
: PFN_CRYPT_CANCEL_RETRIEVAL
,
6081 pvArg
: *const c_void
,
6083 pvReserved
: *mut c_void
,
6085 pub fn CryptUninstallCancelRetrieval(
6087 pvReserved
: *mut c_void
,
6089 pub fn CryptCancelAsyncRetrieval(
6090 hAsyncRetrieval
: HCRYPTASYNC
,
6093 pub const CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION
: LPCSTR
= 1 as LPCSTR
;
6094 FN
!{stdcall
PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC(
6095 pvCompletion
: LPVOID
,
6096 dwCompletionCode
: DWORD
,
6098 pszObjectOid
: LPSTR
,
6101 STRUCT
!{struct CRYPT_ASYNC_RETRIEVAL_COMPLETION
{
6102 pfnCompletion
: PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC
,
6103 pvCompletion
: LPVOID
,
6105 pub type PCRYPT_ASYNC_RETRIEVAL_COMPLETION
= *mut CRYPT_ASYNC_RETRIEVAL_COMPLETION
;
6106 pub const CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL
: LPCSTR
= 2 as LPCSTR
;
6107 FN
!{stdcall
PFN_CANCEL_ASYNC_RETRIEVAL_FUNC(
6108 hAsyncRetrieve
: HCRYPTASYNC
,
6110 pub const CRYPT_GET_URL_FROM_PROPERTY
: DWORD
= 0x00000001;
6111 pub const CRYPT_GET_URL_FROM_EXTENSION
: DWORD
= 0x00000002;
6112 pub const CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE
: DWORD
= 0x00000004;
6113 pub const CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE
: DWORD
= 0x00000008;
6114 STRUCT
!{struct CRYPT_URL_ARRAY
{
6116 rgwszUrl
: *mut LPWSTR
,
6118 pub type PCRYPT_URL_ARRAY
= *mut CRYPT_URL_ARRAY
;
6119 STRUCT
!{struct CRYPT_URL_INFO
{
6121 dwSyncDeltaTime
: DWORD
,
6123 rgcGroupEntry
: *mut DWORD
,
6125 pub type PCRYPT_URL_INFO
= *mut CRYPT_URL_INFO
;
6127 pub fn CryptGetObjectUrl(
6131 pUrlArray
: PCRYPT_URL_ARRAY
,
6132 pcbUrlArray
: *mut DWORD
,
6133 pUrlInfo
: PCRYPT_URL_INFO
,
6134 pcbUrlInfo
: *mut DWORD
,
6138 pub const URL_OID_GET_OBJECT_URL_FUNC
: &'
static str = "UrlDllGetObjectUrl";
6139 pub const URL_OID_CERTIFICATE_ISSUER
: LPCSTR
= 1 as LPCSTR
;
6140 pub const URL_OID_CERTIFICATE_CRL_DIST_POINT
: LPCSTR
= 2 as LPCSTR
;
6141 pub const URL_OID_CTL_ISSUER
: LPCSTR
= 3 as LPCSTR
;
6142 pub const URL_OID_CTL_NEXT_UPDATE
: LPCSTR
= 4 as LPCSTR
;
6143 pub const URL_OID_CRL_ISSUER
: LPCSTR
= 5 as LPCSTR
;
6144 pub const URL_OID_CERTIFICATE_FRESHEST_CRL
: LPCSTR
= 6 as LPCSTR
;
6145 pub const URL_OID_CRL_FRESHEST_CRL
: LPCSTR
= 7 as LPCSTR
;
6146 pub const URL_OID_CROSS_CERT_DIST_POINT
: LPCSTR
= 8 as LPCSTR
;
6147 pub const URL_OID_CERTIFICATE_OCSP
: LPCSTR
= 9 as LPCSTR
;
6148 pub const URL_OID_CERTIFICATE_OCSP_AND_CRL_DIST_POINT
: LPCSTR
= 10 as LPCSTR
;
6149 pub const URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP
: LPCSTR
= 11 as LPCSTR
;
6150 pub const URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS
: LPCSTR
= 12 as LPCSTR
;
6151 pub const URL_OID_CERTIFICATE_ONLY_OCSP
: LPCSTR
= 13 as LPCSTR
;
6152 STRUCT
!{struct CERT_CRL_CONTEXT_PAIR
{
6153 pCertContext
: PCCERT_CONTEXT
,
6154 pCrlContext
: PCCRL_CONTEXT
,
6156 pub type PCERT_CRL_CONTEXT_PAIR
= *mut CERT_CRL_CONTEXT_PAIR
;
6157 pub type PCCERT_CRL_CONTEXT_PAIR
= *const CERT_CRL_CONTEXT_PAIR
;
6158 STRUCT
!{struct CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO
{
6160 iDeltaCrlIndicator
: c_int
,
6161 pftCacheResync
: LPFILETIME
,
6162 pLastSyncTime
: LPFILETIME
,
6163 pMaxAgeTime
: LPFILETIME
,
6164 pChainPara
: PCERT_REVOCATION_CHAIN_PARA
,
6165 pDeltaCrlIndicator
: PCRYPT_INTEGER_BLOB
,
6167 pub type PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO
= *mut CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO
;
6169 pub fn CryptGetTimeValidObject(
6170 pszTimeValidOid
: LPCSTR
,
6172 pIssuer
: PCCERT_CONTEXT
,
6173 pftValidFor
: LPFILETIME
,
6176 ppvObject
: *mut LPVOID
,
6177 pCredentials
: PCRYPT_CREDENTIALS
,
6178 pExtraInfo
: PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO
,
6181 pub const TIME_VALID_OID_GET_OBJECT_FUNC
: &'
static str = "TimeValidDllGetObject";
6182 pub const TIME_VALID_OID_GET_CTL
: LPCSTR
= 1 as LPCSTR
;
6183 pub const TIME_VALID_OID_GET_CRL
: LPCSTR
= 2 as LPCSTR
;
6184 pub const TIME_VALID_OID_GET_CRL_FROM_CERT
: LPCSTR
= 3 as LPCSTR
;
6185 pub const TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT
: LPCSTR
= 4 as LPCSTR
;
6186 pub const TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL
: LPCSTR
= 5 as LPCSTR
;
6188 pub fn CryptFlushTimeValidObject(
6189 pszFlushTimeValidOid
: LPCSTR
,
6191 pIssuer
: PCCERT_CONTEXT
,
6196 pub const TIME_VALID_OID_FLUSH_OBJECT_FUNC
: &'
static str = "TimeValidDllFlushObject";
6197 pub const TIME_VALID_OID_FLUSH_CTL
: LPCSTR
= 1 as LPCSTR
;
6198 pub const TIME_VALID_OID_FLUSH_CRL
: LPCSTR
= 2 as LPCSTR
;
6199 pub const TIME_VALID_OID_FLUSH_CRL_FROM_CERT
: LPCSTR
= 3 as LPCSTR
;
6200 pub const TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT
: LPCSTR
= 4 as LPCSTR
;
6201 pub const TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL
: LPCSTR
= 5 as LPCSTR
;
6203 pub fn CertCreateSelfSignCertificate(
6204 hCryptProvOrNCryptKey
: HCRYPTPROV_OR_NCRYPT_KEY_HANDLE
,
6205 pSubjectIssuerBlob
: PCERT_NAME_BLOB
,
6207 pKeyProvInfo
: PCRYPT_KEY_PROV_INFO
,
6208 pSignatureAlgorithm
: PCRYPT_ALGORITHM_IDENTIFIER
,
6209 pStartTime
: PSYSTEMTIME
,
6210 pEndTime
: PSYSTEMTIME
,
6211 pExtensions
: PCERT_EXTENSIONS
,
6212 ) -> PCCERT_CONTEXT
;
6214 pub const CERT_CREATE_SELFSIGN_NO_SIGN
: DWORD
= 1;
6215 pub const CERT_CREATE_SELFSIGN_NO_KEY_INFO
: DWORD
= 2;
6217 pub fn CryptGetKeyIdentifierProperty(
6218 pKeyIdentifier
: *const CRYPT_HASH_BLOB
,
6221 pwszComputerName
: LPCWSTR
,
6222 pvReserved
: *mut c_void
,
6223 pvData
: *mut c_void
,
6224 pcbData
: *mut DWORD
,
6227 pub const CRYPT_KEYID_MACHINE_FLAG
: DWORD
= 0x00000020;
6228 pub const CRYPT_KEYID_ALLOC_FLAG
: DWORD
= 0x00008000;
6230 pub fn CryptSetKeyIdentifierProperty(
6231 pKeyIdentifier
: *const CRYPT_HASH_BLOB
,
6234 pwszComputerName
: LPCWSTR
,
6235 pvReserved
: *mut c_void
,
6236 pvData
: *const c_void
,
6239 pub const CRYPT_KEYID_DELETE_FLAG
: DWORD
= 0x00000010;
6240 pub const CRYPT_KEYID_SET_NEW_FLAG
: DWORD
= 0x00002000;
6241 FN
!{stdcall
PFN_CRYPT_ENUM_KEYID_PROP(
6242 pKeyIdentifier
: *const CRYPT_HASH_BLOB
,
6244 pvReserved
: *mut c_void
,
6247 rgdwPropId
: *mut DWORD
,
6248 rgpvData
: *mut *mut c_void
,
6249 rgcbData
: *mut DWORD
,
6252 pub fn CryptEnumKeyIdentifierProperties(
6253 pKeyIdentifier
: *const CRYPT_HASH_BLOB
,
6256 pwszComputerName
: LPCWSTR
,
6257 pvReserved
: *mut c_void
,
6259 pfnEnum
: PFN_CRYPT_ENUM_KEYID_PROP
,
6261 pub fn CryptCreateKeyIdentifierFromCSP(
6262 dwCertEncodingType
: DWORD
,
6263 pszPubKeyOID
: LPCSTR
,
6264 pPubKeyStruc
: *const PUBLICKEYSTRUC
,
6265 cbPubKeyStruc
: DWORD
,
6267 pvReserved
: *mut c_void
,
6269 pcbHash
: *mut DWORD
,
6272 pub const CERT_CHAIN_CONFIG_REGPATH
: &'
static str
6273 = "Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config";
6274 pub const CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME
: &'
static str
6275 = "MaxUrlRetrievalByteCount";
6276 pub const CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT
: DWORD
= 100 * 1024 * 1024;
6277 pub const CERT_CHAIN_CACHE_RESYNC_FILETIME_VALUE_NAME
: &'
static str = "ChainCacheResyncFiletime";
6278 pub const CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME
: &'
static str
6279 = "DisableMandatoryBasicConstraints";
6280 pub const CERT_CHAIN_DISABLE_CA_NAME_CONSTRAINTS_VALUE_NAME
: &'
static str
6281 = "DisableCANameConstraints";
6282 pub const CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME
: &'
static str
6283 = "DisableUnsupportedCriticalExtensions";
6284 pub const CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME
: &'
static str = "MaxAIAUrlCountInCert";
6285 pub const CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_DEFAULT
: DWORD
= 5;
6286 pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME
: &'
static str
6287 = "MaxAIAUrlRetrievalCountPerChain";
6288 pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_DEFAULT
: DWORD
= 3;
6289 pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME
: &'
static str
6290 = "MaxAIAUrlRetrievalByteCount";
6291 pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_DEFAULT
: DWORD
= 100000;
6292 pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME
: &'
static str
6293 = "MaxAIAUrlRetrievalCertCount";
6294 pub const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT
: DWORD
= 10;
6295 pub const CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME
: &'
static str
6296 = "OcspValiditySeconds";
6297 pub const CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT
: DWORD
= 12 * 60 * 60;
6298 pub const CERT_CHAIN_DISABLE_SERIAL_CHAIN_VALUE_NAME
: &'
static str = "DisableSerialChain";
6299 pub const CERT_CHAIN_SERIAL_CHAIN_LOG_FILE_NAME_VALUE_NAME
: &'
static str
6300 = "SerialChainLogFileName";
6301 pub const CERT_CHAIN_DISABLE_SYNC_WITH_SSL_TIME_VALUE_NAME
: &'
static str
6302 = "DisableSyncWithSslTime";
6303 pub const CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_VALUE_NAME
: &'
static str
6304 = "MaxSslTimeUpdatedEventCount";
6305 pub const CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DEFAULT
: DWORD
= 5;
6306 pub const CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DISABLE
: DWORD
= 0xFFFFFFFF;
6307 pub const CERT_CHAIN_SSL_HANDSHAKE_LOG_FILE_NAME_VALUE_NAME
: &'
static str
6308 = "SslHandshakeLogFileName";
6309 pub const CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME
: &'
static str
6310 = "EnableWeakSignatureFlags";
6311 pub const CERT_CHAIN_ENABLE_MD2_MD4_FLAG
: DWORD
= 0x00000001;
6312 pub const CERT_CHAIN_ENABLE_WEAK_RSA_ROOT_FLAG
: DWORD
= 0x00000002;
6313 pub const CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG
: DWORD
= 0x00000004;
6314 pub const CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG
: DWORD
= 0x00000008;
6315 pub const CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME
: &'
static str = "MinRsaPubKeyBitLength";
6316 pub const CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DEFAULT
: DWORD
= 1023;
6317 pub const CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DISABLE
: DWORD
= 0xFFFFFFFF;
6318 pub const CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_VALUE_NAME
: &'
static str = "WeakRsaPubKeyTime";
6319 pub const CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_DEFAULT
: u64 = 0x01CA8A755C6E0000;
6320 pub const CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME
: &'
static str = "WeakSignatureLogDir";
6321 pub const CERT_CHAIN_DEFAULT_CONFIG_SUBDIR
: &'
static str = "Default";
6322 pub const CERT_CHAIN_WEAK_PREFIX_NAME
: &'
static str = "Weak";
6323 pub const CERT_CHAIN_WEAK_THIRD_PARTY_CONFIG_NAME
: &'
static str = "ThirdParty";
6324 pub const CERT_CHAIN_WEAK_ALL_CONFIG_NAME
: &'
static str = "Al";
6325 pub const CERT_CHAIN_WEAK_FLAGS_NAME
: &'
static str = "Flags";
6326 pub const CERT_CHAIN_WEAK_HYGIENE_NAME
: &'
static str = "Hygiene";
6327 pub const CERT_CHAIN_WEAK_AFTER_TIME_NAME
: &'
static str = "AfterTime";
6328 pub const CERT_CHAIN_WEAK_FILE_HASH_AFTER_TIME_NAME
: &'
static str = "FileHashAfterTime";
6329 pub const CERT_CHAIN_WEAK_TIMESTAMP_HASH_AFTER_TIME_NAME
: &'
static str = "TimestampHashAfterTime";
6330 pub const CERT_CHAIN_WEAK_MIN_BIT_LENGTH_NAME
: &'
static str = "MinBitLength";
6331 pub const CERT_CHAIN_WEAK_SHA256_ALLOW_NAME
: &'
static str = "Sha256Allow";
6332 pub const CERT_CHAIN_MIN_PUB_KEY_BIT_LENGTH_DISABLE
: DWORD
= 0xFFFFFFFF;
6333 pub const CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG
: DWORD
= 0x80000000;
6334 pub const CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG
: DWORD
= 0x00010000;
6335 pub const CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG
: DWORD
= 0x00020000;
6336 pub const CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG
: DWORD
= 0x00040000;
6337 pub const CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG
: DWORD
= 0x00100000;
6338 pub const CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG
: DWORD
= 0x00200000;
6339 pub const CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG
: DWORD
= 0x00400000;
6340 pub const CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG
: DWORD
= 0x00800000;
6341 pub const CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG
: DWORD
= 0x01000000;
6342 pub const CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG
: DWORD
= 0x02000000;
6343 pub const CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG
: DWORD
= 0x04000000;
6344 pub const CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG
: DWORD
= 0x08000000;
6345 pub const CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG
: DWORD
= 0x10000000;
6346 pub const CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG
: DWORD
= 0x20000000;
6347 pub const CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG
: DWORD
= 0x40000000;
6348 pub const CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG
: DWORD
= 0x00001000;
6349 pub const CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG
: DWORD
= 0x00002000;
6350 pub const CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG
: DWORD
= 0x00004000;
6351 pub const CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG
: DWORD
= 0x00008000;
6352 pub const CERT_CHAIN_DISABLE_WEAK_FLAGS
: DWORD
= CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG
6353 | CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG
| CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG
6354 | CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG
| CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG
6355 | CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG
| CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG
;
6356 pub const CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAGS
: DWORD
= CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG
6357 | CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG
;
6358 pub const CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAGS
: DWORD
6359 = CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG
6360 | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG
;
6361 pub const CERT_CHAIN_ENABLE_HYGIENE_FLAGS
: DWORD
= CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG
6362 | CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG
| CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG
6363 | CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG
| CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG
6364 | CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG
;
6365 pub const CERT_CHAIN_MOTW_WEAK_FLAGS
: DWORD
= CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG
6366 | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG
6367 | CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG
6368 | CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG
| CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG
;
6369 pub const CERT_CHAIN_OPT_IN_WEAK_FLAGS
: DWORD
= CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG
;
6370 pub const CERT_CHAIN_AUTO_CURRENT_USER
: DWORD
= 1;
6371 pub const CERT_CHAIN_AUTO_LOCAL_MACHINE
: DWORD
= 2;
6372 pub const CERT_CHAIN_AUTO_IMPERSONATED
: DWORD
= 3;
6373 pub const CERT_CHAIN_AUTO_PROCESS_INFO
: DWORD
= 4;
6374 pub const CERT_CHAIN_AUTO_PINRULE_INFO
: DWORD
= 5;
6375 pub const CERT_CHAIN_AUTO_NETWORK_INFO
: DWORD
= 6;
6376 pub const CERT_CHAIN_AUTO_SERIAL_LOCAL_MACHINE
: DWORD
= 7;
6377 pub const CERT_CHAIN_AUTO_HPKP_RULE_INFO
: DWORD
= 8;
6378 pub const CERT_CHAIN_AUTO_FLAGS_VALUE_NAME
: &'
static str = "AutoFlags";
6379 pub const CERT_CHAIN_AUTO_FLUSH_DISABLE_FLAG
: DWORD
= 0x00000001;
6380 pub const CERT_CHAIN_AUTO_LOG_CREATE_FLAG
: DWORD
= 0x00000002;
6381 pub const CERT_CHAIN_AUTO_LOG_FREE_FLAG
: DWORD
= 0x00000004;
6382 pub const CERT_CHAIN_AUTO_LOG_FLUSH_FLAG
: DWORD
= 0x00000008;
6383 pub const CERT_CHAIN_AUTO_LOG_FLAGS
: DWORD
= CERT_CHAIN_AUTO_LOG_CREATE_FLAG
6384 | CERT_CHAIN_AUTO_LOG_FREE_FLAG
| CERT_CHAIN_AUTO_LOG_FLUSH_FLAG
;
6385 pub const CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_VALUE_NAME
: &'
static str
6386 = "AutoFlushFirstDeltaSeconds";
6387 pub const CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_DEFAULT
: DWORD
= 5 * 60;
6388 pub const CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_VALUE_NAME
: &'
static str
6389 = "AutoFlushNextDeltaSeconds";
6390 pub const CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_DEFAULT
: DWORD
= 30 * 60;
6391 pub const CERT_CHAIN_AUTO_LOG_FILE_NAME_VALUE_NAME
: &'
static str = "AutoLogFileName";
6392 pub const CERT_CHAIN_DISABLE_AUTO_FLUSH_PROCESS_NAME_LIST_VALUE_NAME
: &'
static str
6393 = "DisableAutoFlushProcessNameList";
6394 pub const CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME
: &'
static str
6395 = "SrvOcspRespMinValiditySeconds";
6396 pub const CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_DEFAULT
: DWORD
= 10 * 60;
6397 pub const CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME
: &'
static str
6398 = "SrvOcspRespUrlRetrievalTimeoutMilliseconds";
6399 pub const CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT
: DWORD
= 15 * 1000;
6400 pub const CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME
: &'
static str
6401 = "SrvOcspRespMaxBeforeNextUpdateSeconds";
6402 pub const CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT
: DWORD
= 4 * 60 * 60;
6403 pub const CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME
: &'
static str
6404 = "SrvOcspRespMinBeforeNextUpdateSeconds";
6405 pub const CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT
: DWORD
= 2 * 60;
6406 pub const CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME
: &'
static str
6407 = "SrvOcspRespMinAfterNextUpdateSeconds";
6408 pub const CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT
: DWORD
= 1 * 60;
6409 pub const CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_VALUE_NAME
: &'
static str
6410 = "SrvOcspRespMinSyncCertFileSeconds";
6411 pub const CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_DEFAULT
: DWORD
= 5;
6412 pub const CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_VALUE_NAME
: &'
static str
6413 = "SrvOcspRespMaxSyncCertFileSeconds";
6414 pub const CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_DEFAULT
: DWORD
= 1 * 60 * 60;
6415 pub const CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME
: &'
static str
6416 = "CryptnetMaxCachedOcspPerCrlCount";
6417 pub const CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT
: DWORD
= 500;
6418 pub const CRYPTNET_OCSP_AFTER_CRL_DISABLE
: DWORD
= 0xFFFFFFFF;
6419 pub const CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME
: &'
static str
6420 = "CryptnetDefaultFlushExemptSeconds";
6421 pub const CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_DEFAULT
: DWORD
= 28 * 24 * 60 * 60;
6422 pub const CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME
: &'
static str
6423 = "CryptnetPreFetchMinMaxAgeSeconds";
6424 pub const CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_DEFAULT
: DWORD
= 1 * 60 * 60;
6425 pub const CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME
: &'
static str
6426 = "CryptnetPreFetchMaxMaxAgeSeconds";
6427 pub const CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_DEFAULT
: DWORD
= 14 * 24 * 60 * 60;
6428 pub const CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME
: &'
static str
6429 = "CryptnetPreFetchMinOcspValidityPeriodSeconds";
6430 pub const CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_DEFAULT
: DWORD
= 14 * 24 * 60 * 60;
6431 pub const CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME
: &'
static str
6432 = "CryptnetPreFetchAfterPublishPreFetchDivisor";
6433 pub const CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_DEFAULT
: DWORD
= 10;
6434 pub const CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME
: &'
static str
6435 = "CryptnetPreFetchBeforeNextUpdatePreFetchDivisor";
6436 pub const CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT
: DWORD
= 20;
6437 pub const CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME
: &'
static str
6438 = "CryptnetPreFetchMinBeforeNextUpdatePreFetchSeconds";
6439 pub const CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT
: DWORD
6441 pub const CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME
: &'
static str
6442 = "CryptnetPreFetchValidityPeriodAfterNextUpdatePreFetchDivisor";
6443 pub const CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT
: DWORD
6445 pub const CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME
: &'
static str
6446 = "CryptnetPreFetchMaxAfterNextUpdatePreFetchPeriodSeconds";
6447 pub const CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT
: DWORD
6449 pub const CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME
: &'
static str
6450 = "CryptnetPreFetchMinAfterNextUpdatePreFetchPeriodSeconds";
6451 pub const CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT
: DWORD
6453 pub const CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME
: &'
static str
6454 = "CryptnetPreFetchAfterCurrentTimePreFetchPeriodSeconds";
6455 pub const CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_DEFAULT
: DWORD
6457 pub const CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME
: &'
static str
6458 = "CryptnetPreFetchTriggerPeriodSeconds";
6459 pub const CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_DEFAULT
: DWORD
= 10 * 60;
6460 pub const CRYPTNET_PRE_FETCH_TRIGGER_DISABLE
: DWORD
= 0xFFFFFFFF;
6461 pub const CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME
: &'
static str
6462 = "CryptnetPreFetchScanAfterTriggerDelaySeconds";
6463 pub const CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT
: DWORD
= 60;
6464 pub const CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME
: &'
static str
6465 = "CryptnetPreFetchRetrievalTimeoutSeconds";
6466 pub const CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT
: DWORD
= 5 * 60;
6467 pub const CRYPTNET_CRL_PRE_FETCH_CONFIG_REGPATH
: &'
static str
6468 = "Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config\\CrlPreFetch";
6469 pub const CRYPTNET_CRL_PRE_FETCH_PROCESS_NAME_LIST_VALUE_NAME
: &'
static str = "ProcessNameList";
6470 pub const CRYPTNET_CRL_PRE_FETCH_URL_LIST_VALUE_NAME
: &'
static str = "PreFetchUrlList";
6471 pub const CRYPTNET_CRL_PRE_FETCH_DISABLE_INFORMATION_EVENTS_VALUE_NAME
: &'
static str
6472 = "DisableInformationEvents";
6473 pub const CRYPTNET_CRL_PRE_FETCH_LOG_FILE_NAME_VALUE_NAME
: &'
static str = "LogFileName";
6474 pub const CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_VALUE_NAME
: &'
static str = "TimeoutSeconds";
6475 pub const CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_DEFAULT
: DWORD
= 5 * 60;
6476 pub const CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_VALUE_NAME
: &'
static str = "MaxAgeSeconds";
6477 pub const CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_DEFAULT
: DWORD
= 2 * 60 * 60;
6478 pub const CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_MIN
: DWORD
= 5 * 60;
6479 pub const CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME
: &'
static str
6480 = "PublishBeforeNextUpdateSeconds";
6481 pub const CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT
: DWORD
= 1 * 60 * 60;
6482 pub const CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_VALUE_NAME
: &'
static str
6483 = "PublishRandomIntervalSeconds";
6484 pub const CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_DEFAULT
: DWORD
= 5 * 60;
6485 pub const CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME
: &'
static str
6486 = "MinBeforeNextUpdateSeconds";
6487 pub const CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT
: DWORD
= 5 * 60;
6488 pub const CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME
: &'
static str
6489 = "MinAfterNextUpdateSeconds";
6490 pub const CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT
: DWORD
= 5 * 60;
6491 pub const CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH
: &'
static str
6492 = "Software\\Policies\\Microsoft\\SystemCertificates\\ChainEngine\\Config";
6493 pub const CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME
: &'
static str
6494 = "ChainUrlRetrievalTimeoutMilliseconds";
6495 pub const CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT
: DWORD
= 15 * 1000;
6496 pub const CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME
: &'
static str
6497 = "ChainRevAccumulativeUrlRetrievalTimeoutMilliseconds";
6498 pub const CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT
: DWORD
6500 pub const CERT_RETR_BEHAVIOR_INET_AUTH_VALUE_NAME
: &'
static str = "EnableInetUnknownAuth";
6501 pub const CERT_RETR_BEHAVIOR_INET_STATUS_VALUE_NAME
: &'
static str = "EnableInetLocal";
6502 pub const CERT_RETR_BEHAVIOR_FILE_VALUE_NAME
: &'
static str = "AllowFileUrlScheme";
6503 pub const CERT_RETR_BEHAVIOR_LDAP_VALUE_NAME
: &'
static str = "DisableLDAPSignAndEncrypt";
6504 pub const CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME
: &'
static str
6505 = "CryptnetCachedOcspSwitchToCrlCount";
6506 pub const CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_DEFAULT
: DWORD
= 50;
6507 pub const CRYPTNET_CRL_BEFORE_OCSP_ENABLE
: DWORD
= 0xFFFFFFFF;
6508 pub const CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME
: &'
static str = "DisableAIAUrlRetrieval";
6509 pub const CERT_CHAIN_OPTIONS_VALUE_NAME
: &'
static str = "Options";
6510 pub const CERT_CHAIN_OPTION_DISABLE_AIA_URL_RETRIEVAL
: DWORD
= 0x2;
6511 pub const CERT_CHAIN_OPTION_ENABLE_SIA_URL_RETRIEVAL
: DWORD
= 0x4;
6512 pub const CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME
: &'
static str
6513 = "CrossCertDownloadIntervalHours";
6514 pub const CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_DEFAULT
: DWORD
= 24 * 7;
6515 pub const CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_VALUE_NAME
: &'
static str
6516 = "CRLValidityExtensionPeriod";
6517 pub const CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_DEFAULT
: DWORD
= 12;
6518 pub type HCERTCHAINENGINE
= HANDLE
;
6519 pub const HCCE_CURRENT_USER
: HCERTCHAINENGINE
= 0 as HCERTCHAINENGINE
;
6520 pub const HCCE_LOCAL_MACHINE
: HCERTCHAINENGINE
= 0x1 as HCERTCHAINENGINE
;
6521 pub const HCCE_SERIAL_LOCAL_MACHINE
: HCERTCHAINENGINE
= 0x2 as HCERTCHAINENGINE
;
6522 pub const CERT_CHAIN_CACHE_END_CERT
: DWORD
= 0x00000001;
6523 pub const CERT_CHAIN_THREAD_STORE_SYNC
: DWORD
= 0x00000002;
6524 pub const CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL
: DWORD
= 0x00000004;
6525 pub const CERT_CHAIN_USE_LOCAL_MACHINE_STORE
: DWORD
= 0x00000008;
6526 pub const CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE
: DWORD
= 0x00000010;
6527 pub const CERT_CHAIN_ENABLE_SHARE_STORE
: DWORD
= 0x00000020;
6528 STRUCT
!{struct CERT_CHAIN_ENGINE_CONFIG
{
6530 hRestrictedRoot
: HCERTSTORE
,
6531 hRestrictedTrust
: HCERTSTORE
,
6532 hRestrictedOther
: HCERTSTORE
,
6533 cAdditionalStore
: DWORD
,
6534 rghAdditionalStore
: *mut HCERTSTORE
,
6536 dwUrlRetrievalTimeout
: DWORD
,
6537 MaximumCachedCertificates
: DWORD
,
6538 CycleDetectionModulus
: DWORD
,
6539 hExclusiveRoot
: HCERTSTORE
,
6540 hExclusiveTrustedPeople
: HCERTSTORE
,
6541 dwExclusiveFlags
: DWORD
,
6543 pub type PCERT_CHAIN_ENGINE_CONFIG
= *mut CERT_CHAIN_ENGINE_CONFIG
;
6545 pub fn CertCreateCertificateChainEngine(
6546 pConfig
: PCERT_CHAIN_ENGINE_CONFIG
,
6547 phChainEngine
: *mut HCERTCHAINENGINE
,
6549 pub fn CertFreeCertificateChainEngine(
6550 hChainEngine
: HCERTCHAINENGINE
,
6552 pub fn CertResyncCertificateChainEngine(
6553 hChainEngine
: HCERTCHAINENGINE
,
6556 STRUCT
!{struct CERT_TRUST_STATUS
{
6557 dwErrorStatus
: DWORD
,
6558 dwInfoStatus
: DWORD
,
6560 pub type PCERT_TRUST_STATUS
= *mut CERT_TRUST_STATUS
;
6561 pub const CERT_TRUST_NO_ERROR
: DWORD
= 0x00000000;
6562 pub const CERT_TRUST_IS_NOT_TIME_VALID
: DWORD
= 0x00000001;
6563 pub const CERT_TRUST_IS_NOT_TIME_NESTED
: DWORD
= 0x00000002;
6564 pub const CERT_TRUST_IS_REVOKED
: DWORD
= 0x00000004;
6565 pub const CERT_TRUST_IS_NOT_SIGNATURE_VALID
: DWORD
= 0x00000008;
6566 pub const CERT_TRUST_IS_NOT_VALID_FOR_USAGE
: DWORD
= 0x00000010;
6567 pub const CERT_TRUST_IS_UNTRUSTED_ROOT
: DWORD
= 0x00000020;
6568 pub const CERT_TRUST_REVOCATION_STATUS_UNKNOWN
: DWORD
= 0x00000040;
6569 pub const CERT_TRUST_IS_CYCLIC
: DWORD
= 0x00000080;
6570 pub const CERT_TRUST_INVALID_EXTENSION
: DWORD
= 0x00000100;
6571 pub const CERT_TRUST_INVALID_POLICY_CONSTRAINTS
: DWORD
= 0x00000200;
6572 pub const CERT_TRUST_INVALID_BASIC_CONSTRAINTS
: DWORD
= 0x00000400;
6573 pub const CERT_TRUST_INVALID_NAME_CONSTRAINTS
: DWORD
= 0x00000800;
6574 pub const CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT
: DWORD
= 0x00001000;
6575 pub const CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT
: DWORD
= 0x00002000;
6576 pub const CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT
: DWORD
= 0x00004000;
6577 pub const CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT
: DWORD
= 0x00008000;
6578 pub const CERT_TRUST_IS_OFFLINE_REVOCATION
: DWORD
= 0x01000000;
6579 pub const CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY
: DWORD
= 0x02000000;
6580 pub const CERT_TRUST_IS_PARTIAL_CHAIN
: DWORD
= 0x00010000;
6581 pub const CERT_TRUST_CTL_IS_NOT_TIME_VALID
: DWORD
= 0x00020000;
6582 pub const CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID
: DWORD
= 0x00040000;
6583 pub const CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE
: DWORD
= 0x00080000;
6584 pub const CERT_TRUST_HAS_EXACT_MATCH_ISSUER
: DWORD
= 0x00000001;
6585 pub const CERT_TRUST_HAS_KEY_MATCH_ISSUER
: DWORD
= 0x00000002;
6586 pub const CERT_TRUST_HAS_NAME_MATCH_ISSUER
: DWORD
= 0x00000004;
6587 pub const CERT_TRUST_IS_SELF_SIGNED
: DWORD
= 0x00000008;
6588 pub const CERT_TRUST_AUTO_UPDATE_CA_REVOCATION
: DWORD
= 0x00000010;
6589 pub const CERT_TRUST_AUTO_UPDATE_END_REVOCATION
: DWORD
= 0x00000020;
6590 pub const CERT_TRUST_NO_OCSP_FAILOVER_TO_CRL
: DWORD
= 0x00000040;
6591 pub const CERT_TRUST_IS_KEY_ROLLOVER
: DWORD
= 0x00000080;
6592 pub const CERT_TRUST_SSL_HANDSHAKE_OCSP
: DWORD
= 0x00040000;
6593 pub const CERT_TRUST_SSL_TIME_VALID_OCSP
: DWORD
= 0x00080000;
6594 pub const CERT_TRUST_SSL_RECONNECT_OCSP
: DWORD
= 0x00100000;
6595 pub const CERT_TRUST_HAS_PREFERRED_ISSUER
: DWORD
= 0x00000100;
6596 pub const CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY
: DWORD
= 0x00000200;
6597 pub const CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS
: DWORD
= 0x00000400;
6598 pub const CERT_TRUST_IS_PEER_TRUSTED
: DWORD
= 0x00000800;
6599 pub const CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED
: DWORD
= 0x00001000;
6600 pub const CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE
: DWORD
= 0x00002000;
6601 pub const CERT_TRUST_IS_CA_TRUSTED
: DWORD
= 0x00004000;
6602 pub const CERT_TRUST_HAS_AUTO_UPDATE_WEAK_SIGNATURE
: DWORD
= 0x00008000;
6603 pub const CERT_TRUST_HAS_ALLOW_WEAK_SIGNATURE
: DWORD
= 0x00020000;
6604 pub const CERT_TRUST_IS_COMPLEX_CHAIN
: DWORD
= 0x00010000;
6605 pub const CERT_TRUST_SSL_TIME_VALID
: DWORD
= 0x01000000;
6606 pub const CERT_TRUST_NO_TIME_CHECK
: DWORD
= 0x02000000;
6607 STRUCT
!{struct CERT_REVOCATION_INFO
{
6609 dwRevocationResult
: DWORD
,
6610 pszRevocationOid
: LPCSTR
,
6611 pvOidSpecificInfo
: LPVOID
,
6612 fHasFreshnessTime
: BOOL
,
6613 dwFreshnessTime
: DWORD
,
6614 pCrlInfo
: PCERT_REVOCATION_CRL_INFO
,
6616 pub type PCERT_REVOCATION_INFO
= *mut CERT_REVOCATION_INFO
;
6617 STRUCT
!{struct CERT_TRUST_LIST_INFO
{
6619 pCtlEntry
: PCTL_ENTRY
,
6620 pCtlContext
: PCCTL_CONTEXT
,
6622 pub type PCERT_TRUST_LIST_INFO
= *mut CERT_TRUST_LIST_INFO
;
6623 STRUCT
!{struct CERT_CHAIN_ELEMENT
{
6625 pCertContext
: PCCERT_CONTEXT
,
6626 TrustStatus
: CERT_TRUST_STATUS
,
6627 pRevocationInfo
: PCERT_REVOCATION_INFO
,
6628 pIssuanceUsage
: PCERT_ENHKEY_USAGE
,
6629 pApplicationUsage
: PCERT_ENHKEY_USAGE
,
6630 pwszExtendedErrorInfo
: LPWSTR
,
6632 pub type PCERT_CHAIN_ELEMENT
= *mut CERT_CHAIN_ELEMENT
;
6633 pub type PCCERT_CHAIN_ELEMENT
= *const CERT_CHAIN_ELEMENT
;
6634 STRUCT
!{struct CERT_SIMPLE_CHAIN
{
6636 TrustStatus
: CERT_TRUST_STATUS
,
6638 rgpElement
: *mut PCERT_CHAIN_ELEMENT
,
6639 pTrustListInfo
: PCERT_TRUST_LIST_INFO
,
6640 fHasRevocationFreshnessTime
: BOOL
,
6641 dwRevocationFreshnessTime
: DWORD
,
6643 pub type PCERT_SIMPLE_CHAIN
= *mut CERT_SIMPLE_CHAIN
;
6644 pub type PCCERT_SIMPLE_CHAIN
= *const CERT_SIMPLE_CHAIN
;
6645 pub type PCERT_CHAIN_CONTEXT
= *mut CERT_CHAIN_CONTEXT
;
6646 pub type PCCERT_CHAIN_CONTEXT
= *const CERT_CHAIN_CONTEXT
;
6647 STRUCT
!{struct CERT_CHAIN_CONTEXT
{
6649 TrustStatus
: CERT_TRUST_STATUS
,
6651 rgpChain
: *mut PCERT_SIMPLE_CHAIN
,
6652 cLowerQualityChainContext
: DWORD
,
6653 rgpLowerQualityChainContext
: *mut PCCERT_CHAIN_CONTEXT
,
6654 fHasRevocationFreshnessTime
: BOOL
,
6655 dwRevocationFreshnessTime
: DWORD
,
6656 dwCreateFlags
: DWORD
,
6659 pub const USAGE_MATCH_TYPE_AND
: DWORD
= 0x00000000;
6660 pub const USAGE_MATCH_TYPE_OR
: DWORD
= 0x00000001;
6661 STRUCT
!{struct CERT_USAGE_MATCH
{
6663 Usage
: CERT_ENHKEY_USAGE
,
6665 pub type PCERT_USAGE_MATCH
= *mut CERT_USAGE_MATCH
;
6666 STRUCT
!{struct CTL_USAGE_MATCH
{
6670 pub type PCTL_USAGE_MATCH
= *mut CTL_USAGE_MATCH
;
6671 STRUCT
!{struct CERT_CHAIN_PARA
{
6673 RequestedUsage
: CERT_USAGE_MATCH
,
6674 RequestedIssuancePolicy
: CERT_USAGE_MATCH
,
6675 dwUrlRetrievalTimeout
: DWORD
,
6676 fCheckRevocationFreshnessTime
: BOOL
,
6677 dwRevocationFreshnessTime
: DWORD
,
6678 pftCacheResync
: LPFILETIME
,
6679 pStrongSignPara
: PCCERT_STRONG_SIGN_PARA
,
6680 dwStrongSignFlags
: DWORD
,
6682 pub type PCERT_CHAIN_PARA
= *mut CERT_CHAIN_PARA
;
6683 pub const CERT_CHAIN_STRONG_SIGN_DISABLE_END_CHECK_FLAG
: DWORD
= 0x00000001;
6684 pub const CERT_CHAIN_REVOCATION_CHECK_END_CERT
: DWORD
= 0x10000000;
6685 pub const CERT_CHAIN_REVOCATION_CHECK_CHAIN
: DWORD
= 0x20000000;
6686 pub const CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
: DWORD
= 0x40000000;
6687 pub const CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY
: DWORD
= 0x80000000;
6688 pub const CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT
: DWORD
= 0x08000000;
6689 pub const CERT_CHAIN_REVOCATION_CHECK_OCSP_CERT
: DWORD
= 0x04000000;
6690 pub const CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING
: DWORD
= 0x00000040;
6691 pub const CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS
: DWORD
= 0x00000080;
6692 pub const CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE
: DWORD
= 0x00000100;
6693 pub const CERT_CHAIN_TIMESTAMP_TIME
: DWORD
= 0x00000200;
6694 pub const CERT_CHAIN_ENABLE_PEER_TRUST
: DWORD
= 0x00000400;
6695 pub const CERT_CHAIN_DISABLE_MY_PEER_TRUST
: DWORD
= 0x00000800;
6696 pub const CERT_CHAIN_DISABLE_MD2_MD4
: DWORD
= 0x00001000;
6697 pub const CERT_CHAIN_DISABLE_AIA
: DWORD
= 0x00002000;
6698 pub const CERT_CHAIN_HAS_MOTW
: DWORD
= 0x00004000;
6699 pub const CERT_CHAIN_ONLY_ADDITIONAL_AND_AUTH_ROOT
: DWORD
= 0x00008000;
6700 pub const CERT_CHAIN_OPT_IN_WEAK_SIGNATURE
: DWORD
= 0x00010000;
6702 pub fn CertGetCertificateChain(
6703 hChainEngine
: HCERTCHAINENGINE
,
6704 pCertContext
: PCCERT_CONTEXT
,
6706 hAdditionalStore
: HCERTSTORE
,
6707 pChainPara
: PCERT_CHAIN_PARA
,
6710 ppChainContext
: *mut PCCERT_CHAIN_CONTEXT
,
6712 pub fn CertFreeCertificateChain(
6713 pChainContext
: PCCERT_CHAIN_CONTEXT
,
6715 pub fn CertDuplicateCertificateChain(
6716 pChainContext
: PCCERT_CHAIN_CONTEXT
,
6717 ) -> PCCERT_CHAIN_CONTEXT
;
6719 STRUCT
!{struct CERT_REVOCATION_CHAIN_PARA
{
6721 hChainEngine
: HCERTCHAINENGINE
,
6722 hAdditionalStore
: HCERTSTORE
,
6723 dwChainFlags
: DWORD
,
6724 dwUrlRetrievalTimeout
: DWORD
,
6725 pftCurrentTime
: LPFILETIME
,
6726 pftCacheResync
: LPFILETIME
,
6727 cbMaxUrlRetrievalByteCount
: DWORD
,
6729 pub const REVOCATION_OID_CRL_REVOCATION
: LPCSTR
= 1 as LPCSTR
;
6730 STRUCT
!{struct CRL_REVOCATION_INFO
{
6731 pCrlEntry
: PCRL_ENTRY
,
6732 pCrlContext
: PCCRL_CONTEXT
,
6733 pCrlIssuerChain
: PCCERT_CHAIN_CONTEXT
,
6735 pub type PCRL_REVOCATION_INFO
= *mut CRL_REVOCATION_INFO
;
6737 pub fn CertFindChainInStore(
6738 hCertStore
: HCERTSTORE
,
6739 dwCertEncodingType
: DWORD
,
6742 pvFindPara
: *const c_void
,
6743 pPrevChainContext
: PCCERT_CHAIN_CONTEXT
,
6744 ) -> PCCERT_CHAIN_CONTEXT
;
6746 pub const CERT_CHAIN_FIND_BY_ISSUER
: DWORD
= 1;
6747 FN
!{stdcall
PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK(
6748 pCert
: PCCERT_CONTEXT
,
6749 pvFindArg
: *mut c_void
,
6751 STRUCT
!{struct CERT_CHAIN_FIND_ISSUER_PARA
{
6753 pszUsageIdentifier
: LPCSTR
,
6755 dwAcquirePrivateKeyFlags
: DWORD
,
6757 rgIssuer
: *mut CERT_NAME_BLOB
,
6758 pfnFindCallback
: PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK
,
6759 pvFindArg
: *mut c_void
,
6760 pdwIssuerChainIndex
: *mut DWORD
,
6761 pdwIssuerElementIndex
: *mut DWORD
,
6763 pub type PCERT_CHAIN_FIND_ISSUER_PARA
= *mut CERT_CHAIN_FIND_ISSUER_PARA
;
6764 pub type CERT_CHAIN_FIND_BY_ISSUER_PARA
= CERT_CHAIN_FIND_ISSUER_PARA
;
6765 pub type PCERT_CHAIN_FIND_BY_ISSUER_PARA
= *mut CERT_CHAIN_FIND_ISSUER_PARA
;
6766 pub const CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG
: DWORD
= 0x0001;
6767 pub const CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG
: DWORD
= 0x0002;
6768 pub const CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG
: DWORD
= 0x0004;
6769 pub const CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG
: DWORD
= 0x0008;
6770 pub const CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG
: DWORD
= 0x4000;
6771 pub const CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG
: DWORD
= 0x8000;
6772 STRUCT
!{struct CERT_CHAIN_POLICY_PARA
{
6775 pvExtraPolicyPara
: *mut c_void
,
6777 pub type PCERT_CHAIN_POLICY_PARA
= *mut CERT_CHAIN_POLICY_PARA
;
6778 STRUCT
!{struct CERT_CHAIN_POLICY_STATUS
{
6782 lElementIndex
: LONG
,
6783 pvExtraPolicyStatus
: *mut c_void
,
6785 pub type PCERT_CHAIN_POLICY_STATUS
= *mut CERT_CHAIN_POLICY_STATUS
;
6786 pub const CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG
: DWORD
= 0x00000001;
6787 pub const CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG
: DWORD
= 0x00000002;
6788 pub const CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG
: DWORD
= 0x00000004;
6789 pub const CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG
: DWORD
= 0x00000008;
6790 pub const CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS
: DWORD
6791 = CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG
6792 | CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG
6793 | CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG
;
6794 pub const CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG
: DWORD
= 0x00000010;
6795 pub const CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG
: DWORD
= 0x00000020;
6796 pub const CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG
: DWORD
= 0x00000040;
6797 pub const CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG
: DWORD
= 0x00000080;
6798 pub const CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG
: DWORD
= 0x00000100;
6799 pub const CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG
: DWORD
= 0x00000200;
6800 pub const CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG
: DWORD
= 0x00000400;
6801 pub const CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG
: DWORD
= 0x00000800;
6802 pub const CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS
: DWORD
6803 = CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG
6804 | CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG
6805 | CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG
6806 | CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG
;
6807 pub const CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG
: DWORD
= 0x00008000;
6808 pub const CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG
: DWORD
= 0x00004000;
6809 pub const CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG
: DWORD
= 0x00002000;
6810 pub const CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG
: DWORD
= 0x00001000;
6811 pub const CERT_CHAIN_POLICY_IGNORE_WEAK_SIGNATURE_FLAG
: DWORD
= 0x08000000;
6813 pub fn CertVerifyCertificateChainPolicy(
6814 pszPolicyOID
: LPCSTR
,
6815 pChainContext
: PCCERT_CHAIN_CONTEXT
,
6816 pPolicyPara
: PCERT_CHAIN_POLICY_PARA
,
6817 pPolicyStatus
: PCERT_CHAIN_POLICY_STATUS
,
6820 pub const CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC
: &'
static str
6821 = "CertDllVerifyCertificateChainPolicy";
6822 pub const CERT_CHAIN_POLICY_BASE
: LPCSTR
= 1 as LPCSTR
;
6823 pub const CERT_CHAIN_POLICY_AUTHENTICODE
: LPCSTR
= 2 as LPCSTR
;
6824 pub const CERT_CHAIN_POLICY_AUTHENTICODE_TS
: LPCSTR
= 3 as LPCSTR
;
6825 pub const CERT_CHAIN_POLICY_SSL
: LPCSTR
= 4 as LPCSTR
;
6826 pub const CERT_CHAIN_POLICY_BASIC_CONSTRAINTS
: LPCSTR
= 5 as LPCSTR
;
6827 pub const CERT_CHAIN_POLICY_NT_AUTH
: LPCSTR
= 6 as LPCSTR
;
6828 pub const CERT_CHAIN_POLICY_MICROSOFT_ROOT
: LPCSTR
= 7 as LPCSTR
;
6829 pub const CERT_CHAIN_POLICY_EV
: LPCSTR
= 8 as LPCSTR
;
6830 pub const CERT_CHAIN_POLICY_SSL_F12
: LPCSTR
= 9 as LPCSTR
;
6831 pub const CERT_CHAIN_POLICY_SSL_HPKP_HEADER
: LPCSTR
= 10 as LPCSTR
;
6832 pub const CERT_CHAIN_POLICY_THIRD_PARTY_ROOT
: LPCSTR
= 11 as LPCSTR
;
6833 pub const CERT_CHAIN_POLICY_SSL_KEY_PIN
: LPCSTR
= 12 as LPCSTR
;
6834 STRUCT
!{struct AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
{
6836 dwRegPolicySettings
: DWORD
,
6837 pSignerInfo
: PCMSG_SIGNER_INFO
,
6839 pub type PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
6840 = *mut AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
;
6841 STRUCT
!{struct AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
{
6845 pub type PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
6846 = *mut AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
;
6847 STRUCT
!{struct AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
{
6849 dwRegPolicySettings
: DWORD
,
6852 pub type PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
6853 = *mut AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
;
6854 UNION
!{union HTTPSPolicyCallbackData_u
{
6856 cbStruct cbStruct_mut
: DWORD
,
6857 cbSize cbSize_mut
: DWORD
,
6859 STRUCT
!{struct HTTPSPolicyCallbackData
{
6860 u
: HTTPSPolicyCallbackData_u
,
6863 pwszServerName
: *mut WCHAR
,
6865 pub type PHTTPSPolicyCallbackData
= *mut HTTPSPolicyCallbackData
;
6866 pub type SSL_EXTRA_CERT_CHAIN_POLICY_PARA
= HTTPSPolicyCallbackData
;
6867 pub type PSSL_EXTRA_CERT_CHAIN_POLICY_PARA
= *mut HTTPSPolicyCallbackData
;
6868 pub const AUTHTYPE_CLIENT
: DWORD
= 1;
6869 pub const AUTHTYPE_SERVER
: DWORD
= 2;
6870 pub const BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG
: DWORD
= 0x80000000;
6871 pub const BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG
: DWORD
= 0x40000000;
6872 pub const MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG
: DWORD
= 0x00010000;
6873 pub const MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG
: DWORD
= 0x00020000;
6874 pub const MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG
: DWORD
= 0x00040000;
6875 STRUCT
!{struct EV_EXTRA_CERT_CHAIN_POLICY_PARA
{
6877 dwRootProgramQualifierFlags
: DWORD
,
6879 pub type PEV_EXTRA_CERT_CHAIN_POLICY_PARA
= *mut EV_EXTRA_CERT_CHAIN_POLICY_PARA
;
6880 STRUCT
!{struct EV_EXTRA_CERT_CHAIN_POLICY_STATUS
{
6882 dwQualifiers
: DWORD
,
6883 dwIssuanceUsageIndex
: DWORD
,
6885 pub type PEV_EXTRA_CERT_CHAIN_POLICY_STATUS
= *mut EV_EXTRA_CERT_CHAIN_POLICY_STATUS
;
6886 pub const SSL_F12_ERROR_TEXT_LENGTH
: usize = 256;
6887 STRUCT
!{struct SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS
{
6889 dwErrorLevel
: DWORD
,
6890 dwErrorCategory
: DWORD
,
6892 wszErrorText
: [WCHAR
; SSL_F12_ERROR_TEXT_LENGTH
],
6894 pub type PSSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS
= *mut SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS
;
6895 pub const CERT_CHAIN_POLICY_SSL_F12_SUCCESS_LEVEL
: DWORD
= 0;
6896 pub const CERT_CHAIN_POLICY_SSL_F12_WARNING_LEVEL
: DWORD
= 1;
6897 pub const CERT_CHAIN_POLICY_SSL_F12_ERROR_LEVEL
: DWORD
= 2;
6898 pub const CERT_CHAIN_POLICY_SSL_F12_NONE_CATEGORY
: DWORD
= 0;
6899 pub const CERT_CHAIN_POLICY_SSL_F12_WEAK_CRYPTO_CATEGORY
: DWORD
= 1;
6900 pub const CERT_CHAIN_POLICY_SSL_F12_ROOT_PROGRAM_CATEGORY
: DWORD
= 2;
6901 pub const SSL_HPKP_PKP_HEADER_INDEX
: usize = 0;
6902 pub const SSL_HPKP_PKP_RO_HEADER_INDEX
: usize = 1;
6903 pub const SSL_HPKP_HEADER_COUNT
: usize = 2;
6904 STRUCT
!{struct SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA
{
6907 pwszServerName
: LPWSTR
,
6908 rgpszHpkpValue
: [LPSTR
; SSL_HPKP_HEADER_COUNT
],
6910 pub type PSSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA
6911 = *mut SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA
;
6912 STRUCT
!{struct SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA
{
6915 pwszServerName
: PCWSTR
,
6917 pub type PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA
= *mut SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA
;
6918 pub const SSL_KEY_PIN_ERROR_TEXT_LENGTH
: usize = 512;
6919 STRUCT
!{struct SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS
{
6922 wszErrorText
: [WCHAR
; SSL_KEY_PIN_ERROR_TEXT_LENGTH
],
6924 pub type PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS
6925 = *mut SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS
;
6926 pub const CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_ERROR
: LONG
= -2;
6927 pub const CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_ERROR
: LONG
= -1;
6928 pub const CERT_CHAIN_POLICY_SSL_KEY_PIN_SUCCESS
: LONG
= 0;
6929 pub const CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_WARNING
: LONG
= 1;
6930 pub const CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_WARNING
: LONG
= 2;
6932 pub fn CryptStringToBinaryA(
6936 pbBinary
: *mut BYTE
,
6937 pcbBinary
: *mut DWORD
,
6938 pdwSkip
: *mut DWORD
,
6939 pdwFlags
: *mut DWORD
,
6941 pub fn CryptStringToBinaryW(
6945 pbBinary
: *mut BYTE
,
6946 pcbBinary
: *mut DWORD
,
6947 pdwSkip
: *mut DWORD
,
6948 pdwFlags
: *mut DWORD
,
6950 pub fn CryptBinaryToStringA(
6951 pbBinary
: *const BYTE
,
6955 pcchString
: *mut DWORD
,
6957 pub fn CryptBinaryToStringW(
6958 pbBinary
: *const BYTE
,
6962 pcchString
: *mut DWORD
,
6965 pub const CRYPT_STRING_BASE64HEADER
: DWORD
= 0x00000000;
6966 pub const CRYPT_STRING_BASE64
: DWORD
= 0x00000001;
6967 pub const CRYPT_STRING_BINARY
: DWORD
= 0x00000002;
6968 pub const CRYPT_STRING_BASE64REQUESTHEADER
: DWORD
= 0x00000003;
6969 pub const CRYPT_STRING_HEX
: DWORD
= 0x00000004;
6970 pub const CRYPT_STRING_HEXASCII
: DWORD
= 0x00000005;
6971 pub const CRYPT_STRING_BASE64_ANY
: DWORD
= 0x00000006;
6972 pub const CRYPT_STRING_ANY
: DWORD
= 0x00000007;
6973 pub const CRYPT_STRING_HEX_ANY
: DWORD
= 0x00000008;
6974 pub const CRYPT_STRING_BASE64X509CRLHEADER
: DWORD
= 0x00000009;
6975 pub const CRYPT_STRING_HEXADDR
: DWORD
= 0x0000000a;
6976 pub const CRYPT_STRING_HEXASCIIADDR
: DWORD
= 0x0000000b;
6977 pub const CRYPT_STRING_HEXRAW
: DWORD
= 0x0000000c;
6978 pub const CRYPT_STRING_BASE64URI
: DWORD
= 0x0000000d;
6979 pub const CRYPT_STRING_ENCODEMASK
: DWORD
= 0x000000ff;
6980 pub const CRYPT_STRING_RESERVED100
: DWORD
= 0x00000100;
6981 pub const CRYPT_STRING_RESERVED200
: DWORD
= 0x00000200;
6982 pub const CRYPT_STRING_PERCENTESCAPE
: DWORD
= 0x08000000;
6983 pub const CRYPT_STRING_HASHDATA
: DWORD
= 0x10000000;
6984 pub const CRYPT_STRING_STRICT
: DWORD
= 0x20000000;
6985 pub const CRYPT_STRING_NOCRLF
: DWORD
= 0x40000000;
6986 pub const CRYPT_STRING_NOCR
: DWORD
= 0x80000000;
6987 pub const szOID_PKCS_12_PbeIds
: &'
static str = "1.2.840.113549.1.12.1";
6988 pub const szOID_PKCS_12_pbeWithSHA1And128BitRC4
: &'
static str = "1.2.840.113549.1.12.1.1";
6989 pub const szOID_PKCS_12_pbeWithSHA1And40BitRC4
: &'
static str = "1.2.840.113549.1.12.1.2";
6990 pub const szOID_PKCS_12_pbeWithSHA1And3KeyTripleDES
: &'
static str = "1.2.840.113549.1.12.1.3";
6991 pub const szOID_PKCS_12_pbeWithSHA1And2KeyTripleDES
: &'
static str = "1.2.840.113549.1.12.1.4";
6992 pub const szOID_PKCS_12_pbeWithSHA1And128BitRC2
: &'
static str = "1.2.840.113549.1.12.1.5";
6993 pub const szOID_PKCS_12_pbeWithSHA1And40BitRC2
: &'
static str = "1.2.840.113549.1.12.1.6";
6994 STRUCT
!{struct CRYPT_PKCS12_PBE_PARAMS
{
6999 pub fn PFXImportCertStore(
7000 pPFX
: *mut CRYPT_DATA_BLOB
,
7001 szPassword
: LPCWSTR
,
7005 pub const PKCS12_IMPORT_SILENT
: DWORD
= 0x00000040;
7006 pub const CRYPT_USER_KEYSET
: DWORD
= 0x00001000;
7007 pub const PKCS12_PREFER_CNG_KSP
: DWORD
= 0x00000100;
7008 pub const PKCS12_ALWAYS_CNG_KSP
: DWORD
= 0x00000200;
7009 pub const PKCS12_ONLY_CERTIFICATES
: DWORD
= 0x00000400;
7010 pub const PKCS12_ONLY_NOT_ENCRYPTED_CERTIFICATES
: DWORD
= 0x00000800;
7011 pub const PKCS12_ALLOW_OVERWRITE_KEY
: DWORD
= 0x00004000;
7012 pub const PKCS12_NO_PERSIST_KEY
: DWORD
= 0x00008000;
7013 pub const PKCS12_IMPORT_RESERVED_MASK
: DWORD
= 0xffff0000;
7014 pub const PKCS12_OBJECT_LOCATOR_ALL_IMPORT_FLAGS
: DWORD
= PKCS12_ALWAYS_CNG_KSP
7015 | PKCS12_NO_PERSIST_KEY
| PKCS12_IMPORT_SILENT
| PKCS12_INCLUDE_EXTENDED_PROPERTIES
;
7016 pub const PKCS12_ONLY_CERTIFICATES_PROVIDER_TYPE
: DWORD
= 0;
7017 pub const PKCS12_ONLY_CERTIFICATES_PROVIDER_NAME
: &'
static str = "PfxProvider";
7018 pub const PKCS12_ONLY_CERTIFICATES_CONTAINER_NAME
: &'
static str = "PfxContainer";
7020 pub fn PFXIsPFXBlob(
7021 pPFX
: *mut CRYPT_DATA_BLOB
,
7023 pub fn PFXVerifyPassword(
7024 pPFX
: *mut CRYPT_DATA_BLOB
,
7025 szPassword
: LPCWSTR
,
7028 pub fn PFXExportCertStoreEx(
7030 pPFX
: *mut CRYPT_DATA_BLOB
,
7031 szPassword
: LPCWSTR
,
7032 pvPara
: *mut c_void
,
7036 pub const REPORT_NO_PRIVATE_KEY
: DWORD
= 0x0001;
7037 pub const REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
: DWORD
= 0x0002;
7038 pub const EXPORT_PRIVATE_KEYS
: DWORD
= 0x0004;
7039 pub const PKCS12_INCLUDE_EXTENDED_PROPERTIES
: DWORD
= 0x0010;
7040 pub const PKCS12_PROTECT_TO_DOMAIN_SIDS
: DWORD
= 0x0020;
7041 pub const PKCS12_EXPORT_SILENT
: DWORD
= 0x0040;
7042 pub const PKCS12_DISABLE_ENCRYPT_CERTIFICATES
: DWORD
= 0x0100;
7043 pub const PKCS12_ENCRYPT_CERTIFICATES
: DWORD
= 0x0200;
7044 pub const PKCS12_EXPORT_ECC_CURVE_PARAMETERS
: DWORD
= 0x1000;
7045 pub const PKCS12_EXPORT_ECC_CURVE_OID
: DWORD
= 0x2000;
7046 pub const PKCS12_EXPORT_RESERVED_MASK
: DWORD
= 0xffff0000;
7047 pub const PKCS12_CONFIG_REGPATH
: &'
static str
7048 = "Software\\Microsoft\\Windows\\CurrentVersion\\PFX";
7049 pub const PKCS12_ENCRYPT_CERTIFICATES_VALUE_NAME
: &'
static str = "EncryptCertificates";
7051 pub fn PFXExportCertStore(
7053 pPFX
: *mut CRYPT_DATA_BLOB
,
7054 szPassword
: LPCWSTR
,
7058 pub type HCERT_SERVER_OCSP_RESPONSE
= *mut c_void
;
7059 pub type PCERT_SERVER_OCSP_RESPONSE_CONTEXT
= *mut CERT_SERVER_OCSP_RESPONSE_CONTEXT
;
7060 pub type PCCERT_SERVER_OCSP_RESPONSE_CONTEXT
= *const CERT_SERVER_OCSP_RESPONSE_CONTEXT
;
7061 STRUCT
!{struct CERT_SERVER_OCSP_RESPONSE_CONTEXT
{
7063 pbEncodedOcspResponse
: *mut BYTE
,
7064 cbEncodedOcspResponse
: DWORD
,
7066 FN
!{stdcall
PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK(
7067 pChainContext
: PCCERT_CHAIN_CONTEXT
,
7068 pServerOcspResponseContext
: PCCERT_SERVER_OCSP_RESPONSE_CONTEXT
,
7069 pNewCrlContext
: PCCRL_CONTEXT
,
7070 pPrevCrlContext
: PCCRL_CONTEXT
,
7072 dwWriteOcspFileError
: DWORD
,
7074 STRUCT
!{struct CERT_SERVER_OCSP_RESPONSE_OPEN_PARA
{
7077 pcbUsedSize
: *mut DWORD
,
7078 pwszOcspDirectory
: PWSTR
,
7079 pfnUpdateCallback
: PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK
,
7080 pvUpdateCallbackArg
: PVOID
,
7082 pub type PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA
= *mut CERT_SERVER_OCSP_RESPONSE_OPEN_PARA
;
7083 pub const CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_READ_FLAG
: DWORD
= 0x00000001;
7084 pub const CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_WRITE_FLAG
: DWORD
= 0x00000002;
7086 pub fn CertOpenServerOcspResponse(
7087 pChainContext
: PCCERT_CHAIN_CONTEXT
,
7090 ) -> HCERT_SERVER_OCSP_RESPONSE
;
7092 pub const CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG
: DWORD
= 0x00000001;
7094 pub fn CertAddRefServerOcspResponse(
7095 hServerOcspResponse
: HCERT_SERVER_OCSP_RESPONSE
,
7097 pub fn CertCloseServerOcspResponse(
7098 hServerOcspResponse
: HCERT_SERVER_OCSP_RESPONSE
,
7101 pub fn CertGetServerOcspResponseContext(
7102 hServerOcspResponse
: HCERT_SERVER_OCSP_RESPONSE
,
7105 ) -> PCCERT_SERVER_OCSP_RESPONSE_CONTEXT
;
7106 pub fn CertAddRefServerOcspResponseContext(
7107 pServerOcspResponseContext
: PCCERT_SERVER_OCSP_RESPONSE_CONTEXT
,
7109 pub fn CertFreeServerOcspResponseContext(
7110 pServerOcspResponseContext
: PCCERT_SERVER_OCSP_RESPONSE_CONTEXT
,
7112 pub fn CertRetrieveLogoOrBiometricInfo(
7113 pCertContext
: PCCERT_CONTEXT
,
7114 lpszLogoOrBiometricType
: LPCSTR
,
7115 dwRetrievalFlags
: DWORD
,
7118 pvReserved
: *mut c_void
,
7119 ppbData
: *mut *mut BYTE
,
7120 pcbData
: *mut DWORD
,
7121 ppwszMimeType
: *mut LPWSTR
,
7124 pub const CERT_RETRIEVE_ISSUER_LOGO
: LPCSTR
= 1 as LPCSTR
;
7125 pub const CERT_RETRIEVE_SUBJECT_LOGO
: LPCSTR
= 2 as LPCSTR
;
7126 pub const CERT_RETRIEVE_COMMUNITY_LOGO
: LPCSTR
= 3 as LPCSTR
;
7127 pub const CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE
: LPCSTR
= 1000 as LPCSTR
;
7128 pub const CERT_RETRIEVE_BIOMETRIC_PICTURE_TYPE
: LPCSTR
7129 = (1000 + CERT_BIOMETRIC_PICTURE_TYPE
) as LPCSTR
;
7130 pub const CERT_RETRIEVE_BIOMETRIC_SIGNATURE_TYPE
: LPCSTR
7131 = (1000 + CERT_BIOMETRIC_SIGNATURE_TYPE
) as LPCSTR
;
7132 STRUCT
!{struct CERT_SELECT_CHAIN_PARA
{
7133 hChainEngine
: HCERTCHAINENGINE
,
7135 hAdditionalStore
: HCERTSTORE
,
7136 pChainPara
: PCERT_CHAIN_PARA
,
7139 pub type PCERT_SELECT_CHAIN_PARA
= *mut CERT_SELECT_CHAIN_PARA
;
7140 pub type PCCERT_SELECT_CHAIN_PARA
= *const CERT_SELECT_CHAIN_PARA
;
7141 pub const CERT_SELECT_MAX_PARA
: DWORD
= 500;
7142 STRUCT
!{struct CERT_SELECT_CRITERIA
{
7145 ppPara
: *mut *mut c_void
,
7147 pub type PCERT_SELECT_CRITERIA
= *mut CERT_SELECT_CRITERIA
;
7148 pub type PCCERT_SELECT_CRITERIA
= *const CERT_SELECT_CRITERIA
;
7149 pub const CERT_SELECT_BY_ENHKEY_USAGE
: DWORD
= 1;
7150 pub const CERT_SELECT_BY_KEY_USAGE
: DWORD
= 2;
7151 pub const CERT_SELECT_BY_POLICY_OID
: DWORD
= 3;
7152 pub const CERT_SELECT_BY_PROV_NAME
: DWORD
= 4;
7153 pub const CERT_SELECT_BY_EXTENSION
: DWORD
= 5;
7154 pub const CERT_SELECT_BY_SUBJECT_HOST_NAME
: DWORD
= 6;
7155 pub const CERT_SELECT_BY_ISSUER_ATTR
: DWORD
= 7;
7156 pub const CERT_SELECT_BY_SUBJECT_ATTR
: DWORD
= 8;
7157 pub const CERT_SELECT_BY_ISSUER_NAME
: DWORD
= 9;
7158 pub const CERT_SELECT_BY_PUBLIC_KEY
: DWORD
= 10;
7159 pub const CERT_SELECT_BY_TLS_SIGNATURES
: DWORD
= 11;
7160 pub const CERT_SELECT_BY_ISSUER_DISPLAYNAME
: DWORD
= 12;
7161 pub const CERT_SELECT_BY_FRIENDLYNAME
: DWORD
= 13;
7162 pub const CERT_SELECT_BY_THUMBPRINT
: DWORD
= 14;
7163 pub const CERT_SELECT_LAST
: DWORD
= CERT_SELECT_BY_TLS_SIGNATURES
;
7164 pub const CERT_SELECT_MAX
: DWORD
= CERT_SELECT_LAST
* 3;
7165 pub const CERT_SELECT_ALLOW_EXPIRED
: DWORD
= 0x00000001;
7166 pub const CERT_SELECT_TRUSTED_ROOT
: DWORD
= 0x00000002;
7167 pub const CERT_SELECT_DISALLOW_SELFSIGNED
: DWORD
= 0x00000004;
7168 pub const CERT_SELECT_HAS_PRIVATE_KEY
: DWORD
= 0x00000008;
7169 pub const CERT_SELECT_HAS_KEY_FOR_SIGNATURE
: DWORD
= 0x00000010;
7170 pub const CERT_SELECT_HAS_KEY_FOR_KEY_EXCHANGE
: DWORD
= 0x00000020;
7171 pub const CERT_SELECT_HARDWARE_ONLY
: DWORD
= 0x00000040;
7172 pub const CERT_SELECT_ALLOW_DUPLICATES
: DWORD
= 0x00000080;
7173 pub const CERT_SELECT_IGNORE_AUTOSELECT
: DWORD
= 0x00000100;
7175 pub fn CertSelectCertificateChains(
7176 pSelectionContext
: LPCGUID
,
7178 pChainParameters
: PCCERT_SELECT_CHAIN_PARA
,
7180 rgpCriteria
: PCCERT_SELECT_CRITERIA
,
7182 pcSelection
: PDWORD
,
7183 pprgpSelection
: *mut *mut PCCERT_CHAIN_CONTEXT
,
7185 pub fn CertFreeCertificateChainList(
7186 prgpSelection
: *mut PCCERT_CHAIN_CONTEXT
,
7189 pub const TIMESTAMP_VERSION
: DWORD
= 1;
7190 STRUCT
!{struct CRYPT_TIMESTAMP_REQUEST
{
7192 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
7193 HashedMessage
: CRYPT_DER_BLOB
,
7194 pszTSAPolicyId
: LPSTR
,
7195 Nonce
: CRYPT_INTEGER_BLOB
,
7198 rgExtension
: PCERT_EXTENSION
,
7200 pub type PCRYPT_TIMESTAMP_REQUEST
= *mut CRYPT_TIMESTAMP_REQUEST
;
7201 STRUCT
!{struct CRYPT_TIMESTAMP_RESPONSE
{
7204 rgFreeText
: *mut LPWSTR
,
7205 FailureInfo
: CRYPT_BIT_BLOB
,
7206 ContentInfo
: CRYPT_DER_BLOB
,
7208 pub type PCRYPT_TIMESTAMP_RESPONSE
= *mut CRYPT_TIMESTAMP_RESPONSE
;
7209 pub const TIMESTAMP_STATUS_GRANTED
: DWORD
= 0;
7210 pub const TIMESTAMP_STATUS_GRANTED_WITH_MODS
: DWORD
= 1;
7211 pub const TIMESTAMP_STATUS_REJECTED
: DWORD
= 2;
7212 pub const TIMESTAMP_STATUS_WAITING
: DWORD
= 3;
7213 pub const TIMESTAMP_STATUS_REVOCATION_WARNING
: DWORD
= 4;
7214 pub const TIMESTAMP_STATUS_REVOKED
: DWORD
= 5;
7215 pub const TIMESTAMP_FAILURE_BAD_ALG
: DWORD
= 0;
7216 pub const TIMESTAMP_FAILURE_BAD_REQUEST
: DWORD
= 2;
7217 pub const TIMESTAMP_FAILURE_BAD_FORMAT
: DWORD
= 5;
7218 pub const TIMESTAMP_FAILURE_TIME_NOT_AVAILABLE
: DWORD
= 14;
7219 pub const TIMESTAMP_FAILURE_POLICY_NOT_SUPPORTED
: DWORD
= 15;
7220 pub const TIMESTAMP_FAILURE_EXTENSION_NOT_SUPPORTED
: DWORD
= 16;
7221 pub const TIMESTAMP_FAILURE_INFO_NOT_AVAILABLE
: DWORD
= 17;
7222 pub const TIMESTAMP_FAILURE_SYSTEM_FAILURE
: DWORD
= 25;
7223 STRUCT
!{struct CRYPT_TIMESTAMP_ACCURACY
{
7228 pub type PCRYPT_TIMESTAMP_ACCURACY
= *mut CRYPT_TIMESTAMP_ACCURACY
;
7229 STRUCT
!{struct CRYPT_TIMESTAMP_INFO
{
7231 pszTSAPolicyId
: LPSTR
,
7232 HashAlgorithm
: CRYPT_ALGORITHM_IDENTIFIER
,
7233 HashedMessage
: CRYPT_DER_BLOB
,
7234 SerialNumber
: CRYPT_INTEGER_BLOB
,
7236 pvAccuracy
: PCRYPT_TIMESTAMP_ACCURACY
,
7238 Nonce
: CRYPT_DER_BLOB
,
7239 Tsa
: CRYPT_DER_BLOB
,
7241 rgExtension
: PCERT_EXTENSION
,
7243 pub type PCRYPT_TIMESTAMP_INFO
= *mut CRYPT_TIMESTAMP_INFO
;
7244 STRUCT
!{struct CRYPT_TIMESTAMP_CONTEXT
{
7246 pbEncoded
: *mut BYTE
,
7247 pTimeStamp
: PCRYPT_TIMESTAMP_INFO
,
7249 pub type PCRYPT_TIMESTAMP_CONTEXT
= *mut CRYPT_TIMESTAMP_CONTEXT
;
7250 STRUCT
!{struct CRYPT_TIMESTAMP_PARA
{
7251 pszTSAPolicyId
: LPCSTR
,
7252 fRequestCerts
: BOOL
,
7253 Nonce
: CRYPT_INTEGER_BLOB
,
7255 rgExtension
: PCERT_EXTENSION
,
7257 pub type PCRYPT_TIMESTAMP_PARA
= *mut CRYPT_TIMESTAMP_PARA
;
7259 pub fn CryptRetrieveTimeStamp(
7261 dwRetrievalFlags
: DWORD
,
7264 pPara
: *const CRYPT_TIMESTAMP_PARA
,
7265 pbData
: *const BYTE
,
7267 ppTsContext
: *mut PCRYPT_TIMESTAMP_CONTEXT
,
7268 ppTsSigner
: *mut PCCERT_CONTEXT
,
7269 phStore
: *mut HCERTSTORE
,
7272 pub const TIMESTAMP_DONT_HASH_DATA
: DWORD
= 0x00000001;
7273 pub const TIMESTAMP_VERIFY_CONTEXT_SIGNATURE
: DWORD
= 0x00000020;
7274 pub const TIMESTAMP_NO_AUTH_RETRIEVAL
: DWORD
= 0x00020000;
7276 pub fn CryptVerifyTimeStampSignature(
7277 pbTSContentInfo
: *const BYTE
,
7278 cbTSContentInfo
: DWORD
,
7279 pbData
: *const BYTE
,
7281 hAdditionalStore
: HCERTSTORE
,
7282 ppTsContext
: *mut PCRYPT_TIMESTAMP_CONTEXT
,
7283 ppTsSigner
: *mut PCCERT_CONTEXT
,
7284 phStore
: *mut HCERTSTORE
,
7287 pub const CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE
: DWORD
= 1;
7288 pub const CRYPT_OBJECT_LOCATOR_LAST_RESERVED_NAME_TYPE
: DWORD
= 32;
7289 pub const CRYPT_OBJECT_LOCATOR_FIRST_RESERVED_USER_NAME_TYPE
: DWORD
= 33;
7290 pub const CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE
: DWORD
= 0x0000FFFF;
7291 pub const SSL_OBJECT_LOCATOR_PFX_FUNC
: &'
static str = "SslObjectLocatorInitializePfx";
7292 pub const SSL_OBJECT_LOCATOR_ISSUER_LIST_FUNC
: &'
static str
7293 = "SslObjectLocatorInitializeIssuerList";
7294 pub const SSL_OBJECT_LOCATOR_CERT_VALIDATION_CONFIG_FUNC
: &'
static str
7295 = "SslObjectLocatorInitializeCertValidationConfig";
7296 pub const CRYPT_OBJECT_LOCATOR_RELEASE_SYSTEM_SHUTDOWN
: DWORD
= 1;
7297 pub const CRYPT_OBJECT_LOCATOR_RELEASE_SERVICE_STOP
: DWORD
= 2;
7298 pub const CRYPT_OBJECT_LOCATOR_RELEASE_PROCESS_EXIT
: DWORD
= 3;
7299 pub const CRYPT_OBJECT_LOCATOR_RELEASE_DLL_UNLOAD
: DWORD
= 4;
7300 FN
!{stdcall
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH(
7302 rgIdentifierOrNameList
: *mut PCERT_NAME_BLOB
,
7303 dwIdentifierOrNameListCount
: DWORD
,
7305 FN
!{stdcall
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET(
7306 pPluginContext
: LPVOID
,
7307 pIdentifier
: PCRYPT_DATA_BLOB
,
7309 pNameBlob
: PCERT_NAME_BLOB
,
7310 ppbContent
: *mut PBYTE
,
7311 pcbContent
: *mut DWORD
,
7312 ppwszPassword
: *mut PCWSTR
,
7313 ppIdentifier
: *mut PCRYPT_DATA_BLOB
,
7315 FN
!{stdcall
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE(
7317 pPluginContext
: LPVOID
,
7319 FN
!{stdcall
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD(
7320 pPluginContext
: LPVOID
,
7321 pwszPassword
: PCWSTR
,
7323 FN
!{stdcall
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE(
7324 pPluginContext
: LPVOID
,
7327 FN
!{stdcall
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER(
7328 pPluginContext
: LPVOID
,
7329 pIdentifier
: PCRYPT_DATA_BLOB
,
7331 STRUCT
!{struct CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE
{
7333 pfnGet
: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET
,
7334 pfnRelease
: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE
,
7335 pfnFreePassword
: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD
,
7336 pfnFree
: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE
,
7337 pfnFreeIdentifier
: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER
,
7339 pub type PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE
= *mut CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE
;
7340 FN
!{stdcall
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE(
7341 pfnFlush
: PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH
,
7343 pdwExpectedObjectCount
: *mut DWORD
,
7344 ppFuncTable
: *mut PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE
,
7345 ppPluginContext
: *mut *mut c_void
,
7348 pub fn CertIsWeakHash(
7349 dwHashUseType
: DWORD
,
7350 pwszCNGHashAlgid
: LPCWSTR
,
7351 dwChainFlags
: DWORD
,
7352 pSignerChainContext
: PCCERT_CHAIN_CONTEXT
,
7353 pTimeStamp
: LPFILETIME
,
7354 pwszFileName
: LPCWSTR
,
7357 FN
!{stdcall
PFN_CERT_IS_WEAK_HASH(
7358 dwHashUseType
: DWORD
,
7359 pwszCNGHashAlgid
: LPCWSTR
,
7360 dwChainFlags
: DWORD
,
7361 pSignerChainContext
: PCCERT_CHAIN_CONTEXT
,
7362 pTimeStamp
: LPFILETIME
,
7363 pwszFileName
: LPCWSTR
,
7365 pub const CERT_FILE_HASH_USE_TYPE
: DWORD
= 1;
7366 pub const CERT_TIMESTAMP_HASH_USE_TYPE
: DWORD
= 2;