home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / wincrypt.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  27KB  |  729 lines

  1. #ifndef _WINCRYPT_H
  2. #define _WINCRYPT_H
  3. #if __GNUC__ >= 3
  4. #pragma GCC system_header
  5. #endif
  6.  
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #define MS_DEF_PROV_A    "Microsoft Base Cryptographic Provider v1.0"
  11. #define MS_DEF_PROV_W    L"Microsoft Base Cryptographic Provider v1.0"
  12. #define MS_ENHANCED_PROV_A    "Microsoft Enhanced Cryptographic Provider v1.0"
  13. #define MS_ENHANCED_PROV_W    L"Microsoft Enhanced Cryptographic Provider v1.0"
  14. #define MS_STRONG_PROV_A    "Microsoft Strong Cryptographic Provider"
  15. #define MS_STRONG_PROV_W    L"Microsoft Strong Cryptographic Provider"
  16. #define MS_DEF_RSA_SIG_PROV_A    "Microsoft RSA Signature Cryptographic Provider"
  17. #define MS_DEF_RSA_SIG_PROV_W    L"Microsoft RSA Signature Cryptographic Provider"
  18. #define MS_DEF_RSA_SCHANNEL_PROV_A    "Microsoft RSA SChannel Cryptographic Provider"
  19. #define MS_DEF_RSA_SCHANNEL_PROV_W    L"Microsoft RSA SChannel Cryptographic Provider"
  20. #define MS_DEF_DSS_PROV_A    "Microsoft Base DSS Cryptographic Provider"
  21. #define MS_DEF_DSS_PROV_W    L"Microsoft Base DSS Cryptographic Provider"
  22. #define MS_DEF_DSS_DH_PROV_A    "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
  23. #define MS_DEF_DSS_DH_PROV_W    L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
  24. #define MS_ENH_DSS_DH_PROV_A    "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
  25. #define MS_ENH_DSS_DH_PROV_W    L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
  26. #define MS_DEF_DH_SCHANNEL_PROV_A    "Microsoft DH SChannel Cryptographic Provider"
  27. #define MS_DEF_DH_SCHANNEL_PROV_W    L"Microsoft DH SChannel Cryptographic Provider"
  28. #define MS_SCARD_PROV_A    "Microsoft Base Smart Card Crypto Provider"
  29. #define MS_SCARD_PROV_W    L"Microsoft Base Smart Card Crypto Provider"
  30. #if (_WIN32_WINNT == 0x0501)
  31. #define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
  32. #define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
  33. #elif (_WIN32_WINNT > 0x0501)
  34. #define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider"
  35. #define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider"
  36. #endif
  37.  
  38. #define GET_ALG_CLASS(x) (x&57344)
  39. #define GET_ALG_TYPE(x) (x&7680)
  40. #define GET_ALG_SID(x) (x&511)
  41. #define ALG_CLASS_ANY 0
  42. #define ALG_CLASS_SIGNATURE  8192
  43. #define ALG_CLASS_MSG_ENCRYPT  16384
  44. #define ALG_CLASS_DATA_ENCRYPT  24576
  45. #define ALG_CLASS_HASH  32768
  46. #define ALG_CLASS_KEY_EXCHANGE  40960
  47. #define ALG_CLASS_ALL 57344 /* (7 << 13) */
  48. #define ALG_TYPE_ANY 0
  49. #define ALG_TYPE_DSS 512
  50. #define ALG_TYPE_RSA 1024
  51. #define ALG_TYPE_BLOCK 1536
  52. #define ALG_TYPE_STREAM  2048
  53. #define ALG_TYPE_DH 2560 /* (5 << 9) */
  54. #define ALG_TYPE_SECURECHANNEL 3072 /* (6 << 9) */
  55. #define ALG_SID_ANY 0
  56. #define ALG_SID_RSA_ANY 0
  57. #define ALG_SID_RSA_PKCS 1
  58. #define ALG_SID_RSA_MSATWORK 2
  59. #define ALG_SID_RSA_ENTRUST 3
  60. #define ALG_SID_RSA_PGP 4
  61. #define ALG_SID_DSS_ANY 0
  62. #define ALG_SID_DSS_PKCS 1
  63. #define ALG_SID_DSS_DMS 2
  64. #define ALG_SID_DES 1
  65. #define ALG_SID_3DES 3
  66. #define ALG_SID_DESX 4
  67. #define ALG_SID_IDEA 5
  68. #define ALG_SID_CAST 6
  69. #define ALG_SID_SAFERSK64 7
  70. #define ALG_SID_SAFERSK128 8
  71. #define ALG_SID_3DES_112 9
  72. #define ALG_SID_SKIPJACK 10
  73. #define ALG_SID_TEK 11
  74. #define ALG_SID_CYLINK_MEK 12
  75. #define ALG_SID_RC5 13
  76. #define ALG_SID_RC2 2
  77. #define ALG_SID_RC4 1
  78. #define ALG_SID_SEAL 2
  79. #define ALG_SID_MD2 1
  80. #define ALG_SID_MD4 2
  81. #define ALG_SID_MD5 3
  82. #define ALG_SID_SHA 4
  83. #define ALG_SID_MAC 5
  84. #define ALG_SID_RIPEMD 6
  85. #define ALG_SID_RIPEMD160 7
  86. #define ALG_SID_SSL3SHAMD5 8
  87. #define ALG_SID_HMAC 9
  88. #define ALG_SID_TLS1PRF 10
  89. #define ALG_SID_AES_128 14
  90. #define ALG_SID_AES_192 15
  91. #define ALG_SID_AES_256 16
  92. #define ALG_SID_AES 17
  93. #define ALG_SID_EXAMPLE 80
  94.  
  95. #define CALG_MD2 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD2)
  96. #define CALG_MD4 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD4)
  97. #define CALG_MD5 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD5)
  98. #define CALG_SHA (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA)
  99. #define CALG_SHA1 CALG_SHA
  100. #define CALG_MAC (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MAC)
  101. #define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|3)
  102. #define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|12)
  103. #define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|10)
  104. #define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|4)
  105. #define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
  106. #define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_DSS|ALG_SID_DSS_ANY)
  107. #define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
  108. #define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
  109. #define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
  110. #define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
  111. #define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
  112. #define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_STREAM|ALG_TYPE_DSS|ALG_SID_DSS_DMS)
  113. #define CALG_DESX (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX)
  114. #define CALG_TLS1PRF (ALG_CLASS_DHASH|ALG_TYPE_ANY|ALG_SID_TLS1PRF)
  115. #define CALG_AES_128 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128)
  116. #define CALG_AES_192 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192)
  117. #define CALG_AES_256 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256)
  118. #define CALG_AES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES)
  119.  
  120. #define CRYPT_VERIFYCONTEXT 0xF0000000
  121. #define CRYPT_NEWKEYSET 8
  122. #define CRYPT_DELETEKEYSET 16
  123. #define CRYPT_MACHINE_KEYSET 32
  124. #define CRYPT_SILENT 64
  125. #define CRYPT_EXPORTABLE 1
  126. #define CRYPT_USER_PROTECTED 2
  127. #define CRYPT_CREATE_SALT 4
  128. #define CRYPT_UPDATE_KEY 8
  129. #define SIMPLEBLOB 1
  130. #define PUBLICKEYBLOB 6
  131. #define PRIVATEKEYBLOB 7
  132. #define PLAINTEXTKEYBLOB 8
  133. #define OPAQUEKEYBLOB 9
  134. #define PUBLICKEYBLOBEX 10
  135. #define SYMMETRICWRAPKEYBLOB 11
  136. #define AT_KEYEXCHANGE 1
  137. #define AT_SIGNATURE 2
  138. #define CRYPT_USERDATA 1
  139. #define PKCS5_PADDING 1
  140. #define CRYPT_MODE_CBC 1
  141. #define CRYPT_MODE_ECB 2
  142. #define CRYPT_MODE_OFB 3
  143. #define CRYPT_MODE_CFB 4
  144. #define CRYPT_MODE_CTS 5
  145. #define CRYPT_MODE_CBCI 6
  146. #define CRYPT_MODE_CFBP 7
  147. #define CRYPT_MODE_OFBP 8
  148. #define CRYPT_MODE_CBCOFM 9
  149. #define CRYPT_MODE_CBCOFMI 10
  150. #define CRYPT_ENCRYPT 1
  151. #define CRYPT_DECRYPT 2
  152. #define CRYPT_EXPORT 4
  153. #define CRYPT_READ 8
  154. #define CRYPT_WRITE 16
  155. #define CRYPT_MAC 32
  156. #define HP_ALGID 1
  157. #define HP_HASHVAL 2
  158. #define HP_HASHSIZE 4
  159. #define HP_HMAC_INFO 5
  160. #define CRYPT_FAILED FALSE
  161. #define CRYPT_SUCCEED TRUE
  162. #define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED)
  163. #define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED)
  164. #define PP_ENUMALGS 1
  165. #define PP_ENUMCONTAINERS 2
  166. #define PP_IMPTYPE 3
  167. #define PP_NAME 4
  168. #define PP_VERSION 5
  169. #define PP_CONTAINER 6
  170. #define PP_CHANGE_PASSWORD    7
  171. #define PP_KEYSET_SEC_DESCR    8
  172. #define PP_CERTCHAIN    9
  173. #define PP_KEY_TYPE_SUBTYPE    10
  174. #define PP_PROVTYPE    16
  175. #define PP_KEYSTORAGE    17
  176. #define PP_APPLI_CERT    18
  177. #define PP_SYM_KEYSIZE    19
  178. #define PP_SESSION_KEYSIZE    20
  179. #define PP_UI_PROMPT    21
  180. #define PP_ENUMALGS_EX    22
  181. #define PP_ENUMMANDROOTS 25
  182. #define PP_ENUMELECTROOTS 26
  183. #define PP_KEYSET_TYPE 27
  184. #define PP_ADMIN_PIN 31
  185. #define PP_KEYEXCHANGE_PIN 32
  186. #define PP_SIGNATURE_PIN 33
  187. #define PP_SIG_KEYSIZE_INC 34
  188. #define PP_KEYX_KEYSIZE_INC 35
  189. #define PP_UNIQUE_CONTAINER 36
  190. #define PP_SGC_INFO 37
  191. #define PP_USE_HARDWARE_RNG 38
  192. #define PP_KEYSPEC 39
  193. #define PP_ENUMEX_SIGNING_PROT 40
  194. #define CRYPT_FIRST 1
  195. #define CRYPT_NEXT 2
  196. #define CRYPT_IMPL_HARDWARE 1
  197. #define CRYPT_IMPL_SOFTWARE 2
  198. #define CRYPT_IMPL_MIXED 3
  199. #define CRYPT_IMPL_UNKNOWN 4
  200. #define PROV_RSA_FULL 1
  201. #define PROV_RSA_SIG 2
  202. #define PROV_DSS 3
  203. #define PROV_FORTEZZA 4
  204. #define PROV_MS_MAIL 5
  205. #define PROV_SSL 6
  206. #define PROV_STT_MER 7
  207. #define PROV_STT_ACQ 8
  208. #define PROV_STT_BRND 9
  209. #define PROV_STT_ROOT 10
  210. #define PROV_STT_ISS 11
  211. #define PROV_RSA_SCHANNEL 12
  212. #define PROV_DSS_DH 13
  213. #define PROV_EC_ECDSA_SIG 14
  214. #define PROV_EC_ECNRA_SIG 15
  215. #define PROV_EC_ECDSA_FULL 16
  216. #define PROV_EC_ECNRA_FULL 17
  217. #define PROV_DH_SCHANNEL 18
  218. #define PROV_SPYRUS_LYNKS 20
  219. #define PROV_RNG 21
  220. #define PROV_INTEL_SEC 22
  221. #define PROV_RSA_AES 24
  222. #define MAXUIDLEN 64
  223. #define CUR_BLOB_VERSION 2
  224. #define X509_ASN_ENCODING 1
  225. #define PKCS_7_ASN_ENCODING  65536
  226. #define CERT_V1 0
  227. #define CERT_V2 1
  228. #define CERT_V3 2
  229. #define CERT_E_CHAINING (-2146762486)
  230. #define CERT_E_CN_NO_MATCH (-2146762481)
  231. #define CERT_E_EXPIRED (-2146762495)
  232. #define CERT_E_PURPOSE (-2146762490)
  233. #define CERT_E_REVOCATION_FAILURE (-2146762482)
  234. #define CERT_E_REVOKED (-2146762484)
  235. #define CERT_E_ROLE (-2146762493)
  236. #define CERT_E_UNTRUSTEDROOT (-2146762487)
  237. #define CERT_E_UNTRUSTEDTESTROOT (-2146762483)
  238. #define CERT_E_VALIDITYPERIODNESTING (-2146762494)
  239. #define CERT_E_WRONG_USAGE (-2146762480)
  240. #define CERT_E_PATHLENCONST (-2146762492)
  241. #define CERT_E_CRITICAL (-2146762491)
  242. #define CERT_E_ISSUERCHAINING (-2146762489)
  243. #define CERT_E_MALFORMED (-2146762488)
  244. #define CRYPT_E_REVOCATION_OFFLINE (-2146885613)
  245. #define CRYPT_E_REVOKED (-2146885616)
  246. #define TRUST_E_BASIC_CONSTRAINTS (-2146869223)
  247. #define TRUST_E_CERT_SIGNATURE (-2146869244)
  248. #define TRUST_E_FAIL (-2146762485)
  249. #define CERT_TRUST_NO_ERROR 0
  250. #define CERT_TRUST_IS_NOT_TIME_VALID 1
  251. #define CERT_TRUST_IS_NOT_TIME_NESTED 2
  252. #define CERT_TRUST_IS_REVOKED 4
  253. #define CERT_TRUST_IS_NOT_SIGNATURE_VALID 8
  254. #define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 16
  255. #define CERT_TRUST_IS_UNTRUSTED_ROOT 32
  256. #define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 64
  257. #define CERT_TRUST_IS_CYCLIC 128
  258. #define CERT_TRUST_IS_PARTIAL_CHAIN 65536
  259. #define CERT_TRUST_CTL_IS_NOT_TIME_VALID 131072
  260. #define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 262144
  261. #define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 524288
  262. #define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 1
  263. #define CERT_TRUST_HAS_KEY_MATCH_ISSUER 2
  264. #define CERT_TRUST_HAS_NAME_MATCH_ISSUER 4
  265. #define CERT_TRUST_IS_SELF_SIGNED 8
  266. #define CERT_TRUST_IS_COMPLEX_CHAIN 65536
  267. #define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1)
  268. #define CERT_CHAIN_POLICY_AUTHENTICODE  ((LPCSTR) 2)
  269. #define CERT_CHAIN_POLICY_AUTHENTICODE_TS  ((LPCSTR) 3)
  270. #define CERT_CHAIN_POLICY_SSL  ((LPCSTR) 4)
  271. #define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5)
  272. #define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6)
  273. #define USAGE_MATCH_TYPE_AND 0
  274. #define USAGE_MATCH_TYPE_OR 1
  275. #define CERT_SIMPLE_NAME_STR 1
  276. #define CERT_OID_NAME_STR 2
  277. #define CERT_X500_NAME_STR 3
  278. #define CERT_NAME_STR_SEMICOLON_FLAG 1073741824
  279. #define CERT_NAME_STR_CRLF_FLAG 134217728
  280. #define CERT_NAME_STR_NO_PLUS_FLAG 536870912
  281. #define CERT_NAME_STR_NO_QUOTING_FLAG 268435456
  282. #define CERT_NAME_STR_REVERSE_FLAG 33554432
  283. #define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 131072
  284. #define CERT_FIND_ANY 0
  285. #define CERT_FIND_CERT_ID 1048576
  286. #define CERT_FIND_CTL_USAGE 655360
  287. #define CERT_FIND_ENHKEY_USAGE 655360
  288. #define CERT_FIND_EXISTING 851968
  289. #define CERT_FIND_HASH 65536
  290. #define CERT_FIND_ISSUER_ATTR 196612
  291. #define CERT_FIND_ISSUER_NAME 131076
  292. #define CERT_FIND_ISSUER_OF 786432
  293. #define CERT_FIND_KEY_IDENTIFIER 983040
  294. #define CERT_FIND_KEY_SPEC 589824
  295. #define CERT_FIND_MD5_HASH 262144
  296. #define CERT_FIND_PROPERTY 327680
  297. #define CERT_FIND_PUBLIC_KEY 393216
  298. #define CERT_FIND_SHA1_HASH 65536
  299. #define CERT_FIND_SIGNATURE_HASH 917504
  300. #define CERT_FIND_SUBJECT_ATTR 196615
  301. #define CERT_FIND_SUBJECT_CERT 720896
  302. #define CERT_FIND_SUBJECT_NAME 131079
  303. #define CERT_FIND_SUBJECT_STR_A 458759
  304. #define CERT_FIND_SUBJECT_STR_W 524295
  305. #define CERT_FIND_ISSUER_STR_A 458756
  306. #define CERT_FIND_ISSUER_STR_W 524292
  307. #define CERT_FIND_OR_ENHKEY_USAGE_FLAG 16
  308. #define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  1
  309. #define CERT_FIND_NO_ENHKEY_USAGE_FLAG  8
  310. #define CERT_FIND_VALID_ENHKEY_USAGE_FLAG  32
  311. #define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  2
  312. #define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG  2
  313. #define CERT_UNICODE_IS_RDN_ATTRS_FLAG 1
  314. #define CERT_CHAIN_FIND_BY_ISSUER 1
  315. #define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 1
  316. #define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 2
  317. #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 32768
  318. #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 4
  319. #define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 8
  320. #define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 16384
  321. #define CERT_STORE_PROV_SYSTEM 10
  322. #define CERT_SYSTEM_STORE_LOCAL_MACHINE 131072
  323. #define szOID_PKIX_KP_SERVER_AUTH "4235600"
  324. #define szOID_SERVER_GATED_CRYPTO "4235658"
  325. #define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1"
  326. #define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2"
  327. #define CRYPT_NOHASHOID 0x00000001
  328. #define CRYPT_NO_SALT 0x10
  329. #define CRYPT_PREGEN 0x40
  330. #define CRYPT_RECIPIENT 0x10
  331. #define CRYPT_INITIATOR 0x40
  332. #define CRYPT_ONLINE 0x80
  333. #define CRYPT_SF 0x100
  334. #define CRYPT_CREATE_IV 0x200
  335. #define CRYPT_KEK 0x400
  336. #define CRYPT_DATA_KEY 0x800
  337. #define CRYPT_VOLATILE 0x1000
  338. #define CRYPT_SGCKEY 0x2000
  339. #define KP_IV               0x00000001
  340. #define KP_SALT             0x00000002
  341. #define KP_PADDING          0x00000003
  342. #define KP_MODE             0x00000004
  343. #define KP_MODE_BITS        0x00000005
  344. #define KP_PERMISSIONS      0x00000006
  345. #define KP_ALGID            0x00000007
  346. #define KP_BLOCKLEN         0x00000008
  347. #define KP_KEYLEN           0x00000009
  348. #define KP_SALT_EX          0x0000000a
  349. #define KP_P                0x0000000b
  350. #define KP_G                0x0000000c
  351. #define KP_Q                0x0000000d
  352. #define KP_X                0x0000000e
  353. #define KP_Y                0x0000000f
  354. #define KP_RA               0x00000010
  355. #define KP_RB               0x00000011
  356. #define KP_INFO             0x00000012
  357. #define KP_EFFECTIVE_KEYLEN 0x00000013
  358. #define KP_SCHANNEL_ALG     0x00000014
  359. #define KP_PUB_PARAMS       0x00000027
  360. #define CRYPT_FLAG_PCT1    0x0001
  361. #define CRYPT_FLAG_SSL2    0x0002
  362. #define CRYPT_FLAG_SSL3    0x0004
  363. #define CRYPT_FLAG_TLS1    0x0008
  364. #define CRYPT_FLAG_IPSEC   0x0010
  365. #define CRYPT_FLAG_SIGNING 0x0020
  366. #define SCHANNEL_MAC_KEY    0x00000000
  367. #define SCHANNEL_ENC_KEY    0x00000001
  368. #define INTERNATIONAL_USAGE 0x00000001
  369.  
  370. typedef UINT ALG_ID;
  371. typedef struct _VTableProvStruc {FARPROC FuncVerifyImage;} VTableProvStruc,*PVTableProvStruc;
  372. typedef ULONG HCRYPTPROV;
  373. typedef ULONG HCRYPTKEY;
  374. typedef ULONG HCRYPTHASH;
  375. typedef PVOID HCERTSTORE;
  376. typedef PVOID HCRYPTMSG;
  377. typedef PVOID HCERTCHAINENGINE;
  378. typedef struct _CRYPTOAPI_BLOB {
  379.     DWORD cbData;
  380.     BYTE* pbData;
  381. } CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB,
  382.   CRYPT_UINT_BLOB,    *PCRYPT_UINT_BLOB,
  383.   CRYPT_OBJID_BLOB,   *PCRYPT_OBJID_BLOB,
  384.   CERT_NAME_BLOB,     *PCERT_NAME_BLOB,
  385.   CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB,
  386.   CERT_BLOB,          *PCERT_BLOB,
  387.   CRL_BLOB,           *PCRL_BLOB,
  388.   DATA_BLOB,          *PDATA_BLOB,
  389.   CRYPT_DATA_BLOB,    *PCRYPT_DATA_BLOB,
  390.   CRYPT_HASH_BLOB,    *PCRYPT_HASH_BLOB,
  391.   CRYPT_DIGEST_BLOB,  *PCRYPT_DIGEST_BLOB,
  392.   CRYPT_DER_BLOB,     *PCRYPT_DER_BLOB,
  393.   CRYPT_ATTR_BLOB,    *PCRYPT_ATTR_BLOB;
  394. /* not described in SDK; has the same layout as HTTPSPolicyCallbackData */
  395. typedef struct _SSL_EXTRA_CERT_CHAIN_POLICY_PARA {
  396.     DWORD cbStruct;
  397.     DWORD dwAuthType;
  398.     DWORD fdwChecks;
  399.     LPWSTR pwszServerName;
  400. } SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA,
  401.   HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData;
  402. /* #if (_WIN32_WINNT>=0x500) */
  403. typedef struct _CERT_CHAIN_POLICY_PARA {
  404.     DWORD cbSize;
  405.     DWORD dwFlags;
  406.     void* pvExtraPolicyPara;
  407. } CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA;
  408. typedef struct _CERT_CHAIN_POLICY_STATUS {
  409.     DWORD cbSize;
  410.     DWORD dwError;
  411.     LONG lChainIndex;
  412.     LONG lElementIndex;
  413.     void* pvExtraPolicyStatus;
  414. } CERT_CHAIN_POLICY_STATUS, *PCERT_CHAIN_POLICY_STATUS;
  415. /* #endif */
  416. typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
  417.     LPSTR pszObjId;
  418.     CRYPT_OBJID_BLOB Parameters;
  419. } CRYPT_ALGORITHM_IDENTIFIER, *PCRYPT_ALGORITHM_IDENTIFIER;
  420. typedef struct _CRYPT_BIT_BLOB {
  421.     DWORD cbData;
  422.     BYTE* pbData;
  423.     DWORD cUnusedBits;
  424. } CRYPT_BIT_BLOB, *PCRYPT_BIT_BLOB;
  425. typedef struct _CERT_PUBLIC_KEY_INFO {
  426.     CRYPT_ALGORITHM_IDENTIFIER Algorithm;
  427.     CRYPT_BIT_BLOB PublicKey;
  428. } CERT_PUBLIC_KEY_INFO, *PCERT_PUBLIC_KEY_INFO;
  429. typedef struct _CERT_EXTENSION {
  430.     LPSTR pszObjId;
  431.     BOOL fCritical;
  432.     CRYPT_OBJID_BLOB Value;
  433. } CERT_EXTENSION, *PCERT_EXTENSION;
  434. typedef struct _CERT_INFO {
  435.     DWORD dwVersion;
  436.     CRYPT_INTEGER_BLOB SerialNumber;
  437.     CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
  438.     CERT_NAME_BLOB Issuer;
  439.     FILETIME NotBefore;
  440.     FILETIME NotAfter;
  441.     CERT_NAME_BLOB Subject;
  442.     CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
  443.     CRYPT_BIT_BLOB IssuerUniqueId;
  444.     CRYPT_BIT_BLOB SubjectUniqueId;
  445.     DWORD cExtension;
  446.     PCERT_EXTENSION rgExtension;
  447. } CERT_INFO, *PCERT_INFO;
  448. typedef struct _CERT_CONTEXT {
  449.     DWORD dwCertEncodingType;
  450.     BYTE* pbCertEncoded;
  451.     DWORD cbCertEncoded;
  452.     PCERT_INFO pCertInfo;
  453.     HCERTSTORE hCertStore;
  454. } CERT_CONTEXT, *PCERT_CONTEXT;
  455. typedef const CERT_CONTEXT *PCCERT_CONTEXT;
  456. typedef struct _CTL_USAGE {
  457.     DWORD cUsageIdentifier;
  458.     LPSTR *rgpszUsageIdentifier;
  459. } CTL_USAGE, *PCTRL_USAGE,
  460.   CERT_ENHKEY_USAGE, *PCERT_ENHKEY_USAGE;
  461. typedef struct _CERT_USAGE_MATCH {
  462.     DWORD dwType;
  463.     CERT_ENHKEY_USAGE Usage;
  464. } CERT_USAGE_MATCH, *PCERT_USAGE_MATCH;
  465. /* #if (_WIN32_WINNT>=0x500) */
  466. typedef struct _CERT_CHAIN_PARA {
  467.     DWORD cbSize;
  468.     CERT_USAGE_MATCH RequestedUsage;
  469. #if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
  470.     CERT_USAGE_MATCH RequestedIssuancePolicy;
  471.     DWORD dwUrlRetrievalTimeout;
  472.     BOOL fCheckRevocationFreshnessTime;
  473.     DWORD dwRevocationFreshnessTime;
  474. #endif
  475. } CERT_CHAIN_PARA, *PCERT_CHAIN_PARA;
  476. typedef BOOL (WINAPI *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK)(PCCERT_CONTEXT,void*);
  477. typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA {
  478.     DWORD cbSize;
  479.     LPCSTR pszUsageIdentifier;
  480.     DWORD dwKeySpec;
  481.     DWORD dwAcquirePrivateKeyFlags;
  482.     DWORD cIssuer;
  483.     CERT_NAME_BLOB* rgIssuer;
  484.     PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback;
  485.     void* pvFindArg;
  486.     DWORD* pdwIssuerChainIndex;
  487.     DWORD* pdwIssuerElementIndex;
  488. } CERT_CHAIN_FIND_BY_ISSUER_PARA, *PCERT_CHAIN_FIND_BY_ISSUER_PARA;
  489. /* #endif */
  490. typedef struct _CERT_TRUST_STATUS {
  491.     DWORD dwErrorStatus;
  492.     DWORD dwInfoStatus;
  493. } CERT_TRUST_STATUS, *PCERT_TRUST_STATUS;
  494. typedef struct _CRL_ENTRY {
  495.     CRYPT_INTEGER_BLOB SerialNumber;
  496.     FILETIME RevocationDate;
  497.     DWORD cExtension;
  498.     PCERT_EXTENSION rgExtension;
  499. } CRL_ENTRY, *PCRL_ENTRY;
  500. typedef struct _CRL_INFO {
  501.     DWORD dwVersion;
  502.     CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
  503.     CERT_NAME_BLOB Issuer;
  504.     FILETIME ThisUpdate;
  505.     FILETIME NextUpdate;
  506.     DWORD cCRLEntry;
  507.     PCRL_ENTRY rgCRLEntry;
  508.     DWORD cExtension;
  509.     PCERT_EXTENSION rgExtension;
  510. } CRL_INFO, *PCRL_INFO;
  511. typedef struct _CRL_CONTEXT {
  512.     DWORD dwCertEncodingType;
  513.     BYTE* pbCrlEncoded;
  514.     DWORD cbCrlEncoded;
  515.     PCRL_INFO pCrlInfo;
  516.     HCERTSTORE hCertStore;
  517. } CRL_CONTEXT, *PCRL_CONTEXT;
  518. typedef const CRL_CONTEXT *PCCRL_CONTEXT;
  519. typedef struct _CERT_REVOCATION_CRL_INFO {
  520.     DWORD cbSize;
  521.     PCCRL_CONTEXT pBaseCRLContext;
  522.     PCCRL_CONTEXT pDeltaCRLContext;
  523.     PCRL_ENTRY pCrlEntry;
  524.     BOOL fDeltaCrlEntry;
  525. } CERT_REVOCATION_CRL_INFO, *PCERT_REVOCATION_CRL_INFO;
  526. typedef struct _CERT_REVOCATION_INFO {
  527.     DWORD cbSize;
  528.     DWORD dwRevocationResult;
  529.     LPCSTR pszRevocationOid;
  530.     LPVOID pvOidSpecificInfo;
  531.     BOOL fHasFreshnessTime;
  532.     DWORD dwFreshnessTime;
  533.     PCERT_REVOCATION_CRL_INFO pCrlInfo;
  534. } CERT_REVOCATION_INFO, *PCERT_REVOCATION_INFO;
  535. /* #if (_WIN32_WINNT>=0x500) */
  536. typedef struct _CERT_CHAIN_ELEMENT {
  537.     DWORD cbSize;
  538.     PCCERT_CONTEXT pCertContext;
  539.     CERT_TRUST_STATUS TrustStatus;
  540.     PCERT_REVOCATION_INFO pRevocationInfo;
  541.     PCERT_ENHKEY_USAGE pIssuanceUsage;
  542.     PCERT_ENHKEY_USAGE pApplicationUsage;
  543. } CERT_CHAIN_ELEMENT, *PCERT_CHAIN_ELEMENT;
  544. /* #endif */
  545. typedef struct _CRYPT_ATTRIBUTE {
  546.     LPSTR pszObjId;
  547.     DWORD cValue;
  548.     PCRYPT_ATTR_BLOB rgValue;
  549. } CRYPT_ATTRIBUTE, *PCRYPT_ATTRIBUTE;
  550. typedef struct _CTL_ENTRY {
  551.     CRYPT_DATA_BLOB SubjectIdentifier;
  552.     DWORD cAttribute;
  553.     PCRYPT_ATTRIBUTE rgAttribute;
  554. } CTL_ENTRY, *PCTL_ENTRY;
  555. typedef struct _CTL_INFO {
  556.     DWORD dwVersion;
  557.     CTL_USAGE SubjectUsage;
  558.     CRYPT_DATA_BLOB ListIdentifier;
  559.     CRYPT_INTEGER_BLOB SequenceNumber;
  560.     FILETIME ThisUpdate;
  561.     FILETIME NextUpdate;
  562.     CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm;
  563.     DWORD cCTLEntry;
  564.     PCTL_ENTRY rgCTLEntry;
  565.     DWORD cExtension;
  566.     PCERT_EXTENSION rgExtension;
  567. } CTL_INFO, *PCTL_INFO;
  568. typedef struct _CTL_CONTEXT {
  569.     DWORD dwMsgAndCertEncodingType;
  570.     BYTE* pbCtlEncoded;
  571.     DWORD cbCtlEncoded;
  572.     PCTL_INFO pCtlInfo;
  573.     HCERTSTORE hCertStore;
  574.     HCRYPTMSG hCryptMsg;
  575.     BYTE* pbCtlContent;
  576.     DWORD cbCtlContent;
  577. } CTL_CONTEXT, *PCTL_CONTEXT;
  578. typedef const CTL_CONTEXT *PCCTL_CONTEXT;
  579. typedef struct _CERT_TRUST_LIST_INFO {
  580.     DWORD cbSize;
  581.     PCTL_ENTRY pCtlEntry;
  582.     PCCTL_CONTEXT pCtlContext;
  583. } CERT_TRUST_LIST_INFO, *PCERT_TRUST_LIST_INFO;
  584. typedef struct _CERT_SIMPLE_CHAIN {
  585.     DWORD cbSize;
  586.     CERT_TRUST_STATUS TrustStatus;
  587.     DWORD cElement;
  588.     PCERT_CHAIN_ELEMENT* rgpElement;
  589.     PCERT_TRUST_LIST_INFO pTrustListInfo;
  590.     BOOL fHasRevocationFreshnessTime;
  591.     DWORD dwRevocationFreshnessTime;
  592. } CERT_SIMPLE_CHAIN, *PCERT_SIMPLE_CHAIN;
  593. /* #if (_WIN32_WINNT>=0x500) */
  594. typedef const struct _CERT_CHAIN_CONTEXT* PCCERT_CHAIN_CONTEXT;
  595. typedef struct _CERT_CHAIN_CONTEXT {
  596.     DWORD cbSize;
  597.     CERT_TRUST_STATUS TrustStatus;
  598.     DWORD cChain;
  599.     PCERT_SIMPLE_CHAIN* rgpChain;
  600.     DWORD cLowerQualityChainContext;
  601.     PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext;
  602.     BOOL fHasRevocationFreshnessTime;
  603.     DWORD dwRevocationFreshnessTime;
  604. } CERT_CHAIN_CONTEXT, *PCERT_CHAIN_CONTEXT;
  605. /* #endif */
  606. typedef struct _PROV_ENUMALGS {
  607.     ALG_ID aiAlgid;
  608.     DWORD dwBitLen;
  609.     DWORD dwNameLen;
  610.     CHAR szName[20];
  611. } PROV_ENUMALGS;
  612. typedef struct _PUBLICKEYSTRUC {
  613.     BYTE bType;
  614.     BYTE bVersion;
  615.     WORD reserved;
  616.     ALG_ID aiKeyAlg;
  617. } BLOBHEADER, PUBLICKEYSTRUC;
  618. typedef struct _RSAPUBKEY {
  619.     DWORD magic;
  620.     DWORD bitlen;
  621.     DWORD pubexp;
  622. } RSAPUBKEY;
  623. typedef struct _HMAC_Info
  624. {
  625.     ALG_ID HashAlgid;
  626.     BYTE* pbInnerString;
  627.     DWORD cbInnerString;
  628.     BYTE* pbOuterString;
  629.     DWORD cbOuterString;
  630. } HMAC_INFO, *PHMAC_INFO;
  631.  
  632. BOOL WINAPI CertCloseStore(HCERTSTORE,DWORD);
  633. BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE,PCCERT_CONTEXT,LPFILETIME,HCERTSTORE,PCERT_CHAIN_PARA,DWORD,LPVOID,PCCERT_CHAIN_CONTEXT*);
  634. BOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR,PCCERT_CHAIN_CONTEXT,PCERT_CHAIN_POLICY_PARA,PCERT_CHAIN_POLICY_STATUS);
  635. void WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT);
  636. DWORD WINAPI CertNameToStrA(DWORD,PCERT_NAME_BLOB,DWORD,LPSTR,DWORD);
  637. DWORD WINAPI CertNameToStrW(DWORD,PCERT_NAME_BLOB,DWORD,LPWSTR,DWORD);
  638. HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV,LPCSTR);
  639. HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV,LPCWSTR);
  640. HCERTSTORE WINAPI CertOpenStore(LPCSTR,DWORD,HCRYPTPROV,DWORD,const void*);
  641. PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CONTEXT);
  642. BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT);
  643. PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE,PCCERT_CONTEXT,PCCERT_CONTEXT,DWORD*);
  644. PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE,DWORD,DWORD,DWORD,const void*,PCCERT_CHAIN_CONTEXT);
  645. BOOL WINAPI CryptAcquireContextA(HCRYPTPROV*,LPCSTR,LPCSTR,DWORD,DWORD);
  646. BOOL WINAPI CryptAcquireContextW(HCRYPTPROV*,LPCWSTR,LPCWSTR,DWORD,DWORD);
  647. BOOL WINAPI CryptContextAddRef(HCRYPTPROV,DWORD*,DWORD);
  648. BOOL WINAPI CryptReleaseContext(HCRYPTPROV,DWORD);
  649. BOOL WINAPI CryptGenKey(HCRYPTPROV,ALG_ID,DWORD,HCRYPTKEY*);
  650. BOOL WINAPI CryptDeriveKey(HCRYPTPROV,ALG_ID,HCRYPTHASH,DWORD,HCRYPTKEY*);
  651. BOOL WINAPI CryptDestroyKey(HCRYPTKEY);
  652. #if (WINVER >= 0x0500)
  653. BOOL WINAPI CryptDuplicateHash(HCRYPTHASH,DWORD*,DWORD,HCRYPTHASH*);
  654. BOOL WINAPI CryptDuplicateKey(HCRYPTKEY,DWORD*,DWORD,HCRYPTKEY*);
  655. #endif
  656. BOOL WINAPI CryptSetKeyParam(HCRYPTKEY,DWORD,PBYTE,DWORD);
  657. BOOL WINAPI CryptGetKeyParam(HCRYPTKEY,DWORD,PBYTE,PDWORD,DWORD);
  658. BOOL WINAPI CryptSetHashParam(HCRYPTHASH,DWORD,PBYTE,DWORD);
  659. BOOL WINAPI CryptGetHashParam(HCRYPTHASH,DWORD,PBYTE,PDWORD,DWORD);
  660. BOOL WINAPI CryptSetProvParam(HCRYPTPROV,DWORD,PBYTE,DWORD);
  661. BOOL WINAPI CryptGetProvParam(HCRYPTPROV,DWORD,PBYTE,PDWORD,DWORD);
  662. BOOL WINAPI CryptGenRandom(HCRYPTPROV,DWORD,PBYTE);
  663. BOOL WINAPI CryptGetUserKey(HCRYPTPROV,DWORD,HCRYPTKEY*);
  664. BOOL WINAPI CryptExportKey(HCRYPTKEY,HCRYPTKEY,DWORD,DWORD,PBYTE,PDWORD);
  665. BOOL WINAPI CryptImportKey(HCRYPTPROV,PBYTE,DWORD,HCRYPTKEY,DWORD,HCRYPTKEY*);
  666. BOOL WINAPI CryptEncrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD,DWORD);
  667. BOOL WINAPI CryptDecrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD);
  668. BOOL WINAPI CryptCreateHash(HCRYPTPROV,ALG_ID,HCRYPTKEY,DWORD,HCRYPTHASH*);
  669. BOOL WINAPI CryptHashData(HCRYPTHASH,PBYTE,DWORD,DWORD);
  670. BOOL WINAPI CryptHashSessionKey(HCRYPTHASH,HCRYPTKEY,DWORD);
  671. BOOL WINAPI CryptGetHashValue(HCRYPTHASH,DWORD,PBYTE,PDWORD);
  672. BOOL WINAPI CryptDestroyHash(HCRYPTHASH);
  673. BOOL WINAPI CryptSignHashA(HCRYPTHASH,DWORD,LPCSTR,DWORD,PBYTE,PDWORD);
  674. BOOL WINAPI CryptSignHashW(HCRYPTHASH,DWORD,LPCWSTR,DWORD,PBYTE,PDWORD);
  675. BOOL WINAPI CryptVerifySignatureA(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCSTR,DWORD);
  676. BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCWSTR,DWORD);
  677. BOOL WINAPI CryptSetProviderA(LPCSTR,DWORD);
  678. BOOL WINAPI CryptSetProviderW(LPCWSTR,DWORD);
  679.  
  680. #ifdef UNICODE
  681. #define CertNameToStr CertNameToStrW
  682. #define CryptAcquireContext CryptAcquireContextW
  683. #define CryptSignHash CryptSignHashW
  684. #define CryptVerifySignature CryptVerifySignatureW
  685. #define CryptSetProvider CryptSetProviderW
  686. #define CertOpenSystemStore CertOpenSystemStoreW
  687. #define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W
  688. #define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W
  689. #define MS_DEF_PROV MS_DEF_PROV_W
  690. #define MS_ENHANCED_PROV MS_ENHANCED_PROV_W
  691. #define MS_STRONG_PROV MS_STRONG_PROV_W
  692. #define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_W
  693. #define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_W
  694. #define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_W
  695. #define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_W
  696. #define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_W
  697. #define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_W
  698. #define MS_SCARD_PROV MS_SCARD_PROV_W
  699. #if (_WIN32_WINNT >= 0x0501)
  700. #define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_W
  701. #endif
  702. #else
  703. #define CertNameToStr CertNameToStrA
  704. #define CryptAcquireContext CryptAcquireContextA
  705. #define CryptSignHash CryptSignHashA
  706. #define CryptVerifySignature CryptVerifySignatureA
  707. #define CryptSetProvider CryptSetProviderA
  708. #define CertOpenSystemStore CertOpenSystemStoreA
  709. #define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_A
  710. #define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_A
  711. #define MS_DEF_PROV MS_DEF_PROV_A
  712. #define MS_ENHANCED_PROV MS_ENHANCED_PROV_A
  713. #define MS_STRONG_PROV MS_STRONG_PROV_A
  714. #define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_A
  715. #define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_A
  716. #define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_A
  717. #define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_A
  718. #define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_A
  719. #define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_A
  720. #define MS_SCARD_PROV MS_SCARD_PROV_A
  721. #if (_WIN32_WINNT >= 0x0501)
  722. #define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_A
  723. #endif
  724. #endif
  725. #ifdef __cplusplus
  726. }
  727. #endif
  728. #endif /* _WINCRYPT_H */
  729.