source: vendor/w32api/3.6/include/wincrypt.h@ 2780

Last change on this file since 2780 was 2720, checked in by bird, 19 years ago

w32api v3.6

File size: 26.3 KB
Line 
1#ifndef _WINCRYPT_H
2#define _WINCRYPT_H
3#if __GNUC__ >= 3
4#pragma GCC system_header
5#endif
6
7#ifndef WINADVAPI
8#define WINADVAPI
9#endif
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
15#define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0"
16#define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0"
17#define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0"
18#define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider"
19#define MS_STRONG_PROV_W L"Microsoft Strong Cryptographic Provider"
20#define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider"
21#define MS_DEF_RSA_SIG_PROV_W L"Microsoft RSA Signature Cryptographic Provider"
22#define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider"
23#define MS_DEF_RSA_SCHANNEL_PROV_W L"Microsoft RSA SChannel Cryptographic Provider"
24#define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider"
25#define MS_DEF_DSS_PROV_W L"Microsoft Base DSS Cryptographic Provider"
26#define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
27#define MS_DEF_DSS_DH_PROV_W L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
28#define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
29#define MS_ENH_DSS_DH_PROV_W L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
30#define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider"
31#define MS_DEF_DH_SCHANNEL_PROV_W L"Microsoft DH SChannel Cryptographic Provider"
32#define MS_SCARD_PROV_A "Microsoft Base Smart Card Crypto Provider"
33#define MS_SCARD_PROV_W L"Microsoft Base Smart Card Crypto Provider"
34#if (_WIN32_WINNT == 0x0501)
35#define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
36#define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
37#elif (_WIN32_WINNT > 0x0501)
38#define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider"
39#define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider"
40#endif
41
42#define GET_ALG_CLASS(x) (x&57344)
43#define GET_ALG_TYPE(x) (x&7680)
44#define GET_ALG_SID(x) (x&511)
45#define ALG_CLASS_ANY 0
46#define ALG_CLASS_SIGNATURE 8192
47#define ALG_CLASS_MSG_ENCRYPT 16384
48#define ALG_CLASS_DATA_ENCRYPT 24576
49#define ALG_CLASS_HASH 32768
50#define ALG_CLASS_KEY_EXCHANGE 40960
51#define ALG_CLASS_ALL 57344 /* (7 << 13) */
52#define ALG_TYPE_ANY 0
53#define ALG_TYPE_DSS 512
54#define ALG_TYPE_RSA 1024
55#define ALG_TYPE_BLOCK 1536
56#define ALG_TYPE_STREAM 2048
57#define ALG_TYPE_DH 2560 /* (5 << 9) */
58#define ALG_TYPE_SECURECHANNEL 3072 /* (6 << 9) */
59#define ALG_SID_ANY 0
60#define ALG_SID_RSA_ANY 0
61#define ALG_SID_RSA_PKCS 1
62#define ALG_SID_RSA_MSATWORK 2
63#define ALG_SID_RSA_ENTRUST 3
64#define ALG_SID_RSA_PGP 4
65#define ALG_SID_DSS_ANY 0
66#define ALG_SID_DSS_PKCS 1
67#define ALG_SID_DSS_DMS 2
68#define ALG_SID_DES 1
69#define ALG_SID_3DES 3
70#define ALG_SID_DESX 4
71#define ALG_SID_IDEA 5
72#define ALG_SID_CAST 6
73#define ALG_SID_SAFERSK64 7
74#define ALG_SID_SAFERSK128 8
75#define ALG_SID_3DES_112 9
76#define ALG_SID_SKIPJACK 10
77#define ALG_SID_TEK 11
78#define ALG_SID_CYLINK_MEK 12
79#define ALG_SID_RC5 13
80#define ALG_SID_RC2 2
81#define ALG_SID_RC4 1
82#define ALG_SID_SEAL 2
83#define ALG_SID_MD2 1
84#define ALG_SID_MD4 2
85#define ALG_SID_MD5 3
86#define ALG_SID_SHA 4
87#define ALG_SID_MAC 5
88#define ALG_SID_RIPEMD 6
89#define ALG_SID_RIPEMD160 7
90#define ALG_SID_SSL3SHAMD5 8
91#define ALG_SID_HMAC 9
92#define ALG_SID_TLS1PRF 10
93#define ALG_SID_AES_128 14
94#define ALG_SID_AES_192 15
95#define ALG_SID_AES_256 16
96#define ALG_SID_AES 17
97#define ALG_SID_EXAMPLE 80
98
99#define CALG_MD2 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD2)
100#define CALG_MD4 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD4)
101#define CALG_MD5 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD5)
102#define CALG_SHA (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA)
103#define CALG_SHA1 CALG_SHA
104#define CALG_MAC (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MAC)
105#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|3)
106#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|12)
107#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|10)
108#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|4)
109#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
110#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_DSS|ALG_SID_DSS_ANY)
111#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
112#define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
113#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
114#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
115#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
116#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|ALG_SID_DSS_DMS)
117#define CALG_DESX (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX)
118#define CALG_TLS1PRF (ALG_CLASS_DHASH|ALG_TYPE_ANY|ALG_SID_TLS1PRF)
119#define CALG_AES_128 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128)
120#define CALG_AES_192 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192)
121#define CALG_AES_256 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256)
122#define CALG_AES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES)
123
124#define CRYPT_VERIFYCONTEXT 0xF0000000
125#define CRYPT_NEWKEYSET 8
126#define CRYPT_DELETEKEYSET 16
127#define CRYPT_MACHINE_KEYSET 32
128#define CRYPT_SILENT 64
129#define CRYPT_EXPORTABLE 1
130#define CRYPT_USER_PROTECTED 2
131#define CRYPT_CREATE_SALT 4
132#define CRYPT_UPDATE_KEY 8
133#define SIMPLEBLOB 1
134#define PUBLICKEYBLOB 6
135#define PRIVATEKEYBLOB 7
136#define PLAINTEXTKEYBLOB 8
137#define OPAQUEKEYBLOB 9
138#define PUBLICKEYBLOBEX 10
139#define SYMMETRICWRAPKEYBLOB 11
140#define AT_KEYEXCHANGE 1
141#define AT_SIGNATURE 2
142#define CRYPT_USERDATA 1
143#define PKCS5_PADDING 1
144#define CRYPT_MODE_CBC 1
145#define CRYPT_MODE_ECB 2
146#define CRYPT_MODE_OFB 3
147#define CRYPT_MODE_CFB 4
148#define CRYPT_MODE_CTS 5
149#define CRYPT_MODE_CBCI 6
150#define CRYPT_MODE_CFBP 7
151#define CRYPT_MODE_OFBP 8
152#define CRYPT_MODE_CBCOFM 9
153#define CRYPT_MODE_CBCOFMI 10
154#define CRYPT_ENCRYPT 1
155#define CRYPT_DECRYPT 2
156#define CRYPT_EXPORT 4
157#define CRYPT_READ 8
158#define CRYPT_WRITE 16
159#define CRYPT_MAC 32
160#define HP_ALGID 1
161#define HP_HASHVAL 2
162#define HP_HASHSIZE 4
163#define HP_HMAC_INFO 5
164#define CRYPT_FAILED FALSE
165#define CRYPT_SUCCEED TRUE
166#define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED)
167#define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED)
168#define PP_ENUMALGS 1
169#define PP_ENUMCONTAINERS 2
170#define PP_IMPTYPE 3
171#define PP_NAME 4
172#define PP_VERSION 5
173#define PP_CONTAINER 6
174#define PP_CHANGE_PASSWORD 7
175#define PP_KEYSET_SEC_DESCR 8
176#define PP_CERTCHAIN 9
177#define PP_KEY_TYPE_SUBTYPE 10
178#define PP_PROVTYPE 16
179#define PP_KEYSTORAGE 17
180#define PP_APPLI_CERT 18
181#define PP_SYM_KEYSIZE 19
182#define PP_SESSION_KEYSIZE 20
183#define PP_UI_PROMPT 21
184#define PP_ENUMALGS_EX 22
185#define PP_ENUMMANDROOTS 25
186#define PP_ENUMELECTROOTS 26
187#define PP_KEYSET_TYPE 27
188#define PP_ADMIN_PIN 31
189#define PP_KEYEXCHANGE_PIN 32
190#define PP_SIGNATURE_PIN 33
191#define PP_SIG_KEYSIZE_INC 34
192#define PP_KEYX_KEYSIZE_INC 35
193#define PP_UNIQUE_CONTAINER 36
194#define PP_SGC_INFO 37
195#define PP_USE_HARDWARE_RNG 38
196#define PP_KEYSPEC 39
197#define PP_ENUMEX_SIGNING_PROT 40
198#define CRYPT_FIRST 1
199#define CRYPT_NEXT 2
200#define CRYPT_IMPL_HARDWARE 1
201#define CRYPT_IMPL_SOFTWARE 2
202#define CRYPT_IMPL_MIXED 3
203#define CRYPT_IMPL_UNKNOWN 4
204#define PROV_RSA_FULL 1
205#define PROV_RSA_SIG 2
206#define PROV_DSS 3
207#define PROV_FORTEZZA 4
208#define PROV_MS_MAIL 5
209#define PROV_SSL 6
210#define PROV_STT_MER 7
211#define PROV_STT_ACQ 8
212#define PROV_STT_BRND 9
213#define PROV_STT_ROOT 10
214#define PROV_STT_ISS 11
215#define PROV_RSA_SCHANNEL 12
216#define PROV_DSS_DH 13
217#define PROV_EC_ECDSA_SIG 14
218#define PROV_EC_ECNRA_SIG 15
219#define PROV_EC_ECDSA_FULL 16
220#define PROV_EC_ECNRA_FULL 17
221#define PROV_DH_SCHANNEL 18
222#define PROV_SPYRUS_LYNKS 20
223#define PROV_RNG 21
224#define PROV_INTEL_SEC 22
225#define PROV_RSA_AES 24
226#define MAXUIDLEN 64
227#define CUR_BLOB_VERSION 2
228#define X509_ASN_ENCODING 1
229#define PKCS_7_ASN_ENCODING 65536
230#define CERT_V1 0
231#define CERT_V2 1
232#define CERT_V3 2
233#define CERT_E_CHAINING (-2146762486)
234#define CERT_E_CN_NO_MATCH (-2146762481)
235#define CERT_E_EXPIRED (-2146762495)
236#define CERT_E_PURPOSE (-2146762490)
237#define CERT_E_REVOCATION_FAILURE (-2146762482)
238#define CERT_E_REVOKED (-2146762484)
239#define CERT_E_ROLE (-2146762493)
240#define CERT_E_UNTRUSTEDROOT (-2146762487)
241#define CERT_E_UNTRUSTEDTESTROOT (-2146762483)
242#define CERT_E_VALIDITYPERIODNESTING (-2146762494)
243#define CERT_E_WRONG_USAGE (-2146762480)
244#define CERT_E_PATHLENCONST (-2146762492)
245#define CERT_E_CRITICAL (-2146762491)
246#define CERT_E_ISSUERCHAINING (-2146762489)
247#define CERT_E_MALFORMED (-2146762488)
248#define CRYPT_E_REVOCATION_OFFLINE (-2146885613)
249#define CRYPT_E_REVOKED (-2146885616)
250#define TRUST_E_BASIC_CONSTRAINTS (-2146869223)
251#define TRUST_E_CERT_SIGNATURE (-2146869244)
252#define TRUST_E_FAIL (-2146762485)
253#define CERT_TRUST_NO_ERROR 0
254#define CERT_TRUST_IS_NOT_TIME_VALID 1
255#define CERT_TRUST_IS_NOT_TIME_NESTED 2
256#define CERT_TRUST_IS_REVOKED 4
257#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 8
258#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 16
259#define CERT_TRUST_IS_UNTRUSTED_ROOT 32
260#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 64
261#define CERT_TRUST_IS_CYCLIC 128
262#define CERT_TRUST_IS_PARTIAL_CHAIN 65536
263#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 131072
264#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 262144
265#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 524288
266#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 1
267#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 2
268#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 4
269#define CERT_TRUST_IS_SELF_SIGNED 8
270#define CERT_TRUST_IS_COMPLEX_CHAIN 65536
271#define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1)
272#define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2)
273#define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3)
274#define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4)
275#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5)
276#define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6)
277#define USAGE_MATCH_TYPE_AND 0
278#define USAGE_MATCH_TYPE_OR 1
279#define CERT_SIMPLE_NAME_STR 1
280#define CERT_OID_NAME_STR 2
281#define CERT_X500_NAME_STR 3
282#define CERT_NAME_STR_SEMICOLON_FLAG 1073741824
283#define CERT_NAME_STR_CRLF_FLAG 134217728
284#define CERT_NAME_STR_NO_PLUS_FLAG 536870912
285#define CERT_NAME_STR_NO_QUOTING_FLAG 268435456
286#define CERT_NAME_STR_REVERSE_FLAG 33554432
287#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 131072
288#define CERT_FIND_ANY 0
289#define CERT_FIND_CERT_ID 1048576
290#define CERT_FIND_CTL_USAGE 655360
291#define CERT_FIND_ENHKEY_USAGE 655360
292#define CERT_FIND_EXISTING 851968
293#define CERT_FIND_HASH 65536
294#define CERT_FIND_ISSUER_ATTR 196612
295#define CERT_FIND_ISSUER_NAME 131076
296#define CERT_FIND_ISSUER_OF 786432
297#define CERT_FIND_KEY_IDENTIFIER 983040
298#define CERT_FIND_KEY_SPEC 589824
299#define CERT_FIND_MD5_HASH 262144
300#define CERT_FIND_PROPERTY 327680
301#define CERT_FIND_PUBLIC_KEY 393216
302#define CERT_FIND_SHA1_HASH 65536
303#define CERT_FIND_SIGNATURE_HASH 917504
304#define CERT_FIND_SUBJECT_ATTR 196615
305#define CERT_FIND_SUBJECT_CERT 720896
306#define CERT_FIND_SUBJECT_NAME 131079
307#define CERT_FIND_SUBJECT_STR_A 458759
308#define CERT_FIND_SUBJECT_STR_W 524295
309#define CERT_FIND_ISSUER_STR_A 458756
310#define CERT_FIND_ISSUER_STR_W 524292
311#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 16
312#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 1
313#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 8
314#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 32
315#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 2
316#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 2
317#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 1
318#define CERT_CHAIN_FIND_BY_ISSUER 1
319#define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 1
320#define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 2
321#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 32768
322#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 4
323#define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 8
324#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 16384
325#define CERT_STORE_PROV_SYSTEM 10
326#define CERT_SYSTEM_STORE_LOCAL_MACHINE 131072
327#define szOID_PKIX_KP_SERVER_AUTH "4235600"
328#define szOID_SERVER_GATED_CRYPTO "4235658"
329#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1"
330#define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2"
331#define CRYPT_NOHASHOID 0x00000001
332#define CRYPT_NO_SALT 0x10
333#define CRYPT_PREGEN 0x40
334#define CRYPT_RECIPIENT 0x10
335#define CRYPT_INITIATOR 0x40
336#define CRYPT_ONLINE 0x80
337#define CRYPT_SF 0x100
338#define CRYPT_CREATE_IV 0x200
339#define CRYPT_KEK 0x400
340#define CRYPT_DATA_KEY 0x800
341#define CRYPT_VOLATILE 0x1000
342#define CRYPT_SGCKEY 0x2000
343#define KP_IV 0x00000001
344#define KP_SALT 0x00000002
345#define KP_PADDING 0x00000003
346#define KP_MODE 0x00000004
347#define KP_MODE_BITS 0x00000005
348#define KP_PERMISSIONS 0x00000006
349#define KP_ALGID 0x00000007
350#define KP_BLOCKLEN 0x00000008
351#define KP_KEYLEN 0x00000009
352#define KP_SALT_EX 0x0000000a
353#define KP_P 0x0000000b
354#define KP_G 0x0000000c
355#define KP_Q 0x0000000d
356#define KP_X 0x0000000e
357#define KP_Y 0x0000000f
358#define KP_RA 0x00000010
359#define KP_RB 0x00000011
360#define KP_INFO 0x00000012
361#define KP_EFFECTIVE_KEYLEN 0x00000013
362#define KP_SCHANNEL_ALG 0x00000014
363#define KP_PUB_PARAMS 0x00000027
364#define CRYPT_FLAG_PCT1 0x0001
365#define CRYPT_FLAG_SSL2 0x0002
366#define CRYPT_FLAG_SSL3 0x0004
367#define CRYPT_FLAG_TLS1 0x0008
368#define CRYPT_FLAG_IPSEC 0x0010
369#define CRYPT_FLAG_SIGNING 0x0020
370#define SCHANNEL_MAC_KEY 0x00000000
371#define SCHANNEL_ENC_KEY 0x00000001
372#define INTERNATIONAL_USAGE 0x00000001
373
374typedef UINT ALG_ID;
375typedef struct _VTableProvStruc {FARPROC FuncVerifyImage;} VTableProvStruc,*PVTableProvStruc;
376typedef ULONG HCRYPTPROV;
377typedef ULONG HCRYPTKEY;
378typedef ULONG HCRYPTHASH;
379typedef PVOID HCERTSTORE;
380typedef PVOID HCRYPTMSG;
381typedef PVOID HCERTCHAINENGINE;
382typedef struct _CRYPTOAPI_BLOB {
383 DWORD cbData;
384 BYTE* pbData;
385} CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB,
386 CRYPT_UINT_BLOB, *PCRYPT_UINT_BLOB,
387 CRYPT_OBJID_BLOB, *PCRYPT_OBJID_BLOB,
388 CERT_NAME_BLOB, *PCERT_NAME_BLOB,
389 CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB,
390 CERT_BLOB, *PCERT_BLOB,
391 CRL_BLOB, *PCRL_BLOB,
392 DATA_BLOB, *PDATA_BLOB,
393 CRYPT_DATA_BLOB, *PCRYPT_DATA_BLOB,
394 CRYPT_HASH_BLOB, *PCRYPT_HASH_BLOB,
395 CRYPT_DIGEST_BLOB, *PCRYPT_DIGEST_BLOB,
396 CRYPT_DER_BLOB, *PCRYPT_DER_BLOB,
397 CRYPT_ATTR_BLOB, *PCRYPT_ATTR_BLOB;
398/* not described in SDK; has the same layout as HTTPSPolicyCallbackData */
399typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA {
400 DWORD cbStruct;
401 DWORD dwAuthType;
402 DWORD fdwChecks;
403 LPWSTR pwszServerName;
404} SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA,
405 HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData;
406/* #if (_WIN32_WINNT>=0x500) */
407typedef struct _CERT_CHAIN_POLICY_PARA {
408 DWORD cbSize;
409 DWORD dwFlags;
410 void* pvExtraPolicyPara;
411} CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA;
412typedef struct _CERT_CHAIN_POLICY_STATUS {
413 DWORD cbSize;
414 DWORD dwError;
415 LONG lChainIndex;
416 LONG lElementIndex;
417 void* pvExtraPolicyStatus;
418} CERT_CHAIN_POLICY_STATUS, *PCERT_CHAIN_POLICY_STATUS;
419/* #endif */
420typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
421 LPSTR pszObjId;
422 CRYPT_OBJID_BLOB Parameters;
423} CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;
424typedef struct _CRYPT_BIT_BLOB {
425 DWORD cbData;
426 BYTE* pbData;
427 DWORD cUnusedBits;
428} CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;
429typedef struct _CERT_PUBLIC_KEY_INFO {
430 CRYPT_ALGORITHM_IDENTIFIER Algorithm;
431 CRYPT_BIT_BLOB PublicKey;
432} CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;
433typedef struct _CERT_EXTENSION {
434 LPSTR pszObjId;
435 BOOL fCritical;
436 CRYPT_OBJID_BLOB Value;
437} CERT_EXTENSION, *PCERT_EXTENSION;
438typedef struct _CERT_INFO {
439 DWORD dwVersion;
440 CRYPT_INTEGER_BLOB SerialNumber;
441 CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
442 CERT_NAME_BLOB Issuer;
443 FILETIME NotBefore;
444 FILETIME NotAfter;
445 CERT_NAME_BLOB Subject;
446 CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
447 CRYPT_BIT_BLOB IssuerUniqueId;
448 CRYPT_BIT_BLOB SubjectUniqueId;
449 DWORD cExtension;
450 PCERT_EXTENSION rgExtension;
451} CERT_INFO, *PCERT_INFO;
452typedef struct _CERT_CONTEXT {
453 DWORD dwCertEncodingType;
454 BYTE* pbCertEncoded;
455 DWORD cbCertEncoded;
456 PCERT_INFO pCertInfo;
457 HCERTSTORE hCertStore;
458} CERT_CONTEXT, *PCERT_CONTEXT;
459typedef const CERT_CONTEXT *PCCERT_CONTEXT;
460typedef struct _CTL_USAGE {
461 DWORD cUsageIdentifier;
462 LPSTR *rgpszUsageIdentifier;
463} CTL_USAGE, *PCTRL_USAGE,
464 CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;
465typedef struct _CERT_USAGE_MATCH {
466 DWORD dwType;
467 CERT_ENHKEY_USAGE Usage;
468} CERT_USAGE_MATCH, *PCERT_USAGE_MATCH;
469/* #if (_WIN32_WINNT>=0x500) */
470typedef struct _CERT_CHAIN_PARA {
471 DWORD cbSize;
472 CERT_USAGE_MATCH RequestedUsage;
473#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
474 CERT_USAGE_MATCH RequestedIssuancePolicy;
475 DWORD dwUrlRetrievalTimeout;
476 BOOL fCheckRevocationFreshnessTime;
477 DWORD dwRevocationFreshnessTime;
478#endif
479} CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;
480typedef BOOL (WINAPI *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK)(PCCERT_CONTEXT,void*);
481typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA {