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