source: vendor/w32api/current/include/wincrypt.h

Last change on this file 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 {
482 DWORD cbSize;
483 LPCSTR pszUsageIdentifier;
484 DWORD dwKeySpec;
485 DWORD dwAcquirePrivateKeyFlags;
486 DWORD cIssuer;
487 CERT_NAME_BLOB* rgIssuer;
488 PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback;
489 void* pvFindArg;
490 DWORD* pdwIssuerChainIndex;
491 DWORD* pdwIssuerElementIndex;
492} CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA;
493/* #endif */
494typedef struct _CERT_TRUST_STATUS {
495 DWORD dwErrorStatus;
496 DWORD dwInfoStatus;
497} CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;
498typedef struct _CRL_ENTRY {
499 CRYPT_INTEGER_BLOB SerialNumber;
500 FILETIME RevocationDate;
501 DWORD cExtension;
502 PCERT_EXTENSION rgExtension;
503} CRL_ENTRY, *PCRL_ENTRY;
504typedef struct _CRL_INFO {
505 DWORD dwVersion;
506 CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
507 CERT_NAME_BLOB Issuer;
508 FILETIME ThisUpdate;
509 FILETIME NextUpdate;
510 DWORD cCRLEntry;
511 PCRL_ENTRY rgCRLEntry;
512 DWORD cExtension;
513 PCERT_EXTENSION rgExtension;
514} CRL_INFO, *PCRL_INFO;
515typedef struct _CRL_CONTEXT {
516 DWORD dwCertEncodingType;
517 BYTE* pbCrlEncoded;
518 DWORD cbCrlEncoded;
519 PCRL_INFO pCrlInfo;
520 HCERTSTORE hCertStore;
521} CRL_CONTEXT, *PCRL_CONTEXT;
522typedef const CRL_CONTEXT *PCCRL_CONTEXT;
523typedef struct _CERT_REVOCATION_CRL_INFO {
524 DWORD cbSize;
525 PCCRL_CONTEXT pBaseCRLContext;
526 PCCRL_CONTEXT pDeltaCRLContext;
527 PCRL_ENTRY pCrlEntry;
528 BOOL fDeltaCrlEntry;
529} CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO;
530typedef struct _CERT_REVOCATION_INFO {
531 DWORD cbSize;
532 DWORD dwRevocationResult;
533 LPCSTR pszRevocationOid;
534 LPVOID pvOidSpecificInfo;
535 BOOL fHasFreshnessTime;
536 DWORD dwFreshnessTime;
537 PCERT_REVOCATION_CRL_INFO pCrlInfo;
538} CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO;
539/* #if (_WIN32_WINNT>=0x500) */
540typedef struct _CERT_CHAIN_ELEMENT {
541 DWORD cbSize;
542 PCCERT_CONTEXT pCertContext;
543 CERT_TRUST_STATUS TrustStatus;
544 PCERT_REVOCATION_INFO pRevocationInfo;
545 PCERT_ENHKEY_USAGE pIssuanceUsage;
546 PCERT_ENHKEY_USAGE pApplicationUsage;
547} CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;
548/* #endif */
549typedef struct _CRYPT_ATTRIBUTE {
550 LPSTR pszObjId;
551 DWORD cValue;
552 PCRYPT_ATTR_BLOB rgValue;
553} CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;
554typedef struct _CTL_ENTRY {
555 CRYPT_DATA_BLOB SubjectIdentifier;
556 DWORD cAttribute;
557 PCRYPT_ATTRIBUTE rgAttribute;
558} CTL_ENTRY, *PCTL_ENTRY;
559typedef struct _CTL_INFO {
560 DWORD dwVersion;
561 CTL_USAGE SubjectUsage;
562 CRYPT_DATA_BLOB ListIdentifier;
563 CRYPT_INTEGER_BLOB SequenceNumber;
564 FILETIME ThisUpdate;
565 FILETIME NextUpdate;
566 CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm;
567 DWORD cCTLEntry;
568 PCTL_ENTRY rgCTLEntry;
569 DWORD cExtension;
570 PCERT_EXTENSION rgExtension;
571} CTL_INFO, *PCTL_INFO;
572typedef struct _CTL_CONTEXT {
573 DWORD dwMsgAndCertEncodingType;
574 BYTE* pbCtlEncoded;
575 DWORD cbCtlEncoded;
576 PCTL_INFO pCtlInfo;
577 HCERTSTORE hCertStore;
578 HCRYPTMSG hCryptMsg;
579 BYTE* pbCtlContent;
580 DWORD cbCtlContent;
581} CTL_CONTEXT, *PCTL_CONTEXT;
582typedef const CTL_CONTEXT *PCCTL_CONTEXT;
583typedef struct _CERT_TRUST_LIST_INFO {
584 DWORD cbSize;
585 PCTL_ENTRY pCtlEntry;
586 PCCTL_CONTEXT pCtlContext;
587} CERT_TRUST_LIST_INFO, *PCERT_TRUST_LIST_INFO;
588typedef struct _CERT_SIMPLE_CHAIN {
589 DWORD cbSize;
590 CERT_TRUST_STATUS TrustStatus;
591 DWORD cElement;
592 PCERT_CHAIN_ELEMENT* rgpElement;
593 PCERT_TRUST_LIST_INFO pTrustListInfo;
594 BOOL fHasRevocationFreshnessTime;
595 DWORD dwRevocationFreshnessTime;
596} CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;
597/* #if (_WIN32_WINNT>=0x500) */
598typedef const struct _CERT_CHAIN_CONTEXT* PCCERT_CHAIN_CONTEXT;
599typedef struct _CERT_CHAIN_CONTEXT {
600 DWORD cbSize;
601 CERT_TRUST_STATUS TrustStatus;
602 DWORD cChain;
603 PCERT_SIMPLE_CHAIN* rgpChain;
604 DWORD cLowerQualityChainContext;
605 PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext;
606 BOOL fHasRevocationFreshnessTime;
607 DWORD dwRevocationFreshnessTime;
608} CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;
609/* #endif */
610typedef struct _PROV_ENUMALGS {
611 ALG_ID aiAlgid;
612 DWORD dwBitLen;
613 DWORD dwNameLen;
614 CHAR szName[20];
615} PROV_ENUMALGS;
616typedef struct _PUBLICKEYSTRUC {
617 BYTE bType;
618 BYTE bVersion;
619 WORD reserved;
620 ALG_ID aiKeyAlg;
621} BLOBHEADER, PUBLICKEYSTRUC;
622typedef struct _RSAPUBKEY {
623 DWORD magic;
624 DWORD bitlen;
625 DWORD pubexp;
626} RSAPUBKEY;
627typedef struct _HMAC_Info
628{
629 ALG_ID HashAlgid;
630 BYTE* pbInnerString;
631 DWORD cbInnerString;
632 BYTE* pbOuterString;
633 DWORD cbOuterString;
634} HMAC_INFO, *PHMAC_INFO;
635
636BOOL WINAPI CertCloseStore(HCERTSTORE,DWORD);
637BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE,PCCERT_CONTEXT,LPFILETIME,HCERTSTORE,PCERT_CHAIN_PARA,DWORD,LPVOID,PCCERT_CHAIN_CONTEXT*);
638BOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR,PCCERT_CHAIN_CONTEXT,PCERT_CHAIN_POLICY_PARA,PCERT_CHAIN_POLICY_STATUS);
639void WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT);
640DWORD WINAPI CertNameToStrA(DWORD,PCERT_NAME_BLOB,DWORD,LPSTR,DWORD);
641DWORD WINAPI CertNameToStrW(DWORD,PCERT_NAME_BLOB,DWORD,LPWSTR,DWORD);
642HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV,LPCSTR);
643HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV,LPCWSTR);
644HCERTSTORE WINAPI CertOpenStore(LPCSTR,DWORD,HCRYPTPROV,DWORD,const void*);
645PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CONTEXT);
646BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT);
647PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE,PCCERT_CONTEXT,PCCERT_CONTEXT,DWORD*);
648PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CHAIN_CONTEXT);
649
650WINADVAPI BOOL WINAPI CryptAcquireContextA(HCRYPTPROV*,LPCSTR,LPCSTR,DWORD,DWORD);
651WINADVAPI BOOL WINAPI CryptAcquireContextW(HCRYPTPROV*,LPCWSTR,LPCWSTR,DWORD,DWORD);
652WINADVAPI BOOL WINAPI CryptContextAddRef(HCRYPTPROV,DWORD*,DWORD);
653WINADVAPI BOOL WINAPI CryptReleaseContext(HCRYPTPROV,DWORD);
654WINADVAPI BOOL WINAPI CryptGenKey(HCRYPTPROV,ALG_ID,DWORD,HCRYPTKEY*);
655WINADVAPI BOOL WINAPI CryptDeriveKey(HCRYPTPROV,ALG_ID,HCRYPTHASH,DWORD,HCRYPTKEY*);
656WINADVAPI BOOL WINAPI CryptDestroyKey(HCRYPTKEY);
657#if (WINVER >= 0x0500)
658WINADVAPI BOOL WINAPI CryptDuplicateHash(HCRYPTHASH,DWORD*,DWORD,HCRYPTHASH*);
659WINADVAPI BOOL WINAPI CryptDuplicateKey(HCRYPTKEY,DWORD*,DWORD,HCRYPTKEY*);
660#endif
661WINADVAPI BOOL WINAPI CryptSetKeyParam(HCRYPTKEY,DWORD,PBYTE,DWORD);
662WINADVAPI BOOL WINAPI CryptGetKeyParam(HCRYPTKEY,DWORD,PBYTE,PDWORD,DWORD);
663WINADVAPI BOOL WINAPI CryptSetHashParam(HCRYPTHASH,DWORD,PBYTE,DWORD);
664WINADVAPI BOOL WINAPI CryptGetHashParam(HCRYPTHASH,DWORD,PBYTE,PDWORD,DWORD);
665WINADVAPI BOOL WINAPI CryptSetProvParam(HCRYPTPROV,DWORD,PBYTE,DWORD);
666WINADVAPI BOOL WINAPI CryptGetProvParam(HCRYPTPROV,DWORD,PBYTE,PDWORD,DWORD);
667WINADVAPI BOOL WINAPI CryptGenRandom(HCRYPTPROV,DWORD,PBYTE);
668WINADVAPI BOOL WINAPI CryptGetUserKey(HCRYPTPROV,DWORD,HCRYPTKEY*);
669WINADVAPI BOOL WINAPI CryptExportKey(HCRYPTKEY,HCRYPTKEY,DWORD,DWORD,PBYTE,PDWORD);
670WINADVAPI BOOL WINAPI CryptImportKey(HCRYPTPROV,PBYTE,DWORD,HCRYPTKEY,DWORD,HCRYPTKEY*);
671WINADVAPI BOOL WINAPI CryptEncrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD,DWORD);
672WINADVAPI BOOL WINAPI CryptDecrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD);
673WINADVAPI BOOL WINAPI CryptCreateHash(HCRYPTPROV,ALG_ID,HCRYPTKEY,DWORD,HCRYPTHASH*);
674WINADVAPI BOOL WINAPI CryptHashData(HCRYPTHASH,PBYTE,DWORD,DWORD);
675WINADVAPI BOOL WINAPI CryptHashSessionKey(HCRYPTHASH,HCRYPTKEY,DWORD);
676WINADVAPI BOOL WINAPI CryptGetHashValue(HCRYPTHASH,DWORD,PBYTE,PDWORD);
677WINADVAPI BOOL WINAPI CryptDestroyHash(HCRYPTHASH);
678WINADVAPI BOOL WINAPI CryptSignHashA(HCRYPTHASH,DWORD,LPCSTR,DWORD,PBYTE,PDWORD);
679WINADVAPI BOOL WINAPI CryptSignHashW(HCRYPTHASH,DWORD,LPCWSTR,DWORD,PBYTE,PDWORD);
680WINADVAPI BOOL WINAPI CryptVerifySignatureA(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCSTR,DWORD);
681WINADVAPI BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCWSTR,DWORD);
682WINADVAPI BOOL WINAPI CryptSetProviderA(LPCSTR,DWORD);
683WINADVAPI BOOL WINAPI CryptSetProviderW(LPCWSTR,DWORD);
684
685#ifdef UNICODE
686#define CertNameToStr CertNameToStrW
687#define CryptAcquireContext CryptAcquireContextW
688#define CryptSignHash CryptSignHashW
689#define CryptVerifySignature CryptVerifySignatureW
690#define CryptSetProvider CryptSetProviderW
691#define CertOpenSystemStore CertOpenSystemStoreW
692#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W
693#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W
694#define MS_DEF_PROV MS_DEF_PROV_W
695#define MS_ENHANCED_PROV MS_ENHANCED_PROV_W
696#define MS_STRONG_PROV MS_STRONG_PROV_W
697#define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_W
698#define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_W
699#define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_W
700#define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_W
701#define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_W
702#define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_W
703#define MS_SCARD_PROV MS_SCARD_PROV_W
704#if (_WIN32_WINNT >= 0x0501)
705#define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_W
706#endif
707#else
708#define CertNameToStr CertNameToStrA
709#define CryptAcquireContext CryptAcquireContextA
710#define CryptSignHash CryptSignHashA
711#define CryptVerifySignature CryptVerifySignatureA
712#define CryptSetProvider CryptSetProviderA
713#define CertOpenSystemStore CertOpenSystemStoreA
714#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_A
715#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_A
716#define MS_DEF_PROV MS_DEF_PROV_A
717#define MS_ENHANCED_PROV MS_ENHANCED_PROV_A
718#define MS_STRONG_PROV MS_STRONG_PROV_A
719#define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_A
720#define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_A
721#define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_A
722#define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_A
723#define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_A
724#define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_A
725#define MS_SCARD_PROV MS_SCARD_PROV_A
726#if (_WIN32_WINNT >= 0x0501)
727#define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_A
728#endif
729#endif
730#ifdef __cplusplus
731}
732#endif
733#endif /* _WINCRYPT_H */
Note: See TracBrowser for help on using the repository browser.