Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/wincrypt.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /** | |
| 2 * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 * This file is part of the w64 mingw-runtime package. | |
| 4 * No warranty is given; refer to the file DISCLAIMER within this package. | |
| 5 */ | |
| 6 #ifndef __WINCRYPT_H__ | |
| 7 #define __WINCRYPT_H__ | |
| 8 | |
| 9 #include <guiddef.h> | |
| 10 | |
| 11 #ifdef __cplusplus | |
| 12 extern "C" { | |
| 13 #endif | |
| 14 | |
| 15 #ifndef _HRESULT_DEFINED | |
| 16 #define _HRESULT_DEFINED | |
| 17 typedef LONG HRESULT; | |
| 18 #endif | |
| 19 | |
| 20 #ifndef DECLSPEC_IMPORT | |
| 21 #define DECLSPEC_IMPORT __declspec(dllimport) | |
| 22 #endif | |
| 23 | |
| 24 #ifndef WINIMPM | |
| 25 #define WINIMPM DECLSPEC_IMPORT | |
| 26 #endif | |
| 27 | |
| 28 #ifndef WINADVAPI | |
| 29 #define WINADVAPI WINIMPM | |
| 30 #endif | |
| 31 | |
| 32 | |
| 33 #ifndef WINAPI | |
| 34 #define WINAPI __stdcall | |
| 35 #endif | |
| 36 | |
| 37 #ifndef CALLBACK | |
| 38 #define CALLBACK __stdcall | |
| 39 #endif | |
| 40 | |
| 41 #ifndef CONST | |
| 42 #define CONST const | |
| 43 #endif | |
| 44 | |
| 45 #ifndef _NO_W32_PSEUDO_MODIFIERS | |
| 46 #ifndef IN | |
| 47 #define IN | |
| 48 #endif | |
| 49 #ifndef OUT | |
| 50 #define OUT | |
| 51 #endif | |
| 52 #ifndef OPTIONAL | |
| 53 #define OPTIONAL | |
| 54 #endif | |
| 55 #endif | |
| 56 | |
| 57 #define WINCRYPT32API WINIMPM | |
| 58 #define WINCRYPT32STRINGAPI WINIMPM | |
| 59 | |
| 60 #define GET_ALG_CLASS(x) (x & (7 << 13)) | |
| 61 #define GET_ALG_TYPE(x) (x & (15 << 9)) | |
| 62 #define GET_ALG_SID(x) (x & (511)) | |
| 63 | |
| 64 #define ALG_CLASS_ANY (0) | |
| 65 #define ALG_CLASS_SIGNATURE (1 << 13) | |
| 66 #define ALG_CLASS_MSG_ENCRYPT (2 << 13) | |
| 67 #define ALG_CLASS_DATA_ENCRYPT (3 << 13) | |
| 68 #define ALG_CLASS_HASH (4 << 13) | |
| 69 #define ALG_CLASS_KEY_EXCHANGE (5 << 13) | |
| 70 #define ALG_CLASS_ALL (7 << 13) | |
| 71 | |
| 72 #define ALG_TYPE_ANY (0) | |
| 73 #define ALG_TYPE_DSS (1 << 9) | |
| 74 #define ALG_TYPE_RSA (2 << 9) | |
| 75 #define ALG_TYPE_BLOCK (3 << 9) | |
| 76 #define ALG_TYPE_STREAM (4 << 9) | |
| 77 #define ALG_TYPE_DH (5 << 9) | |
| 78 #define ALG_TYPE_SECURECHANNEL (6 << 9) | |
| 79 | |
| 80 #define ALG_SID_ANY (0) | |
| 81 | |
| 82 #define ALG_SID_RSA_ANY 0 | |
| 83 #define ALG_SID_RSA_PKCS 1 | |
| 84 #define ALG_SID_RSA_MSATWORK 2 | |
| 85 #define ALG_SID_RSA_ENTRUST 3 | |
| 86 #define ALG_SID_RSA_PGP 4 | |
| 87 | |
| 88 #define ALG_SID_DSS_ANY 0 | |
| 89 #define ALG_SID_DSS_PKCS 1 | |
| 90 #define ALG_SID_DSS_DMS 2 | |
| 91 | |
| 92 #define ALG_SID_DES 1 | |
| 93 #define ALG_SID_3DES 3 | |
| 94 #define ALG_SID_DESX 4 | |
| 95 #define ALG_SID_IDEA 5 | |
| 96 #define ALG_SID_CAST 6 | |
| 97 #define ALG_SID_SAFERSK64 7 | |
| 98 #define ALG_SID_SAFERSK128 8 | |
| 99 #define ALG_SID_3DES_112 9 | |
| 100 #define ALG_SID_CYLINK_MEK 12 | |
| 101 #define ALG_SID_RC5 13 | |
| 102 #define ALG_SID_AES_128 14 | |
| 103 #define ALG_SID_AES_192 15 | |
| 104 #define ALG_SID_AES_256 16 | |
| 105 #define ALG_SID_AES 17 | |
| 106 | |
| 107 #define ALG_SID_SKIPJACK 10 | |
| 108 #define ALG_SID_TEK 11 | |
| 109 | |
| 110 #define CRYPT_MODE_CBCI 6 | |
| 111 #define CRYPT_MODE_CFBP 7 | |
| 112 #define CRYPT_MODE_OFBP 8 | |
| 113 #define CRYPT_MODE_CBCOFM 9 | |
| 114 #define CRYPT_MODE_CBCOFMI 10 | |
| 115 | |
| 116 #define ALG_SID_RC2 2 | |
| 117 | |
| 118 #define ALG_SID_RC4 1 | |
| 119 #define ALG_SID_SEAL 2 | |
| 120 | |
| 121 #define ALG_SID_DH_SANDF 1 | |
| 122 #define ALG_SID_DH_EPHEM 2 | |
| 123 #define ALG_SID_AGREED_KEY_ANY 3 | |
| 124 #define ALG_SID_KEA 4 | |
| 125 | |
| 126 #define ALG_SID_MD2 1 | |
| 127 #define ALG_SID_MD4 2 | |
| 128 #define ALG_SID_MD5 3 | |
| 129 #define ALG_SID_SHA 4 | |
| 130 #define ALG_SID_SHA1 4 | |
| 131 #define ALG_SID_MAC 5 | |
| 132 #define ALG_SID_RIPEMD 6 | |
| 133 #define ALG_SID_RIPEMD160 7 | |
| 134 #define ALG_SID_SSL3SHAMD5 8 | |
| 135 #define ALG_SID_HMAC 9 | |
| 136 #define ALG_SID_TLS1PRF 10 | |
| 137 #define ALG_SID_HASH_REPLACE_OWF 11 | |
| 138 #define ALG_SID_SHA_256 12 | |
| 139 #define ALG_SID_SHA_384 13 | |
| 140 #define ALG_SID_SHA_512 14 | |
| 141 | |
| 142 #define ALG_SID_SSL3_MASTER 1 | |
| 143 #define ALG_SID_SCHANNEL_MASTER_HASH 2 | |
| 144 #define ALG_SID_SCHANNEL_MAC_KEY 3 | |
| 145 #define ALG_SID_PCT1_MASTER 4 | |
| 146 #define ALG_SID_SSL2_MASTER 5 | |
| 147 #define ALG_SID_TLS1_MASTER 6 | |
| 148 #define ALG_SID_SCHANNEL_ENC_KEY 7 | |
| 149 | |
| 150 #define ALG_SID_EXAMPLE 80 | |
| 151 | |
| 152 #ifndef ALGIDDEF | |
| 153 #define ALGIDDEF | |
| 154 typedef unsigned int ALG_ID; | |
| 155 #endif | |
| 156 | |
| 157 #define CALG_MD2 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2) | |
| 158 #define CALG_MD4 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4) | |
| 159 #define CALG_MD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5) | |
| 160 #define CALG_SHA (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA) | |
| 161 #define CALG_SHA1 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1) | |
| 162 #define CALG_MAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC) | |
| 163 #define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY) | |
| 164 #define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY) | |
| 165 #define CALG_NO_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY) | |
| 166 #define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY) | |
| 167 #define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES) | |
| 168 #define CALG_3DES_112 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES_112) | |
| 169 #define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES) | |
| 170 #define CALG_DESX (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX) | |
| 171 #define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2) | |
| 172 #define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4) | |
| 173 #define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL) | |
| 174 #define CALG_DH_SF (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_SANDF) | |
| 175 #define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_EPHEM) | |
| 176 #define CALG_AGREEDKEY_ANY (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_AGREED_KEY_ANY) | |
| 177 #define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_KEA) | |
| 178 #define CALG_HUGHES_MD5 (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_ANY|ALG_SID_MD5) | |
| 179 #define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_SKIPJACK) | |
| 180 #define CALG_TEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_TEK) | |
| 181 #define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_CYLINK_MEK) | |
| 182 #define CALG_SSL3_SHAMD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5) | |
| 183 #define CALG_SSL3_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL3_MASTER) | |
| 184 #define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MASTER_HASH) | |
| 185 #define CALG_SCHANNEL_MAC_KEY (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MAC_KEY) | |
| 186 #define CALG_SCHANNEL_ENC_KEY (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_ENC_KEY) | |
| 187 #define CALG_PCT1_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_PCT1_MASTER) | |
| 188 #define CALG_SSL2_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL2_MASTER) | |
| 189 #define CALG_TLS1_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_TLS1_MASTER) | |
| 190 #define CALG_RC5 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC5) | |
| 191 #define CALG_HMAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC) | |
| 192 #define CALG_TLS1PRF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF) | |
| 193 #define CALG_HASH_REPLACE_OWF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF) | |
| 194 #define CALG_AES_128 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128) | |
| 195 #define CALG_AES_192 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192) | |
| 196 #define CALG_AES_256 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256) | |
| 197 #define CALG_AES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES) | |
| 198 #define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256) | |
| 199 #define CALG_SHA_384 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384) | |
| 200 #define CALG_SHA_512 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512) | |
| 201 | |
| 202 typedef ULONG_PTR HCRYPTPROV; | |
| 203 typedef ULONG_PTR HCRYPTKEY; | |
| 204 typedef ULONG_PTR HCRYPTHASH; | |
| 205 | |
| 206 #define CRYPT_VERIFYCONTEXT 0xF0000000 | |
| 207 #define CRYPT_NEWKEYSET 0x8 | |
| 208 #define CRYPT_DELETEKEYSET 0x10 | |
| 209 #define CRYPT_MACHINE_KEYSET 0x20 | |
| 210 #define CRYPT_SILENT 0x40 | |
| 211 | |
| 212 #define CRYPT_EXPORTABLE 0x1 | |
| 213 #define CRYPT_USER_PROTECTED 0x2 | |
| 214 #define CRYPT_CREATE_SALT 0x4 | |
| 215 #define CRYPT_UPDATE_KEY 0x8 | |
| 216 #define CRYPT_NO_SALT 0x10 | |
| 217 #define CRYPT_PREGEN 0x40 | |
| 218 #define CRYPT_RECIPIENT 0x10 | |
| 219 #define CRYPT_INITIATOR 0x40 | |
| 220 #define CRYPT_ONLINE 0x80 | |
| 221 #define CRYPT_SF 0x100 | |
| 222 #define CRYPT_CREATE_IV 0x200 | |
| 223 #define CRYPT_KEK 0x400 | |
| 224 #define CRYPT_DATA_KEY 0x800 | |
| 225 #define CRYPT_VOLATILE 0x1000 | |
| 226 #define CRYPT_SGCKEY 0x2000 | |
| 227 #define CRYPT_ARCHIVABLE 0x4000 | |
| 228 | |
| 229 #define RSA1024BIT_KEY 0x4000000 | |
| 230 | |
| 231 #define CRYPT_SERVER 0x400 | |
| 232 | |
| 233 #define KEY_LENGTH_MASK 0xFFFF0000 | |
| 234 | |
| 235 #define CRYPT_Y_ONLY 0x1 | |
| 236 #define CRYPT_SSL2_FALLBACK 0x2 | |
| 237 #define CRYPT_DESTROYKEY 0x4 | |
| 238 #define CRYPT_OAEP 0x40 | |
| 239 | |
| 240 #define CRYPT_BLOB_VER3 0x80 | |
| 241 #define CRYPT_IPSEC_HMAC_KEY 0x100 | |
| 242 | |
| 243 #define CRYPT_DECRYPT_RSA_NO_PADDING_CHECK 0x20 | |
| 244 | |
| 245 #define CRYPT_SECRETDIGEST 0x1 | |
| 246 | |
| 247 #define CRYPT_OWF_REPL_LM_HASH 0x1 | |
| 248 | |
| 249 #define CRYPT_LITTLE_ENDIAN 0x1 | |
| 250 | |
| 251 #define CRYPT_NOHASHOID 0x1 | |
| 252 #define CRYPT_TYPE2_FORMAT 0x2 | |
| 253 #define CRYPT_X931_FORMAT 0x4 | |
| 254 | |
| 255 #define CRYPT_MACHINE_DEFAULT 0x1 | |
| 256 #define CRYPT_USER_DEFAULT 0x2 | |
| 257 #define CRYPT_DELETE_DEFAULT 0x4 | |
| 258 | |
| 259 #define SIMPLEBLOB 0x1 | |
| 260 #define PUBLICKEYBLOB 0x6 | |
| 261 #define PRIVATEKEYBLOB 0x7 | |
| 262 #define PLAINTEXTKEYBLOB 0x8 | |
| 263 #define OPAQUEKEYBLOB 0x9 | |
| 264 #define PUBLICKEYBLOBEX 0xa | |
| 265 #define SYMMETRICWRAPKEYBLOB 0xb | |
| 266 #define KEYSTATEBLOB 0xc | |
| 267 | |
| 268 #define AT_KEYEXCHANGE 1 | |
| 269 #define AT_SIGNATURE 2 | |
| 270 | |
| 271 #define CRYPT_USERDATA 1 | |
| 272 | |
| 273 #define KP_IV 1 | |
| 274 #define KP_SALT 2 | |
| 275 #define KP_PADDING 3 | |
| 276 #define KP_MODE 4 | |
| 277 #define KP_MODE_BITS 5 | |
| 278 #define KP_PERMISSIONS 6 | |
| 279 #define KP_ALGID 7 | |
| 280 #define KP_BLOCKLEN 8 | |
| 281 #define KP_KEYLEN 9 | |
| 282 #define KP_SALT_EX 10 | |
| 283 #define KP_P 11 | |
| 284 #define KP_G 12 | |
| 285 #define KP_Q 13 | |
| 286 #define KP_X 14 | |
| 287 #define KP_Y 15 | |
| 288 #define KP_RA 16 | |
| 289 #define KP_RB 17 | |
| 290 #define KP_INFO 18 | |
| 291 #define KP_EFFECTIVE_KEYLEN 19 | |
| 292 #define KP_SCHANNEL_ALG 20 | |
| 293 #define KP_CLIENT_RANDOM 21 | |
| 294 #define KP_SERVER_RANDOM 22 | |
| 295 #define KP_RP 23 | |
| 296 #define KP_PRECOMP_MD5 24 | |
| 297 #define KP_PRECOMP_SHA 25 | |
| 298 #define KP_CERTIFICATE 26 | |
| 299 #define KP_CLEAR_KEY 27 | |
| 300 #define KP_PUB_EX_LEN 28 | |
| 301 #define KP_PUB_EX_VAL 29 | |
| 302 #define KP_KEYVAL 30 | |
| 303 #define KP_ADMIN_PIN 31 | |
| 304 #define KP_KEYEXCHANGE_PIN 32 | |
| 305 #define KP_SIGNATURE_PIN 33 | |
| 306 #define KP_PREHASH 34 | |
| 307 #define KP_ROUNDS 35 | |
| 308 #define KP_OAEP_PARAMS 36 | |
| 309 #define KP_CMS_KEY_INFO 37 | |
| 310 #define KP_CMS_DH_KEY_INFO 38 | |
| 311 #define KP_PUB_PARAMS 39 | |
| 312 #define KP_VERIFY_PARAMS 40 | |
| 313 #define KP_HIGHEST_VERSION 41 | |
| 314 #define KP_GET_USE_COUNT 42 | |
| 315 | |
| 316 #define PKCS5_PADDING 1 | |
| 317 #define RANDOM_PADDING 2 | |
| 318 #define ZERO_PADDING 3 | |
| 319 | |
| 320 #define CRYPT_MODE_CBC 1 | |
| 321 #define CRYPT_MODE_ECB 2 | |
| 322 #define CRYPT_MODE_OFB 3 | |
| 323 #define CRYPT_MODE_CFB 4 | |
| 324 #define CRYPT_MODE_CTS 5 | |
| 325 | |
| 326 #define CRYPT_ENCRYPT 0x1 | |
| 327 #define CRYPT_DECRYPT 0x2 | |
| 328 #define CRYPT_EXPORT 0x4 | |
| 329 #define CRYPT_READ 0x8 | |
| 330 #define CRYPT_WRITE 0x10 | |
| 331 #define CRYPT_MAC 0x20 | |
| 332 #define CRYPT_EXPORT_KEY 0x40 | |
| 333 #define CRYPT_IMPORT_KEY 0x80 | |
| 334 #define CRYPT_ARCHIVE 0x100 | |
| 335 | |
| 336 #define HP_ALGID 0x1 | |
| 337 #define HP_HASHVAL 0x2 | |
| 338 #define HP_HASHSIZE 0x4 | |
| 339 #define HP_HMAC_INFO 0x5 | |
| 340 #define HP_TLS1PRF_LABEL 0x6 | |
| 341 #define HP_TLS1PRF_SEED 0x7 | |
| 342 | |
| 343 #define CRYPT_FAILED FALSE | |
| 344 #define CRYPT_SUCCEED TRUE | |
| 345 | |
| 346 #define RCRYPT_SUCCEEDED(RT) ((RT) == CRYPT_SUCCEED) | |
| 347 #define RCRYPT_FAILED(RT) ((RT) == CRYPT_FAILED) | |
| 348 | |
| 349 #define PP_ENUMALGS 1 | |
| 350 #define PP_ENUMCONTAINERS 2 | |
| 351 #define PP_IMPTYPE 3 | |
| 352 #define PP_NAME 4 | |
| 353 #define PP_VERSION 5 | |
| 354 #define PP_CONTAINER 6 | |
| 355 #define PP_CHANGE_PASSWORD 7 | |
| 356 #define PP_KEYSET_SEC_DESCR 8 | |
| 357 #define PP_CERTCHAIN 9 | |
| 358 #define PP_KEY_TYPE_SUBTYPE 10 | |
| 359 #define PP_PROVTYPE 16 | |
| 360 #define PP_KEYSTORAGE 17 | |
| 361 #define PP_APPLI_CERT 18 | |
| 362 #define PP_SYM_KEYSIZE 19 | |
| 363 #define PP_SESSION_KEYSIZE 20 | |
| 364 #define PP_UI_PROMPT 21 | |
| 365 #define PP_ENUMALGS_EX 22 | |
| 366 #define PP_ENUMMANDROOTS 25 | |
| 367 #define PP_ENUMELECTROOTS 26 | |
| 368 #define PP_KEYSET_TYPE 27 | |
| 369 #define PP_ADMIN_PIN 31 | |
| 370 #define PP_KEYEXCHANGE_PIN 32 | |
| 371 #define PP_SIGNATURE_PIN 33 | |
| 372 #define PP_SIG_KEYSIZE_INC 34 | |
| 373 #define PP_KEYX_KEYSIZE_INC 35 | |
| 374 #define PP_UNIQUE_CONTAINER 36 | |
| 375 #define PP_SGC_INFO 37 | |
| 376 #define PP_USE_HARDWARE_RNG 38 | |
| 377 #define PP_KEYSPEC 39 | |
| 378 #define PP_ENUMEX_SIGNING_PROT 40 | |
| 379 #define PP_CRYPT_COUNT_KEY_USE 41 | |
| 380 | |
| 381 #define CRYPT_FIRST 1 | |
| 382 #define CRYPT_NEXT 2 | |
| 383 #define CRYPT_SGC_ENUM 4 | |
| 384 | |
| 385 #define CRYPT_IMPL_HARDWARE 1 | |
| 386 #define CRYPT_IMPL_SOFTWARE 2 | |
| 387 #define CRYPT_IMPL_MIXED 3 | |
| 388 #define CRYPT_IMPL_UNKNOWN 4 | |
| 389 #define CRYPT_IMPL_REMOVABLE 8 | |
| 390 | |
| 391 #define CRYPT_SEC_DESCR 0x1 | |
| 392 #define CRYPT_PSTORE 0x2 | |
| 393 #define CRYPT_UI_PROMPT 0x4 | |
| 394 | |
| 395 #define CRYPT_FLAG_PCT1 0x1 | |
| 396 #define CRYPT_FLAG_SSL2 0x2 | |
| 397 #define CRYPT_FLAG_SSL3 0x4 | |
| 398 #define CRYPT_FLAG_TLS1 0x8 | |
| 399 #define CRYPT_FLAG_IPSEC 0x10 | |
| 400 #define CRYPT_FLAG_SIGNING 0x20 | |
| 401 | |
| 402 #define CRYPT_SGC 0x1 | |
| 403 #define CRYPT_FASTSGC 0x2 | |
| 404 | |
| 405 #define PP_CLIENT_HWND 1 | |
| 406 #define PP_CONTEXT_INFO 11 | |
| 407 #define PP_KEYEXCHANGE_KEYSIZE 12 | |
| 408 #define PP_SIGNATURE_KEYSIZE 13 | |
| 409 #define PP_KEYEXCHANGE_ALG 14 | |
| 410 #define PP_SIGNATURE_ALG 15 | |
| 411 #define PP_DELETEKEY 24 | |
| 412 | |
| 413 #define PROV_RSA_FULL 1 | |
| 414 #define PROV_RSA_SIG 2 | |
| 415 #define PROV_DSS 3 | |
| 416 #define PROV_FORTEZZA 4 | |
| 417 #define PROV_MS_EXCHANGE 5 | |
| 418 #define PROV_SSL 6 | |
| 419 #define PROV_RSA_SCHANNEL 12 | |
| 420 #define PROV_DSS_DH 13 | |
| 421 #define PROV_EC_ECDSA_SIG 14 | |
| 422 #define PROV_EC_ECNRA_SIG 15 | |
| 423 #define PROV_EC_ECDSA_FULL 16 | |
| 424 #define PROV_EC_ECNRA_FULL 17 | |
| 425 #define PROV_DH_SCHANNEL 18 | |
| 426 #define PROV_SPYRUS_LYNKS 20 | |
| 427 #define PROV_RNG 21 | |
| 428 #define PROV_INTEL_SEC 22 | |
| 429 #define PROV_REPLACE_OWF 23 | |
| 430 #define PROV_RSA_AES 24 | |
| 431 | |
| 432 #ifdef UNICODE | |
| 433 #define MS_DEF_PROV MS_DEF_PROV_W | |
| 434 #define MS_ENHANCED_PROV MS_ENHANCED_PROV_W | |
| 435 #define MS_STRONG_PROV MS_STRONG_PROV_W | |
| 436 #define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_W | |
| 437 #define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_W | |
| 438 #define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_W | |
| 439 #define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_W | |
| 440 #define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_W | |
| 441 #define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_W | |
| 442 #else | |
| 443 #define MS_DEF_PROV MS_DEF_PROV_A | |
| 444 #define MS_ENHANCED_PROV MS_ENHANCED_PROV_A | |
| 445 #define MS_STRONG_PROV MS_STRONG_PROV_A | |
| 446 #define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_A | |
| 447 #define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_A | |
| 448 #define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_A | |
| 449 #define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_A | |
| 450 #define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_A | |
| 451 #define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_A | |
| 452 #endif | |
| 453 | |
| 454 #define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0" | |
| 455 #define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0" | |
| 456 #define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0" | |
| 457 #define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0" | |
| 458 #define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider" | |
| 459 #define MS_STRONG_PROV_W L"Microsoft Strong Cryptographic Provider" | |
| 460 #define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider" | |
| 461 #define MS_DEF_RSA_SIG_PROV_W L"Microsoft RSA Signature Cryptographic Provider" | |
| 462 #define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider" | |
| 463 #define MS_DEF_RSA_SCHANNEL_PROV_W L"Microsoft RSA SChannel Cryptographic Provider" | |
| 464 #define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider" | |
| 465 #define MS_DEF_DSS_PROV_W L"Microsoft Base DSS Cryptographic Provider" | |
| 466 #define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" | |
| 467 #define MS_DEF_DSS_DH_PROV_W L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" | |
| 468 #define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" | |
| 469 #define MS_ENH_DSS_DH_PROV_W L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" | |
| 470 #define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider" | |
| 471 #define MS_DEF_DH_SCHANNEL_PROV_W L"Microsoft DH SChannel Cryptographic Provider" | |
| 472 | |
| 473 #ifdef UNICODE | |
| 474 #define MS_SCARD_PROV MS_SCARD_PROV_W | |
| 475 #define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_W | |
| 476 #else | |
| 477 #define MS_SCARD_PROV MS_SCARD_PROV_A | |
| 478 #define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_A | |
| 479 #endif | |
| 480 | |
| 481 #define MS_SCARD_PROV_A "Microsoft Base Smart Card Crypto Provider" | |
| 482 #define MS_SCARD_PROV_W L"Microsoft Base Smart Card Crypto Provider" | |
| 483 | |
| 484 #define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider" | |
| 485 #define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider" | |
| 486 | |
| 487 #define MAXUIDLEN 64 | |
| 488 | |
| 489 #define EXPO_OFFLOAD_REG_VALUE "ExpoOffload" | |
| 490 #define EXPO_OFFLOAD_FUNC_NAME "OffloadModExpo" | |
| 491 | |
| 492 #define szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS "Software\\Policies\\Microsoft\\Cryptography" | |
| 493 | |
| 494 #define szFORCE_KEY_PROTECTION "ForceKeyProtection" | |
| 495 | |
| 496 #define dwFORCE_KEY_PROTECTION_DISABLED 0x0 | |
| 497 #define dwFORCE_KEY_PROTECTION_USER_SELECT 0x1 | |
| 498 #define dwFORCE_KEY_PROTECTION_HIGH 0x2 | |
| 499 | |
| 500 #define szKEY_CACHE_ENABLED "CachePrivateKeys" | |
| 501 #define szKEY_CACHE_SECONDS "PrivateKeyLifetimeSeconds" | |
| 502 | |
| 503 #define szPRIV_KEY_CACHE_MAX_ITEMS "PrivKeyCacheMaxItems" | |
| 504 #define cPRIV_KEY_CACHE_MAX_ITEMS_DEFAULT 20 | |
| 505 | |
| 506 #define szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS "PrivKeyCachePurgeIntervalSeconds" | |
| 507 #define cPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS_DEFAULT 86400 | |
| 508 | |
| 509 #define CUR_BLOB_VERSION 2 | |
| 510 | |
| 511 typedef struct _CMS_KEY_INFO { | |
| 512 DWORD dwVersion; | |
| 513 ALG_ID Algid; | |
| 514 BYTE *pbOID; | |
| 515 DWORD cbOID; | |
| 516 } CMS_KEY_INFO,*PCMS_KEY_INFO; | |
| 517 | |
| 518 typedef struct _HMAC_Info { | |
| 519 ALG_ID HashAlgid; | |
| 520 BYTE *pbInnerString; | |
| 521 DWORD cbInnerString; | |
| 522 BYTE *pbOuterString; | |
| 523 DWORD cbOuterString; | |
| 524 } HMAC_INFO,*PHMAC_INFO; | |
| 525 | |
| 526 typedef struct _SCHANNEL_ALG { | |
| 527 DWORD dwUse; | |
| 528 ALG_ID Algid; | |
| 529 DWORD cBits; | |
| 530 DWORD dwFlags; | |
| 531 DWORD dwReserved; | |
| 532 } SCHANNEL_ALG,*PSCHANNEL_ALG; | |
| 533 | |
| 534 #define SCHANNEL_MAC_KEY 0x0 | |
| 535 #define SCHANNEL_ENC_KEY 0x1 | |
| 536 | |
| 537 #define INTERNATIONAL_USAGE 0x1 | |
| 538 | |
| 539 typedef struct _PROV_ENUMALGS { | |
| 540 ALG_ID aiAlgid; | |
| 541 DWORD dwBitLen; | |
| 542 DWORD dwNameLen; | |
| 543 CHAR szName[20]; | |
| 544 } PROV_ENUMALGS; | |
| 545 | |
| 546 typedef struct _PROV_ENUMALGS_EX { | |
| 547 ALG_ID aiAlgid; | |
| 548 DWORD dwDefaultLen; | |
| 549 DWORD dwMinLen; | |
| 550 DWORD dwMaxLen; | |
| 551 DWORD dwProtocols; | |
| 552 DWORD dwNameLen; | |
| 553 CHAR szName[20]; | |
| 554 DWORD dwLongNameLen; | |
| 555 CHAR szLongName[40]; | |
| 556 } PROV_ENUMALGS_EX; | |
| 557 | |
| 558 typedef struct _PUBLICKEYSTRUC { | |
| 559 BYTE bType; | |
| 560 BYTE bVersion; | |
| 561 WORD reserved; | |
| 562 ALG_ID aiKeyAlg; | |
| 563 } BLOBHEADER,PUBLICKEYSTRUC; | |
| 564 | |
| 565 typedef struct _RSAPUBKEY { | |
| 566 DWORD magic; | |
| 567 DWORD bitlen; | |
| 568 DWORD pubexp; | |
| 569 | |
| 570 } RSAPUBKEY; | |
| 571 | |
| 572 typedef struct _PUBKEY { | |
| 573 DWORD magic; | |
| 574 DWORD bitlen; | |
| 575 } DHPUBKEY,DSSPUBKEY,KEAPUBKEY,TEKPUBKEY; | |
| 576 | |
| 577 typedef struct _DSSSEED { | |
| 578 DWORD counter; | |
| 579 BYTE seed[20]; | |
| 580 } DSSSEED; | |
| 581 | |
| 582 typedef struct _PUBKEYVER3 { | |
| 583 DWORD magic; | |
| 584 DWORD bitlenP; | |
| 585 DWORD bitlenQ; | |
| 586 DWORD bitlenJ; | |
| 587 DSSSEED DSSSeed; | |
| 588 } DHPUBKEY_VER3,DSSPUBKEY_VER3; | |
| 589 | |
| 590 typedef struct _PRIVKEYVER3 { | |
| 591 DWORD magic; | |
| 592 DWORD bitlenP; | |
| 593 DWORD bitlenQ; | |
| 594 DWORD bitlenJ; | |
| 595 DWORD bitlenX; | |
| 596 DSSSEED DSSSeed; | |
| 597 } DHPRIVKEY_VER3,DSSPRIVKEY_VER3; | |
| 598 | |
| 599 typedef struct _KEY_TYPE_SUBTYPE { | |
| 600 DWORD dwKeySpec; | |
| 601 GUID Type; | |
| 602 GUID Subtype; | |
| 603 } KEY_TYPE_SUBTYPE,*PKEY_TYPE_SUBTYPE; | |
| 604 | |
| 605 typedef struct _CERT_FORTEZZA_DATA_PROP { | |
| 606 unsigned char SerialNumber[8]; | |
| 607 int CertIndex; | |
| 608 unsigned char CertLabel[36]; | |
| 609 } CERT_FORTEZZA_DATA_PROP; | |
| 610 | |
| 611 typedef struct _CRYPT_RC4_KEY_STATE { | |
| 612 unsigned char Key[16]; | |
| 613 unsigned char SBox[256]; | |
| 614 unsigned char i; | |
| 615 unsigned char j; | |
| 616 } CRYPT_RC4_KEY_STATE,*PCRYPT_RC4_KEY_STATE; | |
| 617 | |
| 618 typedef struct _CRYPT_DES_KEY_STATE { | |
| 619 unsigned char Key[8]; | |
| 620 unsigned char IV[8]; | |
| 621 unsigned char Feedback[8]; | |
| 622 } CRYPT_DES_KEY_STATE,*PCRYPT_DES_KEY_STATE; | |
| 623 | |
| 624 typedef struct _CRYPT_3DES_KEY_STATE { | |
| 625 unsigned char Key[24]; | |
| 626 unsigned char IV[8]; | |
| 627 unsigned char Feedback[8]; | |
| 628 } CRYPT_3DES_KEY_STATE,*PCRYPT_3DES_KEY_STATE; | |
| 629 | |
| 630 typedef struct _CRYPTOAPI_BLOB { | |
| 631 DWORD cbData; | |
| 632 BYTE *pbData; | |
| 633 } CRYPT_INTEGER_BLOB,*PCRYPT_INTEGER_BLOB,CRYPT_UINT_BLOB,*PCRYPT_UINT_BLOB,CRYPT_OBJID_BLOB,*PCRYPT_OBJID_BLOB,CERT_NAME_BLOB,*PCERT_NAME_BLOB,CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB,CERT_BLOB,*PCERT_BLOB,CRL_BLOB,*PCRL_BLOB,DATA_BLOB,*PDATA_BLOB,CRYPT_DATA_BLOB,*PCRYPT_DATA_BLOB,CRYPT_HASH_BLOB,*PCRYPT_HASH_BLOB,CRYPT_DIGEST_BLOB,*PCRYPT_DIGEST_BLOB,CRYPT_DER_BLOB,*PCRYPT_DER_BLOB,CRYPT_ATTR_BLOB,*PCRYPT_ATTR_BLOB; | |
| 634 | |
| 635 typedef struct _CMS_DH_KEY_INFO { | |
| 636 DWORD dwVersion; | |
| 637 ALG_ID Algid; | |
| 638 LPSTR pszContentEncObjId; | |
| 639 CRYPT_DATA_BLOB PubInfo; | |
| 640 void *pReserved; | |
| 641 } CMS_DH_KEY_INFO,*PCMS_DH_KEY_INFO; | |
| 642 | |
| 643 #ifdef UNICODE | |
| 644 #define CryptAcquireContext CryptAcquireContextW | |
| 645 #define CryptSignHash CryptSignHashW | |
| 646 #define CryptVerifySignature CryptVerifySignatureW | |
| 647 #else | |
| 648 #define CryptAcquireContext CryptAcquireContextA | |
| 649 #define CryptSignHash CryptSignHashA | |
| 650 #define CryptVerifySignature CryptVerifySignatureA | |
| 651 #endif | |
| 652 | |
| 653 WINIMPM WINBOOL WINAPI CryptAcquireContextA(HCRYPTPROV *phProv,LPCSTR szContainer,LPCSTR szProvider,DWORD dwProvType,DWORD dwFlags); | |
| 654 WINIMPM WINBOOL WINAPI CryptAcquireContextW(HCRYPTPROV *phProv,LPCWSTR szContainer,LPCWSTR szProvider,DWORD dwProvType,DWORD dwFlags); | |
| 655 WINIMPM WINBOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv,DWORD dwFlags); | |
| 656 WINIMPM WINBOOL WINAPI CryptGenKey(HCRYPTPROV hProv,ALG_ID Algid,DWORD dwFlags,HCRYPTKEY *phKey); | |
| 657 WINIMPM WINBOOL WINAPI CryptDeriveKey(HCRYPTPROV hProv,ALG_ID Algid,HCRYPTHASH hBaseData,DWORD dwFlags,HCRYPTKEY *phKey); | |
| 658 WINIMPM WINBOOL WINAPI CryptDestroyKey(HCRYPTKEY hKey); | |
| 659 WINIMPM WINBOOL WINAPI CryptSetKeyParam(HCRYPTKEY hKey,DWORD dwParam,CONST BYTE *pbData,DWORD dwFlags); | |
| 660 WINIMPM WINBOOL WINAPI CryptGetKeyParam(HCRYPTKEY hKey,DWORD dwParam,BYTE *pbData,DWORD *pdwDataLen,DWORD dwFlags); | |
| 661 WINIMPM WINBOOL WINAPI CryptSetHashParam(HCRYPTHASH hHash,DWORD dwParam,CONST BYTE *pbData,DWORD dwFlags); | |
| 662 WINIMPM WINBOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash,DWORD dwParam,BYTE *pbData,DWORD *pdwDataLen,DWORD dwFlags); | |
| 663 WINIMPM WINBOOL WINAPI CryptSetProvParam(HCRYPTPROV hProv,DWORD dwParam,CONST BYTE *pbData,DWORD dwFlags); | |
| 664 WINIMPM WINBOOL WINAPI CryptGetProvParam(HCRYPTPROV hProv,DWORD dwParam,BYTE *pbData,DWORD *pdwDataLen,DWORD dwFlags); | |
| 665 WINIMPM WINBOOL WINAPI CryptGenRandom(HCRYPTPROV hProv,DWORD dwLen,BYTE *pbBuffer); | |
| 666 WINIMPM WINBOOL WINAPI CryptGetUserKey(HCRYPTPROV hProv,DWORD dwKeySpec,HCRYPTKEY *phUserKey); | |
| 667 WINIMPM WINBOOL WINAPI CryptExportKey(HCRYPTKEY hKey,HCRYPTKEY hExpKey,DWORD dwBlobType,DWORD dwFlags,BYTE *pbData,DWORD *pdwDataLen); | |
| 668 WINIMPM WINBOOL WINAPI CryptImportKey(HCRYPTPROV hProv,CONST BYTE *pbData,DWORD dwDataLen,HCRYPTKEY hPubKey,DWORD dwFlags,HCRYPTKEY *phKey); | |
| 669 WINIMPM WINBOOL WINAPI CryptEncrypt(HCRYPTKEY hKey,HCRYPTHASH hHash,WINBOOL Final,DWORD dwFlags,BYTE *pbData,DWORD *pdwDataLen,DWORD dwBufLen); | |
| 670 WINIMPM WINBOOL WINAPI CryptDecrypt(HCRYPTKEY hKey,HCRYPTHASH hHash,WINBOOL Final,DWORD dwFlags,BYTE *pbData,DWORD *pdwDataLen); | |
| 671 WINIMPM WINBOOL WINAPI CryptCreateHash(HCRYPTPROV hProv,ALG_ID Algid,HCRYPTKEY hKey,DWORD dwFlags,HCRYPTHASH *phHash); | |
| 672 WINIMPM WINBOOL WINAPI CryptHashData(HCRYPTHASH hHash,CONST BYTE *pbData,DWORD dwDataLen,DWORD dwFlags); | |
| 673 WINIMPM WINBOOL WINAPI CryptHashSessionKey(HCRYPTHASH hHash,HCRYPTKEY hKey,DWORD dwFlags); | |
| 674 WINIMPM WINBOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash); | |
| 675 WINIMPM WINBOOL WINAPI CryptSignHashA(HCRYPTHASH hHash,DWORD dwKeySpec,LPCSTR szDescription,DWORD dwFlags,BYTE *pbSignature,DWORD *pdwSigLen); | |
| 676 WINIMPM WINBOOL WINAPI CryptSignHashW(HCRYPTHASH hHash,DWORD dwKeySpec,LPCWSTR szDescription,DWORD dwFlags,BYTE *pbSignature,DWORD *pdwSigLen); | |
| 677 WINIMPM WINBOOL WINAPI CryptVerifySignatureA(HCRYPTHASH hHash,CONST BYTE *pbSignature,DWORD dwSigLen,HCRYPTKEY hPubKey,LPCSTR szDescription,DWORD dwFlags); | |
| 678 WINIMPM WINBOOL WINAPI CryptVerifySignatureW(HCRYPTHASH hHash,CONST BYTE *pbSignature,DWORD dwSigLen,HCRYPTKEY hPubKey,LPCWSTR szDescription,DWORD dwFlags); | |
| 679 WINIMPM WINBOOL WINAPI CryptSetProviderA(LPCSTR pszProvName,DWORD dwProvType); | |
| 680 WINIMPM WINBOOL WINAPI CryptSetProviderW(LPCWSTR pszProvName,DWORD dwProvType); | |
| 681 #ifdef UNICODE | |
| 682 #define CryptSetProvider CryptSetProviderW | |
| 683 #define CryptSetProviderEx CryptSetProviderExW | |
| 684 #define CryptGetDefaultProvider CryptGetDefaultProviderW | |
| 685 #define CryptEnumProviderTypes CryptEnumProviderTypesW | |
| 686 #define CryptEnumProviders CryptEnumProvidersW | |
| 687 #else | |
| 688 #define CryptSetProvider CryptSetProviderA | |
| 689 #define CryptSetProviderEx CryptSetProviderExA | |
| 690 #define CryptGetDefaultProvider CryptGetDefaultProviderA | |
| 691 #define CryptEnumProviderTypes CryptEnumProviderTypesA | |
| 692 #define CryptEnumProviders CryptEnumProvidersA | |
| 693 #endif | |
| 694 | |
| 695 WINIMPM WINBOOL WINAPI CryptSetProviderExA(LPCSTR pszProvName,DWORD dwProvType,DWORD *pdwReserved,DWORD dwFlags); | |
| 696 WINIMPM WINBOOL WINAPI CryptSetProviderExW(LPCWSTR pszProvName,DWORD dwProvType,DWORD *pdwReserved,DWORD dwFlags); | |
| 697 WINIMPM WINBOOL WINAPI CryptGetDefaultProviderA(DWORD dwProvType,DWORD *pdwReserved,DWORD dwFlags,LPSTR pszProvName,DWORD *pcbProvName); | |
| 698 WINIMPM WINBOOL WINAPI CryptGetDefaultProviderW(DWORD dwProvType,DWORD *pdwReserved,DWORD dwFlags,LPWSTR pszProvName,DWORD *pcbProvName); | |
| 699 WINIMPM WINBOOL WINAPI CryptEnumProviderTypesA(DWORD dwIndex,DWORD *pdwReserved,DWORD dwFlags,DWORD *pdwProvType,LPSTR szTypeName,DWORD *pcbTypeName); | |
| 700 WINIMPM WINBOOL WINAPI CryptEnumProviderTypesW(DWORD dwIndex,DWORD *pdwReserved,DWORD dwFlags,DWORD *pdwProvType,LPWSTR szTypeName,DWORD *pcbTypeName); | |
| 701 WINIMPM WINBOOL WINAPI CryptEnumProvidersA(DWORD dwIndex,DWORD *pdwReserved,DWORD dwFlags,DWORD *pdwProvType,LPSTR szProvName,DWORD *pcbProvName); | |
| 702 WINIMPM WINBOOL WINAPI CryptEnumProvidersW(DWORD dwIndex,DWORD *pdwReserved,DWORD dwFlags,DWORD *pdwProvType,LPWSTR szProvName,DWORD *pcbProvName); | |
| 703 WINIMPM WINBOOL WINAPI CryptContextAddRef(HCRYPTPROV hProv,DWORD *pdwReserved,DWORD dwFlags); | |
| 704 WINIMPM WINBOOL WINAPI CryptDuplicateKey(HCRYPTKEY hKey,DWORD *pdwReserved,DWORD dwFlags,HCRYPTKEY *phKey); | |
| 705 WINIMPM WINBOOL WINAPI CryptDuplicateHash(HCRYPTHASH hHash,DWORD *pdwReserved,DWORD dwFlags,HCRYPTHASH *phHash); | |
| 706 WINBOOL __cdecl GetEncSChannel(BYTE **pData,DWORD *dwDecSize); | |
| 707 | |
| 708 typedef struct _CRYPT_BIT_BLOB { | |
| 709 DWORD cbData; | |
| 710 BYTE *pbData; | |
| 711 DWORD cUnusedBits; | |
| 712 } CRYPT_BIT_BLOB,*PCRYPT_BIT_BLOB; | |
| 713 | |
| 714 typedef struct _CRYPT_ALGORITHM_IDENTIFIER { | |
| 715 LPSTR pszObjId; | |
| 716 CRYPT_OBJID_BLOB Parameters; | |
| 717 } CRYPT_ALGORITHM_IDENTIFIER,*PCRYPT_ALGORITHM_IDENTIFIER; | |
| 718 | |
| 719 #define szOID_RSA "1.2.840.113549" | |
| 720 #define szOID_PKCS "1.2.840.113549.1" | |
| 721 #define szOID_RSA_HASH "1.2.840.113549.2" | |
| 722 #define szOID_RSA_ENCRYPT "1.2.840.113549.3" | |
| 723 #define szOID_PKCS_1 "1.2.840.113549.1.1" | |
| 724 #define szOID_PKCS_2 "1.2.840.113549.1.2" | |
| 725 #define szOID_PKCS_3 "1.2.840.113549.1.3" | |
| 726 #define szOID_PKCS_4 "1.2.840.113549.1.4" | |
| 727 #define szOID_PKCS_5 "1.2.840.113549.1.5" | |
| 728 #define szOID_PKCS_6 "1.2.840.113549.1.6" | |
| 729 #define szOID_PKCS_7 "1.2.840.113549.1.7" | |
| 730 #define szOID_PKCS_8 "1.2.840.113549.1.8" | |
| 731 #define szOID_PKCS_9 "1.2.840.113549.1.9" | |
| 732 #define szOID_PKCS_10 "1.2.840.113549.1.10" | |
| 733 #define szOID_PKCS_12 "1.2.840.113549.1.12" | |
| 734 #define szOID_RSA_RSA "1.2.840.113549.1.1.1" | |
| 735 #define szOID_RSA_MD2RSA "1.2.840.113549.1.1.2" | |
| 736 #define szOID_RSA_MD4RSA "1.2.840.113549.1.1.3" | |
| 737 #define szOID_RSA_MD5RSA "1.2.840.113549.1.1.4" | |
| 738 #define szOID_RSA_SHA1RSA "1.2.840.113549.1.1.5" | |
| 739 #define szOID_RSA_SETOAEP_RSA "1.2.840.113549.1.1.6" | |
| 740 #define szOID_RSA_DH "1.2.840.113549.1.3.1" | |
| 741 #define szOID_RSA_data "1.2.840.113549.1.7.1" | |
| 742 #define szOID_RSA_signedData "1.2.840.113549.1.7.2" | |
| 743 #define szOID_RSA_envelopedData "1.2.840.113549.1.7.3" | |
| 744 #define szOID_RSA_signEnvData "1.2.840.113549.1.7.4" | |
| 745 #define szOID_RSA_digestedData "1.2.840.113549.1.7.5" | |
| 746 #define szOID_RSA_hashedData "1.2.840.113549.1.7.5" | |
| 747 #define szOID_RSA_encryptedData "1.2.840.113549.1.7.6" | |
| 748 #define szOID_RSA_emailAddr "1.2.840.113549.1.9.1" | |
| 749 #define szOID_RSA_unstructName "1.2.840.113549.1.9.2" | |
| 750 #define szOID_RSA_contentType "1.2.840.113549.1.9.3" | |
| 751 #define szOID_RSA_messageDigest "1.2.840.113549.1.9.4" | |
| 752 #define szOID_RSA_signingTime "1.2.840.113549.1.9.5" | |
| 753 #define szOID_RSA_counterSign "1.2.840.113549.1.9.6" | |
| 754 #define szOID_RSA_challengePwd "1.2.840.113549.1.9.7" | |
| 755 #define szOID_RSA_unstructAddr "1.2.840.113549.1.9.8" | |
| 756 #define szOID_RSA_extCertAttrs "1.2.840.113549.1.9.9" | |
| 757 #define szOID_RSA_certExtensions "1.2.840.113549.1.9.14" | |
| 758 #define szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15" | |
| 759 #define szOID_RSA_preferSignedData "1.2.840.113549.1.9.15.1" | |
| 760 #define szOID_RSA_SMIMEalg "1.2.840.113549.1.9.16.3" | |
| 761 #define szOID_RSA_SMIMEalgESDH "1.2.840.113549.1.9.16.3.5" | |
| 762 #define szOID_RSA_SMIMEalgCMS3DESwrap "1.2.840.113549.1.9.16.3.6" | |
| 763 #define szOID_RSA_SMIMEalgCMSRC2wrap "1.2.840.113549.1.9.16.3.7" | |
| 764 #define szOID_RSA_MD2 "1.2.840.113549.2.2" | |
| 765 #define szOID_RSA_MD4 "1.2.840.113549.2.4" | |
| 766 #define szOID_RSA_MD5 "1.2.840.113549.2.5" | |
| 767 | |
| 768 #define szOID_RSA_RC2CBC "1.2.840.113549.3.2" | |
| 769 #define szOID_RSA_RC4 "1.2.840.113549.3.4" | |
| 770 #define szOID_RSA_DES_EDE3_CBC "1.2.840.113549.3.7" | |
| 771 #define szOID_RSA_RC5_CBCPad "1.2.840.113549.3.9" | |
| 772 | |
| 773 #define szOID_ANSI_X942 "1.2.840.10046" | |
| 774 #define szOID_ANSI_X942_DH "1.2.840.10046.2.1" | |
| 775 | |
| 776 #define szOID_X957 "1.2.840.10040" | |
| 777 #define szOID_X957_DSA "1.2.840.10040.4.1" | |
| 778 #define szOID_X957_SHA1DSA "1.2.840.10040.4.3" | |
| 779 | |
| 780 #define szOID_DS "2.5" | |
| 781 #define szOID_DSALG "2.5.8" | |
| 782 #define szOID_DSALG_CRPT "2.5.8.1" | |
| 783 #define szOID_DSALG_HASH "2.5.8.2" | |
| 784 #define szOID_DSALG_SIGN "2.5.8.3" | |
| 785 #define szOID_DSALG_RSA "2.5.8.1.1" | |
| 786 | |
| 787 #define szOID_OIW "1.3.14" | |
| 788 | |
| 789 #define szOID_OIWSEC "1.3.14.3.2" | |
| 790 #define szOID_OIWSEC_md4RSA "1.3.14.3.2.2" | |
| 791 #define szOID_OIWSEC_md5RSA "1.3.14.3.2.3" | |
| 792 #define szOID_OIWSEC_md4RSA2 "1.3.14.3.2.4" | |
| 793 #define szOID_OIWSEC_desECB "1.3.14.3.2.6" | |
| 794 #define szOID_OIWSEC_desCBC "1.3.14.3.2.7" | |
| 795 #define szOID_OIWSEC_desOFB "1.3.14.3.2.8" | |
| 796 #define szOID_OIWSEC_desCFB "1.3.14.3.2.9" | |
| 797 #define szOID_OIWSEC_desMAC "1.3.14.3.2.10" | |
| 798 #define szOID_OIWSEC_rsaSign "1.3.14.3.2.11" | |
| 799 #define szOID_OIWSEC_dsa "1.3.14.3.2.12" | |
| 800 #define szOID_OIWSEC_shaDSA "1.3.14.3.2.13" | |
| 801 #define szOID_OIWSEC_mdc2RSA "1.3.14.3.2.14" | |
| 802 #define szOID_OIWSEC_shaRSA "1.3.14.3.2.15" | |
| 803 #define szOID_OIWSEC_dhCommMod "1.3.14.3.2.16" | |
| 804 #define szOID_OIWSEC_desEDE "1.3.14.3.2.17" | |
| 805 #define szOID_OIWSEC_sha "1.3.14.3.2.18" | |
| 806 #define szOID_OIWSEC_mdc2 "1.3.14.3.2.19" | |
| 807 #define szOID_OIWSEC_dsaComm "1.3.14.3.2.20" | |
| 808 #define szOID_OIWSEC_dsaCommSHA "1.3.14.3.2.21" | |
| 809 #define szOID_OIWSEC_rsaXchg "1.3.14.3.2.22" | |
| 810 #define szOID_OIWSEC_keyHashSeal "1.3.14.3.2.23" | |
| 811 #define szOID_OIWSEC_md2RSASign "1.3.14.3.2.24" | |
| 812 #define szOID_OIWSEC_md5RSASign "1.3.14.3.2.25" | |
| 813 #define szOID_OIWSEC_sha1 "1.3.14.3.2.26" | |
| 814 #define szOID_OIWSEC_dsaSHA1 "1.3.14.3.2.27" | |
| 815 #define szOID_OIWSEC_dsaCommSHA1 "1.3.14.3.2.28" | |
| 816 #define szOID_OIWSEC_sha1RSASign "1.3.14.3.2.29" | |
| 817 | |
| 818 #define szOID_OIWDIR "1.3.14.7.2" | |
| 819 #define szOID_OIWDIR_CRPT "1.3.14.7.2.1" | |
| 820 #define szOID_OIWDIR_HASH "1.3.14.7.2.2" | |
| 821 #define szOID_OIWDIR_SIGN "1.3.14.7.2.3" | |
| 822 #define szOID_OIWDIR_md2 "1.3.14.7.2.2.1" | |
| 823 #define szOID_OIWDIR_md2RSA "1.3.14.7.2.3.1" | |
| 824 | |
| 825 #define szOID_INFOSEC "2.16.840.1.101.2.1" | |
| 826 #define szOID_INFOSEC_sdnsSignature "2.16.840.1.101.2.1.1.1" | |
| 827 #define szOID_INFOSEC_mosaicSignature "2.16.840.1.101.2.1.1.2" | |
| 828 #define szOID_INFOSEC_sdnsConfidentiality "2.16.840.1.101.2.1.1.3" | |
| 829 #define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4" | |
| 830 #define szOID_INFOSEC_sdnsIntegrity "2.16.840.1.101.2.1.1.5" | |
| 831 #define szOID_INFOSEC_mosaicIntegrity "2.16.840.1.101.2.1.1.6" | |
| 832 #define szOID_INFOSEC_sdnsTokenProtection "2.16.840.1.101.2.1.1.7" | |
| 833 #define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8" | |
| 834 #define szOID_INFOSEC_sdnsKeyManagement "2.16.840.1.101.2.1.1.9" | |
| 835 #define szOID_INFOSEC_mosaicKeyManagement "2.16.840.1.101.2.1.1.10" | |
| 836 #define szOID_INFOSEC_sdnsKMandSig "2.16.840.1.101.2.1.1.11" | |
| 837 #define szOID_INFOSEC_mosaicKMandSig "2.16.840.1.101.2.1.1.12" | |
| 838 #define szOID_INFOSEC_SuiteASignature "2.16.840.1.101.2.1.1.13" | |
| 839 #define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14" | |
| 840 #define szOID_INFOSEC_SuiteAIntegrity "2.16.840.1.101.2.1.1.15" | |
| 841 #define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16" | |
| 842 #define szOID_INFOSEC_SuiteAKeyManagement "2.16.840.1.101.2.1.1.17" | |
| 843 #define szOID_INFOSEC_SuiteAKMandSig "2.16.840.1.101.2.1.1.18" | |
| 844 #define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19" | |
| 845 #define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20" | |
| 846 #define szOID_INFOSEC_mosaicUpdatedInteg "2.16.840.1.101.2.1.1.21" | |
| 847 | |
| 848 typedef struct _CRYPT_OBJID_TABLE { | |
| 849 DWORD dwAlgId; | |
| 850 LPCSTR pszObjId; | |
| 851 } CRYPT_OBJID_TABLE,*PCRYPT_OBJID_TABLE; | |
| 852 | |
| 853 typedef struct _CRYPT_HASH_INFO { | |
| 854 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 855 CRYPT_HASH_BLOB Hash; | |
| 856 } CRYPT_HASH_INFO,*PCRYPT_HASH_INFO; | |
| 857 | |
| 858 typedef struct _CERT_EXTENSION { | |
| 859 LPSTR pszObjId; | |
| 860 WINBOOL fCritical; | |
| 861 CRYPT_OBJID_BLOB Value; | |
| 862 } CERT_EXTENSION,*PCERT_EXTENSION; | |
| 863 | |
| 864 typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE { | |
| 865 LPSTR pszObjId; | |
| 866 CRYPT_OBJID_BLOB Value; | |
| 867 } CRYPT_ATTRIBUTE_TYPE_VALUE,*PCRYPT_ATTRIBUTE_TYPE_VALUE; | |
| 868 | |
| 869 typedef struct _CRYPT_ATTRIBUTE { | |
| 870 LPSTR pszObjId; | |
| 871 DWORD cValue; | |
| 872 PCRYPT_ATTR_BLOB rgValue; | |
| 873 } CRYPT_ATTRIBUTE,*PCRYPT_ATTRIBUTE; | |
| 874 | |
| 875 typedef struct _CRYPT_ATTRIBUTES { | |
| 876 DWORD cAttr; | |
| 877 PCRYPT_ATTRIBUTE rgAttr; | |
| 878 } CRYPT_ATTRIBUTES,*PCRYPT_ATTRIBUTES; | |
| 879 | |
| 880 typedef struct _CERT_RDN_ATTR { | |
| 881 LPSTR pszObjId; | |
| 882 DWORD dwValueType; | |
| 883 CERT_RDN_VALUE_BLOB Value; | |
| 884 } CERT_RDN_ATTR,*PCERT_RDN_ATTR; | |
| 885 | |
| 886 #define szOID_COMMON_NAME "2.5.4.3" | |
| 887 #define szOID_SUR_NAME "2.5.4.4" | |
| 888 #define szOID_DEVICE_SERIAL_NUMBER "2.5.4.5" | |
| 889 #define szOID_COUNTRY_NAME "2.5.4.6" | |
| 890 #define szOID_LOCALITY_NAME "2.5.4.7" | |
| 891 #define szOID_STATE_OR_PROVINCE_NAME "2.5.4.8" | |
| 892 #define szOID_STREET_ADDRESS "2.5.4.9" | |
| 893 #define szOID_ORGANIZATION_NAME "2.5.4.10" | |
| 894 #define szOID_ORGANIZATIONAL_UNIT_NAME "2.5.4.11" | |
| 895 #define szOID_TITLE "2.5.4.12" | |
| 896 #define szOID_DESCRIPTION "2.5.4.13" | |
| 897 #define szOID_SEARCH_GUIDE "2.5.4.14" | |
| 898 #define szOID_BUSINESS_CATEGORY "2.5.4.15" | |
| 899 #define szOID_POSTAL_ADDRESS "2.5.4.16" | |
| 900 #define szOID_POSTAL_CODE "2.5.4.17" | |
| 901 #define szOID_POST_OFFICE_BOX "2.5.4.18" | |
| 902 #define szOID_PHYSICAL_DELIVERY_OFFICE_NAME "2.5.4.19" | |
| 903 #define szOID_TELEPHONE_NUMBER "2.5.4.20" | |
| 904 #define szOID_TELEX_NUMBER "2.5.4.21" | |
| 905 #define szOID_TELETEXT_TERMINAL_IDENTIFIER "2.5.4.22" | |
| 906 #define szOID_FACSIMILE_TELEPHONE_NUMBER "2.5.4.23" | |
| 907 #define szOID_X21_ADDRESS "2.5.4.24" | |
| 908 #define szOID_INTERNATIONAL_ISDN_NUMBER "2.5.4.25" | |
| 909 #define szOID_REGISTERED_ADDRESS "2.5.4.26" | |
| 910 #define szOID_DESTINATION_INDICATOR "2.5.4.27" | |
| 911 #define szOID_PREFERRED_DELIVERY_METHOD "2.5.4.28" | |
| 912 #define szOID_PRESENTATION_ADDRESS "2.5.4.29" | |
| 913 #define szOID_SUPPORTED_APPLICATION_CONTEXT "2.5.4.30" | |
| 914 #define szOID_MEMBER "2.5.4.31" | |
| 915 #define szOID_OWNER "2.5.4.32" | |
| 916 #define szOID_ROLE_OCCUPANT "2.5.4.33" | |
| 917 #define szOID_SEE_ALSO "2.5.4.34" | |
| 918 #define szOID_USER_PASSWORD "2.5.4.35" | |
| 919 #define szOID_USER_CERTIFICATE "2.5.4.36" | |
| 920 #define szOID_CA_CERTIFICATE "2.5.4.37" | |
| 921 #define szOID_AUTHORITY_REVOCATION_LIST "2.5.4.38" | |
| 922 #define szOID_CERTIFICATE_REVOCATION_LIST "2.5.4.39" | |
| 923 #define szOID_CROSS_CERTIFICATE_PAIR "2.5.4.40" | |
| 924 #define szOID_GIVEN_NAME "2.5.4.42" | |
| 925 #define szOID_INITIALS "2.5.4.43" | |
| 926 #define szOID_DN_QUALIFIER "2.5.4.46" | |
| 927 #define szOID_DOMAIN_COMPONENT "0.9.2342.19200300.100.1.25" | |
| 928 #define szOID_PKCS_12_FRIENDLY_NAME_ATTR "1.2.840.113549.1.9.20" | |
| 929 #define szOID_PKCS_12_LOCAL_KEY_ID "1.2.840.113549.1.9.21" | |
| 930 #define szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR "1.3.6.1.4.1.311.17.1" | |
| 931 #define szOID_LOCAL_MACHINE_KEYSET "1.3.6.1.4.1.311.17.2" | |
| 932 #define szOID_KEYID_RDN "1.3.6.1.4.1.311.10.7.1" | |
| 933 | |
| 934 #define CERT_RDN_ANY_TYPE 0 | |
| 935 #define CERT_RDN_ENCODED_BLOB 1 | |
| 936 #define CERT_RDN_OCTET_STRING 2 | |
| 937 #define CERT_RDN_NUMERIC_STRING 3 | |
| 938 #define CERT_RDN_PRINTABLE_STRING 4 | |
| 939 #define CERT_RDN_TELETEX_STRING 5 | |
| 940 #define CERT_RDN_T61_STRING 5 | |
| 941 #define CERT_RDN_VIDEOTEX_STRING 6 | |
| 942 #define CERT_RDN_IA5_STRING 7 | |
| 943 #define CERT_RDN_GRAPHIC_STRING 8 | |
| 944 #define CERT_RDN_VISIBLE_STRING 9 | |
| 945 #define CERT_RDN_ISO646_STRING 9 | |
| 946 #define CERT_RDN_GENERAL_STRING 10 | |
| 947 #define CERT_RDN_UNIVERSAL_STRING 11 | |
| 948 #define CERT_RDN_INT4_STRING 11 | |
| 949 #define CERT_RDN_BMP_STRING 12 | |
| 950 #define CERT_RDN_UNICODE_STRING 12 | |
| 951 #define CERT_RDN_UTF8_STRING 13 | |
| 952 #define CERT_RDN_TYPE_MASK 0xff | |
| 953 #define CERT_RDN_FLAGS_MASK 0xff000000 | |
| 954 #define CERT_RDN_ENABLE_T61_UNICODE_FLAG 0x80000000 | |
| 955 #define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x20000000 | |
| 956 #define CERT_RDN_FORCE_UTF8_UNICODE_FLAG 0x10000000 | |
| 957 #define CERT_RDN_DISABLE_CHECK_TYPE_FLAG 0x40000000 | |
| 958 #define CERT_RDN_DISABLE_IE4_UTF8_FLAG 0x1000000 | |
| 959 | |
| 960 #define IS_CERT_RDN_CHAR_STRING(X) (((X) & CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING) | |
| 961 | |
| 962 typedef struct _CERT_RDN { | |
| 963 DWORD cRDNAttr; | |
| 964 PCERT_RDN_ATTR rgRDNAttr; | |
| 965 } CERT_RDN,*PCERT_RDN; | |
| 966 | |
| 967 typedef struct _CERT_NAME_INFO { | |
| 968 DWORD cRDN; | |
| 969 PCERT_RDN rgRDN; | |
| 970 } CERT_NAME_INFO,*PCERT_NAME_INFO; | |
| 971 | |
| 972 typedef struct _CERT_NAME_VALUE { | |
| 973 DWORD dwValueType; | |
| 974 CERT_RDN_VALUE_BLOB Value; | |
| 975 } CERT_NAME_VALUE,*PCERT_NAME_VALUE; | |
| 976 | |
| 977 typedef struct _CERT_PUBLIC_KEY_INFO { | |
| 978 CRYPT_ALGORITHM_IDENTIFIER Algorithm; | |
| 979 CRYPT_BIT_BLOB PublicKey; | |
| 980 } CERT_PUBLIC_KEY_INFO,*PCERT_PUBLIC_KEY_INFO; | |
| 981 | |
| 982 #define CERT_RSA_PUBLIC_KEY_OBJID szOID_RSA_RSA | |
| 983 #define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN szOID_RSA_RSA | |
| 984 #define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG szOID_RSA_RSA | |
| 985 | |
| 986 typedef struct _CRYPT_PRIVATE_KEY_INFO{ | |
| 987 DWORD Version; | |
| 988 CRYPT_ALGORITHM_IDENTIFIER Algorithm; | |
| 989 CRYPT_DER_BLOB PrivateKey; | |
| 990 PCRYPT_ATTRIBUTES pAttributes; | |
| 991 } CRYPT_PRIVATE_KEY_INFO,*PCRYPT_PRIVATE_KEY_INFO; | |
| 992 | |
| 993 typedef struct _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO { | |
| 994 CRYPT_ALGORITHM_IDENTIFIER EncryptionAlgorithm; | |
| 995 CRYPT_DATA_BLOB EncryptedPrivateKey; | |
| 996 } CRYPT_ENCRYPTED_PRIVATE_KEY_INFO,*PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO; | |
| 997 | |
| 998 typedef WINBOOL (CALLBACK *PCRYPT_DECRYPT_PRIVATE_KEY_FUNC)(CRYPT_ALGORITHM_IDENTIFIER Algorithm,CRYPT_DATA_BLOB EncryptedPrivateKey,BYTE *pbClearTextKey,DWORD *pcbClearTextKey,LPVOID pVoidDecryptFunc); | |
| 999 typedef WINBOOL (CALLBACK *PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC)(CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm,CRYPT_DATA_BLOB *pClearTextPrivateKey,BYTE *pbEncryptedKey,DWORD *pcbEncryptedKey,LPVOID pVoidEncryptFunc); | |
| 1000 typedef WINBOOL (CALLBACK *PCRYPT_RESOLVE_HCRYPTPROV_FUNC)(CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo,HCRYPTPROV *phCryptProv,LPVOID pVoidResolveFunc); | |
| 1001 | |
| 1002 typedef struct _CRYPT_PKCS8_IMPORT_PARAMS { | |
| 1003 CRYPT_DIGEST_BLOB PrivateKey; | |
| 1004 PCRYPT_RESOLVE_HCRYPTPROV_FUNC pResolvehCryptProvFunc; | |
| 1005 LPVOID pVoidResolveFunc; | |
| 1006 PCRYPT_DECRYPT_PRIVATE_KEY_FUNC pDecryptPrivateKeyFunc; | |
| 1007 LPVOID pVoidDecryptFunc; | |
| 1008 } CRYPT_PKCS8_IMPORT_PARAMS,*PCRYPT_PKCS8_IMPORT_PARAMS,CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS,*PCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS; | |
| 1009 | |
| 1010 typedef struct _CRYPT_PKCS8_EXPORT_PARAMS { | |
| 1011 HCRYPTPROV hCryptProv; | |
| 1012 DWORD dwKeySpec; | |
| 1013 LPSTR pszPrivateKeyObjId; | |
| 1014 PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC pEncryptPrivateKeyFunc; | |
| 1015 LPVOID pVoidEncryptFunc; | |
| 1016 } CRYPT_PKCS8_EXPORT_PARAMS,*PCRYPT_PKCS8_EXPORT_PARAMS; | |
| 1017 | |
| 1018 typedef struct _CERT_INFO { | |
| 1019 DWORD dwVersion; | |
| 1020 CRYPT_INTEGER_BLOB SerialNumber; | |
| 1021 CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; | |
| 1022 CERT_NAME_BLOB Issuer; | |
| 1023 FILETIME NotBefore; | |
| 1024 FILETIME NotAfter; | |
| 1025 CERT_NAME_BLOB Subject; | |
| 1026 CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; | |
| 1027 CRYPT_BIT_BLOB IssuerUniqueId; | |
| 1028 CRYPT_BIT_BLOB SubjectUniqueId; | |
| 1029 DWORD cExtension; | |
| 1030 PCERT_EXTENSION rgExtension; | |
| 1031 } CERT_INFO,*PCERT_INFO; | |
| 1032 | |
| 1033 #define CERT_V1 0 | |
| 1034 #define CERT_V2 1 | |
| 1035 #define CERT_V3 2 | |
| 1036 | |
| 1037 #define CERT_INFO_VERSION_FLAG 1 | |
| 1038 #define CERT_INFO_SERIAL_NUMBER_FLAG 2 | |
| 1039 #define CERT_INFO_SIGNATURE_ALGORITHM_FLAG 3 | |
| 1040 #define CERT_INFO_ISSUER_FLAG 4 | |
| 1041 #define CERT_INFO_NOT_BEFORE_FLAG 5 | |
| 1042 #define CERT_INFO_NOT_AFTER_FLAG 6 | |
| 1043 #define CERT_INFO_SUBJECT_FLAG 7 | |
| 1044 #define CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG 8 | |
| 1045 #define CERT_INFO_ISSUER_UNIQUE_ID_FLAG 9 | |
| 1046 #define CERT_INFO_SUBJECT_UNIQUE_ID_FLAG 10 | |
| 1047 #define CERT_INFO_EXTENSION_FLAG 11 | |
| 1048 | |
| 1049 typedef struct _CRL_ENTRY { | |
| 1050 CRYPT_INTEGER_BLOB SerialNumber; | |
| 1051 FILETIME RevocationDate; | |
| 1052 DWORD cExtension; | |
| 1053 PCERT_EXTENSION rgExtension; | |
| 1054 } CRL_ENTRY,*PCRL_ENTRY; | |
| 1055 | |
| 1056 typedef struct _CRL_INFO { | |
| 1057 DWORD dwVersion; | |
| 1058 CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; | |
| 1059 CERT_NAME_BLOB Issuer; | |
| 1060 FILETIME ThisUpdate; | |
| 1061 FILETIME NextUpdate; | |
| 1062 DWORD cCRLEntry; | |
| 1063 PCRL_ENTRY rgCRLEntry; | |
| 1064 DWORD cExtension; | |
| 1065 PCERT_EXTENSION rgExtension; | |
| 1066 } CRL_INFO,*PCRL_INFO; | |
| 1067 | |
| 1068 #define CRL_V1 0 | |
| 1069 #define CRL_V2 1 | |
| 1070 | |
| 1071 typedef struct _CERT_REQUEST_INFO { | |
| 1072 DWORD dwVersion; | |
| 1073 CERT_NAME_BLOB Subject; | |
| 1074 CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; | |
| 1075 DWORD cAttribute; | |
| 1076 PCRYPT_ATTRIBUTE rgAttribute; | |
| 1077 } CERT_REQUEST_INFO,*PCERT_REQUEST_INFO; | |
| 1078 | |
| 1079 #define CERT_REQUEST_V1 0 | |
| 1080 | |
| 1081 typedef struct _CERT_KEYGEN_REQUEST_INFO { | |
| 1082 DWORD dwVersion; | |
| 1083 CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo; | |
| 1084 LPWSTR pwszChallengeString; | |
| 1085 } CERT_KEYGEN_REQUEST_INFO,*PCERT_KEYGEN_REQUEST_INFO; | |
| 1086 | |
| 1087 #define CERT_KEYGEN_REQUEST_V1 0 | |
| 1088 | |
| 1089 typedef struct _CERT_SIGNED_CONTENT_INFO { | |
| 1090 CRYPT_DER_BLOB ToBeSigned; | |
| 1091 CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; | |
| 1092 CRYPT_BIT_BLOB Signature; | |
| 1093 } CERT_SIGNED_CONTENT_INFO,*PCERT_SIGNED_CONTENT_INFO; | |
| 1094 | |
| 1095 typedef struct _CTL_USAGE { | |
| 1096 DWORD cUsageIdentifier; | |
| 1097 LPSTR *rgpszUsageIdentifier; | |
| 1098 } CTL_USAGE,*PCTL_USAGE,CERT_ENHKEY_USAGE,*PCERT_ENHKEY_USAGE; | |
| 1099 | |
| 1100 typedef struct _CTL_ENTRY { | |
| 1101 CRYPT_DATA_BLOB SubjectIdentifier; | |
| 1102 DWORD cAttribute; | |
| 1103 PCRYPT_ATTRIBUTE rgAttribute; | |
| 1104 } CTL_ENTRY,*PCTL_ENTRY; | |
| 1105 | |
| 1106 typedef struct _CTL_INFO { | |
| 1107 DWORD dwVersion; | |
| 1108 CTL_USAGE SubjectUsage; | |
| 1109 CRYPT_DATA_BLOB ListIdentifier; | |
| 1110 CRYPT_INTEGER_BLOB SequenceNumber; | |
| 1111 FILETIME ThisUpdate; | |
| 1112 FILETIME NextUpdate; | |
| 1113 CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; | |
| 1114 DWORD cCTLEntry; | |
| 1115 PCTL_ENTRY rgCTLEntry; | |
| 1116 DWORD cExtension; | |
| 1117 PCERT_EXTENSION rgExtension; | |
| 1118 } CTL_INFO,*PCTL_INFO; | |
| 1119 | |
| 1120 #define CTL_V1 0 | |
| 1121 | |
| 1122 typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO { | |
| 1123 LPSTR pszTimeStampAlgorithm; | |
| 1124 LPSTR pszContentType; | |
| 1125 CRYPT_OBJID_BLOB Content; | |
| 1126 DWORD cAttribute; | |
| 1127 PCRYPT_ATTRIBUTE rgAttribute; | |
| 1128 } CRYPT_TIME_STAMP_REQUEST_INFO,*PCRYPT_TIME_STAMP_REQUEST_INFO; | |
| 1129 | |
| 1130 typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR { | |
| 1131 LPWSTR pwszName; | |
| 1132 LPWSTR pwszValue; | |
| 1133 } CRYPT_ENROLLMENT_NAME_VALUE_PAIR,*PCRYPT_ENROLLMENT_NAME_VALUE_PAIR; | |
| 1134 | |
| 1135 typedef struct _CRYPT_CSP_PROVIDER { | |
| 1136 DWORD dwKeySpec; | |
| 1137 LPWSTR pwszProviderName; | |
| 1138 CRYPT_BIT_BLOB Signature; | |
| 1139 } CRYPT_CSP_PROVIDER,*PCRYPT_CSP_PROVIDER; | |
| 1140 | |
| 1141 #define CERT_ENCODING_TYPE_MASK 0xffff | |
| 1142 #define CMSG_ENCODING_TYPE_MASK 0xffff0000 | |
| 1143 #define GET_CERT_ENCODING_TYPE(T) ((T) & CERT_ENCODING_TYPE_MASK) | |
| 1144 #define GET_CMSG_ENCODING_TYPE(T) ((T) & CMSG_ENCODING_TYPE_MASK) | |
| 1145 | |
| 1146 #define CRYPT_ASN_ENCODING 0x1 | |
| 1147 #define CRYPT_NDR_ENCODING 0x2 | |
| 1148 #define X509_ASN_ENCODING 0x1 | |
| 1149 #define X509_NDR_ENCODING 0x2 | |
| 1150 #define PKCS_7_ASN_ENCODING 0x10000 | |
| 1151 #define PKCS_7_NDR_ENCODING 0x20000 | |
| 1152 | |
| 1153 WINIMPM WINBOOL WINAPI CryptFormatObject(DWORD dwCertEncodingType,DWORD dwFormatType,DWORD dwFormatStrType,void *pFormatStruct,LPCSTR lpszStructType,const BYTE *pbEncoded,DWORD cbEncoded,void *pbFormat,DWORD *pcbFormat); | |
| 1154 | |
| 1155 #define CRYPT_FORMAT_STR_MULTI_LINE 0x1 | |
| 1156 #define CRYPT_FORMAT_STR_NO_HEX 0x10 | |
| 1157 #define CRYPT_FORMAT_SIMPLE 0x1 | |
| 1158 #define CRYPT_FORMAT_X509 0x2 | |
| 1159 #define CRYPT_FORMAT_OID 0x4 | |
| 1160 #define CRYPT_FORMAT_RDN_SEMICOLON 0x100 | |
| 1161 #define CRYPT_FORMAT_RDN_CRLF 0x200 | |
| 1162 #define CRYPT_FORMAT_RDN_UNQUOTE 0x400 | |
| 1163 #define CRYPT_FORMAT_RDN_REVERSE 0x800 | |
| 1164 #define CRYPT_FORMAT_COMMA 0x1000 | |
| 1165 #define CRYPT_FORMAT_SEMICOLON CRYPT_FORMAT_RDN_SEMICOLON | |
| 1166 #define CRYPT_FORMAT_CRLF CRYPT_FORMAT_RDN_CRLF | |
| 1167 | |
| 1168 typedef LPVOID (WINAPI *PFN_CRYPT_ALLOC)(size_t cbSize); | |
| 1169 typedef VOID (WINAPI *PFN_CRYPT_FREE)(LPVOID pv); | |
| 1170 | |
| 1171 typedef struct _CRYPT_ENCODE_PARA { | |
| 1172 DWORD cbSize; | |
| 1173 PFN_CRYPT_ALLOC pfnAlloc; | |
| 1174 PFN_CRYPT_FREE pfnFree; | |
| 1175 } CRYPT_ENCODE_PARA,*PCRYPT_ENCODE_PARA; | |
| 1176 | |
| 1177 WINIMPM WINBOOL WINAPI CryptEncodeObjectEx(DWORD dwCertEncodingType,LPCSTR lpszStructType,const void *pvStructInfo,DWORD dwFlags,PCRYPT_ENCODE_PARA pEncodePara,void *pvEncoded,DWORD *pcbEncoded); | |
| 1178 WINIMPM WINBOOL WINAPI CryptEncodeObject(DWORD dwCertEncodingType,LPCSTR lpszStructType,const void *pvStructInfo,BYTE *pbEncoded,DWORD *pcbEncoded); | |
| 1179 | |
| 1180 #define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8 | |
| 1181 #define CRYPT_ENCODE_ALLOC_FLAG 0x8000 | |
| 1182 #define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG CERT_RDN_ENABLE_T61_UNICODE_FLAG | |
| 1183 #define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG CERT_RDN_ENABLE_UTF8_UNICODE_FLAG | |
| 1184 #define CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG CERT_RDN_FORCE_UTF8_UNICODE_FLAG | |
| 1185 #define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG CERT_RDN_DISABLE_CHECK_TYPE_FLAG | |
| 1186 #define CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x10000 | |
| 1187 | |
| 1188 typedef struct _CRYPT_DECODE_PARA { | |
| 1189 DWORD cbSize; | |
| 1190 PFN_CRYPT_ALLOC pfnAlloc; | |
| 1191 PFN_CRYPT_FREE pfnFree; | |
| 1192 } CRYPT_DECODE_PARA,*PCRYPT_DECODE_PARA; | |
| 1193 | |
| 1194 WINIMPM WINBOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType,LPCSTR lpszStructType,const BYTE *pbEncoded,DWORD cbEncoded,DWORD dwFlags,PCRYPT_DECODE_PARA pDecodePara,void *pvStructInfo,DWORD *pcbStructInfo); | |
| 1195 WINIMPM WINBOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType,LPCSTR lpszStructType,const BYTE *pbEncoded,DWORD cbEncoded,DWORD dwFlags,void *pvStructInfo,DWORD *pcbStructInfo); | |
| 1196 | |
| 1197 #define CRYPT_DECODE_NOCOPY_FLAG 0x1 | |
| 1198 #define CRYPT_DECODE_TO_BE_SIGNED_FLAG 0x2 | |
| 1199 #define CRYPT_DECODE_SHARE_OID_STRING_FLAG 0x4 | |
| 1200 #define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8 | |
| 1201 #define CRYPT_DECODE_ALLOC_FLAG 0x8000 | |
| 1202 #define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG CERT_RDN_DISABLE_IE4_UTF8_FLAG | |
| 1203 #define CRYPT_ENCODE_DECODE_NONE 0 | |
| 1204 #define X509_CERT ((LPCSTR) 1) | |
| 1205 #define X509_CERT_TO_BE_SIGNED ((LPCSTR) 2) | |
| 1206 #define X509_CERT_CRL_TO_BE_SIGNED ((LPCSTR) 3) | |
| 1207 #define X509_CERT_REQUEST_TO_BE_SIGNED ((LPCSTR) 4) | |
| 1208 #define X509_EXTENSIONS ((LPCSTR) 5) | |
| 1209 #define X509_NAME_VALUE ((LPCSTR) 6) | |
| 1210 #define X509_NAME ((LPCSTR) 7) | |
| 1211 #define X509_PUBLIC_KEY_INFO ((LPCSTR) 8) | |
| 1212 #define X509_AUTHORITY_KEY_ID ((LPCSTR) 9) | |
| 1213 #define X509_KEY_ATTRIBUTES ((LPCSTR) 10) | |
| 1214 #define X509_KEY_USAGE_RESTRICTION ((LPCSTR) 11) | |
| 1215 #define X509_ALTERNATE_NAME ((LPCSTR) 12) | |
| 1216 #define X509_BASIC_CONSTRAINTS ((LPCSTR) 13) | |
| 1217 #define X509_KEY_USAGE ((LPCSTR) 14) | |
| 1218 #define X509_BASIC_CONSTRAINTS2 ((LPCSTR) 15) | |
| 1219 #define X509_CERT_POLICIES ((LPCSTR) 16) | |
| 1220 #define PKCS_UTC_TIME ((LPCSTR) 17) | |
| 1221 #define PKCS_TIME_REQUEST ((LPCSTR) 18) | |
| 1222 #define RSA_CSP_PUBLICKEYBLOB ((LPCSTR) 19) | |
| 1223 #define X509_UNICODE_NAME ((LPCSTR) 20) | |
| 1224 #define X509_KEYGEN_REQUEST_TO_BE_SIGNED ((LPCSTR) 21) | |
| 1225 #define PKCS_ATTRIBUTE ((LPCSTR) 22) | |
| 1226 #define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY ((LPCSTR) 23) | |
| 1227 #define X509_UNICODE_NAME_VALUE ((LPCSTR) 24) | |
| 1228 #define X509_ANY_STRING X509_NAME_VALUE | |
| 1229 #define X509_UNICODE_ANY_STRING X509_UNICODE_NAME_VALUE | |
| 1230 #define X509_OCTET_STRING ((LPCSTR) 25) | |
| 1231 #define X509_BITS ((LPCSTR) 26) | |
| 1232 #define X509_INTEGER ((LPCSTR) 27) | |
| 1233 #define X509_MULTI_BYTE_INTEGER ((LPCSTR) 28) | |
| 1234 #define X509_ENUMERATED ((LPCSTR) 29) | |
| 1235 #define X509_CHOICE_OF_TIME ((LPCSTR) 30) | |
| 1236 #define X509_AUTHORITY_KEY_ID2 ((LPCSTR) 31) | |
| 1237 #define X509_AUTHORITY_INFO_ACCESS ((LPCSTR) 32) | |
| 1238 #define X509_CRL_REASON_CODE X509_ENUMERATED | |
| 1239 #define PKCS_CONTENT_INFO ((LPCSTR) 33) | |
| 1240 #define X509_SEQUENCE_OF_ANY ((LPCSTR) 34) | |
| 1241 #define X509_CRL_DIST_POINTS ((LPCSTR) 35) | |
| 1242 #define X509_ENHANCED_KEY_USAGE ((LPCSTR) 36) | |
| 1243 #define PKCS_CTL ((LPCSTR) 37) | |
| 1244 #define X509_MULTI_BYTE_UINT ((LPCSTR) 38) | |
| 1245 #define X509_DSS_PUBLICKEY X509_MULTI_BYTE_UINT | |
| 1246 #define X509_DSS_PARAMETERS ((LPCSTR) 39) | |
| 1247 #define X509_DSS_SIGNATURE ((LPCSTR) 40) | |
| 1248 #define PKCS_RC2_CBC_PARAMETERS ((LPCSTR) 41) | |
| 1249 #define PKCS_SMIME_CAPABILITIES ((LPCSTR) 42) | |
| 1250 #define PKCS_RSA_PRIVATE_KEY ((LPCSTR) 43) | |
| 1251 #define PKCS_PRIVATE_KEY_INFO ((LPCSTR) 44) | |
| 1252 #define PKCS_ENCRYPTED_PRIVATE_KEY_INFO ((LPCSTR) 45) | |
| 1253 #define X509_PKIX_POLICY_QUALIFIER_USERNOTICE ((LPCSTR) 46) | |
| 1254 #define X509_DH_PUBLICKEY X509_MULTI_BYTE_UINT | |
| 1255 #define X509_DH_PARAMETERS ((LPCSTR) 47) | |
| 1256 #define PKCS_ATTRIBUTES ((LPCSTR) 48) | |
| 1257 #define PKCS_SORTED_CTL ((LPCSTR) 49) | |
| 1258 #define X942_DH_PARAMETERS ((LPCSTR) 50) | |
| 1259 #define X509_BITS_WITHOUT_TRAILING_ZEROES ((LPCSTR) 51) | |
| 1260 #define X942_OTHER_INFO ((LPCSTR) 52) | |
| 1261 #define X509_CERT_PAIR ((LPCSTR) 53) | |
| 1262 #define X509_ISSUING_DIST_POINT ((LPCSTR) 54) | |
| 1263 #define X509_NAME_CONSTRAINTS ((LPCSTR) 55) | |
| 1264 #define X509_POLICY_MAPPINGS ((LPCSTR) 56) | |
| 1265 #define X509_POLICY_CONSTRAINTS ((LPCSTR) 57) | |
| 1266 #define X509_CROSS_CERT_DIST_POINTS ((LPCSTR) 58) | |
| 1267 #define CMC_DATA ((LPCSTR) 59) | |
| 1268 #define CMC_RESPONSE ((LPCSTR) 60) | |
| 1269 #define CMC_STATUS ((LPCSTR) 61) | |
| 1270 #define CMC_ADD_EXTENSIONS ((LPCSTR) 62) | |
| 1271 #define CMC_ADD_ATTRIBUTES ((LPCSTR) 63) | |
| 1272 #define X509_CERTIFICATE_TEMPLATE ((LPCSTR) 64) | |
| 1273 #define PKCS7_SIGNER_INFO ((LPCSTR) 500) | |
| 1274 #define CMS_SIGNER_INFO ((LPCSTR) 501) | |
| 1275 #define szOID_AUTHORITY_KEY_IDENTIFIER "2.5.29.1" | |
| 1276 #define szOID_KEY_ATTRIBUTES "2.5.29.2" | |
| 1277 #define szOID_CERT_POLICIES_95 "2.5.29.3" | |
| 1278 #define szOID_KEY_USAGE_RESTRICTION "2.5.29.4" | |
| 1279 #define szOID_SUBJECT_ALT_NAME "2.5.29.7" | |
| 1280 #define szOID_ISSUER_ALT_NAME "2.5.29.8" | |
| 1281 #define szOID_BASIC_CONSTRAINTS "2.5.29.10" | |
| 1282 #define szOID_KEY_USAGE "2.5.29.15" | |
| 1283 #define szOID_PRIVATEKEY_USAGE_PERIOD "2.5.29.16" | |
| 1284 #define szOID_BASIC_CONSTRAINTS2 "2.5.29.19" | |
| 1285 #define szOID_CERT_POLICIES "2.5.29.32" | |
| 1286 #define szOID_ANY_CERT_POLICY "2.5.29.32.0" | |
| 1287 #define szOID_AUTHORITY_KEY_IDENTIFIER2 "2.5.29.35" | |
| 1288 #define szOID_SUBJECT_KEY_IDENTIFIER "2.5.29.14" | |
| 1289 #define szOID_SUBJECT_ALT_NAME2 "2.5.29.17" | |
| 1290 #define szOID_ISSUER_ALT_NAME2 "2.5.29.18" | |
| 1291 #define szOID_CRL_REASON_CODE "2.5.29.21" | |
| 1292 #define szOID_REASON_CODE_HOLD "2.5.29.23" | |
| 1293 #define szOID_CRL_DIST_POINTS "2.5.29.31" | |
| 1294 #define szOID_ENHANCED_KEY_USAGE "2.5.29.37" | |
| 1295 #define szOID_CRL_NUMBER "2.5.29.20" | |
| 1296 #define szOID_DELTA_CRL_INDICATOR "2.5.29.27" | |
| 1297 #define szOID_ISSUING_DIST_POINT "2.5.29.28" | |
| 1298 #define szOID_FRESHEST_CRL "2.5.29.46" | |
| 1299 #define szOID_NAME_CONSTRAINTS "2.5.29.30" | |
| 1300 #define szOID_POLICY_MAPPINGS "2.5.29.33" | |
| 1301 #define szOID_LEGACY_POLICY_MAPPINGS "2.5.29.5" | |
| 1302 #define szOID_POLICY_CONSTRAINTS "2.5.29.36" | |
| 1303 #define szOID_RENEWAL_CERTIFICATE "1.3.6.1.4.1.311.13.1" | |
| 1304 #define szOID_ENROLLMENT_NAME_VALUE_PAIR "1.3.6.1.4.1.311.13.2.1" | |
| 1305 #define szOID_ENROLLMENT_CSP_PROVIDER "1.3.6.1.4.1.311.13.2.2" | |
| 1306 #define szOID_OS_VERSION "1.3.6.1.4.1.311.13.2.3" | |
| 1307 #define szOID_ENROLLMENT_AGENT "1.3.6.1.4.1.311.20.2.1" | |
| 1308 #define szOID_PKIX "1.3.6.1.5.5.7" | |
| 1309 #define szOID_PKIX_PE "1.3.6.1.5.5.7.1" | |
| 1310 #define szOID_AUTHORITY_INFO_ACCESS "1.3.6.1.5.5.7.1.1" | |
| 1311 #define szOID_CERT_EXTENSIONS "1.3.6.1.4.1.311.2.1.14" | |
| 1312 #define szOID_NEXT_UPDATE_LOCATION "1.3.6.1.4.1.311.10.2" | |
| 1313 #define szOID_REMOVE_CERTIFICATE "1.3.6.1.4.1.311.10.8.1" | |
| 1314 #define szOID_CROSS_CERT_DIST_POINTS "1.3.6.1.4.1.311.10.9.1" | |
| 1315 #define szOID_CTL "1.3.6.1.4.1.311.10.1" | |
| 1316 #define szOID_SORTED_CTL "1.3.6.1.4.1.311.10.1.1" | |
| 1317 | |
| 1318 #ifndef szOID_SERIALIZED | |
| 1319 #define szOID_SERIALIZED "1.3.6.1.4.1.311.10.3.3.1" | |
| 1320 #endif | |
| 1321 | |
| 1322 #ifndef szOID_NT_PRINCIPAL_NAME | |
| 1323 #define szOID_NT_PRINCIPAL_NAME "1.3.6.1.4.1.311.20.2.3" | |
| 1324 #endif | |
| 1325 | |
| 1326 #ifndef szOID_PRODUCT_UPDATE | |
| 1327 #define szOID_PRODUCT_UPDATE "1.3.6.1.4.1.311.31.1" | |
| 1328 #endif | |
| 1329 | |
| 1330 #define szOID_ANY_APPLICATION_POLICY "1.3.6.1.4.1.311.10.12.1" | |
| 1331 | |
| 1332 #define szOID_AUTO_ENROLL_CTL_USAGE "1.3.6.1.4.1.311.20.1" | |
| 1333 | |
| 1334 #define szOID_ENROLL_CERTTYPE_EXTENSION "1.3.6.1.4.1.311.20.2" | |
| 1335 | |
| 1336 #define szOID_CERT_MANIFOLD "1.3.6.1.4.1.311.20.3" | |
| 1337 | |
| 1338 #ifndef szOID_CERTSRV_CA_VERSION | |
| 1339 #define szOID_CERTSRV_CA_VERSION "1.3.6.1.4.1.311.21.1" | |
| 1340 #endif | |
| 1341 | |
| 1342 #define szOID_CERTSRV_PREVIOUS_CERT_HASH "1.3.6.1.4.1.311.21.2" | |
| 1343 #define szOID_CRL_VIRTUAL_BASE "1.3.6.1.4.1.311.21.3" | |
| 1344 #define szOID_CRL_NEXT_PUBLISH "1.3.6.1.4.1.311.21.4" | |
| 1345 #define szOID_KP_CA_EXCHANGE "1.3.6.1.4.1.311.21.5" | |
| 1346 #define szOID_KP_KEY_RECOVERY_AGENT "1.3.6.1.4.1.311.21.6" | |
| 1347 #define szOID_CERTIFICATE_TEMPLATE "1.3.6.1.4.1.311.21.7" | |
| 1348 #define szOID_ENTERPRISE_OID_ROOT "1.3.6.1.4.1.311.21.8" | |
| 1349 #define szOID_RDN_DUMMY_SIGNER "1.3.6.1.4.1.311.21.9" | |
| 1350 #define szOID_APPLICATION_CERT_POLICIES "1.3.6.1.4.1.311.21.10" | |
| 1351 #define szOID_APPLICATION_POLICY_MAPPINGS "1.3.6.1.4.1.311.21.11" | |
| 1352 #define szOID_APPLICATION_POLICY_CONSTRAINTS "1.3.6.1.4.1.311.21.12" | |
| 1353 #define szOID_ARCHIVED_KEY_ATTR "1.3.6.1.4.1.311.21.13" | |
| 1354 #define szOID_CRL_SELF_CDP "1.3.6.1.4.1.311.21.14" | |
| 1355 #define szOID_REQUIRE_CERT_CHAIN_POLICY "1.3.6.1.4.1.311.21.15" | |
| 1356 #define szOID_ARCHIVED_KEY_CERT_HASH "1.3.6.1.4.1.311.21.16" | |
| 1357 #define szOID_ISSUED_CERT_HASH "1.3.6.1.4.1.311.21.17" | |
| 1358 #define szOID_DS_EMAIL_REPLICATION "1.3.6.1.4.1.311.21.19" | |
| 1359 #define szOID_REQUEST_CLIENT_INFO "1.3.6.1.4.1.311.21.20" | |
| 1360 #define szOID_ENCRYPTED_KEY_HASH "1.3.6.1.4.1.311.21.21" | |
| 1361 #define szOID_CERTSRV_CROSSCA_VERSION "1.3.6.1.4.1.311.21.22" | |
| 1362 #define szOID_NTDS_REPLICATION "1.3.6.1.4.1.311.25.1" | |
| 1363 #define szOID_SUBJECT_DIR_ATTRS "2.5.29.9" | |
| 1364 #define szOID_PKIX_KP "1.3.6.1.5.5.7.3" | |
| 1365 #define szOID_PKIX_KP_SERVER_AUTH "1.3.6.1.5.5.7.3.1" | |
| 1366 #define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2" | |
| 1367 #define szOID_PKIX_KP_CODE_SIGNING "1.3.6.1.5.5.7.3.3" | |
| 1368 #define szOID_PKIX_KP_EMAIL_PROTECTION "1.3.6.1.5.5.7.3.4" | |
| 1369 #define szOID_PKIX_KP_IPSEC_END_SYSTEM "1.3.6.1.5.5.7.3.5" | |
| 1370 #define szOID_PKIX_KP_IPSEC_TUNNEL "1.3.6.1.5.5.7.3.6" | |
| 1371 #define szOID_PKIX_KP_IPSEC_USER "1.3.6.1.5.5.7.3.7" | |
| 1372 #define szOID_PKIX_KP_TIMESTAMP_SIGNING "1.3.6.1.5.5.7.3.8" | |
| 1373 #define szOID_IPSEC_KP_IKE_INTERMEDIATE "1.3.6.1.5.5.8.2.2" | |
| 1374 #define szOID_KP_CTL_USAGE_SIGNING "1.3.6.1.4.1.311.10.3.1" | |
| 1375 #define szOID_KP_TIME_STAMP_SIGNING "1.3.6.1.4.1.311.10.3.2" | |
| 1376 | |
| 1377 #ifndef szOID_SERVER_GATED_CRYPTO | |
| 1378 #define szOID_SERVER_GATED_CRYPTO "1.3.6.1.4.1.311.10.3.3" | |
| 1379 #endif | |
| 1380 | |
| 1381 #ifndef szOID_SGC_NETSCAPE | |
| 1382 #define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1" | |
| 1383 #endif | |
| 1384 #define szOID_KP_EFS "1.3.6.1.4.1.311.10.3.4" | |
| 1385 #define szOID_EFS_RECOVERY "1.3.6.1.4.1.311.10.3.4.1" | |
| 1386 #define szOID_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5" | |
| 1387 #define szOID_NT5_CRYPTO "1.3.6.1.4.1.311.10.3.6" | |
| 1388 #define szOID_OEM_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.7" | |
| 1389 #define szOID_EMBEDDED_NT_CRYPTO "1.3.6.1.4.1.311.10.3.8" | |
| 1390 #define szOID_ROOT_LIST_SIGNER "1.3.6.1.4.1.311.10.3.9" | |
| 1391 #define szOID_KP_QUALIFIED_SUBORDINATION "1.3.6.1.4.1.311.10.3.10" | |
| 1392 #define szOID_KP_KEY_RECOVERY "1.3.6.1.4.1.311.10.3.11" | |
| 1393 #define szOID_KP_DOCUMENT_SIGNING "1.3.6.1.4.1.311.10.3.12" | |
| 1394 #define szOID_KP_LIFETIME_SIGNING "1.3.6.1.4.1.311.10.3.13" | |
| 1395 #define szOID_KP_MOBILE_DEVICE_SOFTWARE "1.3.6.1.4.1.311.10.3.14" | |
| 1396 | |
| 1397 #ifndef szOID_DRM | |
| 1398 #define szOID_DRM "1.3.6.1.4.1.311.10.5.1" | |
| 1399 #endif | |
| 1400 | |
| 1401 #ifndef szOID_DRM_INDIVIDUALIZATION | |
| 1402 #define szOID_DRM_INDIVIDUALIZATION "1.3.6.1.4.1.311.10.5.2" | |
| 1403 #endif | |
| 1404 | |
| 1405 #ifndef szOID_LICENSES | |
| 1406 #define szOID_LICENSES "1.3.6.1.4.1.311.10.6.1" | |
| 1407 #endif | |
| 1408 | |
| 1409 #ifndef szOID_LICENSE_SERVER | |
| 1410 #define szOID_LICENSE_SERVER "1.3.6.1.4.1.311.10.6.2" | |
| 1411 #endif | |
| 1412 | |
| 1413 #ifndef szOID_KP_SMARTCARD_LOGON | |
| 1414 #define szOID_KP_SMARTCARD_LOGON "1.3.6.1.4.1.311.20.2.2" | |
| 1415 #endif | |
| 1416 | |
| 1417 #define szOID_YESNO_TRUST_ATTR "1.3.6.1.4.1.311.10.4.1" | |
| 1418 | |
| 1419 #define szOID_PKIX_POLICY_QUALIFIER_CPS "1.3.6.1.5.5.7.2.1" | |
| 1420 #define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2" | |
| 1421 | |
| 1422 #define szOID_CERT_POLICIES_95_QUALIFIER1 "2.16.840.1.113733.1.7.1.1" | |
| 1423 | |
| 1424 typedef struct _CERT_EXTENSIONS { | |
| 1425 DWORD cExtension; | |
| 1426 PCERT_EXTENSION rgExtension; | |
| 1427 } CERT_EXTENSIONS,*PCERT_EXTENSIONS; | |
| 1428 | |
| 1429 #define CERT_UNICODE_RDN_ERR_INDEX_MASK 0x3FF | |
| 1430 #define CERT_UNICODE_RDN_ERR_INDEX_SHIFT 22 | |
| 1431 #define CERT_UNICODE_ATTR_ERR_INDEX_MASK 0x3f | |
| 1432 #define CERT_UNICODE_ATTR_ERR_INDEX_SHIFT 16 | |
| 1433 #define CERT_UNICODE_VALUE_ERR_INDEX_MASK 0xffff | |
| 1434 #define CERT_UNICODE_VALUE_ERR_INDEX_SHIFT 0 | |
| 1435 | |
| 1436 #define GET_CERT_UNICODE_RDN_ERR_INDEX(X) (((X) >> CERT_UNICODE_RDN_ERR_INDEX_SHIFT) & CERT_UNICODE_RDN_ERR_INDEX_MASK) | |
| 1437 #define GET_CERT_UNICODE_ATTR_ERR_INDEX(X) (((X) >> CERT_UNICODE_ATTR_ERR_INDEX_SHIFT) & CERT_UNICODE_ATTR_ERR_INDEX_MASK) | |
| 1438 #define GET_CERT_UNICODE_VALUE_ERR_INDEX(X) ((X) & CERT_UNICODE_VALUE_ERR_INDEX_MASK) | |
| 1439 | |
| 1440 typedef struct _CERT_AUTHORITY_KEY_ID_INFO { | |
| 1441 CRYPT_DATA_BLOB KeyId; | |
| 1442 CERT_NAME_BLOB CertIssuer; | |
| 1443 CRYPT_INTEGER_BLOB CertSerialNumber; | |
| 1444 } CERT_AUTHORITY_KEY_ID_INFO,*PCERT_AUTHORITY_KEY_ID_INFO; | |
| 1445 | |
| 1446 typedef struct _CERT_PRIVATE_KEY_VALIDITY { | |
| 1447 FILETIME NotBefore; | |
| 1448 FILETIME NotAfter; | |
| 1449 } CERT_PRIVATE_KEY_VALIDITY,*PCERT_PRIVATE_KEY_VALIDITY; | |
| 1450 | |
| 1451 typedef struct _CERT_KEY_ATTRIBUTES_INFO { | |
| 1452 CRYPT_DATA_BLOB KeyId; | |
| 1453 CRYPT_BIT_BLOB IntendedKeyUsage; | |
| 1454 PCERT_PRIVATE_KEY_VALIDITY pPrivateKeyUsagePeriod; | |
| 1455 } CERT_KEY_ATTRIBUTES_INFO,*PCERT_KEY_ATTRIBUTES_INFO; | |
| 1456 | |
| 1457 #define CERT_DIGITAL_SIGNATURE_KEY_USAGE 0x80 | |
| 1458 #define CERT_NON_REPUDIATION_KEY_USAGE 0x40 | |
| 1459 #define CERT_KEY_ENCIPHERMENT_KEY_USAGE 0x20 | |
| 1460 #define CERT_DATA_ENCIPHERMENT_KEY_USAGE 0x10 | |
| 1461 #define CERT_KEY_AGREEMENT_KEY_USAGE 0x8 | |
| 1462 #define CERT_KEY_CERT_SIGN_KEY_USAGE 0x4 | |
| 1463 #define CERT_OFFLINE_CRL_SIGN_KEY_USAGE 0x2 | |
| 1464 #define CERT_CRL_SIGN_KEY_USAGE 0x2 | |
| 1465 #define CERT_ENCIPHER_ONLY_KEY_USAGE 0x1 | |
| 1466 | |
| 1467 #define CERT_DECIPHER_ONLY_KEY_USAGE 0x80 | |
| 1468 | |
| 1469 typedef struct _CERT_POLICY_ID { | |
| 1470 DWORD cCertPolicyElementId; | |
| 1471 LPSTR *rgpszCertPolicyElementId; | |
| 1472 } CERT_POLICY_ID,*PCERT_POLICY_ID; | |
| 1473 | |
| 1474 typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO { | |
| 1475 DWORD cCertPolicyId; | |
| 1476 PCERT_POLICY_ID rgCertPolicyId; | |
| 1477 CRYPT_BIT_BLOB RestrictedKeyUsage; | |
| 1478 } CERT_KEY_USAGE_RESTRICTION_INFO,*PCERT_KEY_USAGE_RESTRICTION_INFO; | |
| 1479 | |
| 1480 typedef struct _CERT_OTHER_NAME { | |
| 1481 LPSTR pszObjId; | |
| 1482 CRYPT_OBJID_BLOB Value; | |
| 1483 } CERT_OTHER_NAME,*PCERT_OTHER_NAME; | |
| 1484 | |
| 1485 typedef struct _CERT_ALT_NAME_ENTRY { | |
| 1486 DWORD dwAltNameChoice; | |
| 1487 __MINGW_EXTENSION union { | |
| 1488 PCERT_OTHER_NAME pOtherName; | |
| 1489 LPWSTR pwszRfc822Name; | |
| 1490 LPWSTR pwszDNSName; | |
| 1491 CERT_NAME_BLOB DirectoryName; | |
| 1492 LPWSTR pwszURL; | |
| 1493 CRYPT_DATA_BLOB IPAddress; | |
| 1494 LPSTR pszRegisteredID; | |
| 1495 }; | |
| 1496 } CERT_ALT_NAME_ENTRY,*PCERT_ALT_NAME_ENTRY; | |
| 1497 | |
| 1498 #define CERT_ALT_NAME_OTHER_NAME 1 | |
| 1499 #define CERT_ALT_NAME_RFC822_NAME 2 | |
| 1500 #define CERT_ALT_NAME_DNS_NAME 3 | |
| 1501 #define CERT_ALT_NAME_X400_ADDRESS 4 | |
| 1502 #define CERT_ALT_NAME_DIRECTORY_NAME 5 | |
| 1503 #define CERT_ALT_NAME_EDI_PARTY_NAME 6 | |
| 1504 #define CERT_ALT_NAME_URL 7 | |
| 1505 #define CERT_ALT_NAME_IP_ADDRESS 8 | |
| 1506 #define CERT_ALT_NAME_REGISTERED_ID 9 | |
| 1507 | |
| 1508 typedef struct _CERT_ALT_NAME_INFO { | |
| 1509 DWORD cAltEntry; | |
| 1510 PCERT_ALT_NAME_ENTRY rgAltEntry; | |
| 1511 } CERT_ALT_NAME_INFO,*PCERT_ALT_NAME_INFO; | |
| 1512 | |
| 1513 #define CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK 0xFF | |
| 1514 #define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT 16 | |
| 1515 #define CERT_ALT_NAME_VALUE_ERR_INDEX_MASK 0xffff | |
| 1516 #define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0 | |
| 1517 | |
| 1518 #define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X) (((X) >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) & CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK) | |
| 1519 #define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X) ((X) & CERT_ALT_NAME_VALUE_ERR_INDEX_MASK) | |
| 1520 | |
| 1521 typedef struct _CERT_BASIC_CONSTRAINTS_INFO { | |
| 1522 CRYPT_BIT_BLOB SubjectType; | |
| 1523 WINBOOL fPathLenConstraint; | |
| 1524 DWORD dwPathLenConstraint; | |
| 1525 DWORD cSubtreesConstraint; | |
| 1526 CERT_NAME_BLOB *rgSubtreesConstraint; | |
| 1527 } CERT_BASIC_CONSTRAINTS_INFO, *PCERT_BASIC_CONSTRAINTS_INFO; | |
| 1528 | |
| 1529 #define CERT_CA_SUBJECT_FLAG 0x80 | |
| 1530 #define CERT_END_ENTITY_SUBJECT_FLAG 0x40 | |
| 1531 | |
| 1532 typedef struct _CERT_BASIC_CONSTRAINTS2_INFO { | |
| 1533 WINBOOL fCA; | |
| 1534 WINBOOL fPathLenConstraint; | |
| 1535 DWORD dwPathLenConstraint; | |
| 1536 } CERT_BASIC_CONSTRAINTS2_INFO,*PCERT_BASIC_CONSTRAINTS2_INFO; | |
| 1537 | |
| 1538 typedef struct _CERT_POLICY_QUALIFIER_INFO { | |
| 1539 LPSTR pszPolicyQualifierId; | |
| 1540 CRYPT_OBJID_BLOB Qualifier; | |
| 1541 } CERT_POLICY_QUALIFIER_INFO,*PCERT_POLICY_QUALIFIER_INFO; | |
| 1542 | |
| 1543 typedef struct _CERT_POLICY_INFO { | |
| 1544 LPSTR pszPolicyIdentifier; | |
| 1545 DWORD cPolicyQualifier; | |
| 1546 CERT_POLICY_QUALIFIER_INFO *rgPolicyQualifier; | |
| 1547 } CERT_POLICY_INFO,*PCERT_POLICY_INFO; | |
| 1548 | |
| 1549 typedef struct _CERT_POLICIES_INFO { | |
| 1550 DWORD cPolicyInfo; | |
| 1551 CERT_POLICY_INFO *rgPolicyInfo; | |
| 1552 } CERT_POLICIES_INFO,*PCERT_POLICIES_INFO; | |
| 1553 | |
| 1554 typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE { | |
| 1555 LPSTR pszOrganization; | |
| 1556 DWORD cNoticeNumbers; | |
| 1557 int *rgNoticeNumbers; | |
| 1558 } CERT_POLICY_QUALIFIER_NOTICE_REFERENCE,*PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE; | |
| 1559 | |
| 1560 typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE { | |
| 1561 CERT_POLICY_QUALIFIER_NOTICE_REFERENCE *pNoticeReference; | |
| 1562 LPWSTR pszDisplayText; | |
| 1563 } CERT_POLICY_QUALIFIER_USER_NOTICE,*PCERT_POLICY_QUALIFIER_USER_NOTICE; | |
| 1564 | |
| 1565 typedef struct _CPS_URLS { | |
| 1566 LPWSTR pszURL; | |
| 1567 CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm; | |
| 1568 CRYPT_DATA_BLOB *pDigest; | |
| 1569 } CPS_URLS,*PCPS_URLS; | |
| 1570 | |
| 1571 typedef struct _CERT_POLICY95_QUALIFIER1 { | |
| 1572 LPWSTR pszPracticesReference; | |
| 1573 LPSTR pszNoticeIdentifier; | |
| 1574 LPSTR pszNSINoticeIdentifier; | |
| 1575 DWORD cCPSURLs; | |
| 1576 CPS_URLS *rgCPSURLs; | |
| 1577 } CERT_POLICY95_QUALIFIER1,*PCERT_POLICY95_QUALIFIER1; | |
| 1578 | |
| 1579 typedef struct _CERT_POLICY_MAPPING { | |
| 1580 LPSTR pszIssuerDomainPolicy; | |
| 1581 LPSTR pszSubjectDomainPolicy; | |
| 1582 } CERT_POLICY_MAPPING,*PCERT_POLICY_MAPPING; | |
| 1583 | |
| 1584 typedef struct _CERT_POLICY_MAPPINGS_INFO { | |
| 1585 DWORD cPolicyMapping; | |
| 1586 PCERT_POLICY_MAPPING rgPolicyMapping; | |
| 1587 } CERT_POLICY_MAPPINGS_INFO,*PCERT_POLICY_MAPPINGS_INFO; | |
| 1588 | |
| 1589 typedef struct _CERT_POLICY_CONSTRAINTS_INFO { | |
| 1590 WINBOOL fRequireExplicitPolicy; | |
| 1591 DWORD dwRequireExplicitPolicySkipCerts; | |
| 1592 | |
| 1593 WINBOOL fInhibitPolicyMapping; | |
| 1594 DWORD dwInhibitPolicyMappingSkipCerts; | |
| 1595 } CERT_POLICY_CONSTRAINTS_INFO,*PCERT_POLICY_CONSTRAINTS_INFO; | |
| 1596 | |
| 1597 typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY { | |
| 1598 LPSTR pszObjId; | |
| 1599 DWORD cValue; | |
| 1600 PCRYPT_DER_BLOB rgValue; | |
| 1601 } CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY,*PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY; | |
| 1602 | |
| 1603 typedef struct _CRYPT_CONTENT_INFO { | |
| 1604 LPSTR pszObjId; | |
| 1605 CRYPT_DER_BLOB Content; | |
| 1606 } CRYPT_CONTENT_INFO,*PCRYPT_CONTENT_INFO; | |
| 1607 | |
| 1608 typedef struct _CRYPT_SEQUENCE_OF_ANY { | |
| 1609 DWORD cValue; | |
| 1610 PCRYPT_DER_BLOB rgValue; | |
| 1611 } CRYPT_SEQUENCE_OF_ANY,*PCRYPT_SEQUENCE_OF_ANY; | |
| 1612 | |
| 1613 typedef struct _CERT_AUTHORITY_KEY_ID2_INFO { | |
| 1614 CRYPT_DATA_BLOB KeyId; | |
| 1615 CERT_ALT_NAME_INFO AuthorityCertIssuer; | |
| 1616 | |
| 1617 CRYPT_INTEGER_BLOB AuthorityCertSerialNumber; | |
| 1618 } CERT_AUTHORITY_KEY_ID2_INFO,*PCERT_AUTHORITY_KEY_ID2_INFO; | |
| 1619 | |
| 1620 typedef struct _CERT_ACCESS_DESCRIPTION { | |
| 1621 LPSTR pszAccessMethod; | |
| 1622 CERT_ALT_NAME_ENTRY AccessLocation; | |
| 1623 } CERT_ACCESS_DESCRIPTION,*PCERT_ACCESS_DESCRIPTION; | |
| 1624 | |
| 1625 typedef struct _CERT_AUTHORITY_INFO_ACCESS { | |
| 1626 DWORD cAccDescr; | |
| 1627 PCERT_ACCESS_DESCRIPTION rgAccDescr; | |
| 1628 } CERT_AUTHORITY_INFO_ACCESS,*PCERT_AUTHORITY_INFO_ACCESS; | |
| 1629 | |
| 1630 #define szOID_PKIX_ACC_DESCR "1.3.6.1.5.5.7.48" | |
| 1631 #define szOID_PKIX_OCSP "1.3.6.1.5.5.7.48.1" | |
| 1632 #define szOID_PKIX_CA_ISSUERS "1.3.6.1.5.5.7.48.2" | |
| 1633 | |
| 1634 #define CRL_REASON_UNSPECIFIED 0 | |
| 1635 #define CRL_REASON_KEY_COMPROMISE 1 | |
| 1636 #define CRL_REASON_CA_COMPROMISE 2 | |
| 1637 #define CRL_REASON_AFFILIATION_CHANGED 3 | |
| 1638 #define CRL_REASON_SUPERSEDED 4 | |
| 1639 #define CRL_REASON_CESSATION_OF_OPERATION 5 | |
| 1640 #define CRL_REASON_CERTIFICATE_HOLD 6 | |
| 1641 #define CRL_REASON_REMOVE_FROM_CRL 8 | |
| 1642 | |
| 1643 typedef struct _CRL_DIST_POINT_NAME { | |
| 1644 DWORD dwDistPointNameChoice; | |
| 1645 __MINGW_EXTENSION union { | |
| 1646 CERT_ALT_NAME_INFO FullName; | |
| 1647 }; | |
| 1648 } CRL_DIST_POINT_NAME,*PCRL_DIST_POINT_NAME; | |
| 1649 | |
| 1650 #define CRL_DIST_POINT_NO_NAME 0 | |
| 1651 #define CRL_DIST_POINT_FULL_NAME 1 | |
| 1652 #define CRL_DIST_POINT_ISSUER_RDN_NAME 2 | |
| 1653 | |
| 1654 typedef struct _CRL_DIST_POINT { | |
| 1655 CRL_DIST_POINT_NAME DistPointName; | |
| 1656 CRYPT_BIT_BLOB ReasonFlags; | |
| 1657 CERT_ALT_NAME_INFO CRLIssuer; | |
| 1658 } CRL_DIST_POINT,*PCRL_DIST_POINT; | |
| 1659 | |
| 1660 #define CRL_REASON_UNUSED_FLAG 0x80 | |
| 1661 #define CRL_REASON_KEY_COMPROMISE_FLAG 0x40 | |
| 1662 #define CRL_REASON_CA_COMPROMISE_FLAG 0x20 | |
| 1663 #define CRL_REASON_AFFILIATION_CHANGED_FLAG 0x10 | |
| 1664 #define CRL_REASON_SUPERSEDED_FLAG 0x8 | |
| 1665 #define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x4 | |
| 1666 #define CRL_REASON_CERTIFICATE_HOLD_FLAG 0x2 | |
| 1667 | |
| 1668 typedef struct _CRL_DIST_POINTS_INFO { | |
| 1669 DWORD cDistPoint; | |
| 1670 PCRL_DIST_POINT rgDistPoint; | |
| 1671 } CRL_DIST_POINTS_INFO,*PCRL_DIST_POINTS_INFO; | |
| 1672 | |
| 1673 #define CRL_DIST_POINT_ERR_INDEX_MASK 0x7F | |
| 1674 #define CRL_DIST_POINT_ERR_INDEX_SHIFT 24 | |
| 1675 #define GET_CRL_DIST_POINT_ERR_INDEX(X) ((X >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK) | |
| 1676 | |
| 1677 #define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT 0x80000000L | |
| 1678 #define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X) (0!=(X & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT)) | |
| 1679 | |
| 1680 typedef struct _CROSS_CERT_DIST_POINTS_INFO { | |
| 1681 DWORD dwSyncDeltaTime; | |
| 1682 DWORD cDistPoint; | |
| 1683 PCERT_ALT_NAME_INFO rgDistPoint; | |
| 1684 } CROSS_CERT_DIST_POINTS_INFO,*PCROSS_CERT_DIST_POINTS_INFO; | |
| 1685 | |
| 1686 #define CROSS_CERT_DIST_POINT_ERR_INDEX_MASK 0xFF | |
| 1687 #define CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT 24 | |
| 1688 #define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(X) ((X >> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) & CROSS_CERT_DIST_POINT_ERR_INDEX_MASK) | |
| 1689 | |
| 1690 typedef struct _CERT_PAIR { | |
| 1691 CERT_BLOB Forward; | |
| 1692 CERT_BLOB Reverse; | |
| 1693 } CERT_PAIR,*PCERT_PAIR; | |
| 1694 | |
| 1695 typedef struct _CRL_ISSUING_DIST_POINT { | |
| 1696 CRL_DIST_POINT_NAME DistPointName; | |
| 1697 WINBOOL fOnlyContainsUserCerts; | |
| 1698 WINBOOL fOnlyContainsCACerts; | |
| 1699 CRYPT_BIT_BLOB OnlySomeReasonFlags; | |
| 1700 WINBOOL fIndirectCRL; | |
| 1701 } CRL_ISSUING_DIST_POINT,*PCRL_ISSUING_DIST_POINT; | |
| 1702 | |
| 1703 typedef struct _CERT_GENERAL_SUBTREE { | |
| 1704 CERT_ALT_NAME_ENTRY Base; | |
| 1705 DWORD dwMinimum; | |
| 1706 WINBOOL fMaximum; | |
| 1707 DWORD dwMaximum; | |
| 1708 } CERT_GENERAL_SUBTREE,*PCERT_GENERAL_SUBTREE; | |
| 1709 | |
| 1710 typedef struct _CERT_NAME_CONSTRAINTS_INFO { | |
| 1711 DWORD cPermittedSubtree; | |
| 1712 PCERT_GENERAL_SUBTREE rgPermittedSubtree; | |
| 1713 DWORD cExcludedSubtree; | |
| 1714 PCERT_GENERAL_SUBTREE rgExcludedSubtree; | |
| 1715 } CERT_NAME_CONSTRAINTS_INFO,*PCERT_NAME_CONSTRAINTS_INFO; | |
| 1716 | |
| 1717 #define CERT_EXCLUDED_SUBTREE_BIT 0x80000000L | |
| 1718 #define IS_CERT_EXCLUDED_SUBTREE(X) (0!=(X & CERT_EXCLUDED_SUBTREE_BIT)) | |
| 1719 | |
| 1720 #define SORTED_CTL_EXT_FLAGS_OFFSET (0*4) | |
| 1721 #define SORTED_CTL_EXT_COUNT_OFFSET (1*4) | |
| 1722 #define SORTED_CTL_EXT_MAX_COLLISION_OFFSET (2*4) | |
| 1723 #define SORTED_CTL_EXT_HASH_BUCKET_OFFSET (3*4) | |
| 1724 | |
| 1725 #define SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG 0x1 | |
| 1726 | |
| 1727 typedef struct _CERT_DSS_PARAMETERS { | |
| 1728 CRYPT_UINT_BLOB p; | |
| 1729 CRYPT_UINT_BLOB q; | |
| 1730 CRYPT_UINT_BLOB g; | |
| 1731 } CERT_DSS_PARAMETERS,*PCERT_DSS_PARAMETERS; | |
| 1732 | |
| 1733 #define CERT_DSS_R_LEN 20 | |
| 1734 #define CERT_DSS_S_LEN 20 | |
| 1735 #define CERT_DSS_SIGNATURE_LEN (CERT_DSS_R_LEN + CERT_DSS_S_LEN) | |
| 1736 | |
| 1737 #define CERT_MAX_ASN_ENCODED_DSS_SIGNATURE_LEN (2 + 2*(2 + 20 +1)) | |
| 1738 | |
| 1739 typedef struct _CERT_DH_PARAMETERS { | |
| 1740 CRYPT_UINT_BLOB p; | |
| 1741 CRYPT_UINT_BLOB g; | |
| 1742 } CERT_DH_PARAMETERS,*PCERT_DH_PARAMETERS; | |
| 1743 | |
| 1744 typedef struct _CERT_X942_DH_VALIDATION_PARAMS { | |
| 1745 CRYPT_BIT_BLOB seed; | |
| 1746 DWORD pgenCounter; | |
| 1747 } CERT_X942_DH_VALIDATION_PARAMS,*PCERT_X942_DH_VALIDATION_PARAMS; | |
| 1748 | |
| 1749 typedef struct _CERT_X942_DH_PARAMETERS { | |
| 1750 CRYPT_UINT_BLOB p; | |
| 1751 CRYPT_UINT_BLOB g; | |
| 1752 CRYPT_UINT_BLOB q; | |
| 1753 CRYPT_UINT_BLOB j; | |
| 1754 PCERT_X942_DH_VALIDATION_PARAMS pValidationParams; | |
| 1755 } CERT_X942_DH_PARAMETERS,*PCERT_X942_DH_PARAMETERS; | |
| 1756 | |
| 1757 #define CRYPT_X942_COUNTER_BYTE_LENGTH 4 | |
| 1758 #define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH 4 | |
| 1759 #define CRYPT_X942_PUB_INFO_BYTE_LENGTH (512/8) | |
| 1760 typedef struct _CRYPT_X942_OTHER_INFO { | |
| 1761 LPSTR pszContentEncryptionObjId; | |
| 1762 BYTE rgbCounter[CRYPT_X942_COUNTER_BYTE_LENGTH]; | |
| 1763 BYTE rgbKeyLength[CRYPT_X942_KEY_LENGTH_BYTE_LENGTH]; | |
| 1764 CRYPT_DATA_BLOB PubInfo; | |
| 1765 } CRYPT_X942_OTHER_INFO,*PCRYPT_X942_OTHER_INFO; | |
| 1766 | |
| 1767 typedef struct _CRYPT_RC2_CBC_PARAMETERS { | |
| 1768 DWORD dwVersion; | |
| 1769 WINBOOL fIV; | |
| 1770 BYTE rgbIV[8]; | |
| 1771 } CRYPT_RC2_CBC_PARAMETERS,*PCRYPT_RC2_CBC_PARAMETERS; | |
| 1772 | |
| 1773 #define CRYPT_RC2_40BIT_VERSION 160 | |
| 1774 #define CRYPT_RC2_56BIT_VERSION 52 | |
| 1775 #define CRYPT_RC2_64BIT_VERSION 120 | |
| 1776 #define CRYPT_RC2_128BIT_VERSION 58 | |
| 1777 | |
| 1778 typedef struct _CRYPT_SMIME_CAPABILITY { | |
| 1779 LPSTR pszObjId; | |
| 1780 CRYPT_OBJID_BLOB Parameters; | |
| 1781 } CRYPT_SMIME_CAPABILITY,*PCRYPT_SMIME_CAPABILITY; | |
| 1782 | |
| 1783 typedef struct _CRYPT_SMIME_CAPABILITIES { | |
| 1784 DWORD cCapability; | |
| 1785 PCRYPT_SMIME_CAPABILITY rgCapability; | |
| 1786 } CRYPT_SMIME_CAPABILITIES,*PCRYPT_SMIME_CAPABILITIES; | |
| 1787 | |
| 1788 #define szOID_VERISIGN_PRIVATE_6_9 "2.16.840.1.113733.1.6.9" | |
| 1789 #define szOID_VERISIGN_ONSITE_JURISDICTION_HASH "2.16.840.1.113733.1.6.11" | |
| 1790 #define szOID_VERISIGN_BITSTRING_6_13 "2.16.840.1.113733.1.6.13" | |
| 1791 #define szOID_VERISIGN_ISS_STRONG_CRYPTO "2.16.840.1.113733.1.8.1" | |
| 1792 #define szOID_NETSCAPE "2.16.840.1.113730" | |
| 1793 #define szOID_NETSCAPE_CERT_EXTENSION "2.16.840.1.113730.1" | |
| 1794 #define szOID_NETSCAPE_CERT_TYPE "2.16.840.1.113730.1.1" | |
| 1795 #define szOID_NETSCAPE_BASE_URL "2.16.840.1.113730.1.2" | |
| 1796 #define szOID_NETSCAPE_REVOCATION_URL "2.16.840.1.113730.1.3" | |
| 1797 #define szOID_NETSCAPE_CA_REVOCATION_URL "2.16.840.1.113730.1.4" | |
| 1798 #define szOID_NETSCAPE_CERT_RENEWAL_URL "2.16.840.1.113730.1.7" | |
| 1799 #define szOID_NETSCAPE_CA_POLICY_URL "2.16.840.1.113730.1.8" | |
| 1800 #define szOID_NETSCAPE_SSL_SERVER_NAME "2.16.840.1.113730.1.12" | |
| 1801 #define szOID_NETSCAPE_COMMENT "2.16.840.1.113730.1.13" | |
| 1802 #define szOID_NETSCAPE_DATA_TYPE "2.16.840.1.113730.2" | |
| 1803 #define szOID_NETSCAPE_CERT_SEQUENCE "2.16.840.1.113730.2.5" | |
| 1804 | |
| 1805 #define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80 | |
| 1806 #define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40 | |
| 1807 #define NETSCAPE_SMIME_CERT_TYPE 0x20 | |
| 1808 #define NETSCAPE_SIGN_CERT_TYPE 0x10 | |
| 1809 #define NETSCAPE_SSL_CA_CERT_TYPE 0x4 | |
| 1810 #define NETSCAPE_SMIME_CA_CERT_TYPE 0x2 | |
| 1811 #define NETSCAPE_SIGN_CA_CERT_TYPE 0x1 | |
| 1812 | |
| 1813 #define szOID_CT_PKI_DATA "1.3.6.1.5.5.7.12.2" | |
| 1814 #define szOID_CT_PKI_RESPONSE "1.3.6.1.5.5.7.12.3" | |
| 1815 #define szOID_PKIX_NO_SIGNATURE "1.3.6.1.5.5.7.6.2" | |
| 1816 #define szOID_CMC "1.3.6.1.5.5.7.7" | |
| 1817 #define szOID_CMC_STATUS_INFO "1.3.6.1.5.5.7.7.1" | |
| 1818 #define szOID_CMC_IDENTIFICATION "1.3.6.1.5.5.7.7.2" | |
| 1819 #define szOID_CMC_IDENTITY_PROOF "1.3.6.1.5.5.7.7.3" | |
| 1820 #define szOID_CMC_DATA_RETURN "1.3.6.1.5.5.7.7.4" | |
| 1821 #define szOID_CMC_TRANSACTION_ID "1.3.6.1.5.5.7.7.5" | |
| 1822 #define szOID_CMC_SENDER_NONCE "1.3.6.1.5.5.7.7.6" | |
| 1823 #define szOID_CMC_RECIPIENT_NONCE "1.3.6.1.5.5.7.7.7" | |
| 1824 #define szOID_CMC_ADD_EXTENSIONS "1.3.6.1.5.5.7.7.8" | |
| 1825 #define szOID_CMC_ENCRYPTED_POP "1.3.6.1.5.5.7.7.9" | |
| 1826 #define szOID_CMC_DECRYPTED_POP "1.3.6.1.5.5.7.7.10" | |
| 1827 #define szOID_CMC_LRA_POP_WITNESS "1.3.6.1.5.5.7.7.11" | |
| 1828 #define szOID_CMC_GET_CERT "1.3.6.1.5.5.7.7.15" | |
| 1829 #define szOID_CMC_GET_CRL "1.3.6.1.5.5.7.7.16" | |
| 1830 #define szOID_CMC_REVOKE_REQUEST "1.3.6.1.5.5.7.7.17" | |
| 1831 #define szOID_CMC_REG_INFO "1.3.6.1.5.5.7.7.18" | |
| 1832 #define szOID_CMC_RESPONSE_INFO "1.3.6.1.5.5.7.7.19" | |
| 1833 #define szOID_CMC_QUERY_PENDING "1.3.6.1.5.5.7.7.21" | |
| 1834 #define szOID_CMC_ID_POP_LINK_RANDOM "1.3.6.1.5.5.7.7.22" | |
| 1835 #define szOID_CMC_ID_POP_LINK_WITNESS "1.3.6.1.5.5.7.7.23" | |
| 1836 #define szOID_CMC_ID_CONFIRM_CERT_ACCEPTANCE "1.3.6.1.5.5.7.7.24" | |
| 1837 | |
| 1838 #define szOID_CMC_ADD_ATTRIBUTES "1.3.6.1.4.1.311.10.10.1" | |
| 1839 | |
| 1840 typedef struct _CMC_TAGGED_ATTRIBUTE { | |
| 1841 DWORD dwBodyPartID; | |
| 1842 CRYPT_ATTRIBUTE Attribute; | |
| 1843 } CMC_TAGGED_ATTRIBUTE,*PCMC_TAGGED_ATTRIBUTE; | |
| 1844 | |
| 1845 typedef struct _CMC_TAGGED_CERT_REQUEST { | |
| 1846 DWORD dwBodyPartID; | |
| 1847 CRYPT_DER_BLOB SignedCertRequest; | |
| 1848 } CMC_TAGGED_CERT_REQUEST,*PCMC_TAGGED_CERT_REQUEST; | |
| 1849 | |
| 1850 typedef struct _CMC_TAGGED_REQUEST { | |
| 1851 DWORD dwTaggedRequestChoice; | |
| 1852 __MINGW_EXTENSION union { | |
| 1853 PCMC_TAGGED_CERT_REQUEST pTaggedCertRequest; | |
| 1854 }; | |
| 1855 } CMC_TAGGED_REQUEST,*PCMC_TAGGED_REQUEST; | |
| 1856 | |
| 1857 #define CMC_TAGGED_CERT_REQUEST_CHOICE 1 | |
| 1858 | |
| 1859 typedef struct _CMC_TAGGED_CONTENT_INFO { | |
| 1860 DWORD dwBodyPartID; | |
| 1861 CRYPT_DER_BLOB EncodedContentInfo; | |
| 1862 } CMC_TAGGED_CONTENT_INFO,*PCMC_TAGGED_CONTENT_INFO; | |
| 1863 | |
| 1864 typedef struct _CMC_TAGGED_OTHER_MSG { | |
| 1865 DWORD dwBodyPartID; | |
| 1866 LPSTR pszObjId; | |
| 1867 CRYPT_OBJID_BLOB Value; | |
| 1868 } CMC_TAGGED_OTHER_MSG,*PCMC_TAGGED_OTHER_MSG; | |
| 1869 | |
| 1870 typedef struct _CMC_DATA_INFO { | |
| 1871 DWORD cTaggedAttribute; | |
| 1872 PCMC_TAGGED_ATTRIBUTE rgTaggedAttribute; | |
| 1873 DWORD cTaggedRequest; | |
| 1874 PCMC_TAGGED_REQUEST rgTaggedRequest; | |
| 1875 DWORD cTaggedContentInfo; | |
| 1876 PCMC_TAGGED_CONTENT_INFO rgTaggedContentInfo; | |
| 1877 DWORD cTaggedOtherMsg; | |
| 1878 PCMC_TAGGED_OTHER_MSG rgTaggedOtherMsg; | |
| 1879 } CMC_DATA_INFO,*PCMC_DATA_INFO; | |
| 1880 | |
| 1881 typedef struct _CMC_RESPONSE_INFO { | |
| 1882 DWORD cTaggedAttribute; | |
| 1883 PCMC_TAGGED_ATTRIBUTE rgTaggedAttribute; | |
| 1884 DWORD cTaggedContentInfo; | |
| 1885 PCMC_TAGGED_CONTENT_INFO rgTaggedContentInfo; | |
| 1886 DWORD cTaggedOtherMsg; | |
| 1887 PCMC_TAGGED_OTHER_MSG rgTaggedOtherMsg; | |
| 1888 } CMC_RESPONSE_INFO,*PCMC_RESPONSE_INFO; | |
| 1889 | |
| 1890 typedef struct _CMC_PEND_INFO { | |
| 1891 CRYPT_DATA_BLOB PendToken; | |
| 1892 FILETIME PendTime; | |
| 1893 } CMC_PEND_INFO,*PCMC_PEND_INFO; | |
| 1894 | |
| 1895 typedef struct _CMC_STATUS_INFO { | |
| 1896 DWORD dwStatus; | |
| 1897 DWORD cBodyList; | |
| 1898 DWORD *rgdwBodyList; | |
| 1899 LPWSTR pwszStatusString; | |
| 1900 DWORD dwOtherInfoChoice; | |
| 1901 __MINGW_EXTENSION union { | |
| 1902 DWORD dwFailInfo; | |
| 1903 PCMC_PEND_INFO pPendInfo; | |
| 1904 }; | |
| 1905 } CMC_STATUS_INFO,*PCMC_STATUS_INFO; | |
| 1906 | |
| 1907 #define CMC_OTHER_INFO_NO_CHOICE 0 | |
| 1908 #define CMC_OTHER_INFO_FAIL_CHOICE 1 | |
| 1909 #define CMC_OTHER_INFO_PEND_CHOICE 2 | |
| 1910 | |
| 1911 #define CMC_STATUS_SUCCESS 0 | |
| 1912 #define CMC_STATUS_FAILED 2 | |
| 1913 #define CMC_STATUS_PENDING 3 | |
| 1914 #define CMC_STATUS_NO_SUPPORT 4 | |
| 1915 #define CMC_STATUS_CONFIRM_REQUIRED 5 | |
| 1916 #define CMC_FAIL_BAD_ALG 0 | |
| 1917 #define CMC_FAIL_BAD_MESSAGE_CHECK 1 | |
| 1918 #define CMC_FAIL_BAD_REQUEST 2 | |
| 1919 #define CMC_FAIL_BAD_TIME 3 | |
| 1920 #define CMC_FAIL_BAD_CERT_ID 4 | |
| 1921 #define CMC_FAIL_UNSUPORTED_EXT 5 | |
| 1922 #define CMC_FAIL_MUST_ARCHIVE_KEYS 6 | |
| 1923 #define CMC_FAIL_BAD_IDENTITY 7 | |
| 1924 #define CMC_FAIL_POP_REQUIRED 8 | |
| 1925 #define CMC_FAIL_POP_FAILED 9 | |
| 1926 #define CMC_FAIL_NO_KEY_REUSE 10 | |
| 1927 #define CMC_FAIL_INTERNAL_CA_ERROR 11 | |
| 1928 #define CMC_FAIL_TRY_LATER 12 | |
| 1929 | |
| 1930 typedef struct _CMC_ADD_EXTENSIONS_INFO { | |
| 1931 DWORD dwCmcDataReference; | |
| 1932 DWORD cCertReference; | |
| 1933 DWORD *rgdwCertReference; | |
| 1934 DWORD cExtension; | |
| 1935 PCERT_EXTENSION rgExtension; | |
| 1936 } CMC_ADD_EXTENSIONS_INFO,*PCMC_ADD_EXTENSIONS_INFO; | |
| 1937 | |
| 1938 typedef struct _CMC_ADD_ATTRIBUTES_INFO { | |
| 1939 DWORD dwCmcDataReference; | |
| 1940 DWORD cCertReference; | |
| 1941 DWORD *rgdwCertReference; | |
| 1942 DWORD cAttribute; | |
| 1943 PCRYPT_ATTRIBUTE rgAttribute; | |
| 1944 } CMC_ADD_ATTRIBUTES_INFO,*PCMC_ADD_ATTRIBUTES_INFO; | |
| 1945 | |
| 1946 typedef struct _CERT_TEMPLATE_EXT { | |
| 1947 LPSTR pszObjId; | |
| 1948 DWORD dwMajorVersion; | |
| 1949 WINBOOL fMinorVersion; | |
| 1950 DWORD dwMinorVersion; | |
| 1951 } CERT_TEMPLATE_EXT,*PCERT_TEMPLATE_EXT; | |
| 1952 | |
| 1953 typedef void *HCRYPTOIDFUNCSET; | |
| 1954 typedef void *HCRYPTOIDFUNCADDR; | |
| 1955 | |
| 1956 #define CRYPT_OID_ENCODE_OBJECT_FUNC "CryptDllEncodeObject" | |
| 1957 #define CRYPT_OID_DECODE_OBJECT_FUNC "CryptDllDecodeObject" | |
| 1958 #define CRYPT_OID_ENCODE_OBJECT_EX_FUNC "CryptDllEncodeObjectEx" | |
| 1959 #define CRYPT_OID_DECODE_OBJECT_EX_FUNC "CryptDllDecodeObjectEx" | |
| 1960 #define CRYPT_OID_CREATE_COM_OBJECT_FUNC "CryptDllCreateCOMObject" | |
| 1961 #define CRYPT_OID_VERIFY_REVOCATION_FUNC "CertDllVerifyRevocation" | |
| 1962 #define CRYPT_OID_VERIFY_CTL_USAGE_FUNC "CertDllVerifyCTLUsage" | |
| 1963 #define CRYPT_OID_FORMAT_OBJECT_FUNC "CryptDllFormatObject" | |
| 1964 #define CRYPT_OID_FIND_OID_INFO_FUNC "CryptDllFindOIDInfo" | |
| 1965 #define CRYPT_OID_FIND_LOCALIZED_NAME_FUNC "CryptDllFindLocalizedName" | |
| 1966 | |
| 1967 #define CRYPT_OID_REGPATH "Software\\Microsoft\\Cryptography\\OID" | |
| 1968 #define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType " | |
| 1969 #define CRYPT_OID_REG_DLL_VALUE_NAME L"Dll" | |
| 1970 #define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME L"FuncName" | |
| 1971 #define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A "FuncName" | |
| 1972 | |
| 1973 #define CRYPT_OID_REG_FLAGS_VALUE_NAME L"CryptFlags" | |
| 1974 | |
| 1975 #define CRYPT_DEFAULT_OID "DEFAULT" | |
| 1976 | |
| 1977 typedef struct _CRYPT_OID_FUNC_ENTRY { | |
| 1978 LPCSTR pszOID; | |
| 1979 void *pvFuncAddr; | |
| 1980 } CRYPT_OID_FUNC_ENTRY,*PCRYPT_OID_FUNC_ENTRY; | |
| 1981 | |
| 1982 #define CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG 1 | |
| 1983 | |
| 1984 WINIMPM WINBOOL WINAPI CryptInstallOIDFunctionAddress(HMODULE hModule,DWORD dwEncodingType,LPCSTR pszFuncName,DWORD cFuncEntry,const CRYPT_OID_FUNC_ENTRY rgFuncEntry[],DWORD dwFlags); | |
| 1985 WINIMPM HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName,DWORD dwFlags); | |
| 1986 WINIMPM WINBOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet,DWORD dwEncodingType,LPCSTR pszOID,DWORD dwFlags,void **ppvFuncAddr,HCRYPTOIDFUNCADDR *phFuncAddr); | |
| 1987 | |
| 1988 #define CRYPT_GET_INSTALLED_OID_FUNC_FLAG 0x1 | |
| 1989 | |
| 1990 WINIMPM WINBOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet,DWORD dwEncodingType,LPWSTR pwszDllList,DWORD *pcchDllList); | |
| 1991 WINIMPM WINBOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet,DWORD dwEncodingType,LPCWSTR pwszDll,DWORD dwFlags,void **ppvFuncAddr,HCRYPTOIDFUNCADDR *phFuncAddr); | |
| 1992 WINIMPM WINBOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr,DWORD dwFlags); | |
| 1993 WINIMPM WINBOOL WINAPI CryptRegisterOIDFunction(DWORD dwEncodingType,LPCSTR pszFuncName,LPCSTR pszOID,LPCWSTR pwszDll,LPCSTR pszOverrideFuncName); | |
| 1994 WINIMPM WINBOOL WINAPI CryptUnregisterOIDFunction(DWORD dwEncodingType,LPCSTR pszFuncName,LPCSTR pszOID); | |
| 1995 WINIMPM WINBOOL WINAPI CryptRegisterDefaultOIDFunction(DWORD dwEncodingType,LPCSTR pszFuncName,DWORD dwIndex,LPCWSTR pwszDll); | |
| 1996 | |
| 1997 #define CRYPT_REGISTER_FIRST_INDEX 0 | |
| 1998 #define CRYPT_REGISTER_LAST_INDEX 0xFFFFFFFF | |
| 1999 | |
| 2000 WINIMPM WINBOOL WINAPI CryptUnregisterDefaultOIDFunction(DWORD dwEncodingType,LPCSTR pszFuncName,LPCWSTR pwszDll); | |
| 2001 WINIMPM WINBOOL WINAPI CryptSetOIDFunctionValue(DWORD dwEncodingType,LPCSTR pszFuncName,LPCSTR pszOID,LPCWSTR pwszValueName,DWORD dwValueType,const BYTE *pbValueData,DWORD cbValueData); | |
| 2002 WINIMPM WINBOOL WINAPI CryptGetOIDFunctionValue(DWORD dwEncodingType,LPCSTR pszFuncName,LPCSTR pszOID,LPCWSTR pwszValueName,DWORD *pdwValueType,BYTE *pbValueData,DWORD *pcbValueData); | |
| 2003 | |
| 2004 typedef WINBOOL (WINAPI *PFN_CRYPT_ENUM_OID_FUNC)(DWORD dwEncodingType,LPCSTR pszFuncName,LPCSTR pszOID,DWORD cValue,const DWORD rgdwValueType[],LPCWSTR const rgpwszValueName[],const BYTE *const rgpbValueData[],const DWORD rgcbValueData[],void *pvArg); | |
| 2005 | |
| 2006 WINIMPM WINBOOL WINAPI CryptEnumOIDFunction(DWORD dwEncodingType,LPCSTR pszFuncName,LPCSTR pszOID,DWORD dwFlags,void *pvArg,PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc); | |
| 2007 | |
| 2008 #define CRYPT_MATCH_ANY_ENCODING_TYPE 0xFFFFFFFF | |
| 2009 | |
| 2010 typedef struct _CRYPT_OID_INFO { | |
| 2011 DWORD cbSize; | |
| 2012 LPCSTR pszOID; | |
| 2013 LPCWSTR pwszName; | |
| 2014 DWORD dwGroupId; | |
| 2015 __MINGW_EXTENSION union { | |
| 2016 DWORD dwValue; | |
| 2017 ALG_ID Algid; | |
| 2018 DWORD dwLength; | |
| 2019 }; | |
| 2020 CRYPT_DATA_BLOB ExtraInfo; | |
| 2021 } CRYPT_OID_INFO,*PCRYPT_OID_INFO; | |
| 2022 typedef const CRYPT_OID_INFO CCRYPT_OID_INFO,*PCCRYPT_OID_INFO; | |
| 2023 | |
| 2024 #define CRYPT_HASH_ALG_OID_GROUP_ID 1 | |
| 2025 #define CRYPT_ENCRYPT_ALG_OID_GROUP_ID 2 | |
| 2026 #define CRYPT_PUBKEY_ALG_OID_GROUP_ID 3 | |
| 2027 #define CRYPT_SIGN_ALG_OID_GROUP_ID 4 | |
| 2028 #define CRYPT_RDN_ATTR_OID_GROUP_ID 5 | |
| 2029 #define CRYPT_EXT_OR_ATTR_OID_GROUP_ID 6 | |
| 2030 #define CRYPT_ENHKEY_USAGE_OID_GROUP_ID 7 | |
| 2031 #define CRYPT_POLICY_OID_GROUP_ID 8 | |
| 2032 #define CRYPT_TEMPLATE_OID_GROUP_ID 9 | |
| 2033 #define CRYPT_LAST_OID_GROUP_ID 9 | |
| 2034 #define CRYPT_FIRST_ALG_OID_GROUP_ID CRYPT_HASH_ALG_OID_GROUP_ID | |
| 2035 #define CRYPT_LAST_ALG_OID_GROUP_ID CRYPT_SIGN_ALG_OID_GROUP_ID | |
| 2036 | |
| 2037 #define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG 0x1 | |
| 2038 #define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x2 | |
| 2039 #define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG 0x4 | |
| 2040 | |
| 2041 WINIMPM PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType,void *pvKey,DWORD dwGroupId); | |
| 2042 | |
| 2043 #define CRYPT_OID_INFO_OID_KEY 1 | |
| 2044 #define CRYPT_OID_INFO_NAME_KEY 2 | |
| 2045 #define CRYPT_OID_INFO_ALGID_KEY 3 | |
| 2046 #define CRYPT_OID_INFO_SIGN_KEY 4 | |
| 2047 | |
| 2048 WINIMPM WINBOOL WINAPI CryptRegisterOIDInfo(PCCRYPT_OID_INFO pInfo,DWORD dwFlags); | |
| 2049 | |
| 2050 #define CRYPT_INSTALL_OID_INFO_BEFORE_FLAG 1 | |
| 2051 | |
| 2052 WINIMPM WINBOOL WINAPI CryptUnregisterOIDInfo(PCCRYPT_OID_INFO pInfo); | |
| 2053 | |
| 2054 typedef WINBOOL (WINAPI *PFN_CRYPT_ENUM_OID_INFO)(PCCRYPT_OID_INFO pInfo,void *pvArg); | |
| 2055 | |
| 2056 WINIMPM WINBOOL WINAPI CryptEnumOIDInfo(DWORD dwGroupId,DWORD dwFlags,void *pvArg,PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo); | |
| 2057 WINIMPM LPCWSTR WINAPI CryptFindLocalizedName(LPCWSTR pwszCryptName); | |
| 2058 | |
| 2059 #define CRYPT_LOCALIZED_NAME_ENCODING_TYPE 0 | |
| 2060 #define CRYPT_LOCALIZED_NAME_OID "LocalizedNames" | |
| 2061 | |
| 2062 typedef void *HCRYPTMSG; | |
| 2063 | |
| 2064 #define szOID_PKCS_7_DATA "1.2.840.113549.1.7.1" | |
| 2065 #define szOID_PKCS_7_SIGNED "1.2.840.113549.1.7.2" | |
| 2066 #define szOID_PKCS_7_ENVELOPED "1.2.840.113549.1.7.3" | |
| 2067 #define szOID_PKCS_7_SIGNEDANDENVELOPED "1.2.840.113549.1.7.4" | |
| 2068 #define szOID_PKCS_7_DIGESTED "1.2.840.113549.1.7.5" | |
| 2069 #define szOID_PKCS_7_ENCRYPTED "1.2.840.113549.1.7.6" | |
| 2070 | |
| 2071 #define szOID_PKCS_9_CONTENT_TYPE "1.2.840.113549.1.9.3" | |
| 2072 #define szOID_PKCS_9_MESSAGE_DIGEST "1.2.840.113549.1.9.4" | |
| 2073 | |
| 2074 #define CMSG_DATA 1 | |
| 2075 #define CMSG_SIGNED 2 | |
| 2076 #define CMSG_ENVELOPED 3 | |
| 2077 #define CMSG_SIGNED_AND_ENVELOPED 4 | |
| 2078 #define CMSG_HASHED 5 | |
| 2079 #define CMSG_ENCRYPTED 6 | |
| 2080 | |
| 2081 #define CMSG_ALL_FLAGS (~0UL) | |
| 2082 #define CMSG_DATA_FLAG (1 << CMSG_DATA) | |
| 2083 #define CMSG_SIGNED_FLAG (1 << CMSG_SIGNED) | |
| 2084 #define CMSG_ENVELOPED_FLAG (1 << CMSG_ENVELOPED) | |
| 2085 #define CMSG_SIGNED_AND_ENVELOPED_FLAG (1 << CMSG_SIGNED_AND_ENVELOPED) | |
| 2086 #define CMSG_HASHED_FLAG (1 << CMSG_HASHED) | |
| 2087 #define CMSG_ENCRYPTED_FLAG (1 << CMSG_ENCRYPTED) | |
| 2088 | |
| 2089 typedef struct _CERT_ISSUER_SERIAL_NUMBER { | |
| 2090 CERT_NAME_BLOB Issuer; | |
| 2091 CRYPT_INTEGER_BLOB SerialNumber; | |
| 2092 } CERT_ISSUER_SERIAL_NUMBER,*PCERT_ISSUER_SERIAL_NUMBER; | |
| 2093 | |
| 2094 typedef struct _CERT_ID { | |
| 2095 DWORD dwIdChoice; | |
| 2096 __MINGW_EXTENSION union { | |
| 2097 CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber; | |
| 2098 CRYPT_HASH_BLOB KeyId; | |
| 2099 CRYPT_HASH_BLOB HashId; | |
| 2100 }; | |
| 2101 } CERT_ID,*PCERT_ID; | |
| 2102 | |
| 2103 #define CERT_ID_ISSUER_SERIAL_NUMBER 1 | |
| 2104 #define CERT_ID_KEY_IDENTIFIER 2 | |
| 2105 #define CERT_ID_SHA1_HASH 3 | |
| 2106 | |
| 2107 typedef struct _CMSG_SIGNER_ENCODE_INFO { | |
| 2108 DWORD cbSize; | |
| 2109 PCERT_INFO pCertInfo; | |
| 2110 HCRYPTPROV hCryptProv; | |
| 2111 DWORD dwKeySpec; | |
| 2112 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 2113 void *pvHashAuxInfo; | |
| 2114 DWORD cAuthAttr; | |
| 2115 PCRYPT_ATTRIBUTE rgAuthAttr; | |
| 2116 DWORD cUnauthAttr; | |
| 2117 PCRYPT_ATTRIBUTE rgUnauthAttr; | |
| 2118 #ifdef CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS | |
| 2119 CERT_ID SignerId; | |
| 2120 CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; | |
| 2121 void *pvHashEncryptionAuxInfo; | |
| 2122 #endif | |
| 2123 } CMSG_SIGNER_ENCODE_INFO,*PCMSG_SIGNER_ENCODE_INFO; | |
| 2124 | |
| 2125 typedef struct _CMSG_SIGNED_ENCODE_INFO { | |
| 2126 DWORD cbSize; | |
| 2127 DWORD cSigners; | |
| 2128 PCMSG_SIGNER_ENCODE_INFO rgSigners; | |
| 2129 DWORD cCertEncoded; | |
| 2130 PCERT_BLOB rgCertEncoded; | |
| 2131 DWORD cCrlEncoded; | |
| 2132 PCRL_BLOB rgCrlEncoded; | |
| 2133 #ifdef CMSG_SIGNED_ENCODE_INFO_HAS_CMS_FIELDS | |
| 2134 DWORD cAttrCertEncoded; | |
| 2135 PCERT_BLOB rgAttrCertEncoded; | |
| 2136 #endif | |
| 2137 } CMSG_SIGNED_ENCODE_INFO,*PCMSG_SIGNED_ENCODE_INFO; | |
| 2138 | |
| 2139 typedef struct _CMSG_RECIPIENT_ENCODE_INFO CMSG_RECIPIENT_ENCODE_INFO,*PCMSG_RECIPIENT_ENCODE_INFO; | |
| 2140 | |
| 2141 typedef struct _CMSG_ENVELOPED_ENCODE_INFO { | |
| 2142 DWORD cbSize; | |
| 2143 HCRYPTPROV hCryptProv; | |
| 2144 CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; | |
| 2145 void *pvEncryptionAuxInfo; | |
| 2146 DWORD cRecipients; | |
| 2147 PCERT_INFO *rgpRecipients; | |
| 2148 #ifdef CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS | |
| 2149 PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients; | |
| 2150 DWORD cCertEncoded; | |
| 2151 PCERT_BLOB rgCertEncoded; | |
| 2152 DWORD cCrlEncoded; | |
| 2153 PCRL_BLOB rgCrlEncoded; | |
| 2154 DWORD cAttrCertEncoded; | |
| 2155 PCERT_BLOB rgAttrCertEncoded; | |
| 2156 DWORD cUnprotectedAttr; | |
| 2157 PCRYPT_ATTRIBUTE rgUnprotectedAttr; | |
| 2158 #endif | |
| 2159 } CMSG_ENVELOPED_ENCODE_INFO,*PCMSG_ENVELOPED_ENCODE_INFO; | |
| 2160 | |
| 2161 typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO { | |
| 2162 DWORD cbSize; | |
| 2163 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2164 void *pvKeyEncryptionAuxInfo; | |
| 2165 HCRYPTPROV hCryptProv; | |
| 2166 CRYPT_BIT_BLOB RecipientPublicKey; | |
| 2167 CERT_ID RecipientId; | |
| 2168 } CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO,*PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO; | |
| 2169 | |
| 2170 typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO { | |
| 2171 DWORD cbSize; | |
| 2172 CRYPT_BIT_BLOB RecipientPublicKey; | |
| 2173 CERT_ID RecipientId; | |
| 2174 FILETIME Date; | |
| 2175 PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; | |
| 2176 } CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,*PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO; | |
| 2177 | |
| 2178 typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO { | |
| 2179 DWORD cbSize; | |
| 2180 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2181 void *pvKeyEncryptionAuxInfo; | |
| 2182 CRYPT_ALGORITHM_IDENTIFIER KeyWrapAlgorithm; | |
| 2183 void *pvKeyWrapAuxInfo; | |
| 2184 HCRYPTPROV hCryptProv; | |
| 2185 DWORD dwKeySpec; | |
| 2186 DWORD dwKeyChoice; | |
| 2187 __MINGW_EXTENSION union { | |
| 2188 PCRYPT_ALGORITHM_IDENTIFIER pEphemeralAlgorithm; | |
| 2189 PCERT_ID pSenderId; | |
| 2190 }; | |
| 2191 CRYPT_DATA_BLOB UserKeyingMaterial; | |
| 2192 DWORD cRecipientEncryptedKeys; | |
| 2193 PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO *rgpRecipientEncryptedKeys; | |
| 2194 } CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO,*PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO; | |
| 2195 | |
| 2196 #define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1 | |
| 2197 #define CMSG_KEY_AGREE_STATIC_KEY_CHOICE 2 | |
| 2198 | |
| 2199 typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO { | |
| 2200 DWORD cbSize; | |
| 2201 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2202 void *pvKeyEncryptionAuxInfo; | |
| 2203 HCRYPTPROV hCryptProv; | |
| 2204 DWORD dwKeyChoice; | |
| 2205 __MINGW_EXTENSION union { | |
| 2206 | |
| 2207 HCRYPTKEY hKeyEncryptionKey; | |
| 2208 void *pvKeyEncryptionKey; | |
| 2209 }; | |
| 2210 CRYPT_DATA_BLOB KeyId; | |
| 2211 FILETIME Date; | |
| 2212 PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; | |
| 2213 } CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO,*PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO; | |
| 2214 | |
| 2215 #define CMSG_MAIL_LIST_HANDLE_KEY_CHOICE 1 | |
| 2216 | |
| 2217 struct _CMSG_RECIPIENT_ENCODE_INFO { | |
| 2218 DWORD dwRecipientChoice; | |
| 2219 __MINGW_EXTENSION union { | |
| 2220 PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTrans; | |
| 2221 PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgree; | |
| 2222 PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailList; | |
| 2223 }; | |
| 2224 }; | |
| 2225 | |
| 2226 #define CMSG_KEY_TRANS_RECIPIENT 1 | |
| 2227 #define CMSG_KEY_AGREE_RECIPIENT 2 | |
| 2228 #define CMSG_MAIL_LIST_RECIPIENT 3 | |
| 2229 | |
| 2230 typedef struct _CMSG_RC2_AUX_INFO { | |
| 2231 DWORD cbSize; | |
| 2232 DWORD dwBitLen; | |
| 2233 } CMSG_RC2_AUX_INFO,*PCMSG_RC2_AUX_INFO; | |
| 2234 | |
| 2235 typedef struct _CMSG_SP3_COMPATIBLE_AUX_INFO { | |
| 2236 DWORD cbSize; | |
| 2237 DWORD dwFlags; | |
| 2238 } CMSG_SP3_COMPATIBLE_AUX_INFO,*PCMSG_SP3_COMPATIBLE_AUX_INFO; | |
| 2239 | |
| 2240 #define CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG 0x80000000 | |
| 2241 | |
| 2242 typedef struct _CMSG_RC4_AUX_INFO { | |
| 2243 DWORD cbSize; | |
| 2244 DWORD dwBitLen; | |
| 2245 } CMSG_RC4_AUX_INFO,*PCMSG_RC4_AUX_INFO; | |
| 2246 | |
| 2247 #define CMSG_RC4_NO_SALT_FLAG 0x40000000 | |
| 2248 | |
| 2249 typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO { | |
| 2250 DWORD cbSize; | |
| 2251 CMSG_SIGNED_ENCODE_INFO SignedInfo; | |
| 2252 CMSG_ENVELOPED_ENCODE_INFO EnvelopedInfo; | |
| 2253 } CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO,*PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO; | |
| 2254 | |
| 2255 typedef struct _CMSG_HASHED_ENCODE_INFO { | |
| 2256 DWORD cbSize; | |
| 2257 HCRYPTPROV hCryptProv; | |
| 2258 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 2259 void *pvHashAuxInfo; | |
| 2260 } CMSG_HASHED_ENCODE_INFO,*PCMSG_HASHED_ENCODE_INFO; | |
| 2261 | |
| 2262 typedef struct _CMSG_ENCRYPTED_ENCODE_INFO { | |
| 2263 DWORD cbSize; | |
| 2264 CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; | |
| 2265 void *pvEncryptionAuxInfo; | |
| 2266 } CMSG_ENCRYPTED_ENCODE_INFO,*PCMSG_ENCRYPTED_ENCODE_INFO; | |
| 2267 | |
| 2268 typedef WINBOOL (WINAPI *PFN_CMSG_STREAM_OUTPUT)(const void *pvArg,BYTE *pbData,DWORD cbData,WINBOOL fFinal); | |
| 2269 | |
| 2270 #define CMSG_INDEFINITE_LENGTH (0xFFFFFFFF) | |
| 2271 | |
| 2272 typedef struct _CMSG_STREAM_INFO { | |
| 2273 DWORD cbContent; | |
| 2274 PFN_CMSG_STREAM_OUTPUT pfnStreamOutput; | |
| 2275 void *pvArg; | |
| 2276 } CMSG_STREAM_INFO,*PCMSG_STREAM_INFO; | |
| 2277 | |
| 2278 #define CMSG_BARE_CONTENT_FLAG 0x1 | |
| 2279 #define CMSG_LENGTH_ONLY_FLAG 0x2 | |
| 2280 #define CMSG_DETACHED_FLAG 0x4 | |
| 2281 #define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x8 | |
| 2282 #define CMSG_CONTENTS_OCTETS_FLAG 0x10 | |
| 2283 #define CMSG_MAX_LENGTH_FLAG 0x20 | |
| 2284 | |
| 2285 #define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x40 | |
| 2286 | |
| 2287 #define CMSG_CRYPT_RELEASE_CONTEXT_FLAG 0x8000 | |
| 2288 | |
| 2289 WINIMPM HCRYPTMSG WINAPI CryptMsgOpenToEncode(DWORD dwMsgEncodingType,DWORD dwFlags,DWORD dwMsgType,void const *pvMsgEncodeInfo,LPSTR pszInnerContentObjID,PCMSG_STREAM_INFO pStreamInfo); | |
| 2290 WINIMPM DWORD WINAPI CryptMsgCalculateEncodedLength(DWORD dwMsgEncodingType,DWORD dwFlags,DWORD dwMsgType,void const *pvMsgEncodeInfo,LPSTR pszInnerContentObjID,DWORD cbData); | |
| 2291 WINIMPM HCRYPTMSG WINAPI CryptMsgOpenToDecode(DWORD dwMsgEncodingType,DWORD dwFlags,DWORD dwMsgType,HCRYPTPROV hCryptProv,PCERT_INFO pRecipientInfo,PCMSG_STREAM_INFO pStreamInfo); | |
| 2292 WINIMPM HCRYPTMSG WINAPI CryptMsgDuplicate(HCRYPTMSG hCryptMsg); | |
| 2293 WINIMPM WINBOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg); | |
| 2294 WINIMPM WINBOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg,const BYTE *pbData,DWORD cbData,WINBOOL fFinal); | |
| 2295 WINIMPM WINBOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg,DWORD dwParamType,DWORD dwIndex,void *pvData,DWORD *pcbData); | |
| 2296 | |
| 2297 #define CMSG_TYPE_PARAM 1 | |
| 2298 #define CMSG_CONTENT_PARAM 2 | |
| 2299 #define CMSG_BARE_CONTENT_PARAM 3 | |
| 2300 #define CMSG_INNER_CONTENT_TYPE_PARAM 4 | |
| 2301 #define CMSG_SIGNER_COUNT_PARAM 5 | |
| 2302 #define CMSG_SIGNER_INFO_PARAM 6 | |
| 2303 #define CMSG_SIGNER_CERT_INFO_PARAM 7 | |
| 2304 #define CMSG_SIGNER_HASH_ALGORITHM_PARAM 8 | |
| 2305 #define CMSG_SIGNER_AUTH_ATTR_PARAM 9 | |
| 2306 #define CMSG_SIGNER_UNAUTH_ATTR_PARAM 10 | |
| 2307 #define CMSG_CERT_COUNT_PARAM 11 | |
| 2308 #define CMSG_CERT_PARAM 12 | |
| 2309 #define CMSG_CRL_COUNT_PARAM 13 | |
| 2310 #define CMSG_CRL_PARAM 14 | |
| 2311 #define CMSG_ENVELOPE_ALGORITHM_PARAM 15 | |
| 2312 #define CMSG_RECIPIENT_COUNT_PARAM 17 | |
| 2313 #define CMSG_RECIPIENT_INDEX_PARAM 18 | |
| 2314 #define CMSG_RECIPIENT_INFO_PARAM 19 | |
| 2315 #define CMSG_HASH_ALGORITHM_PARAM 20 | |
| 2316 #define CMSG_HASH_DATA_PARAM 21 | |
| 2317 #define CMSG_COMPUTED_HASH_PARAM 22 | |
| 2318 #define CMSG_ENCRYPT_PARAM 26 | |
| 2319 #define CMSG_ENCRYPTED_DIGEST 27 | |
| 2320 #define CMSG_ENCODED_SIGNER 28 | |
| 2321 #define CMSG_ENCODED_MESSAGE 29 | |
| 2322 #define CMSG_VERSION_PARAM 30 | |
| 2323 #define CMSG_ATTR_CERT_COUNT_PARAM 31 | |
| 2324 #define CMSG_ATTR_CERT_PARAM 32 | |
| 2325 #define CMSG_CMS_RECIPIENT_COUNT_PARAM 33 | |
| 2326 #define CMSG_CMS_RECIPIENT_INDEX_PARAM 34 | |
| 2327 #define CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM 35 | |
| 2328 #define CMSG_CMS_RECIPIENT_INFO_PARAM 36 | |
| 2329 #define CMSG_UNPROTECTED_ATTR_PARAM 37 | |
| 2330 #define CMSG_SIGNER_CERT_ID_PARAM 38 | |
| 2331 #define CMSG_CMS_SIGNER_INFO_PARAM 39 | |
| 2332 | |
| 2333 typedef struct _CMSG_SIGNER_INFO { | |
| 2334 DWORD dwVersion; | |
| 2335 CERT_NAME_BLOB Issuer; | |
| 2336 CRYPT_INTEGER_BLOB SerialNumber; | |
| 2337 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 2338 CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; | |
| 2339 CRYPT_DATA_BLOB EncryptedHash; | |
| 2340 CRYPT_ATTRIBUTES AuthAttrs; | |
| 2341 CRYPT_ATTRIBUTES UnauthAttrs; | |
| 2342 } CMSG_SIGNER_INFO,*PCMSG_SIGNER_INFO; | |
| 2343 | |
| 2344 typedef struct _CMSG_CMS_SIGNER_INFO { | |
| 2345 DWORD dwVersion; | |
| 2346 CERT_ID SignerId; | |
| 2347 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 2348 CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; | |
| 2349 CRYPT_DATA_BLOB EncryptedHash; | |
| 2350 CRYPT_ATTRIBUTES AuthAttrs; | |
| 2351 CRYPT_ATTRIBUTES UnauthAttrs; | |
| 2352 } CMSG_CMS_SIGNER_INFO,*PCMSG_CMS_SIGNER_INFO; | |
| 2353 | |
| 2354 typedef CRYPT_ATTRIBUTES CMSG_ATTR; | |
| 2355 typedef CRYPT_ATTRIBUTES *PCMSG_ATTR; | |
| 2356 | |
| 2357 #define CMSG_SIGNED_DATA_V1 1 | |
| 2358 #define CMSG_SIGNED_DATA_V3 3 | |
| 2359 #define CMSG_SIGNED_DATA_PKCS_1_5_VERSION CMSG_SIGNED_DATA_V1 | |
| 2360 #define CMSG_SIGNED_DATA_CMS_VERSION CMSG_SIGNED_DATA_V3 | |
| 2361 | |
| 2362 #define CMSG_SIGNER_INFO_V1 1 | |
| 2363 #define CMSG_SIGNER_INFO_V3 3 | |
| 2364 #define CMSG_SIGNER_INFO_PKCS_1_5_VERSION CMSG_SIGNER_INFO_V1 | |
| 2365 #define CMSG_SIGNER_INFO_CMS_VERSION CMSG_SIGNER_INFO_V3 | |
| 2366 | |
| 2367 #define CMSG_HASHED_DATA_V0 0 | |
| 2368 #define CMSG_HASHED_DATA_V2 2 | |
| 2369 #define CMSG_HASHED_DATA_PKCS_1_5_VERSION CMSG_HASHED_DATA_V0 | |
| 2370 #define CMSG_HASHED_DATA_CMS_VERSION CMSG_HASHED_DATA_V2 | |
| 2371 | |
| 2372 #define CMSG_ENVELOPED_DATA_V0 0 | |
| 2373 #define CMSG_ENVELOPED_DATA_V2 2 | |
| 2374 #define CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION CMSG_ENVELOPED_DATA_V0 | |
| 2375 #define CMSG_ENVELOPED_DATA_CMS_VERSION CMSG_ENVELOPED_DATA_V2 | |
| 2376 | |
| 2377 typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO { | |
| 2378 DWORD dwVersion; | |
| 2379 CERT_ID RecipientId; | |
| 2380 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2381 CRYPT_DATA_BLOB EncryptedKey; | |
| 2382 } CMSG_KEY_TRANS_RECIPIENT_INFO,*PCMSG_KEY_TRANS_RECIPIENT_INFO; | |
| 2383 | |
| 2384 typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO { | |
| 2385 CERT_ID RecipientId; | |
| 2386 CRYPT_DATA_BLOB EncryptedKey; | |
| 2387 FILETIME Date; | |
| 2388 PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; | |
| 2389 } CMSG_RECIPIENT_ENCRYPTED_KEY_INFO,*PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO; | |
| 2390 | |
| 2391 typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO { | |
| 2392 DWORD dwVersion; | |
| 2393 DWORD dwOriginatorChoice; | |
| 2394 __MINGW_EXTENSION union { | |
| 2395 CERT_ID OriginatorCertId; | |
| 2396 CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo; | |
| 2397 }; | |
| 2398 CRYPT_DATA_BLOB UserKeyingMaterial; | |
| 2399 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2400 DWORD cRecipientEncryptedKeys; | |
| 2401 PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO *rgpRecipientEncryptedKeys; | |
| 2402 } CMSG_KEY_AGREE_RECIPIENT_INFO,*PCMSG_KEY_AGREE_RECIPIENT_INFO; | |
| 2403 | |
| 2404 #define CMSG_KEY_AGREE_ORIGINATOR_CERT 1 | |
| 2405 #define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2 | |
| 2406 | |
| 2407 typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO { | |
| 2408 DWORD dwVersion; | |
| 2409 CRYPT_DATA_BLOB KeyId; | |
| 2410 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2411 CRYPT_DATA_BLOB EncryptedKey; | |
| 2412 FILETIME Date; | |
| 2413 PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; | |
| 2414 } CMSG_MAIL_LIST_RECIPIENT_INFO,*PCMSG_MAIL_LIST_RECIPIENT_INFO; | |
| 2415 | |
| 2416 typedef struct _CMSG_CMS_RECIPIENT_INFO { | |
| 2417 DWORD dwRecipientChoice; | |
| 2418 __MINGW_EXTENSION union { | |
| 2419 PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans; | |
| 2420 PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree; | |
| 2421 PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList; | |
| 2422 }; | |
| 2423 } CMSG_CMS_RECIPIENT_INFO,*PCMSG_CMS_RECIPIENT_INFO; | |
| 2424 | |
| 2425 #define CMSG_ENVELOPED_RECIPIENT_V0 0 | |
| 2426 #define CMSG_ENVELOPED_RECIPIENT_V2 2 | |
| 2427 #define CMSG_ENVELOPED_RECIPIENT_V3 3 | |
| 2428 #define CMSG_ENVELOPED_RECIPIENT_V4 4 | |
| 2429 #define CMSG_KEY_TRANS_PKCS_1_5_VERSION CMSG_ENVELOPED_RECIPIENT_V0 | |
| 2430 #define CMSG_KEY_TRANS_CMS_VERSION CMSG_ENVELOPED_RECIPIENT_V2 | |
| 2431 #define CMSG_KEY_AGREE_VERSION CMSG_ENVELOPED_RECIPIENT_V3 | |
| 2432 #define CMSG_MAIL_LIST_VERSION CMSG_ENVELOPED_RECIPIENT_V4 | |
| 2433 | |
| 2434 WINIMPM WINBOOL WINAPI CryptMsgControl(HCRYPTMSG hCryptMsg,DWORD dwFlags,DWORD dwCtrlType,void const *pvCtrlPara); | |
| 2435 | |
| 2436 #define CMSG_CTRL_VERIFY_SIGNATURE 1 | |
| 2437 #define CMSG_CTRL_DECRYPT 2 | |
| 2438 #define CMSG_CTRL_VERIFY_HASH 5 | |
| 2439 #define CMSG_CTRL_ADD_SIGNER 6 | |
| 2440 #define CMSG_CTRL_DEL_SIGNER 7 | |
| 2441 #define CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR 8 | |
| 2442 #define CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR 9 | |
| 2443 #define CMSG_CTRL_ADD_CERT 10 | |
| 2444 #define CMSG_CTRL_DEL_CERT 11 | |
| 2445 #define CMSG_CTRL_ADD_CRL 12 | |
| 2446 #define CMSG_CTRL_DEL_CRL 13 | |
| 2447 #define CMSG_CTRL_ADD_ATTR_CERT 14 | |
| 2448 #define CMSG_CTRL_DEL_ATTR_CERT 15 | |
| 2449 #define CMSG_CTRL_KEY_TRANS_DECRYPT 16 | |
| 2450 #define CMSG_CTRL_KEY_AGREE_DECRYPT 17 | |
| 2451 #define CMSG_CTRL_MAIL_LIST_DECRYPT 18 | |
| 2452 #define CMSG_CTRL_VERIFY_SIGNATURE_EX 19 | |
| 2453 #define CMSG_CTRL_ADD_CMS_SIGNER_INFO 20 | |
| 2454 | |
| 2455 typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA { | |
| 2456 DWORD cbSize; | |
| 2457 HCRYPTPROV hCryptProv; | |
| 2458 DWORD dwSignerIndex; | |
| 2459 DWORD dwSignerType; | |
| 2460 void *pvSigner; | |
| 2461 } CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA,*PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA; | |
| 2462 | |
| 2463 #define CMSG_VERIFY_SIGNER_PUBKEY 1 | |
| 2464 #define CMSG_VERIFY_SIGNER_CERT 2 | |
| 2465 #define CMSG_VERIFY_SIGNER_CHAIN 3 | |
| 2466 #define CMSG_VERIFY_SIGNER_NULL 4 | |
| 2467 | |
| 2468 typedef struct _CMSG_CTRL_DECRYPT_PARA { | |
| 2469 DWORD cbSize; | |
| 2470 HCRYPTPROV hCryptProv; | |
| 2471 DWORD dwKeySpec; | |
| 2472 DWORD dwRecipientIndex; | |
| 2473 } CMSG_CTRL_DECRYPT_PARA,*PCMSG_CTRL_DECRYPT_PARA; | |
| 2474 | |
| 2475 typedef struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA { | |
| 2476 DWORD cbSize; | |
| 2477 HCRYPTPROV hCryptProv; | |
| 2478 DWORD dwKeySpec; | |
| 2479 PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans; | |
| 2480 DWORD dwRecipientIndex; | |
| 2481 } CMSG_CTRL_KEY_TRANS_DECRYPT_PARA,*PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA; | |
| 2482 | |
| 2483 typedef struct _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA { | |
| 2484 DWORD cbSize; | |
| 2485 HCRYPTPROV hCryptProv; | |
| 2486 DWORD dwKeySpec; | |
| 2487 PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree; | |
| 2488 DWORD dwRecipientIndex; | |
| 2489 DWORD dwRecipientEncryptedKeyIndex; | |
| 2490 CRYPT_BIT_BLOB OriginatorPublicKey; | |
| 2491 } CMSG_CTRL_KEY_AGREE_DECRYPT_PARA,*PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA; | |
| 2492 | |
| 2493 typedef struct _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA { | |
| 2494 DWORD cbSize; | |
| 2495 HCRYPTPROV hCryptProv; | |
| 2496 PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList; | |
| 2497 DWORD dwRecipientIndex; | |
| 2498 DWORD dwKeyChoice; | |
| 2499 __MINGW_EXTENSION union { | |
| 2500 HCRYPTKEY hKeyEncryptionKey; | |
| 2501 void *pvKeyEncryptionKey; | |
| 2502 }; | |
| 2503 } CMSG_CTRL_MAIL_LIST_DECRYPT_PARA,*PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA; | |
| 2504 | |
| 2505 typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA { | |
| 2506 DWORD cbSize; | |
| 2507 DWORD dwSignerIndex; | |
| 2508 CRYPT_DATA_BLOB blob; | |
| 2509 } CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA,*PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA; | |
| 2510 | |
| 2511 typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA { | |
| 2512 DWORD cbSize; | |
| 2513 DWORD dwSignerIndex; | |
| 2514 DWORD dwUnauthAttrIndex; | |
| 2515 } CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA,*PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA; | |
| 2516 | |
| 2517 WINBOOL WINAPI CryptMsgVerifyCountersignatureEncoded(HCRYPTPROV hCryptProv,DWORD dwEncodingType,PBYTE pbSignerInfo,DWORD cbSignerInfo,PBYTE pbSignerInfoCountersignature,DWORD cbSignerInfoCountersignature,PCERT_INFO pciCountersigner); | |
| 2518 WINBOOL WINAPI CryptMsgVerifyCountersignatureEncodedEx(HCRYPTPROV hCryptProv,DWORD dwEncodingType,PBYTE pbSignerInfo,DWORD cbSignerInfo,PBYTE pbSignerInfoCountersignature,DWORD cbSignerInfoCountersignature,DWORD dwSignerType,void *pvSigner,DWORD dwFlags,void *pvReserved); | |
| 2519 WINBOOL WINAPI CryptMsgCountersign(HCRYPTMSG hCryptMsg,DWORD dwIndex,DWORD cCountersigners,PCMSG_SIGNER_ENCODE_INFO rgCountersigners); | |
| 2520 WINBOOL WINAPI CryptMsgCountersignEncoded(DWORD dwEncodingType,PBYTE pbSignerInfo,DWORD cbSignerInfo,DWORD cCountersigners,PCMSG_SIGNER_ENCODE_INFO rgCountersigners,PBYTE pbCountersignature,PDWORD pcbCountersignature); | |
| 2521 | |
| 2522 typedef void *(WINAPI *PFN_CMSG_ALLOC)(size_t cb); | |
| 2523 typedef void (WINAPI *PFN_CMSG_FREE)(void *pv); | |
| 2524 | |
| 2525 #define CMSG_OID_GEN_ENCRYPT_KEY_FUNC "CryptMsgDllGenEncryptKey" | |
| 2526 typedef WINBOOL (WINAPI *PFN_CMSG_GEN_ENCRYPT_KEY)(HCRYPTPROV *phCryptProv,PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt,PVOID pvEncryptAuxInfo,PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,PFN_CMSG_ALLOC pfnAlloc,HCRYPTKEY *phEncryptKey,PBYTE *ppbEncryptParameters,PDWORD pcbEncryptParameters); | |
| 2527 | |
| 2528 #define CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC "CryptMsgDllExportEncryptKey" | |
| 2529 typedef WINBOOL (WINAPI *PFN_CMSG_EXPORT_ENCRYPT_KEY)(HCRYPTPROV hCryptProv,HCRYPTKEY hEncryptKey,PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,PBYTE pbData,PDWORD pcbData); | |
| 2530 | |
| 2531 #define CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC "CryptMsgDllImportEncryptKey" | |
| 2532 typedef WINBOOL (WINAPI *PFN_CMSG_IMPORT_ENCRYPT_KEY)(HCRYPTPROV hCryptProv,DWORD dwKeySpec,PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt,PCRYPT_ALGORITHM_IDENTIFIER paiPubKey,PBYTE pbEncodedKey,DWORD cbEncodedKey,HCRYPTKEY *phEncryptKey); | |
| 2533 | |
| 2534 #define CMSG_DEFAULT_INSTALLABLE_FUNC_OID ((LPCSTR) 1) | |
| 2535 | |
| 2536 typedef struct _CMSG_CONTENT_ENCRYPT_INFO { | |
| 2537 DWORD cbSize; | |
| 2538 HCRYPTPROV hCryptProv; | |
| 2539 CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; | |
| 2540 void *pvEncryptionAuxInfo; | |
| 2541 DWORD cRecipients; | |
| 2542 PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients; | |
| 2543 PFN_CMSG_ALLOC pfnAlloc; | |
| 2544 PFN_CMSG_FREE pfnFree; | |
| 2545 DWORD dwEncryptFlags; | |
| 2546 HCRYPTKEY hContentEncryptKey; | |
| 2547 DWORD dwFlags; | |
| 2548 } CMSG_CONTENT_ENCRYPT_INFO,*PCMSG_CONTENT_ENCRYPT_INFO; | |
| 2549 | |
| 2550 #define CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG 0x1 | |
| 2551 | |
| 2552 #define CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG 0x1 | |
| 2553 #define CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG 0x8000 | |
| 2554 | |
| 2555 #define CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllGenContentEncryptKey" | |
| 2556 typedef WINBOOL (WINAPI *PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY)(PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,DWORD dwFlags,void *pvReserved); | |
| 2557 | |
| 2558 typedef struct _CMSG_KEY_TRANS_ENCRYPT_INFO { | |
| 2559 DWORD cbSize; | |
| 2560 DWORD dwRecipientIndex; | |
| 2561 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2562 CRYPT_DATA_BLOB EncryptedKey; | |
| 2563 DWORD dwFlags; | |
| 2564 } CMSG_KEY_TRANS_ENCRYPT_INFO,*PCMSG_KEY_TRANS_ENCRYPT_INFO; | |
| 2565 | |
| 2566 #define CMSG_KEY_TRANS_ENCRYPT_FREE_PARA_FLAG 0x1 | |
| 2567 | |
| 2568 #define CMSG_OID_EXPORT_KEY_TRANS_FUNC "CryptMsgDllExportKeyTrans" | |
| 2569 typedef WINBOOL (WINAPI *PFN_CMSG_EXPORT_KEY_TRANS)(PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTransEncodeInfo,PCMSG_KEY_TRANS_ENCRYPT_INFO pKeyTransEncryptInfo,DWORD dwFlags,void *pvReserved); | |
| 2570 | |
| 2571 typedef struct _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO { | |
| 2572 DWORD cbSize; | |
| 2573 CRYPT_DATA_BLOB EncryptedKey; | |
| 2574 } CMSG_KEY_AGREE_KEY_ENCRYPT_INFO,*PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO; | |
| 2575 | |
| 2576 typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO { | |
| 2577 DWORD cbSize; | |
| 2578 DWORD dwRecipientIndex; | |
| 2579 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2580 CRYPT_DATA_BLOB UserKeyingMaterial; | |
| 2581 DWORD dwOriginatorChoice; | |
| 2582 __MINGW_EXTENSION union { | |
| 2583 | |
| 2584 CERT_ID OriginatorCertId; | |
| 2585 | |
| 2586 CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo; | |
| 2587 }; | |
| 2588 DWORD cKeyAgreeKeyEncryptInfo; | |
| 2589 PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO *rgpKeyAgreeKeyEncryptInfo; | |
| 2590 DWORD dwFlags; | |
| 2591 } CMSG_KEY_AGREE_ENCRYPT_INFO,*PCMSG_KEY_AGREE_ENCRYPT_INFO; | |
| 2592 | |
| 2593 #define CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG 0x1 | |
| 2594 #define CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG 0x2 | |
| 2595 #define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG 0x4 | |
| 2596 #define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG 0x8 | |
| 2597 #define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG 0x10 | |
| 2598 | |
| 2599 #define CMSG_OID_EXPORT_KEY_AGREE_FUNC "CryptMsgDllExportKeyAgree" | |
| 2600 | |
| 2601 typedef WINBOOL (WINAPI *PFN_CMSG_EXPORT_KEY_AGREE)(PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo,PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo,DWORD dwFlags,void *pvReserved); | |
| 2602 | |
| 2603 typedef struct _CMSG_MAIL_LIST_ENCRYPT_INFO { | |
| 2604 DWORD cbSize; | |
| 2605 DWORD dwRecipientIndex; | |
| 2606 CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; | |
| 2607 CRYPT_DATA_BLOB EncryptedKey; | |
| 2608 DWORD dwFlags; | |
| 2609 } CMSG_MAIL_LIST_ENCRYPT_INFO,*PCMSG_MAIL_LIST_ENCRYPT_INFO; | |
| 2610 | |
| 2611 #define CMSG_MAIL_LIST_ENCRYPT_FREE_PARA_FLAG 0x1 | |
| 2612 | |
| 2613 #define CMSG_OID_EXPORT_MAIL_LIST_FUNC "CryptMsgDllExportMailList" | |
| 2614 typedef WINBOOL (WINAPI *PFN_CMSG_EXPORT_MAIL_LIST)(PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo,PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailListEncodeInfo,PCMSG_MAIL_LIST_ENCRYPT_INFO pMailListEncryptInfo,DWORD dwFlags,void *pvReserved); | |
| 2615 | |
| 2616 #define CMSG_OID_IMPORT_KEY_TRANS_FUNC "CryptMsgDllImportKeyTrans" | |
| 2617 typedef WINBOOL (WINAPI *PFN_CMSG_IMPORT_KEY_TRANS)(PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm,PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara,DWORD dwFlags,void *pvReserved,HCRYPTKEY *phContentEncryptKey); | |
| 2618 | |
| 2619 #define CMSG_OID_IMPORT_KEY_AGREE_FUNC "CryptMsgDllImportKeyAgree" | |
| 2620 typedef WINBOOL (WINAPI *PFN_CMSG_IMPORT_KEY_AGREE)(PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm,PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara,DWORD dwFlags,void *pvReserved,HCRYPTKEY *phContentEncryptKey); | |
| 2621 | |
| 2622 #define CMSG_OID_IMPORT_MAIL_LIST_FUNC "CryptMsgDllImportMailList" | |
| 2623 typedef WINBOOL (WINAPI *PFN_CMSG_IMPORT_MAIL_LIST)(PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm,PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA pMailListDecryptPara,DWORD dwFlags,void *pvReserved,HCRYPTKEY *phContentEncryptKey); | |
| 2624 | |
| 2625 typedef void *HCERTSTORE; | |
| 2626 | |
| 2627 typedef struct _CERT_CONTEXT { | |
| 2628 DWORD dwCertEncodingType; | |
| 2629 BYTE *pbCertEncoded; | |
| 2630 DWORD cbCertEncoded; | |
| 2631 PCERT_INFO pCertInfo; | |
| 2632 HCERTSTORE hCertStore; | |
| 2633 } CERT_CONTEXT,*PCERT_CONTEXT; | |
| 2634 | |
| 2635 typedef const CERT_CONTEXT *PCCERT_CONTEXT; | |
| 2636 | |
| 2637 typedef struct _CRL_CONTEXT { | |
| 2638 DWORD dwCertEncodingType; | |
| 2639 BYTE *pbCrlEncoded; | |
| 2640 DWORD cbCrlEncoded; | |
| 2641 PCRL_INFO pCrlInfo; | |
| 2642 HCERTSTORE hCertStore; | |
| 2643 } CRL_CONTEXT,*PCRL_CONTEXT; | |
| 2644 | |
| 2645 typedef const CRL_CONTEXT *PCCRL_CONTEXT; | |
| 2646 | |
| 2647 typedef struct _CTL_CONTEXT { | |
| 2648 DWORD dwMsgAndCertEncodingType; | |
| 2649 BYTE *pbCtlEncoded; | |
| 2650 DWORD cbCtlEncoded; | |
| 2651 PCTL_INFO pCtlInfo; | |
| 2652 HCERTSTORE hCertStore; | |
| 2653 HCRYPTMSG hCryptMsg; | |
| 2654 BYTE *pbCtlContent; | |
| 2655 DWORD cbCtlContent; | |
| 2656 } CTL_CONTEXT,*PCTL_CONTEXT; | |
| 2657 | |
| 2658 typedef const CTL_CONTEXT *PCCTL_CONTEXT; | |
| 2659 | |
| 2660 #define CERT_KEY_PROV_HANDLE_PROP_ID 1 | |
| 2661 #define CERT_KEY_PROV_INFO_PROP_ID 2 | |
| 2662 #define CERT_SHA1_HASH_PROP_ID 3 | |
| 2663 #define CERT_MD5_HASH_PROP_ID 4 | |
| 2664 #define CERT_HASH_PROP_ID CERT_SHA1_HASH_PROP_ID | |
| 2665 #define CERT_KEY_CONTEXT_PROP_ID 5 | |
| 2666 #define CERT_KEY_SPEC_PROP_ID 6 | |
| 2667 #define CERT_IE30_RESERVED_PROP_ID 7 | |
| 2668 #define CERT_PUBKEY_HASH_RESERVED_PROP_ID 8 | |
| 2669 #define CERT_ENHKEY_USAGE_PROP_ID 9 | |
| 2670 #define CERT_CTL_USAGE_PROP_ID CERT_ENHKEY_USAGE_PROP_ID | |
| 2671 #define CERT_NEXT_UPDATE_LOCATION_PROP_ID 10 | |
| 2672 #define CERT_FRIENDLY_NAME_PROP_ID 11 | |
| 2673 #define CERT_PVK_FILE_PROP_ID 12 | |
| 2674 #define CERT_DESCRIPTION_PROP_ID 13 | |
| 2675 #define CERT_ACCESS_STATE_PROP_ID 14 | |
| 2676 #define CERT_SIGNATURE_HASH_PROP_ID 15 | |
| 2677 #define CERT_SMART_CARD_DATA_PROP_ID 16 | |
| 2678 #define CERT_EFS_PROP_ID 17 | |
| 2679 #define CERT_FORTEZZA_DATA_PROP_ID 18 | |
| 2680 #define CERT_ARCHIVED_PROP_ID 19 | |
| 2681 #define CERT_KEY_IDENTIFIER_PROP_ID 20 | |
| 2682 #define CERT_AUTO_ENROLL_PROP_ID 21 | |
| 2683 #define CERT_PUBKEY_ALG_PARA_PROP_ID 22 | |
| 2684 #define CERT_CROSS_CERT_DIST_POINTS_PROP_ID 23 | |
| 2685 #define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID 24 | |
| 2686 #define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID 25 | |
| 2687 #define CERT_ENROLLMENT_PROP_ID 26 | |
| 2688 #define CERT_DATE_STAMP_PROP_ID 27 | |
| 2689 #define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 28 | |
| 2690 #define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID 29 | |
| 2691 #define CERT_EXTENDED_ERROR_INFO_PROP_ID 30 | |
| 2692 #define CERT_RENEWAL_PROP_ID 64 | |
| 2693 #define CERT_ARCHIVED_KEY_HASH_PROP_ID 65 | |
| 2694 #define CERT_AUTO_ENROLL_RETRY_PROP_ID 66 | |
| 2695 #define CERT_AIA_URL_RETRIEVED_PROP_ID 67 | |
| 2696 #define CERT_REQUEST_ORIGINATOR_PROP_ID 71 | |
| 2697 #define CERT_FIRST_RESERVED_PROP_ID 72 | |
| 2698 #define CERT_LAST_RESERVED_PROP_ID 0x7fff | |
| 2699 #define CERT_FIRST_USER_PROP_ID 0x8000 | |
| 2700 #define CERT_LAST_USER_PROP_ID 0xffff | |
| 2701 | |
| 2702 #define IS_CERT_HASH_PROP_ID(X) (CERT_SHA1_HASH_PROP_ID==(X) || CERT_MD5_HASH_PROP_ID==(X) || CERT_SIGNATURE_HASH_PROP_ID==(X)) | |
| 2703 #define IS_PUBKEY_HASH_PROP_ID(X) (CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID==(X) || CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID==(X)) | |
| 2704 #define IS_CHAIN_HASH_PROP_ID(X) (CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID==(X) || CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID==(X) || CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID==(X) || CERT_SUBJECT_NAME_MD5_HASH_PROP_ID==(X)) | |
| 2705 | |
| 2706 #define szOID_CERT_PROP_ID_PREFIX "1.3.6.1.4.1.311.10.11." | |
| 2707 #define szOID_CERT_KEY_IDENTIFIER_PROP_ID "1.3.6.1.4.1.311.10.11.20" | |
| 2708 #define szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.28" | |
| 2709 #define szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.29" | |
| 2710 | |
| 2711 #define CERT_ACCESS_STATE_WRITE_PERSIST_FLAG 0x1 | |
| 2712 | |
| 2713 #define CERT_ACCESS_STATE_SYSTEM_STORE_FLAG 0x2 | |
| 2714 | |
| 2715 #define CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG 0x4 | |
| 2716 | |
| 2717 typedef struct _CRYPT_KEY_PROV_PARAM { | |
| 2718 DWORD dwParam; | |
| 2719 BYTE *pbData; | |
| 2720 DWORD cbData; | |
| 2721 DWORD dwFlags; | |
| 2722 } CRYPT_KEY_PROV_PARAM,*PCRYPT_KEY_PROV_PARAM; | |
| 2723 | |
| 2724 typedef struct _CRYPT_KEY_PROV_INFO { | |
| 2725 LPWSTR pwszContainerName; | |
| 2726 LPWSTR pwszProvName; | |
| 2727 DWORD dwProvType; | |
| 2728 DWORD dwFlags; | |
| 2729 DWORD cProvParam; | |
| 2730 PCRYPT_KEY_PROV_PARAM rgProvParam; | |
| 2731 DWORD dwKeySpec; | |
| 2732 } CRYPT_KEY_PROV_INFO,*PCRYPT_KEY_PROV_INFO; | |
| 2733 | |
| 2734 #define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x1 | |
| 2735 #define CERT_SET_KEY_CONTEXT_PROP_ID 0x1 | |
| 2736 | |
| 2737 typedef struct _CERT_KEY_CONTEXT { | |
| 2738 DWORD cbSize; | |
| 2739 HCRYPTPROV hCryptProv; | |
| 2740 DWORD dwKeySpec; | |
| 2741 } CERT_KEY_CONTEXT,*PCERT_KEY_CONTEXT; | |
| 2742 | |
| 2743 #define CERT_STORE_PROV_MSG ((LPCSTR) 1) | |
| 2744 #define CERT_STORE_PROV_MEMORY ((LPCSTR) 2) | |
| 2745 #define CERT_STORE_PROV_FILE ((LPCSTR) 3) | |
| 2746 #define CERT_STORE_PROV_REG ((LPCSTR) 4) | |
| 2747 | |
| 2748 #define CERT_STORE_PROV_PKCS7 ((LPCSTR) 5) | |
| 2749 #define CERT_STORE_PROV_SERIALIZED ((LPCSTR) 6) | |
| 2750 #define CERT_STORE_PROV_FILENAME_A ((LPCSTR) 7) | |
| 2751 #define CERT_STORE_PROV_FILENAME_W ((LPCSTR) 8) | |
| 2752 #define CERT_STORE_PROV_FILENAME CERT_STORE_PROV_FILENAME_W | |
| 2753 #define CERT_STORE_PROV_SYSTEM_A ((LPCSTR) 9) | |
| 2754 #define CERT_STORE_PROV_SYSTEM_W ((LPCSTR) 10) | |
| 2755 #define CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W | |
| 2756 | |
| 2757 #define CERT_STORE_PROV_COLLECTION ((LPCSTR) 11) | |
| 2758 #define CERT_STORE_PROV_SYSTEM_REGISTRY_A ((LPCSTR) 12) | |
| 2759 #define CERT_STORE_PROV_SYSTEM_REGISTRY_W ((LPCSTR) 13) | |
| 2760 #define CERT_STORE_PROV_SYSTEM_REGISTRY CERT_STORE_PROV_SYSTEM_REGISTRY_W | |
| 2761 #define CERT_STORE_PROV_PHYSICAL_W ((LPCSTR) 14) | |
| 2762 #define CERT_STORE_PROV_PHYSICAL CERT_STORE_PROV_PHYSICAL_W | |
| 2763 #define CERT_STORE_PROV_SMART_CARD_W ((LPCSTR) 15) | |
| 2764 #define CERT_STORE_PROV_SMART_CARD CERT_STORE_PROV_SMART_CARD_W | |
| 2765 #define CERT_STORE_PROV_LDAP_W ((LPCSTR) 16) | |
| 2766 #define CERT_STORE_PROV_LDAP CERT_STORE_PROV_LDAP_W | |
| 2767 #define sz_CERT_STORE_PROV_MEMORY "Memory" | |
| 2768 #define sz_CERT_STORE_PROV_FILENAME_W "File" | |
| 2769 #define sz_CERT_STORE_PROV_FILENAME sz_CERT_STORE_PROV_FILENAME_W | |
| 2770 #define sz_CERT_STORE_PROV_SYSTEM_W "System" | |
| 2771 #define sz_CERT_STORE_PROV_SYSTEM sz_CERT_STORE_PROV_SYSTEM_W | |
| 2772 #define sz_CERT_STORE_PROV_PKCS7 "PKCS7" | |
| 2773 #define sz_CERT_STORE_PROV_SERIALIZED "Serialized" | |
| 2774 #define sz_CERT_STORE_PROV_COLLECTION "Collection" | |
| 2775 #define sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W "SystemRegistry" | |
| 2776 #define sz_CERT_STORE_PROV_SYSTEM_REGISTRY sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W | |
| 2777 #define sz_CERT_STORE_PROV_PHYSICAL_W "Physical" | |
| 2778 #define sz_CERT_STORE_PROV_PHYSICAL sz_CERT_STORE_PROV_PHYSICAL_W | |
| 2779 #define sz_CERT_STORE_PROV_SMART_CARD_W "SmartCard" | |
| 2780 #define sz_CERT_STORE_PROV_SMART_CARD sz_CERT_STORE_PROV_SMART_CARD_W | |
| 2781 #define sz_CERT_STORE_PROV_LDAP_W "Ldap" | |
| 2782 #define sz_CERT_STORE_PROV_LDAP sz_CERT_STORE_PROV_LDAP_W | |
| 2783 #define CERT_STORE_SIGNATURE_FLAG 0x1 | |
| 2784 #define CERT_STORE_TIME_VALIDITY_FLAG 0x2 | |
| 2785 #define CERT_STORE_REVOCATION_FLAG 0x4 | |
| 2786 #define CERT_STORE_NO_CRL_FLAG 0x10000 | |
| 2787 #define CERT_STORE_NO_ISSUER_FLAG 0x20000 | |
| 2788 #define CERT_STORE_BASE_CRL_FLAG 0x100 | |
| 2789 #define CERT_STORE_DELTA_CRL_FLAG 0x200 | |
| 2790 #define CERT_STORE_NO_CRYPT_RELEASE_FLAG 0x1 | |
| 2791 #define CERT_STORE_SET_LOCALIZED_NAME_FLAG 0x2 | |
| 2792 #define CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG 0x4 | |
| 2793 #define CERT_STORE_DELETE_FLAG 0x10 | |
| 2794 #define CERT_STORE_UNSAFE_PHYSICAL_FLAG 0x20 | |
| 2795 #define CERT_STORE_SHARE_STORE_FLAG 0x40 | |
| 2796 #define CERT_STORE_SHARE_CONTEXT_FLAG 0x80 | |
| 2797 #define CERT_STORE_MANIFOLD_FLAG 0x100 | |
| 2798 #define CERT_STORE_ENUM_ARCHIVED_FLAG 0x200 | |
| 2799 #define CERT_STORE_UPDATE_KEYID_FLAG 0x400 | |
| 2800 #define CERT_STORE_BACKUP_RESTORE_FLAG 0x800 | |
| 2801 #define CERT_STORE_READONLY_FLAG 0x8000 | |
| 2802 #define CERT_STORE_OPEN_EXISTING_FLAG 0x4000 | |
| 2803 #define CERT_STORE_CREATE_NEW_FLAG 0x2000 | |
| 2804 #define CERT_STORE_MAXIMUM_ALLOWED_FLAG 0x1000 | |
| 2805 | |
| 2806 #define CERT_SYSTEM_STORE_MASK 0xFFFF0000 | |
| 2807 #define CERT_SYSTEM_STORE_RELOCATE_FLAG 0x80000000 | |
| 2808 | |
| 2809 typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA { | |
| 2810 __MINGW_EXTENSION union { | |
| 2811 HKEY hKeyBase; | |
| 2812 void *pvBase; | |
| 2813 }; | |
| 2814 __MINGW_EXTENSION union { | |
| 2815 void *pvSystemStore; | |
| 2816 LPCSTR pszSystemStore; | |
| 2817 LPCWSTR pwszSystemStore; | |
| 2818 }; | |
| 2819 } CERT_SYSTEM_STORE_RELOCATE_PARA,*PCERT_SYSTEM_STORE_RELOCATE_PARA; | |
| 2820 | |
| 2821 #define CERT_SYSTEM_STORE_UNPROTECTED_FLAG 0x40000000 | |
| 2822 #define CERT_SYSTEM_STORE_LOCATION_MASK 0xff0000 | |
| 2823 #define CERT_SYSTEM_STORE_LOCATION_SHIFT 16 | |
| 2824 #define CERT_SYSTEM_STORE_CURRENT_USER_ID 1 | |
| 2825 #define CERT_SYSTEM_STORE_LOCAL_MACHINE_ID 2 | |
| 2826 #define CERT_SYSTEM_STORE_CURRENT_SERVICE_ID 4 | |
| 2827 #define CERT_SYSTEM_STORE_SERVICES_ID 5 | |
| 2828 #define CERT_SYSTEM_STORE_USERS_ID 6 | |
| 2829 #define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID 7 | |
| 2830 #define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID 8 | |
| 2831 #define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID 9 | |
| 2832 #define CERT_SYSTEM_STORE_CURRENT_USER (CERT_SYSTEM_STORE_CURRENT_USER_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2833 #define CERT_SYSTEM_STORE_LOCAL_MACHINE (CERT_SYSTEM_STORE_LOCAL_MACHINE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2834 #define CERT_SYSTEM_STORE_CURRENT_SERVICE (CERT_SYSTEM_STORE_CURRENT_SERVICE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2835 #define CERT_SYSTEM_STORE_SERVICES (CERT_SYSTEM_STORE_SERVICES_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2836 #define CERT_SYSTEM_STORE_USERS (CERT_SYSTEM_STORE_USERS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2837 #define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY (CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2838 #define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY (CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2839 #define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE (CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) | |
| 2840 | |
| 2841 #define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"Software\\Policies\\Microsoft\\SystemCertificates" | |
| 2842 | |
| 2843 #define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\EFS" | |
| 2844 #define CERT_EFSBLOB_VALUE_NAME L"EFSBlob" | |
| 2845 | |
| 2846 #define CERT_PROT_ROOT_FLAGS_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\Root\\ProtectedRoots" | |
| 2847 #define CERT_PROT_ROOT_FLAGS_VALUE_NAME L"Flags" | |
| 2848 #define CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG 0x1 | |
| 2849 #define CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG 0x2 | |
| 2850 #define CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG 0x4 | |
| 2851 #define CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG 0x8 | |
| 2852 #define CERT_PROT_ROOT_ONLY_LM_GPT_FLAG 0x8 | |
| 2853 #define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG 0x10 | |
| 2854 #define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20 | |
| 2855 | |
| 2856 #define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer" | |
| 2857 #define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"Software\\Microsoft\\SystemCertificates" | |
| 2858 #define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer" | |
| 2859 #define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME L"AuthenticodeFlags" | |
| 2860 #define CERT_TRUST_PUB_ALLOW_TRUST_MASK 0x3 | |
| 2861 #define CERT_TRUST_PUB_ALLOW_END_USER_TRUST 0x0 | |
| 2862 #define CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST 0x1 | |
| 2863 #define CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST 0x2 | |
| 2864 #define CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG 0x100 | |
| 2865 #define CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG 0x200 | |
| 2866 | |
| 2867 #define CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents" | |
| 2868 #define CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME L"RootAutoUpdate" | |
| 2869 | |
| 2870 #define CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\AuthRoot\\AutoUpdate" | |
| 2871 #define CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME L"RootDirUrl" | |
| 2872 #define CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME L"SyncDeltaTime" | |
| 2873 #define CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME L"Flags" | |
| 2874 #define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG 0x1 | |
| 2875 #define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_PARTIAL_CHAIN_LOGGING_FLAG 0x2 | |
| 2876 #define CERT_AUTH_ROOT_CTL_FILENAME L"authroot.stl" | |
| 2877 #define CERT_AUTH_ROOT_CTL_FILENAME_A "authroot.stl" | |
| 2878 #define CERT_AUTH_ROOT_CAB_FILENAME L"authrootstl.cab" | |
| 2879 #define CERT_AUTH_ROOT_SEQ_FILENAME L"authrootseq.txt" | |
| 2880 #define CERT_AUTH_ROOT_CERT_EXT L".crt" | |
| 2881 | |
| 2882 #define CERT_REGISTRY_STORE_REMOTE_FLAG 0x10000 | |
| 2883 #define CERT_REGISTRY_STORE_SERIALIZED_FLAG 0x20000 | |
| 2884 #define CERT_REGISTRY_STORE_CLIENT_GPT_FLAG 0x80000000 | |
| 2885 #define CERT_REGISTRY_STORE_LM_GPT_FLAG 0x1000000 | |
| 2886 | |
| 2887 typedef struct _CERT_REGISTRY_STORE_CLIENT_GPT_PARA { | |
| 2888 HKEY hKeyBase; | |
| 2889 LPWSTR pwszRegPath; | |
| 2890 } CERT_REGISTRY_STORE_CLIENT_GPT_PARA,*PCERT_REGISTRY_STORE_CLIENT_GPT_PARA; | |
| 2891 | |
| 2892 #define CERT_REGISTRY_STORE_ROAMING_FLAG 0x40000 | |
| 2893 | |
| 2894 typedef struct _CERT_REGISTRY_STORE_ROAMING_PARA { | |
| 2895 HKEY hKey; | |
| 2896 LPWSTR pwszStoreDirectory; | |
| 2897 } CERT_REGISTRY_STORE_ROAMING_PARA,*PCERT_REGISTRY_STORE_ROAMING_PARA; | |
| 2898 | |
| 2899 #define CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG 0x80000 | |
| 2900 #define CERT_IE_DIRTY_FLAGS_REGPATH L"Software\\Microsoft\\Cryptography\\IEDirtyFlags" | |
| 2901 #define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x10000 | |
| 2902 #define CERT_LDAP_STORE_SIGN_FLAG 0x10000 | |
| 2903 #define CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG 0x20000 | |
| 2904 #define CERT_LDAP_STORE_OPENED_FLAG 0x40000 | |
| 2905 | |
| 2906 typedef struct _CERT_LDAP_STORE_OPENED_PARA { | |
| 2907 void *pvLdapSessionHandle; | |
| 2908 LPCWSTR pwszLdapUrl; | |
| 2909 } CERT_LDAP_STORE_OPENED_PARA,*PCERT_LDAP_STORE_OPENED_PARA; | |
| 2910 | |
| 2911 #define CERT_LDAP_STORE_UNBIND_FLAG 0x80000 | |
| 2912 | |
| 2913 WINIMPM HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider,DWORD dwEncodingType,HCRYPTPROV hCryptProv,DWORD dwFlags,const void *pvPara); | |
| 2914 | |
| 2915 typedef void *HCERTSTOREPROV; | |
| 2916 | |
| 2917 #define CRYPT_OID_OPEN_STORE_PROV_FUNC "CertDllOpenStoreProv" | |
| 2918 | |
| 2919 typedef struct _CERT_STORE_PROV_INFO { | |
| 2920 DWORD cbSize; | |
| 2921 DWORD cStoreProvFunc; | |
| 2922 void **rgpvStoreProvFunc; | |
| 2923 HCERTSTOREPROV hStoreProv; | |
| 2924 DWORD dwStoreProvFlags; | |
| 2925 HCRYPTOIDFUNCADDR hStoreProvFuncAddr2; | |
| 2926 } CERT_STORE_PROV_INFO,*PCERT_STORE_PROV_INFO; | |
| 2927 | |
| 2928 typedef WINBOOL (WINAPI *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)(LPCSTR lpszStoreProvider,DWORD dwEncodingType,HCRYPTPROV hCryptProv,DWORD dwFlags,const void *pvPara,HCERTSTORE hCertStore,PCERT_STORE_PROV_INFO pStoreProvInfo); | |
| 2929 | |
| 2930 #define CERT_STORE_PROV_EXTERNAL_FLAG 0x1 | |
| 2931 #define CERT_STORE_PROV_DELETED_FLAG 0x2 | |
| 2932 #define CERT_STORE_PROV_NO_PERSIST_FLAG 0x4 | |
| 2933 #define CERT_STORE_PROV_SYSTEM_STORE_FLAG 0x8 | |
| 2934 #define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10 | |
| 2935 #define CERT_STORE_PROV_CLOSE_FUNC 0 | |
| 2936 #define CERT_STORE_PROV_READ_CERT_FUNC 1 | |
| 2937 #define CERT_STORE_PROV_WRITE_CERT_FUNC 2 | |
| 2938 #define CERT_STORE_PROV_DELETE_CERT_FUNC 3 | |
| 2939 #define CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 4 | |
| 2940 #define CERT_STORE_PROV_READ_CRL_FUNC 5 | |
| 2941 #define CERT_STORE_PROV_WRITE_CRL_FUNC 6 | |
| 2942 #define CERT_STORE_PROV_DELETE_CRL_FUNC 7 | |
| 2943 #define CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC 8 | |
| 2944 #define CERT_STORE_PROV_READ_CTL_FUNC 9 | |
| 2945 #define CERT_STORE_PROV_WRITE_CTL_FUNC 10 | |
| 2946 #define CERT_STORE_PROV_DELETE_CTL_FUNC 11 | |
| 2947 #define CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC 12 | |
| 2948 #define CERT_STORE_PROV_CONTROL_FUNC 13 | |
| 2949 #define CERT_STORE_PROV_FIND_CERT_FUNC 14 | |
| 2950 #define CERT_STORE_PROV_FREE_FIND_CERT_FUNC 15 | |
| 2951 #define CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 16 | |
| 2952 #define CERT_STORE_PROV_FIND_CRL_FUNC 17 | |
| 2953 #define CERT_STORE_PROV_FREE_FIND_CRL_FUNC 18 | |
| 2954 #define CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC 19 | |
| 2955 #define CERT_STORE_PROV_FIND_CTL_FUNC 20 | |
| 2956 #define CERT_STORE_PROV_FREE_FIND_CTL_FUNC 21 | |
| 2957 #define CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC 22 | |
| 2958 | |
| 2959 typedef void (WINAPI *PFN_CERT_STORE_PROV_CLOSE)(HCERTSTOREPROV hStoreProv,DWORD dwFlags); | |
| 2960 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CERT)(HCERTSTOREPROV hStoreProv,PCCERT_CONTEXT pStoreCertContext,DWORD dwFlags,PCCERT_CONTEXT *ppProvCertContext); | |
| 2961 | |
| 2962 #define CERT_STORE_PROV_WRITE_ADD_FLAG 0x1 | |
| 2963 | |
| 2964 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CERT)(HCERTSTOREPROV hStoreProv,PCCERT_CONTEXT pCertContext,DWORD dwFlags); | |
| 2965 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CERT)(HCERTSTOREPROV hStoreProv,PCCERT_CONTEXT pCertContext,DWORD dwFlags); | |
| 2966 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CERT_PROPERTY)(HCERTSTOREPROV hStoreProv,PCCERT_CONTEXT pCertContext,DWORD dwPropId,DWORD dwFlags,const void *pvData); | |
| 2967 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CRL)(HCERTSTOREPROV hStoreProv,PCCRL_CONTEXT pStoreCrlContext,DWORD dwFlags,PCCRL_CONTEXT *ppProvCrlContext); | |
| 2968 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CRL)(HCERTSTOREPROV hStoreProv,PCCRL_CONTEXT pCrlContext,DWORD dwFlags); | |
| 2969 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CRL)(HCERTSTOREPROV hStoreProv,PCCRL_CONTEXT pCrlContext,DWORD dwFlags); | |
| 2970 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CRL_PROPERTY)(HCERTSTOREPROV hStoreProv,PCCRL_CONTEXT pCrlContext,DWORD dwPropId,DWORD dwFlags,const void *pvData); | |
| 2971 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CTL)(HCERTSTOREPROV hStoreProv,PCCTL_CONTEXT pStoreCtlContext,DWORD dwFlags,PCCTL_CONTEXT *ppProvCtlContext); | |
| 2972 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CTL)(HCERTSTOREPROV hStoreProv,PCCTL_CONTEXT pCtlContext,DWORD dwFlags); | |
| 2973 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CTL)(HCERTSTOREPROV hStoreProv,PCCTL_CONTEXT pCtlContext,DWORD dwFlags); | |
| 2974 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CTL_PROPERTY)(HCERTSTOREPROV hStoreProv,PCCTL_CONTEXT pCtlContext,DWORD dwPropId,DWORD dwFlags,const void *pvData); | |
| 2975 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_CONTROL)(HCERTSTOREPROV hStoreProv,DWORD dwFlags,DWORD dwCtrlType,void const *pvCtrlPara); | |
| 2976 | |
| 2977 typedef struct _CERT_STORE_PROV_FIND_INFO { | |
| 2978 DWORD cbSize; | |
| 2979 DWORD dwMsgAndCertEncodingType; | |
| 2980 DWORD dwFindFlags; | |
| 2981 DWORD dwFindType; | |
| 2982 const void *pvFindPara; | |
| 2983 } CERT_STORE_PROV_FIND_INFO,*PCERT_STORE_PROV_FIND_INFO; | |
| 2984 | |
| 2985 typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO,*PCCERT_STORE_PROV_FIND_INFO; | |
| 2986 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CERT)(HCERTSTOREPROV hStoreProv,PCCERT_STORE_PROV_FIND_INFO pFindInfo,PCCERT_CONTEXT pPrevCertContext,DWORD dwFlags,void **ppvStoreProvFindInfo,PCCERT_CONTEXT *ppProvCertContext); | |
| 2987 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CERT)(HCERTSTOREPROV hStoreProv,PCCERT_CONTEXT pCertContext,void *pvStoreProvFindInfo,DWORD dwFlags); | |
| 2988 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CERT_PROPERTY)(HCERTSTOREPROV hStoreProv,PCCERT_CONTEXT pCertContext,DWORD dwPropId,DWORD dwFlags,void *pvData,DWORD *pcbData); | |
| 2989 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CRL)(HCERTSTOREPROV hStoreProv,PCCERT_STORE_PROV_FIND_INFO pFindInfo,PCCRL_CONTEXT pPrevCrlContext,DWORD dwFlags,void **ppvStoreProvFindInfo,PCCRL_CONTEXT *ppProvCrlContext); | |
| 2990 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CRL)(HCERTSTOREPROV hStoreProv,PCCRL_CONTEXT pCrlContext,void *pvStoreProvFindInfo,DWORD dwFlags); | |
| 2991 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CRL_PROPERTY)(HCERTSTOREPROV hStoreProv,PCCRL_CONTEXT pCrlContext,DWORD dwPropId,DWORD dwFlags,void *pvData,DWORD *pcbData); | |
| 2992 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CTL)(HCERTSTOREPROV hStoreProv,PCCERT_STORE_PROV_FIND_INFO pFindInfo,PCCTL_CONTEXT pPrevCtlContext,DWORD dwFlags,void **ppvStoreProvFindInfo,PCCTL_CONTEXT *ppProvCtlContext); | |
| 2993 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CTL)(HCERTSTOREPROV hStoreProv,PCCTL_CONTEXT pCtlContext,void *pvStoreProvFindInfo,DWORD dwFlags); | |
| 2994 typedef WINBOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CTL_PROPERTY)(HCERTSTOREPROV hStoreProv,PCCTL_CONTEXT pCtlContext,DWORD dwPropId,DWORD dwFlags,void *pvData,DWORD *pcbData); | |
| 2995 | |
| 2996 WINIMPM HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE hCertStore); | |
| 2997 | |
| 2998 #define CERT_STORE_SAVE_AS_STORE 1 | |
| 2999 #define CERT_STORE_SAVE_AS_PKCS7 2 | |
| 3000 #define CERT_STORE_SAVE_TO_FILE 1 | |
| 3001 #define CERT_STORE_SAVE_TO_MEMORY 2 | |
| 3002 #define CERT_STORE_SAVE_TO_FILENAME_A 3 | |
| 3003 #define CERT_STORE_SAVE_TO_FILENAME_W 4 | |
| 3004 #define CERT_STORE_SAVE_TO_FILENAME CERT_STORE_SAVE_TO_FILENAME_W | |
| 3005 | |
| 3006 WINIMPM WINBOOL WINAPI CertSaveStore(HCERTSTORE hCertStore,DWORD dwEncodingType,DWORD dwSaveAs,DWORD dwSaveTo,void *pvSaveToPara,DWORD dwFlags); | |
| 3007 | |
| 3008 #define CERT_CLOSE_STORE_FORCE_FLAG 0x1 | |
| 3009 #define CERT_CLOSE_STORE_CHECK_FLAG 0x2 | |
| 3010 | |
| 3011 WINIMPM WINBOOL WINAPI CertCloseStore(HCERTSTORE hCertStore,DWORD dwFlags); | |
| 3012 WINIMPM PCCERT_CONTEXT WINAPI CertGetSubjectCertificateFromStore(HCERTSTORE hCertStore,DWORD dwCertEncodingType,PCERT_INFO pCertId); | |
| 3013 WINIMPM PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore,PCCERT_CONTEXT pPrevCertContext); | |
| 3014 WINIMPM PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore,DWORD dwCertEncodingType,DWORD dwFindFlags,DWORD dwFindType,const void *pvFindPara,PCCERT_CONTEXT pPrevCertContext); | |
| 3015 | |
| 3016 #define CERT_COMPARE_MASK 0xFFFF | |
| 3017 #define CERT_COMPARE_SHIFT 16 | |
| 3018 #define CERT_COMPARE_ANY 0 | |
| 3019 #define CERT_COMPARE_SHA1_HASH 1 | |
| 3020 #define CERT_COMPARE_NAME 2 | |
| 3021 #define CERT_COMPARE_ATTR 3 | |
| 3022 #define CERT_COMPARE_MD5_HASH 4 | |
| 3023 #define CERT_COMPARE_PROPERTY 5 | |
| 3024 #define CERT_COMPARE_PUBLIC_KEY 6 | |
| 3025 #define CERT_COMPARE_HASH CERT_COMPARE_SHA1_HASH | |
| 3026 #define CERT_COMPARE_NAME_STR_A 7 | |
| 3027 #define CERT_COMPARE_NAME_STR_W 8 | |
| 3028 #define CERT_COMPARE_KEY_SPEC 9 | |
| 3029 #define CERT_COMPARE_ENHKEY_USAGE 10 | |
| 3030 #define CERT_COMPARE_CTL_USAGE CERT_COMPARE_ENHKEY_USAGE | |
| 3031 #define CERT_COMPARE_SUBJECT_CERT 11 | |
| 3032 #define CERT_COMPARE_ISSUER_OF 12 | |
| 3033 #define CERT_COMPARE_EXISTING 13 | |
| 3034 #define CERT_COMPARE_SIGNATURE_HASH 14 | |
| 3035 #define CERT_COMPARE_KEY_IDENTIFIER 15 | |
| 3036 #define CERT_COMPARE_CERT_ID 16 | |
| 3037 #define CERT_COMPARE_CROSS_CERT_DIST_POINTS 17 | |
| 3038 #define CERT_COMPARE_PUBKEY_MD5_HASH 18 | |
| 3039 | |
| 3040 #define CERT_FIND_ANY (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) | |
| 3041 #define CERT_FIND_SHA1_HASH (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) | |
| 3042 #define CERT_FIND_MD5_HASH (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) | |
| 3043 #define CERT_FIND_SIGNATURE_HASH (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) | |
| 3044 #define CERT_FIND_KEY_IDENTIFIER (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) | |
| 3045 #define CERT_FIND_HASH CERT_FIND_SHA1_HASH | |
| 3046 #define CERT_FIND_PROPERTY (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) | |
| 3047 #define CERT_FIND_PUBLIC_KEY (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) | |
| 3048 #define CERT_FIND_SUBJECT_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) | |
| 3049 #define CERT_FIND_SUBJECT_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) | |
| 3050 #define CERT_FIND_ISSUER_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) | |
| 3051 #define CERT_FIND_ISSUER_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) | |
| 3052 #define CERT_FIND_SUBJECT_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) | |
| 3053 #define CERT_FIND_SUBJECT_STR_W (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG) | |
| 3054 #define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W | |
| 3055 #define CERT_FIND_ISSUER_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) | |
| 3056 #define CERT_FIND_ISSUER_STR_W (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG) | |
| 3057 #define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W | |
| 3058 #define CERT_FIND_KEY_SPEC (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT) | |
| 3059 #define CERT_FIND_ENHKEY_USAGE (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT) | |
| 3060 #define CERT_FIND_CTL_USAGE CERT_FIND_ENHKEY_USAGE | |
| 3061 #define CERT_FIND_SUBJECT_CERT (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT) | |
| 3062 #define CERT_FIND_ISSUER_OF (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT) | |
| 3063 #define CERT_FIND_EXISTING (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT) | |
| 3064 #define CERT_FIND_CERT_ID (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT) | |
| 3065 #define CERT_FIND_CROSS_CERT_DIST_POINTS (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT) | |
| 3066 #define CERT_FIND_PUBKEY_MD5_HASH (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT) | |
| 3067 #define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 0x1 | |
| 3068 #define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 0x2 | |
| 3069 #define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 0x4 | |
| 3070 #define CERT_FIND_NO_ENHKEY_USAGE_FLAG 0x8 | |
| 3071 #define CERT_FIND_OR_ENHKEY_USAGE_FLAG 0x10 | |
| 3072 #define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 0x20 | |
| 3073 #define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG | |
| 3074 #define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG | |
| 3075 #define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG | |
| 3076 #define CERT_FIND_NO_CTL_USAGE_FLAG CERT_FIND_NO_ENHKEY_USAGE_FLAG | |
| 3077 #define CERT_FIND_OR_CTL_USAGE_FLAG CERT_FIND_OR_ENHKEY_USAGE_FLAG | |
| 3078 #define CERT_FIND_VALID_CTL_USAGE_FLAG CERT_FIND_VALID_ENHKEY_USAGE_FLAG | |
| 3079 | |
| 3080 WINIMPM PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE hCertStore,PCCERT_CONTEXT pSubjectContext,PCCERT_CONTEXT pPrevIssuerContext,DWORD *pdwFlags); | |
| 3081 WINIMPM WINBOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject,PCCERT_CONTEXT pIssuer,DWORD *pdwFlags); | |
| 3082 WINIMPM PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext(PCCERT_CONTEXT pCertContext); | |
| 3083 WINIMPM PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType,const BYTE *pbCertEncoded,DWORD cbCertEncoded); | |
| 3084 WINIMPM WINBOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext); | |
| 3085 WINIMPM WINBOOL WINAPI CertSetCertificateContextProperty(PCCERT_CONTEXT pCertContext,DWORD dwPropId,DWORD dwFlags,const void *pvData); | |
| 3086 | |
| 3087 #define CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 0x80000000 | |
| 3088 #define CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG 0x40000000 | |
| 3089 | |
| 3090 WINIMPM WINBOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext,DWORD dwPropId,void *pvData,DWORD *pcbData); | |
| 3091 WINIMPM DWORD WINAPI CertEnumCertificateContextProperties(PCCERT_CONTEXT pCertContext,DWORD dwPropId); | |
| 3092 WINIMPM WINBOOL WINAPI CertCreateCTLEntryFromCertificateContextProperties(PCCERT_CONTEXT pCertContext,DWORD cOptAttr,PCRYPT_ATTRIBUTE rgOptAttr,DWORD dwFlags,void *pvReserved,PCTL_ENTRY pCtlEntry,DWORD *pcbCtlEntry); | |
| 3093 | |
| 3094 #define CTL_ENTRY_FROM_PROP_CHAIN_FLAG 0x1 | |
| 3095 | |
| 3096 WINIMPM WINBOOL WINAPI CertSetCertificateContextPropertiesFromCTLEntry(PCCERT_CONTEXT pCertContext,PCTL_ENTRY pCtlEntry,DWORD dwFlags); | |
| 3097 WINIMPM PCCRL_CONTEXT WINAPI CertGetCRLFromStore(HCERTSTORE hCertStore,PCCERT_CONTEXT pIssuerContext,PCCRL_CONTEXT pPrevCrlContext,DWORD *pdwFlags); | |
| 3098 WINIMPM PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore,PCCRL_CONTEXT pPrevCrlContext); | |
| 3099 WINIMPM PCCRL_CONTEXT WINAPI CertFindCRLInStore(HCERTSTORE hCertStore,DWORD dwCertEncodingType,DWORD dwFindFlags,DWORD dwFindType,const void *pvFindPara,PCCRL_CONTEXT pPrevCrlContext); | |
| 3100 | |
| 3101 #define CRL_FIND_ANY 0 | |
| 3102 #define CRL_FIND_ISSUED_BY 1 | |
| 3103 #define CRL_FIND_EXISTING 2 | |
| 3104 #define CRL_FIND_ISSUED_FOR 3 | |
| 3105 #define CRL_FIND_ISSUED_BY_AKI_FLAG 0x1 | |
| 3106 #define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG 0x2 | |
| 3107 #define CRL_FIND_ISSUED_BY_DELTA_FLAG 0x4 | |
| 3108 #define CRL_FIND_ISSUED_BY_BASE_FLAG 0x8 | |
| 3109 | |
| 3110 typedef struct _CRL_FIND_ISSUED_FOR_PARA { | |
| 3111 PCCERT_CONTEXT pSubjectCert; | |
| 3112 PCCERT_CONTEXT pIssuerCert; | |
| 3113 } CRL_FIND_ISSUED_FOR_PARA,*PCRL_FIND_ISSUED_FOR_PARA; | |
| 3114 | |
| 3115 WINIMPM PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT pCrlContext); | |
| 3116 WINIMPM PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType,const BYTE *pbCrlEncoded,DWORD cbCrlEncoded); | |
| 3117 WINIMPM WINBOOL WINAPI CertFreeCRLContext(PCCRL_CONTEXT pCrlContext); | |
| 3118 WINIMPM WINBOOL WINAPI CertSetCRLContextProperty(PCCRL_CONTEXT pCrlContext,DWORD dwPropId,DWORD dwFlags,const void *pvData); | |
| 3119 WINIMPM WINBOOL WINAPI CertGetCRLContextProperty(PCCRL_CONTEXT pCrlContext,DWORD dwPropId,void *pvData,DWORD *pcbData); | |
| 3120 WINIMPM DWORD WINAPI CertEnumCRLContextProperties(PCCRL_CONTEXT pCrlContext,DWORD dwPropId); | |
| 3121 WINIMPM WINBOOL WINAPI CertFindCertificateInCRL(PCCERT_CONTEXT pCert,PCCRL_CONTEXT pCrlContext,DWORD dwFlags,void *pvReserved,PCRL_ENTRY *ppCrlEntry); | |
| 3122 WINIMPM WINBOOL WINAPI CertIsValidCRLForCertificate(PCCERT_CONTEXT pCert,PCCRL_CONTEXT pCrl,DWORD dwFlags,void *pvReserved); | |
| 3123 | |
| 3124 #define CERT_STORE_ADD_NEW 1 | |
| 3125 #define CERT_STORE_ADD_USE_EXISTING 2 | |
| 3126 #define CERT_STORE_ADD_REPLACE_EXISTING 3 | |
| 3127 #define CERT_STORE_ADD_ALWAYS 4 | |
| 3128 #define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES 5 | |
| 3129 #define CERT_STORE_ADD_NEWER 6 | |
| 3130 #define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES 7 | |
| 3131 | |
| 3132 WINIMPM WINBOOL WINAPI CertAddEncodedCertificateToStore(HCERTSTORE hCertStore,DWORD dwCertEncodingType,const BYTE *pbCertEncoded,DWORD cbCertEncoded,DWORD dwAddDisposition,PCCERT_CONTEXT *ppCertContext); | |
| 3133 WINIMPM WINBOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore,PCCERT_CONTEXT pCertContext,DWORD dwAddDisposition,PCCERT_CONTEXT *ppStoreContext); | |
| 3134 | |
| 3135 #define CERT_STORE_CERTIFICATE_CONTEXT 1 | |
| 3136 #define CERT_STORE_CRL_CONTEXT 2 | |
| 3137 #define CERT_STORE_CTL_CONTEXT 3 | |
| 3138 #define CERT_STORE_ALL_CONTEXT_FLAG (~0UL) | |
| 3139 #define CERT_STORE_CERTIFICATE_CONTEXT_FLAG (1 << CERT_STORE_CERTIFICATE_CONTEXT) | |
| 3140 #define CERT_STORE_CRL_CONTEXT_FLAG (1 << CERT_STORE_CRL_CONTEXT) | |
| 3141 #define CERT_STORE_CTL_CONTEXT_FLAG (1 << CERT_STORE_CTL_CONTEXT) | |
| 3142 | |
| 3143 WINIMPM WINBOOL WINAPI CertAddSerializedElementToStore(HCERTSTORE hCertStore,const BYTE *pbElement,DWORD cbElement,DWORD dwAddDisposition,DWORD dwFlags,DWORD dwContextTypeFlags,DWORD *pdwContextType,const void **ppvContext); | |
| 3144 WINIMPM WINBOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext); | |
| 3145 WINIMPM WINBOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore,DWORD dwCertEncodingType,const BYTE *pbCrlEncoded,DWORD cbCrlEncoded,DWORD dwAddDisposition,PCCRL_CONTEXT *ppCrlContext); | |
| 3146 WINIMPM WINBOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore,PCCRL_CONTEXT pCrlContext,DWORD dwAddDisposition,PCCRL_CONTEXT *ppStoreContext); | |
| 3147 WINIMPM WINBOOL WINAPI CertDeleteCRLFromStore(PCCRL_CONTEXT pCrlContext); | |
| 3148 WINIMPM WINBOOL WINAPI CertSerializeCertificateStoreElement(PCCERT_CONTEXT pCertContext,DWORD dwFlags,BYTE *pbElement,DWORD *pcbElement); | |
| 3149 WINIMPM WINBOOL WINAPI CertSerializeCRLStoreElement(PCCRL_CONTEXT pCrlContext,DWORD dwFlags,BYTE *pbElement,DWORD *pcbElement); | |
| 3150 WINIMPM PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(PCCTL_CONTEXT pCtlContext); | |
| 3151 WINIMPM PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType,const BYTE *pbCtlEncoded,DWORD cbCtlEncoded); | |
| 3152 WINIMPM WINBOOL WINAPI CertFreeCTLContext(PCCTL_CONTEXT pCtlContext); | |
| 3153 WINIMPM WINBOOL WINAPI CertSetCTLContextProperty(PCCTL_CONTEXT pCtlContext,DWORD dwPropId,DWORD dwFlags,const void *pvData); | |
| 3154 WINIMPM WINBOOL WINAPI CertGetCTLContextProperty(PCCTL_CONTEXT pCtlContext,DWORD dwPropId,void *pvData,DWORD *pcbData); | |
| 3155 WINIMPM DWORD WINAPI CertEnumCTLContextProperties(PCCTL_CONTEXT pCtlContext,DWORD dwPropId); | |
| 3156 WINIMPM PCCTL_CONTEXT WINAPI CertEnumCTLsInStore(HCERTSTORE hCertStore,PCCTL_CONTEXT pPrevCtlContext); | |
| 3157 WINIMPM PCTL_ENTRY WINAPI CertFindSubjectInCTL(DWORD dwEncodingType,DWORD dwSubjectType,void *pvSubject,PCCTL_CONTEXT pCtlContext,DWORD dwFlags); | |
| 3158 | |
| 3159 #define CTL_ANY_SUBJECT_TYPE 1 | |
| 3160 #define CTL_CERT_SUBJECT_TYPE 2 | |
| 3161 | |
| 3162 typedef struct _CTL_ANY_SUBJECT_INFO { | |
| 3163 CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm; | |
| 3164 CRYPT_DATA_BLOB SubjectIdentifier; | |
| 3165 } CTL_ANY_SUBJECT_INFO,*PCTL_ANY_SUBJECT_INFO; | |
| 3166 | |
| 3167 WINIMPM PCCTL_CONTEXT WINAPI CertFindCTLInStore(HCERTSTORE hCertStore,DWORD dwMsgAndCertEncodingType,DWORD dwFindFlags,DWORD dwFindType,const void *pvFindPara,PCCTL_CONTEXT pPrevCtlContext); | |
| 3168 | |
| 3169 #define CTL_FIND_ANY 0 | |
| 3170 #define CTL_FIND_SHA1_HASH 1 | |
| 3171 #define CTL_FIND_MD5_HASH 2 | |
| 3172 #define CTL_FIND_USAGE 3 | |
| 3173 #define CTL_FIND_SUBJECT 4 | |
| 3174 #define CTL_FIND_EXISTING 5 | |
| 3175 | |
| 3176 typedef struct _CTL_FIND_USAGE_PARA { | |
| 3177 DWORD cbSize; | |
| 3178 CTL_USAGE SubjectUsage; | |
| 3179 CRYPT_DATA_BLOB ListIdentifier; | |
| 3180 PCERT_INFO pSigner; | |
| 3181 } CTL_FIND_USAGE_PARA,*PCTL_FIND_USAGE_PARA; | |
| 3182 | |
| 3183 #define CTL_FIND_NO_LIST_ID_CBDATA 0xFFFFFFFF | |
| 3184 #define CTL_FIND_NO_SIGNER_PTR ((PCERT_INFO) -1) | |
| 3185 | |
| 3186 #define CTL_FIND_SAME_USAGE_FLAG 0x1 | |
| 3187 | |
| 3188 typedef struct _CTL_FIND_SUBJECT_PARA { | |
| 3189 DWORD cbSize; | |
| 3190 PCTL_FIND_USAGE_PARA pUsagePara; | |
| 3191 DWORD dwSubjectType; | |
| 3192 void *pvSubject; | |
| 3193 } CTL_FIND_SUBJECT_PARA,*PCTL_FIND_SUBJECT_PARA; | |
| 3194 | |
| 3195 WINIMPM WINBOOL WINAPI CertAddEncodedCTLToStore(HCERTSTORE hCertStore,DWORD dwMsgAndCertEncodingType,const BYTE *pbCtlEncoded,DWORD cbCtlEncoded,DWORD dwAddDisposition,PCCTL_CONTEXT *ppCtlContext); | |
| 3196 WINIMPM WINBOOL WINAPI CertAddCTLContextToStore(HCERTSTORE hCertStore,PCCTL_CONTEXT pCtlContext,DWORD dwAddDisposition,PCCTL_CONTEXT *ppStoreContext); | |
| 3197 WINIMPM WINBOOL WINAPI CertSerializeCTLStoreElement(PCCTL_CONTEXT pCtlContext,DWORD dwFlags,BYTE *pbElement,DWORD *pcbElement); | |
| 3198 WINIMPM WINBOOL WINAPI CertDeleteCTLFromStore(PCCTL_CONTEXT pCtlContext); | |
| 3199 WINIMPM WINBOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore,PCCERT_CONTEXT pCertContext,DWORD dwAddDisposition,PCCERT_CONTEXT *ppStoreContext); | |
| 3200 WINIMPM WINBOOL WINAPI CertAddCRLLinkToStore(HCERTSTORE hCertStore,PCCRL_CONTEXT pCrlContext,DWORD dwAddDisposition,PCCRL_CONTEXT *ppStoreContext); | |
| 3201 WINIMPM WINBOOL WINAPI CertAddCTLLinkToStore(HCERTSTORE hCertStore,PCCTL_CONTEXT pCtlContext,DWORD dwAddDisposition,PCCTL_CONTEXT *ppStoreContext); | |
| 3202 WINIMPM WINBOOL WINAPI CertAddStoreToCollection(HCERTSTORE hCollectionStore,HCERTSTORE hSiblingStore,DWORD dwUpdateFlags,DWORD dwPriority); | |
| 3203 WINIMPM void WINAPI CertRemoveStoreFromCollection(HCERTSTORE hCollectionStore,HCERTSTORE hSiblingStore); | |
| 3204 WINIMPM WINBOOL WINAPI CertControlStore(HCERTSTORE hCertStore,DWORD dwFlags,DWORD dwCtrlType,void const *pvCtrlPara); | |
| 3205 | |
| 3206 #define CERT_STORE_CTRL_RESYNC 1 | |
| 3207 #define CERT_STORE_CTRL_NOTIFY_CHANGE 2 | |
| 3208 #define CERT_STORE_CTRL_COMMIT 3 | |
| 3209 #define CERT_STORE_CTRL_AUTO_RESYNC 4 | |
| 3210 #define CERT_STORE_CTRL_CANCEL_NOTIFY 5 | |
| 3211 #define CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG 0x1 | |
| 3212 #define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1 | |
| 3213 #define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2 | |
| 3214 #define CERT_STORE_LOCALIZED_NAME_PROP_ID 0x1000 | |
| 3215 | |
| 3216 WINIMPM WINBOOL WINAPI CertSetStoreProperty(HCERTSTORE hCertStore,DWORD dwPropId,DWORD dwFlags,const void *pvData); | |
| 3217 WINIMPM WINBOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore,DWORD dwPropId,void *pvData,DWORD *pcbData); | |
| 3218 | |
| 3219 typedef struct _CERT_CREATE_CONTEXT_PARA { | |
| 3220 DWORD cbSize; | |
| 3221 PFN_CRYPT_FREE pfnFree; | |
| 3222 void *pvFree; | |
| 3223 } CERT_CREATE_CONTEXT_PARA,*PCERT_CREATE_CONTEXT_PARA; | |
| 3224 | |
| 3225 WINIMPM const void *WINAPI CertCreateContext(DWORD dwContextType,DWORD dwEncodingType,const BYTE *pbEncoded,DWORD cbEncoded,DWORD dwFlags,PCERT_CREATE_CONTEXT_PARA pCreatePara); | |
| 3226 | |
| 3227 #define CERT_CREATE_CONTEXT_NOCOPY_FLAG 0x1 | |
| 3228 #define CERT_CREATE_CONTEXT_SORTED_FLAG 0x2 | |
| 3229 #define CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG 0x4 | |
| 3230 #define CERT_CREATE_CONTEXT_NO_ENTRY_FLAG 0x8 | |
| 3231 | |
| 3232 typedef struct _CERT_SYSTEM_STORE_INFO { | |
| 3233 DWORD cbSize; | |
| 3234 } CERT_SYSTEM_STORE_INFO,*PCERT_SYSTEM_STORE_INFO; | |
| 3235 | |
| 3236 typedef struct _CERT_PHYSICAL_STORE_INFO { | |
| 3237 DWORD cbSize; | |
| 3238 LPSTR pszOpenStoreProvider; | |
| 3239 DWORD dwOpenEncodingType; | |
| 3240 DWORD dwOpenFlags; | |
| 3241 CRYPT_DATA_BLOB OpenParameters; | |
| 3242 DWORD dwFlags; | |
| 3243 DWORD dwPriority; | |
| 3244 } CERT_PHYSICAL_STORE_INFO,*PCERT_PHYSICAL_STORE_INFO; | |
| 3245 | |
| 3246 #define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG 0x1 | |
| 3247 #define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG 0x2 | |
| 3248 #define CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG 0x4 | |
| 3249 #define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8 | |
| 3250 | |
| 3251 WINIMPM WINBOOL WINAPI CertRegisterSystemStore(const void *pvSystemStore,DWORD dwFlags,PCERT_SYSTEM_STORE_INFO pStoreInfo,void *pvReserved); | |
| 3252 WINIMPM WINBOOL WINAPI CertRegisterPhysicalStore(const void *pvSystemStore,DWORD dwFlags,LPCWSTR pwszStoreName,PCERT_PHYSICAL_STORE_INFO pStoreInfo,void *pvReserved); | |
| 3253 WINIMPM WINBOOL WINAPI CertUnregisterSystemStore(const void *pvSystemStore,DWORD dwFlags); | |
| 3254 WINIMPM WINBOOL WINAPI CertUnregisterPhysicalStore(const void *pvSystemStore,DWORD dwFlags,LPCWSTR pwszStoreName); | |
| 3255 | |
| 3256 typedef WINBOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE_LOCATION)(LPCWSTR pwszStoreLocation,DWORD dwFlags,void *pvReserved,void *pvArg); | |
| 3257 typedef WINBOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE)(const void *pvSystemStore,DWORD dwFlags,PCERT_SYSTEM_STORE_INFO pStoreInfo,void *pvReserved,void *pvArg); | |
| 3258 typedef WINBOOL (WINAPI *PFN_CERT_ENUM_PHYSICAL_STORE)(const void *pvSystemStore,DWORD dwFlags,LPCWSTR pwszStoreName,PCERT_PHYSICAL_STORE_INFO pStoreInfo,void *pvReserved,void *pvArg); | |
| 3259 | |
| 3260 #define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1 | |
| 3261 #define CERT_PHYSICAL_STORE_DEFAULT_NAME L".Default" | |
| 3262 #define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME L".GroupPolicy" | |
| 3263 #define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME L".LocalMachine" | |
| 3264 #define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME L".UserCertificate" | |
| 3265 #define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME L".LocalMachineGroupPolicy" | |
| 3266 #define CERT_PHYSICAL_STORE_ENTERPRISE_NAME L".Enterprise" | |
| 3267 #define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME L".AuthRoot" | |
| 3268 | |
| 3269 WINIMPM WINBOOL WINAPI CertEnumSystemStoreLocation(DWORD dwFlags,void *pvArg,PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum); | |
| 3270 WINIMPM WINBOOL WINAPI CertEnumSystemStore(DWORD dwFlags,void *pvSystemStoreLocationPara,void *pvArg,PFN_CERT_ENUM_SYSTEM_STORE pfnEnum); | |
| 3271 WINIMPM WINBOOL WINAPI CertEnumPhysicalStore(const void *pvSystemStore,DWORD dwFlags,void *pvArg,PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum); | |
| 3272 | |
| 3273 #define CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC "CertDllOpenSystemStoreProv" | |
| 3274 #define CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC "CertDllRegisterSystemStore" | |
| 3275 #define CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC "CertDllUnregisterSystemStore" | |
| 3276 #define CRYPT_OID_ENUM_SYSTEM_STORE_FUNC "CertDllEnumSystemStore" | |
| 3277 #define CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC "CertDllRegisterPhysicalStore" | |
| 3278 #define CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC "CertDllUnregisterPhysicalStore" | |
| 3279 #define CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC "CertDllEnumPhysicalStore" | |
| 3280 #define CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME L"SystemStoreLocation" | |
| 3281 | |
| 3282 WINIMPM WINBOOL WINAPI CertGetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext,DWORD dwFlags,PCERT_ENHKEY_USAGE pUsage,DWORD *pcbUsage); | |
| 3283 WINIMPM WINBOOL WINAPI CertSetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext,PCERT_ENHKEY_USAGE pUsage); | |
| 3284 WINIMPM WINBOOL WINAPI CertAddEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext,LPCSTR pszUsageIdentifier); | |
| 3285 WINIMPM WINBOOL WINAPI CertRemoveEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext,LPCSTR pszUsageIdentifier); | |
| 3286 WINIMPM WINBOOL WINAPI CertGetValidUsages(DWORD cCerts,PCCERT_CONTEXT *rghCerts,int *cNumOIDs,LPSTR *rghOIDs,DWORD *pcbOIDs); | |
| 3287 WINIMPM WINBOOL WINAPI CryptMsgGetAndVerifySigner(HCRYPTMSG hCryptMsg,DWORD cSignerStore,HCERTSTORE *rghSignerStore,DWORD dwFlags,PCCERT_CONTEXT *ppSigner,DWORD *pdwSignerIndex); | |
| 3288 | |
| 3289 #define CMSG_TRUSTED_SIGNER_FLAG 0x1 | |
| 3290 #define CMSG_SIGNER_ONLY_FLAG 0x2 | |
| 3291 #define CMSG_USE_SIGNER_INDEX_FLAG 0x4 | |
| 3292 | |
| 3293 WINIMPM WINBOOL WINAPI CryptMsgSignCTL(DWORD dwMsgEncodingType,BYTE *pbCtlContent,DWORD cbCtlContent,PCMSG_SIGNED_ENCODE_INFO pSignInfo,DWORD dwFlags,BYTE *pbEncoded,DWORD *pcbEncoded); | |
| 3294 | |
| 3295 #define CMSG_CMS_ENCAPSULATED_CTL_FLAG 0x8000 | |
| 3296 | |
| 3297 WINIMPM WINBOOL WINAPI CryptMsgEncodeAndSignCTL(DWORD dwMsgEncodingType,PCTL_INFO pCtlInfo,PCMSG_SIGNED_ENCODE_INFO pSignInfo,DWORD dwFlags,BYTE *pbEncoded,DWORD *pcbEncoded); | |
| 3298 | |
| 3299 #define CMSG_ENCODE_SORTED_CTL_FLAG 0x1 | |
| 3300 | |
| 3301 #define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2 | |
| 3302 | |
| 3303 WINIMPM WINBOOL WINAPI CertFindSubjectInSortedCTL(PCRYPT_DATA_BLOB pSubjectIdentifier,PCCTL_CONTEXT pCtlContext,DWORD dwFlags,void *pvReserved,PCRYPT_DER_BLOB pEncodedAttributes); | |
| 3304 WINIMPM WINBOOL WINAPI CertEnumSubjectInSortedCTL(PCCTL_CONTEXT pCtlContext,void **ppvNextSubject,PCRYPT_DER_BLOB pSubjectIdentifier,PCRYPT_DER_BLOB pEncodedAttributes); | |
| 3305 | |
| 3306 typedef struct _CTL_VERIFY_USAGE_PARA { | |
| 3307 DWORD cbSize; | |
| 3308 CRYPT_DATA_BLOB ListIdentifier; | |
| 3309 DWORD cCtlStore; | |
| 3310 HCERTSTORE *rghCtlStore; | |
| 3311 DWORD cSignerStore; | |
| 3312 HCERTSTORE *rghSignerStore; | |
| 3313 } CTL_VERIFY_USAGE_PARA,*PCTL_VERIFY_USAGE_PARA; | |
| 3314 | |
| 3315 typedef struct _CTL_VERIFY_USAGE_STATUS { | |
| 3316 DWORD cbSize; | |
| 3317 DWORD dwError; | |
| 3318 DWORD dwFlags; | |
| 3319 PCCTL_CONTEXT *ppCtl; | |
| 3320 DWORD dwCtlEntryIndex; | |
| 3321 PCCERT_CONTEXT *ppSigner; | |
| 3322 DWORD dwSignerIndex; | |
| 3323 } CTL_VERIFY_USAGE_STATUS,*PCTL_VERIFY_USAGE_STATUS; | |
| 3324 | |
| 3325 #define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1 | |
| 3326 #define CERT_VERIFY_TRUSTED_SIGNERS_FLAG 0x2 | |
| 3327 #define CERT_VERIFY_NO_TIME_CHECK_FLAG 0x4 | |
| 3328 #define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 0x8 | |
| 3329 | |
| 3330 #define CERT_VERIFY_UPDATED_CTL_FLAG 0x1 | |
| 3331 | |
| 3332 WINIMPM WINBOOL WINAPI CertVerifyCTLUsage(DWORD dwEncodingType,DWORD dwSubjectType,void *pvSubject,PCTL_USAGE pSubjectUsage,DWORD dwFlags,PCTL_VERIFY_USAGE_PARA pVerifyUsagePara,PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus); | |
| 3333 | |
| 3334 typedef struct _CERT_REVOCATION_CRL_INFO { | |
| 3335 DWORD cbSize; | |
| 3336 PCCRL_CONTEXT pBaseCrlContext; | |
| 3337 PCCRL_CONTEXT pDeltaCrlContext; | |
| 3338 PCRL_ENTRY pCrlEntry; | |
| 3339 WINBOOL fDeltaCrlEntry; | |
| 3340 } CERT_REVOCATION_CRL_INFO,*PCERT_REVOCATION_CRL_INFO; | |
| 3341 | |
| 3342 typedef struct _CERT_REVOCATION_PARA { | |
| 3343 DWORD cbSize; | |
| 3344 PCCERT_CONTEXT pIssuerCert; | |
| 3345 DWORD cCertStore; | |
| 3346 HCERTSTORE *rgCertStore; | |
| 3347 HCERTSTORE hCrlStore; | |
| 3348 LPFILETIME pftTimeToUse; | |
| 3349 #ifdef CERT_REVOCATION_PARA_HAS_EXTRA_FIELDS | |
| 3350 DWORD dwUrlRetrievalTimeout; | |
| 3351 WINBOOL fCheckFreshnessTime; | |
| 3352 DWORD dwFreshnessTime; | |
| 3353 LPFILETIME pftCurrentTime; | |
| 3354 PCERT_REVOCATION_CRL_INFO pCrlInfo; | |
| 3355 #endif | |
| 3356 } CERT_REVOCATION_PARA,*PCERT_REVOCATION_PARA; | |
| 3357 | |
| 3358 typedef struct _CERT_REVOCATION_STATUS { | |
| 3359 DWORD cbSize; | |
| 3360 DWORD dwIndex; | |
| 3361 DWORD dwError; | |
| 3362 DWORD dwReason; | |
| 3363 WINBOOL fHasFreshnessTime; | |
| 3364 DWORD dwFreshnessTime; | |
| 3365 } CERT_REVOCATION_STATUS,*PCERT_REVOCATION_STATUS; | |
| 3366 | |
| 3367 WINIMPM WINBOOL WINAPI CertVerifyRevocation(DWORD dwEncodingType,DWORD dwRevType,DWORD cContext,PVOID rgpvContext[],DWORD dwFlags,PCERT_REVOCATION_PARA pRevPara,PCERT_REVOCATION_STATUS pRevStatus); | |
| 3368 | |
| 3369 #define CERT_CONTEXT_REVOCATION_TYPE 1 | |
| 3370 #define CERT_VERIFY_REV_CHAIN_FLAG 0x1 | |
| 3371 #define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION 0x2 | |
| 3372 #define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG 0x4 | |
| 3373 | |
| 3374 WINBOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1,PCRYPT_INTEGER_BLOB pInt2); | |
| 3375 WINIMPM WINBOOL WINAPI CertCompareCertificate(DWORD dwCertEncodingType,PCERT_INFO pCertId1,PCERT_INFO pCertId2); | |
| 3376 WINIMPM WINBOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType,PCERT_NAME_BLOB pCertName1,PCERT_NAME_BLOB pCertName2); | |
| 3377 WINIMPM WINBOOL WINAPI CertIsRDNAttrsInCertificateName(DWORD dwCertEncodingType,DWORD dwFlags,PCERT_NAME_BLOB pCertName,PCERT_RDN pRDN); | |
| 3378 | |
| 3379 #define CERT_UNICODE_IS_RDN_ATTRS_FLAG 0x1 | |
| 3380 #define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 0x2 | |
| 3381 | |
| 3382 WINIMPM WINBOOL WINAPI CertComparePublicKeyInfo(DWORD dwCertEncodingType,PCERT_PUBLIC_KEY_INFO pPublicKey1,PCERT_PUBLIC_KEY_INFO pPublicKey2); | |
| 3383 WINIMPM DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType,PCERT_PUBLIC_KEY_INFO pPublicKey); | |
| 3384 WINIMPM WINBOOL WINAPI CryptVerifyCertificateSignature(HCRYPTPROV hCryptProv,DWORD dwCertEncodingType,const BYTE *pbEncoded,DWORD cbEncoded,PCERT_PUBLIC_KEY_INFO pPublicKey); | |
| 3385 WINIMPM WINBOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV hCryptProv,DWORD dwCertEncodingType,DWORD dwSubjectType,void *pvSubject,DWORD dwIssuerType,void *pvIssuer,DWORD dwFlags,void *pvReserved); | |
| 3386 | |
| 3387 #define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1 | |
| 3388 #define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2 | |
| 3389 #define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 3 | |
| 3390 #define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY 1 | |
| 3391 #define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT 2 | |
| 3392 #define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN 3 | |
| 3393 #define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL 4 | |
| 3394 | |
| 3395 WINIMPM WINBOOL WINAPI CryptHashToBeSigned(HCRYPTPROV hCryptProv,DWORD dwCertEncodingType,const BYTE *pbEncoded,DWORD cbEncoded,BYTE *pbComputedHash,DWORD *pcbComputedHash); | |
| 3396 WINIMPM WINBOOL WINAPI CryptHashCertificate(HCRYPTPROV hCryptProv,ALG_ID Algid,DWORD dwFlags,const BYTE *pbEncoded,DWORD cbEncoded,BYTE *pbComputedHash,DWORD *pcbComputedHash); | |
| 3397 WINIMPM WINBOOL WINAPI CryptSignCertificate(HCRYPTPROV hCryptProv,DWORD dwKeySpec,DWORD dwCertEncodingType,const BYTE *pbEncodedToBeSigned,DWORD cbEncodedToBeSigned,PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,const void *pvHashAuxInfo,BYTE *pbSignature,DWORD *pcbSignature); | |
| 3398 WINIMPM WINBOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV hCryptProv,DWORD dwKeySpec,DWORD dwCertEncodingType,LPCSTR lpszStructType,const void *pvStructInfo,PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,const void *pvHashAuxInfo,PBYTE pbEncoded,DWORD *pcbEncoded); | |
| 3399 WINIMPM LONG WINAPI CertVerifyTimeValidity(LPFILETIME pTimeToVerify,PCERT_INFO pCertInfo); | |
| 3400 WINIMPM LONG WINAPI CertVerifyCRLTimeValidity(LPFILETIME pTimeToVerify,PCRL_INFO pCrlInfo); | |
| 3401 WINIMPM WINBOOL WINAPI CertVerifyValidityNesting(PCERT_INFO pSubjectInfo,PCERT_INFO pIssuerInfo); | |
| 3402 WINIMPM WINBOOL WINAPI CertVerifyCRLRevocation(DWORD dwCertEncodingType,PCERT_INFO pCertId,DWORD cCrlInfo,PCRL_INFO rgpCrlInfo[]); | |
| 3403 WINIMPM LPCSTR WINAPI CertAlgIdToOID(DWORD dwAlgId); | |
| 3404 WINIMPM DWORD WINAPI CertOIDToAlgId(LPCSTR pszObjId); | |
| 3405 WINIMPM PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId,DWORD cExtensions,CERT_EXTENSION rgExtensions[]); | |
| 3406 WINIMPM PCRYPT_ATTRIBUTE WINAPI CertFindAttribute(LPCSTR pszObjId,DWORD cAttr,CRYPT_ATTRIBUTE rgAttr[]); | |
| 3407 WINIMPM PCERT_RDN_ATTR WINAPI CertFindRDNAttr(LPCSTR pszObjId,PCERT_NAME_INFO pName); | |
| 3408 WINIMPM WINBOOL WINAPI CertGetIntendedKeyUsage(DWORD dwCertEncodingType,PCERT_INFO pCertInfo,BYTE *pbKeyUsage,DWORD cbKeyUsage); | |
| 3409 | |
| 3410 typedef void *HCRYPTDEFAULTCONTEXT; | |
| 3411 | |
| 3412 WINIMPM WINBOOL WINAPI CryptInstallDefaultContext(HCRYPTPROV hCryptProv,DWORD dwDefaultType,const void *pvDefaultPara,DWORD dwFlags,void *pvReserved,HCRYPTDEFAULTCONTEXT *phDefaultContext); | |
| 3413 | |
| 3414 #define CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG 0x1 | |
| 3415 #define CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG 0x2 | |
| 3416 | |
| 3417 #define CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID 1 | |
| 3418 #define CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID 2 | |
| 3419 | |
| 3420 typedef struct _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA { | |
| 3421 DWORD cOID; | |
| 3422 LPSTR *rgpszOID; | |
| 3423 } CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA,*PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA; | |
| 3424 | |
| 3425 WINIMPM WINBOOL WINAPI CryptUninstallDefaultContext(HCRYPTDEFAULTCONTEXT hDefaultContext,DWORD dwFlags,void *pvReserved); | |
| 3426 WINIMPM WINBOOL WINAPI CryptExportPublicKeyInfo(HCRYPTPROV hCryptProv,DWORD dwKeySpec,DWORD dwCertEncodingType,PCERT_PUBLIC_KEY_INFO pInfo,DWORD *pcbInfo); | |
| 3427 | |
| 3428 #define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC "CryptDllExportPublicKeyInfoEx" | |
| 3429 | |
| 3430 WINIMPM WINBOOL WINAPI CryptExportPublicKeyInfoEx(HCRYPTPROV hCryptProv,DWORD dwKeySpec,DWORD dwCertEncodingType,LPSTR pszPublicKeyObjId,DWORD dwFlags,void *pvAuxInfo,PCERT_PUBLIC_KEY_INFO pInfo,DWORD *pcbInfo); | |
| 3431 WINIMPM WINBOOL WINAPI CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv,DWORD dwCertEncodingType,PCERT_PUBLIC_KEY_INFO pInfo,HCRYPTKEY *phKey); | |
| 3432 | |
| 3433 #define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC "CryptDllImportPublicKeyInfoEx" | |
| 3434 | |
| 3435 WINIMPM WINBOOL WINAPI CryptImportPublicKeyInfoEx(HCRYPTPROV hCryptProv,DWORD dwCertEncodingType,PCERT_PUBLIC_KEY_INFO pInfo,ALG_ID aiKeyAlg,DWORD dwFlags,void *pvAuxInfo,HCRYPTKEY *phKey); | |
| 3436 WINIMPM WINBOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert,DWORD dwFlags,void *pvReserved,HCRYPTPROV *phCryptProv,DWORD *pdwKeySpec,WINBOOL *pfCallerFreeProv); | |
| 3437 | |
| 3438 #define CRYPT_ACQUIRE_CACHE_FLAG 0x1 | |
| 3439 #define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x2 | |
| 3440 #define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x4 | |
| 3441 | |
| 3442 #define CRYPT_ACQUIRE_SILENT_FLAG 0x40 | |
| 3443 | |
| 3444 WINIMPM WINBOOL WINAPI CryptFindCertificateKeyProvInfo(PCCERT_CONTEXT pCert,DWORD dwFlags,void *pvReserved); | |
| 3445 | |
| 3446 #define CRYPT_FIND_USER_KEYSET_FLAG 0x1 | |
| 3447 #define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x2 | |
| 3448 #define CRYPT_FIND_SILENT_KEYSET_FLAG 0x40 | |
| 3449 | |
| 3450 typedef WINBOOL (WINAPI *PFN_IMPORT_PRIV_KEY_FUNC)(HCRYPTPROV hCryptProv,CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo,DWORD dwFlags,void *pvAuxInfo); | |
| 3451 | |
| 3452 #define CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC "CryptDllImportPrivateKeyInfoEx" | |
| 3453 | |
| 3454 WINIMPM WINBOOL WINAPI CryptImportPKCS8(CRYPT_PKCS8_IMPORT_PARAMS sImportParams,DWORD dwFlags,HCRYPTPROV *phCryptProv,void *pvAuxInfo); | |
| 3455 | |
| 3456 typedef WINBOOL (WINAPI *PFN_EXPORT_PRIV_KEY_FUNC)(HCRYPTPROV hCryptProv,DWORD dwKeySpec,LPSTR pszPrivateKeyObjId,DWORD dwFlags,void *pvAuxInfo,CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo,DWORD *pcbPrivateKeyBlob); | |
| 3457 | |
| 3458 #define CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC "CryptDllExportPrivateKeyInfoEx" | |
| 3459 #define CRYPT_DELETE_KEYSET 0x1 | |
| 3460 | |
| 3461 #ifdef UNICODE | |
| 3462 #define CertRDNValueToStr CertRDNValueToStrW | |
| 3463 #define CertNameToStr CertNameToStrW | |
| 3464 #else | |
| 3465 #define CertRDNValueToStr CertRDNValueToStrA | |
| 3466 #define CertNameToStr CertNameToStrA | |
| 3467 #endif | |
| 3468 | |
| 3469 WINIMPM WINBOOL WINAPI CryptExportPKCS8(HCRYPTPROV hCryptProv,DWORD dwKeySpec,LPSTR pszPrivateKeyObjId,DWORD dwFlags,void *pvAuxInfo,BYTE *pbPrivateKeyBlob,DWORD *pcbPrivateKeyBlob); | |
| 3470 WINIMPM WINBOOL WINAPI CryptExportPKCS8Ex(CRYPT_PKCS8_EXPORT_PARAMS *psExportParams,DWORD dwFlags,void *pvAuxInfo,BYTE *pbPrivateKeyBlob,DWORD *pcbPrivateKeyBlob); | |
| 3471 WINIMPM WINBOOL WINAPI CryptHashPublicKeyInfo(HCRYPTPROV hCryptProv,ALG_ID Algid,DWORD dwFlags,DWORD dwCertEncodingType,PCERT_PUBLIC_KEY_INFO pInfo,BYTE *pbComputedHash,DWORD *pcbComputedHash); | |
| 3472 WINIMPM DWORD WINAPI CertRDNValueToStrA(DWORD dwValueType,PCERT_RDN_VALUE_BLOB pValue,LPSTR psz,DWORD csz); | |
| 3473 WINIMPM DWORD WINAPI CertRDNValueToStrW(DWORD dwValueType,PCERT_RDN_VALUE_BLOB pValue,LPWSTR psz,DWORD csz); | |
| 3474 WINIMPM DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType,PCERT_NAME_BLOB pName,DWORD dwStrType,LPSTR psz,DWORD csz); | |
| 3475 WINIMPM DWORD WINAPI CertNameToStrW(DWORD dwCertEncodingType,PCERT_NAME_BLOB pName,DWORD dwStrType,LPWSTR psz,DWORD csz); | |
| 3476 | |
| 3477 #define CERT_SIMPLE_NAME_STR 1 | |
| 3478 #define CERT_OID_NAME_STR 2 | |
| 3479 #define CERT_X500_NAME_STR 3 | |
| 3480 | |
| 3481 #define CERT_NAME_STR_SEMICOLON_FLAG 0x40000000 | |
| 3482 #define CERT_NAME_STR_NO_PLUS_FLAG 0x20000000 | |
| 3483 #define CERT_NAME_STR_NO_QUOTING_FLAG 0x10000000 | |
| 3484 #define CERT_NAME_STR_CRLF_FLAG 0x8000000 | |
| 3485 #define CERT_NAME_STR_COMMA_FLAG 0x4000000 | |
| 3486 #define CERT_NAME_STR_REVERSE_FLAG 0x2000000 | |
| 3487 | |
| 3488 #define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG 0x10000 | |
| 3489 #define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 0x20000 | |
| 3490 #define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG 0x40000 | |
| 3491 #define CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG 0x80000 | |
| 3492 | |
| 3493 #ifdef UNICODE | |
| 3494 #define CertStrToName CertStrToNameW | |
| 3495 #define CertGetNameString CertGetNameStringW | |
| 3496 #else | |
| 3497 #define CertStrToName CertStrToNameA | |
| 3498 #define CertGetNameString CertGetNameStringA | |
| 3499 #endif | |
| 3500 | |
| 3501 WINIMPM WINBOOL WINAPI CertStrToNameA(DWORD dwCertEncodingType,LPCSTR pszX500,DWORD dwStrType,void *pvReserved,BYTE *pbEncoded,DWORD *pcbEncoded,LPCSTR *ppszError); | |
| 3502 WINIMPM WINBOOL WINAPI CertStrToNameW(DWORD dwCertEncodingType,LPCWSTR pszX500,DWORD dwStrType,void *pvReserved,BYTE *pbEncoded,DWORD *pcbEncoded,LPCWSTR *ppszError); | |
| 3503 WINIMPM DWORD WINAPI CertGetNameStringA(PCCERT_CONTEXT pCertContext,DWORD dwType,DWORD dwFlags,void *pvTypePara,LPSTR pszNameString,DWORD cchNameString); | |
| 3504 WINIMPM DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT pCertContext,DWORD dwType,DWORD dwFlags,void *pvTypePara,LPWSTR pszNameString,DWORD cchNameString); | |
| 3505 | |
| 3506 #define CERT_NAME_EMAIL_TYPE 1 | |
| 3507 #define CERT_NAME_RDN_TYPE 2 | |
| 3508 #define CERT_NAME_ATTR_TYPE 3 | |
| 3509 #define CERT_NAME_SIMPLE_DISPLAY_TYPE 4 | |
| 3510 #define CERT_NAME_FRIENDLY_DISPLAY_TYPE 5 | |
| 3511 #define CERT_NAME_DNS_TYPE 6 | |
| 3512 #define CERT_NAME_URL_TYPE 7 | |
| 3513 #define CERT_NAME_UPN_TYPE 8 | |
| 3514 | |
| 3515 #define CERT_NAME_ISSUER_FLAG 0x1 | |
| 3516 #define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x10000 | |
| 3517 | |
| 3518 typedef PCCERT_CONTEXT (WINAPI *PFN_CRYPT_GET_SIGNER_CERTIFICATE)(void *pvGetArg,DWORD dwCertEncodingType,PCERT_INFO pSignerId,HCERTSTORE hMsgCertStore); | |
| 3519 | |
| 3520 typedef struct _CRYPT_SIGN_MESSAGE_PARA { | |
| 3521 DWORD cbSize; | |
| 3522 DWORD dwMsgEncodingType; | |
| 3523 PCCERT_CONTEXT pSigningCert; | |
| 3524 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 3525 void *pvHashAuxInfo; | |
| 3526 DWORD cMsgCert; | |
| 3527 PCCERT_CONTEXT *rgpMsgCert; | |
| 3528 DWORD cMsgCrl; | |
| 3529 PCCRL_CONTEXT *rgpMsgCrl; | |
| 3530 DWORD cAuthAttr; | |
| 3531 PCRYPT_ATTRIBUTE rgAuthAttr; | |
| 3532 DWORD cUnauthAttr; | |
| 3533 PCRYPT_ATTRIBUTE rgUnauthAttr; | |
| 3534 DWORD dwFlags; | |
| 3535 DWORD dwInnerContentType; | |
| 3536 #ifdef CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS | |
| 3537 CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; | |
| 3538 void *pvHashEncryptionAuxInfo; | |
| 3539 #endif | |
| 3540 } CRYPT_SIGN_MESSAGE_PARA,*PCRYPT_SIGN_MESSAGE_PARA; | |
| 3541 | |
| 3542 #define CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG 0x1 | |
| 3543 #define CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 0x2 | |
| 3544 #define CRYPT_MESSAGE_KEYID_SIGNER_FLAG 0x4 | |
| 3545 #define CRYPT_MESSAGE_SILENT_KEYSET_FLAG 0x40 | |
| 3546 | |
| 3547 typedef struct _CRYPT_VERIFY_MESSAGE_PARA { | |
| 3548 DWORD cbSize; | |
| 3549 DWORD dwMsgAndCertEncodingType; | |
| 3550 HCRYPTPROV hCryptProv; | |
| 3551 PFN_CRYPT_GET_SIGNER_CERTIFICATE pfnGetSignerCertificate; | |
| 3552 void *pvGetArg; | |
| 3553 } CRYPT_VERIFY_MESSAGE_PARA,*PCRYPT_VERIFY_MESSAGE_PARA; | |
| 3554 | |
| 3555 typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA { | |
| 3556 DWORD cbSize; | |
| 3557 DWORD dwMsgEncodingType; | |
| 3558 HCRYPTPROV hCryptProv; | |
| 3559 CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm; | |
| 3560 void *pvEncryptionAuxInfo; | |
| 3561 DWORD dwFlags; | |
| 3562 DWORD dwInnerContentType; | |
| 3563 } CRYPT_ENCRYPT_MESSAGE_PARA,*PCRYPT_ENCRYPT_MESSAGE_PARA; | |
| 3564 | |
| 3565 #define CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 0x4 | |
| 3566 | |
| 3567 typedef struct _CRYPT_DECRYPT_MESSAGE_PARA { | |
| 3568 DWORD cbSize; | |
| 3569 DWORD dwMsgAndCertEncodingType; | |
| 3570 DWORD cCertStore; | |
| 3571 HCERTSTORE *rghCertStore; | |
| 3572 | |
| 3573 #ifdef CRYPT_DECRYPT_MESSAGE_PARA_HAS_EXTRA_FIELDS | |
| 3574 | |
| 3575 DWORD dwFlags; | |
| 3576 #endif | |
| 3577 | |
| 3578 } CRYPT_DECRYPT_MESSAGE_PARA,*PCRYPT_DECRYPT_MESSAGE_PARA; | |
| 3579 | |
| 3580 typedef struct _CRYPT_HASH_MESSAGE_PARA { | |
| 3581 DWORD cbSize; | |
| 3582 DWORD dwMsgEncodingType; | |
| 3583 HCRYPTPROV hCryptProv; | |
| 3584 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 3585 void *pvHashAuxInfo; | |
| 3586 } CRYPT_HASH_MESSAGE_PARA,*PCRYPT_HASH_MESSAGE_PARA; | |
| 3587 | |
| 3588 typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA { | |
| 3589 DWORD cbSize; | |
| 3590 DWORD dwMsgAndCertEncodingType; | |
| 3591 HCRYPTPROV hCryptProv; | |
| 3592 DWORD dwKeySpec; | |
| 3593 CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; | |
| 3594 void *pvHashAuxInfo; | |
| 3595 CRYPT_ALGORITHM_IDENTIFIER PubKeyAlgorithm; | |
| 3596 } CRYPT_KEY_SIGN_MESSAGE_PARA,*PCRYPT_KEY_SIGN_MESSAGE_PARA; | |
| 3597 | |
| 3598 typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA { | |
| 3599 DWORD cbSize; | |
| 3600 DWORD dwMsgEncodingType; | |
| 3601 HCRYPTPROV hCryptProv; | |
| 3602 } CRYPT_KEY_VERIFY_MESSAGE_PARA,*PCRYPT_KEY_VERIFY_MESSAGE_PARA; | |
| 3603 | |
| 3604 #ifdef UNICODE | |
| 3605 #define CertOpenSystemStore CertOpenSystemStoreW | |
| 3606 #define CertAddEncodedCertificateToSystemStore CertAddEncodedCertificateToSystemStoreW | |
| 3607 #else | |
| 3608 #define CertOpenSystemStore CertOpenSystemStoreA | |
| 3609 #define CertAddEncodedCertificateToSystemStore CertAddEncodedCertificateToSystemStoreA | |
| 3610 #endif | |
| 3611 | |
| 3612 WINIMPM WINBOOL WINAPI CryptSignMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara,WINBOOL fDetachedSignature,DWORD cToBeSigned,const BYTE *rgpbToBeSigned[],DWORD rgcbToBeSigned[],BYTE *pbSignedBlob,DWORD *pcbSignedBlob); | |
| 3613 WINIMPM WINBOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,DWORD dwSignerIndex,const BYTE *pbSignedBlob,DWORD cbSignedBlob,BYTE *pbDecoded,DWORD *pcbDecoded,PCCERT_CONTEXT *ppSignerCert); | |
| 3614 WINIMPM LONG WINAPI CryptGetMessageSignerCount(DWORD dwMsgEncodingType,const BYTE *pbSignedBlob,DWORD cbSignedBlob); | |
| 3615 WINIMPM HCERTSTORE WINAPI CryptGetMessageCertificates(DWORD dwMsgAndCertEncodingType,HCRYPTPROV hCryptProv,DWORD dwFlags,const BYTE *pbSignedBlob,DWORD cbSignedBlob); | |
| 3616 WINIMPM WINBOOL WINAPI CryptVerifyDetachedMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,DWORD dwSignerIndex,const BYTE *pbDetachedSignBlob,DWORD cbDetachedSignBlob,DWORD cToBeSigned,const BYTE *rgpbToBeSigned[],DWORD rgcbToBeSigned[],PCCERT_CONTEXT *ppSignerCert); | |
| 3617 WINIMPM WINBOOL WINAPI CryptEncryptMessage(PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,DWORD cRecipientCert,PCCERT_CONTEXT rgpRecipientCert[],const BYTE *pbToBeEncrypted,DWORD cbToBeEncrypted,BYTE *pbEncryptedBlob,DWORD *pcbEncryptedBlob); | |
| 3618 WINIMPM WINBOOL WINAPI CryptDecryptMessage(PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,const BYTE *pbEncryptedBlob,DWORD cbEncryptedBlob,BYTE *pbDecrypted,DWORD *pcbDecrypted,PCCERT_CONTEXT *ppXchgCert); | |
| 3619 WINIMPM WINBOOL WINAPI CryptSignAndEncryptMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara,PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,DWORD cRecipientCert,PCCERT_CONTEXT rgpRecipientCert[],const BYTE *pbToBeSignedAndEncrypted,DWORD cbToBeSignedAndEncrypted,BYTE *pbSignedAndEncryptedBlob,DWORD *pcbSignedAndEncryptedBlob); | |
| 3620 WINIMPM WINBOOL WINAPI CryptDecryptAndVerifyMessageSignature(PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,DWORD dwSignerIndex,const BYTE *pbEncryptedBlob,DWORD cbEncryptedBlob,BYTE *pbDecrypted,DWORD *pcbDecrypted,PCCERT_CONTEXT *ppXchgCert,PCCERT_CONTEXT *ppSignerCert); | |
| 3621 WINIMPM WINBOOL WINAPI CryptDecodeMessage(DWORD dwMsgTypeFlags,PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara,PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara,DWORD dwSignerIndex,const BYTE *pbEncodedBlob,DWORD cbEncodedBlob,DWORD dwPrevInnerContentType,DWORD *pdwMsgType,DWORD *pdwInnerContentType,BYTE *pbDecoded,DWORD *pcbDecoded,PCCERT_CONTEXT *ppXchgCert,PCCERT_CONTEXT *ppSignerCert); | |
| 3622 WINIMPM WINBOOL WINAPI CryptHashMessage(PCRYPT_HASH_MESSAGE_PARA pHashPara,WINBOOL fDetachedHash,DWORD cToBeHashed,const BYTE *rgpbToBeHashed[],DWORD rgcbToBeHashed[],BYTE *pbHashedBlob,DWORD *pcbHashedBlob,BYTE *pbComputedHash,DWORD *pcbComputedHash); | |
| 3623 WINIMPM WINBOOL WINAPI CryptVerifyMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara,BYTE *pbHashedBlob,DWORD cbHashedBlob,BYTE *pbToBeHashed,DWORD *pcbToBeHashed,BYTE *pbComputedHash,DWORD *pcbComputedHash); | |
| 3624 WINIMPM WINBOOL WINAPI CryptVerifyDetachedMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara,BYTE *pbDetachedHashBlob,DWORD cbDetachedHashBlob,DWORD cToBeHashed,const BYTE *rgpbToBeHashed[],DWORD rgcbToBeHashed[],BYTE *pbComputedHash,DWORD *pcbComputedHash); | |
| 3625 WINIMPM WINBOOL WINAPI CryptSignMessageWithKey(PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara,const BYTE *pbToBeSigned,DWORD cbToBeSigned,BYTE *pbSignedBlob,DWORD *pcbSignedBlob); | |
| 3626 WINIMPM WINBOOL WINAPI CryptVerifyMessageSignatureWithKey(PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara,PCERT_PUBLIC_KEY_INFO pPublicKeyInfo,const BYTE *pbSignedBlob,DWORD cbSignedBlob,BYTE *pbDecoded,DWORD *pcbDecoded); | |
| 3627 WINIMPM HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV hProv,LPCSTR szSubsystemProtocol); | |
| 3628 WINIMPM HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV hProv,LPCWSTR szSubsystemProtocol); | |
| 3629 WINIMPM WINBOOL WINAPI CertAddEncodedCertificateToSystemStoreA(LPCSTR szCertStoreName,const BYTE *pbCertEncoded,DWORD cbCertEncoded); | |
| 3630 WINIMPM WINBOOL WINAPI CertAddEncodedCertificateToSystemStoreW(LPCWSTR szCertStoreName,const BYTE *pbCertEncoded,DWORD cbCertEncoded); | |
| 3631 | |
| 3632 typedef struct _CERT_CHAIN { | |
| 3633 DWORD cCerts; | |
| 3634 PCERT_BLOB certs; | |
| 3635 CRYPT_KEY_PROV_INFO keyLocatorInfo; | |
| 3636 } CERT_CHAIN,*PCERT_CHAIN; | |
| 3637 | |
| 3638 HRESULT WINAPI FindCertsByIssuer(PCERT_CHAIN pCertChains,DWORD *pcbCertChains,DWORD *pcCertChains,BYTE *pbEncodedIssuerName,DWORD cbEncodedIssuerName,LPCWSTR pwszPurpose,DWORD dwKeySpec); | |
| 3639 WINIMPM WINBOOL WINAPI CryptQueryObject(DWORD dwObjectType,const void *pvObject,DWORD dwExpectedContentTypeFlags,DWORD dwExpectedFormatTypeFlags,DWORD dwFlags,DWORD *pdwMsgAndCertEncodingType,DWORD *pdwContentType,DWORD *pdwFormatType,HCERTSTORE *phCertStore,HCRYPTMSG *phMsg,const void **ppvContext); | |
| 3640 | |
| 3641 #define CERT_QUERY_OBJECT_FILE 0x1 | |
| 3642 #define CERT_QUERY_OBJECT_BLOB 0x2 | |
| 3643 #define CERT_QUERY_CONTENT_CERT 1 | |
| 3644 #define CERT_QUERY_CONTENT_CTL 2 | |
| 3645 #define CERT_QUERY_CONTENT_CRL 3 | |
| 3646 #define CERT_QUERY_CONTENT_SERIALIZED_STORE 4 | |
| 3647 #define CERT_QUERY_CONTENT_SERIALIZED_CERT 5 | |
| 3648 #define CERT_QUERY_CONTENT_SERIALIZED_CTL 6 | |
| 3649 #define CERT_QUERY_CONTENT_SERIALIZED_CRL 7 | |
| 3650 #define CERT_QUERY_CONTENT_PKCS7_SIGNED 8 | |
| 3651 #define CERT_QUERY_CONTENT_PKCS7_UNSIGNED 9 | |
| 3652 #define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 10 | |
| 3653 #define CERT_QUERY_CONTENT_PKCS10 11 | |
| 3654 #define CERT_QUERY_CONTENT_PFX 12 | |
| 3655 #define CERT_QUERY_CONTENT_CERT_PAIR 13 | |
| 3656 #define CERT_QUERY_CONTENT_FLAG_CERT (1 << CERT_QUERY_CONTENT_CERT) | |
| 3657 #define CERT_QUERY_CONTENT_FLAG_CTL (1 << CERT_QUERY_CONTENT_CTL) | |
| 3658 #define CERT_QUERY_CONTENT_FLAG_CRL (1 << CERT_QUERY_CONTENT_CRL) | |
| 3659 #define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE) | |
| 3660 #define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT) | |
| 3661 #define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL) | |
| 3662 #define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL) | |
| 3663 #define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED) | |
| 3664 #define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED) | |
| 3665 #define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED) | |
| 3666 #define CERT_QUERY_CONTENT_FLAG_PKCS10 (1 << CERT_QUERY_CONTENT_PKCS10) | |
| 3667 #define CERT_QUERY_CONTENT_FLAG_PFX (1 << CERT_QUERY_CONTENT_PFX) | |
| 3668 #define CERT_QUERY_CONTENT_FLAG_CERT_PAIR (1 << CERT_QUERY_CONTENT_CERT_PAIR) | |
| 3669 #define CERT_QUERY_CONTENT_FLAG_ALL CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR | |
| 3670 #define CERT_QUERY_FORMAT_BINARY 1 | |
| 3671 #define CERT_QUERY_FORMAT_BASE64_ENCODED 2 | |
| 3672 #define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3 | |
| 3673 #define CERT_QUERY_FORMAT_FLAG_BINARY (1 << CERT_QUERY_FORMAT_BINARY) | |
| 3674 #define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED (1 << CERT_QUERY_FORMAT_BASE64_ENCODED) | |
| 3675 #define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED) | |
| 3676 #define CERT_QUERY_FORMAT_FLAG_ALL CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED | |
| 3677 | |
| 3678 WINIMPM LPVOID WINAPI CryptMemAlloc(ULONG cbSize); | |
| 3679 WINIMPM LPVOID WINAPI CryptMemRealloc(LPVOID pv,ULONG cbSize); | |
| 3680 WINIMPM VOID WINAPI CryptMemFree(LPVOID pv); | |
| 3681 | |
| 3682 typedef HANDLE HCRYPTASYNC,*PHCRYPTASYNC; | |
| 3683 | |
| 3684 typedef VOID (WINAPI *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC)(LPSTR pszParamOid,LPVOID pvParam); | |
| 3685 | |
| 3686 WINIMPM WINBOOL WINAPI CryptCreateAsyncHandle(DWORD dwFlags,PHCRYPTASYNC phAsync); | |
| 3687 WINIMPM WINBOOL WINAPI CryptSetAsyncParam(HCRYPTASYNC hAsync,LPSTR pszParamOid,LPVOID pvParam,PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree); | |
| 3688 WINIMPM WINBOOL WINAPI CryptGetAsyncParam(HCRYPTASYNC hAsync,LPSTR pszParamOid,LPVOID *ppvParam,PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *ppfnFree); | |
| 3689 WINIMPM WINBOOL WINAPI CryptCloseAsyncHandle(HCRYPTASYNC hAsync); | |
| 3690 | |
| 3691 typedef struct _CRYPT_BLOB_ARRAY { | |
| 3692 DWORD cBlob; | |
| 3693 PCRYPT_DATA_BLOB rgBlob; | |
| 3694 } CRYPT_BLOB_ARRAY,*PCRYPT_BLOB_ARRAY; | |
| 3695 | |
| 3696 typedef struct _CRYPT_CREDENTIALS { | |
| 3697 DWORD cbSize; | |
| 3698 LPCSTR pszCredentialsOid; | |
| 3699 LPVOID pvCredentials; | |
| 3700 } CRYPT_CREDENTIALS,*PCRYPT_CREDENTIALS; | |
| 3701 | |
| 3702 #define CREDENTIAL_OID_PASSWORD_CREDENTIALS_A ((LPCSTR)1) | |
| 3703 #define CREDENTIAL_OID_PASSWORD_CREDENTIALS_W ((LPCSTR)2) | |
| 3704 | |
| 3705 #ifdef UNICODE | |
| 3706 #define CREDENTIAL_OID_PASSWORD_CREDENTIALS CREDENTIAL_OID_PASSWORD_CREDENTIALS_W | |
| 3707 #else | |
| 3708 #define CREDENTIAL_OID_PASSWORD_CREDENTIALS CREDENTIAL_OID_PASSWORD_CREDENTIALS_A | |
| 3709 #endif | |
| 3710 | |
| 3711 typedef struct _CRYPT_PASSWORD_CREDENTIALSA { | |
| 3712 DWORD cbSize; | |
| 3713 LPSTR pszUsername; | |
| 3714 LPSTR pszPassword; | |
| 3715 } CRYPT_PASSWORD_CREDENTIALSA,*PCRYPT_PASSWORD_CREDENTIALSA; | |
| 3716 typedef struct _CRYPT_PASSWORD_CREDENTIALSW { | |
| 3717 DWORD cbSize; | |
| 3718 LPWSTR pszUsername; | |
| 3719 LPWSTR pszPassword; | |
| 3720 } CRYPT_PASSWORD_CREDENTIALSW,*PCRYPT_PASSWORD_CREDENTIALSW; | |
| 3721 #ifdef UNICODE | |
| 3722 typedef CRYPT_PASSWORD_CREDENTIALSW CRYPT_PASSWORD_CREDENTIALS; | |
| 3723 typedef PCRYPT_PASSWORD_CREDENTIALSW PCRYPT_PASSWORD_CREDENTIALS; | |
| 3724 #define CryptRetrieveObjectByUrl CryptRetrieveObjectByUrlW | |
| 3725 #define CryptStringToBinary CryptStringToBinaryW | |
| 3726 #define CryptBinaryToString CryptBinaryToStringW | |
| 3727 #else | |
| 3728 typedef CRYPT_PASSWORD_CREDENTIALSA CRYPT_PASSWORD_CREDENTIALS; | |
| 3729 typedef PCRYPT_PASSWORD_CREDENTIALSA PCRYPT_PASSWORD_CREDENTIALS; | |
| 3730 #define CryptRetrieveObjectByUrl CryptRetrieveObjectByUrlA | |
| 3731 #define CryptStringToBinary CryptStringToBinaryA | |
| 3732 #define CryptBinaryToString CryptBinaryToStringA | |
| 3733 #endif | |
| 3734 | |
| 3735 #define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC "SchemeDllRetrieveEncodedObject" | |
| 3736 #define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC "SchemeDllRetrieveEncodedObjectW" | |
| 3737 | |
| 3738 typedef VOID (WINAPI *PFN_FREE_ENCODED_OBJECT_FUNC)(LPCSTR pszObjectOid,PCRYPT_BLOB_ARRAY pObject,LPVOID pvFreeContext); | |
| 3739 | |
| 3740 #define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC "ContextDllCreateObjectContext" | |
| 3741 | |
| 3742 #define CONTEXT_OID_CERTIFICATE ((LPCSTR)1) | |
| 3743 #define CONTEXT_OID_CRL ((LPCSTR)2) | |
| 3744 #define CONTEXT_OID_CTL ((LPCSTR)3) | |
| 3745 #define CONTEXT_OID_PKCS7 ((LPCSTR)4) | |
| 3746 #define CONTEXT_OID_CAPI2_ANY ((LPCSTR)5) | |
| 3747 | |
| 3748 #define CRYPT_RETRIEVE_MULTIPLE_OBJECTS 0x1 | |
| 3749 #define CRYPT_CACHE_ONLY_RETRIEVAL 0x2 | |
| 3750 #define CRYPT_WIRE_ONLY_RETRIEVAL 0x4 | |
| 3751 #define CRYPT_DONT_CACHE_RESULT 0x8 | |
| 3752 #define CRYPT_ASYNC_RETRIEVAL 0x10 | |
| 3753 #define CRYPT_STICKY_CACHE_RETRIEVAL 0x1000 | |
| 3754 #define CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL 0x2000 | |
| 3755 #define CRYPT_OFFLINE_CHECK_RETRIEVAL 0x4000 | |
| 3756 #define CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE 0x8000 | |
| 3757 #define CRYPT_LDAP_SIGN_RETRIEVAL 0x10000 | |
| 3758 #define CRYPT_NO_AUTH_RETRIEVAL 0x20000 | |
| 3759 #define CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL 0x40000 | |
| 3760 #define CRYPT_AIA_RETRIEVAL 0x80000 | |
| 3761 #define CRYPT_VERIFY_CONTEXT_SIGNATURE 0x20 | |
| 3762 #define CRYPT_VERIFY_DATA_HASH 0x40 | |
| 3763 #define CRYPT_KEEP_TIME_VALID 0x80 | |
| 3764 #define CRYPT_DONT_VERIFY_SIGNATURE 0x100 | |
| 3765 #define CRYPT_DONT_CHECK_TIME_VALIDITY 0x200 | |
| 3766 #define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x400 | |
| 3767 #define CRYPT_ACCUMULATIVE_TIMEOUT 0x800 | |
| 3768 | |
| 3769 typedef struct _CRYPT_RETRIEVE_AUX_INFO { | |
| 3770 DWORD cbSize; | |
| 3771 FILETIME *pLastSyncTime; | |
| 3772 DWORD dwMaxUrlRetrievalByteCount; | |
| 3773 } CRYPT_RETRIEVE_AUX_INFO,*PCRYPT_RETRIEVE_AUX_INFO; | |
| 3774 | |
| 3775 WINIMPM WINBOOL WINAPI CryptRetrieveObjectByUrlA(LPCSTR pszUrl,LPCSTR pszObjectOid,DWORD dwRetrievalFlags,DWORD dwTimeout,LPVOID *ppvObject,HCRYPTASYNC hAsyncRetrieve,PCRYPT_CREDENTIALS pCredentials,LPVOID pvVerify,PCRYPT_RETRIEVE_AUX_INFO pAuxInfo); | |
| 3776 WINIMPM WINBOOL WINAPI CryptRetrieveObjectByUrlW(LPCWSTR pszUrl,LPCSTR pszObjectOid,DWORD dwRetrievalFlags,DWORD dwTimeout,LPVOID *ppvObject,HCRYPTASYNC hAsyncRetrieve,PCRYPT_CREDENTIALS pCredentials,LPVOID pvVerify,PCRYPT_RETRIEVE_AUX_INFO pAuxInfo); | |
| 3777 | |
| 3778 typedef WINBOOL (WINAPI *PFN_CRYPT_CANCEL_RETRIEVAL)(DWORD dwFlags,void *pvArg); | |
| 3779 | |
| 3780 WINIMPM WINBOOL WINAPI CryptInstallCancelRetrieval(PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel,const void *pvArg,DWORD dwFlags,void *pvReserved); | |
| 3781 WINIMPM WINBOOL WINAPI CryptUninstallCancelRetrieval(DWORD dwFlags,void *pvReserved); | |
| 3782 WINIMPM WINBOOL WINAPI CryptCancelAsyncRetrieval(HCRYPTASYNC hAsyncRetrieval); | |
| 3783 | |
| 3784 #define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION ((LPCSTR)1) | |
| 3785 | |
| 3786 typedef VOID (WINAPI *PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC)(LPVOID pvCompletion,DWORD dwCompletionCode,LPCSTR pszUrl,LPSTR pszObjectOid,LPVOID pvObject); | |
| 3787 | |
| 3788 typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION { | |
| 3789 PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion; | |
| 3790 LPVOID pvCompletion; | |
| 3791 } CRYPT_ASYNC_RETRIEVAL_COMPLETION,*PCRYPT_ASYNC_RETRIEVAL_COMPLETION; | |
| 3792 | |
| 3793 #define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL ((LPCSTR)2) | |
| 3794 | |
| 3795 typedef WINBOOL (WINAPI *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC)(HCRYPTASYNC hAsyncRetrieve); | |
| 3796 | |
| 3797 #define CRYPT_GET_URL_FROM_PROPERTY 0x1 | |
| 3798 #define CRYPT_GET_URL_FROM_EXTENSION 0x2 | |
| 3799 #define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x4 | |
| 3800 #define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x8 | |
| 3801 | |
| 3802 typedef struct _CRYPT_URL_ARRAY { | |
| 3803 DWORD cUrl; | |
| 3804 LPWSTR *rgwszUrl; | |
| 3805 } CRYPT_URL_ARRAY,*PCRYPT_URL_ARRAY; | |
| 3806 | |
| 3807 typedef struct _CRYPT_URL_INFO { | |
| 3808 DWORD cbSize; | |
| 3809 DWORD dwSyncDeltaTime; | |
| 3810 DWORD cGroup; | |
| 3811 DWORD *rgcGroupEntry; | |
| 3812 } CRYPT_URL_INFO,*PCRYPT_URL_INFO; | |
| 3813 | |
| 3814 WINIMPM WINBOOL WINAPI CryptGetObjectUrl(LPCSTR pszUrlOid,LPVOID pvPara,DWORD dwFlags,PCRYPT_URL_ARRAY pUrlArray,DWORD *pcbUrlArray,PCRYPT_URL_INFO pUrlInfo,DWORD *pcbUrlInfo,LPVOID pvReserved); | |
| 3815 | |
| 3816 #define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl" | |
| 3817 | |
| 3818 #define URL_OID_CERTIFICATE_ISSUER ((LPCSTR)1) | |
| 3819 #define URL_OID_CERTIFICATE_CRL_DIST_POINT ((LPCSTR)2) | |
| 3820 #define URL_OID_CTL_ISSUER ((LPCSTR)3) | |
| 3821 #define URL_OID_CTL_NEXT_UPDATE ((LPCSTR)4) | |
| 3822 #define URL_OID_CRL_ISSUER ((LPCSTR)5) | |
| 3823 #define URL_OID_CERTIFICATE_FRESHEST_CRL ((LPCSTR)6) | |
| 3824 #define URL_OID_CRL_FRESHEST_CRL ((LPCSTR)7) | |
| 3825 #define URL_OID_CROSS_CERT_DIST_POINT ((LPCSTR)8) | |
| 3826 | |
| 3827 typedef struct _CERT_CRL_CONTEXT_PAIR { | |
| 3828 PCCERT_CONTEXT pCertContext; | |
| 3829 PCCRL_CONTEXT pCrlContext; | |
| 3830 } CERT_CRL_CONTEXT_PAIR,*PCERT_CRL_CONTEXT_PAIR; | |
| 3831 typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; | |
| 3832 | |
| 3833 WINIMPM WINBOOL WINAPI CryptGetTimeValidObject(LPCSTR pszTimeValidOid,LPVOID pvPara,PCCERT_CONTEXT pIssuer,LPFILETIME pftValidFor,DWORD dwFlags,DWORD dwTimeout,LPVOID *ppvObject,PCRYPT_CREDENTIALS pCredentials,LPVOID pvReserved); | |
| 3834 | |
| 3835 #define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject" | |
| 3836 | |
| 3837 #define TIME_VALID_OID_GET_CTL ((LPCSTR)1) | |
| 3838 #define TIME_VALID_OID_GET_CRL ((LPCSTR)2) | |
| 3839 #define TIME_VALID_OID_GET_CRL_FROM_CERT ((LPCSTR)3) | |
| 3840 | |
| 3841 #define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT ((LPCSTR)4) | |
| 3842 #define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL ((LPCSTR)5) | |
| 3843 | |
| 3844 WINIMPM WINBOOL WINAPI CryptFlushTimeValidObject(LPCSTR pszFlushTimeValidOid,LPVOID pvPara,PCCERT_CONTEXT pIssuer,DWORD dwFlags,LPVOID pvReserved); | |
| 3845 | |
| 3846 #define TIME_VALID_OID_FLUSH_OBJECT_FUNC "TimeValidDllFlushObject" | |
| 3847 #define TIME_VALID_OID_FLUSH_CTL ((LPCSTR)1) | |
| 3848 #define TIME_VALID_OID_FLUSH_CRL ((LPCSTR)2) | |
| 3849 #define TIME_VALID_OID_FLUSH_CRL_FROM_CERT ((LPCSTR)3) | |
| 3850 | |
| 3851 #define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4) | |
| 3852 #define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL ((LPCSTR)5) | |
| 3853 | |
| 3854 typedef struct _CRYPTPROTECT_PROMPTSTRUCT { | |
| 3855 DWORD cbSize; | |
| 3856 DWORD dwPromptFlags; | |
| 3857 HWND hwndApp; | |
| 3858 LPCWSTR szPrompt; | |
| 3859 } CRYPTPROTECT_PROMPTSTRUCT,*PCRYPTPROTECT_PROMPTSTRUCT; | |
| 3860 | |
| 3861 #define CRYPTPROTECT_DEFAULT_PROVIDER { 0xdf9d8cd0,0x1501,0x11d1,{0x8c,0x7a,0x00,0xc0,0x4f,0xc2,0x97,0xeb} } | |
| 3862 #define CRYPTPROTECT_PROMPT_ON_UNPROTECT 0x1 | |
| 3863 | |
| 3864 #define CRYPTPROTECT_PROMPT_ON_PROTECT 0x2 | |
| 3865 #define CRYPTPROTECT_PROMPT_RESERVED 0x4 | |
| 3866 | |
| 3867 #define CRYPTPROTECT_PROMPT_STRONG 0x8 | |
| 3868 #define CRYPTPROTECT_PROMPT_REQUIRE_STRONG 0x10 | |
| 3869 #define CRYPTPROTECT_UI_FORBIDDEN 0x1 | |
| 3870 #define CRYPTPROTECT_LOCAL_MACHINE 0x4 | |
| 3871 #define CRYPTPROTECT_CRED_SYNC 0x8 | |
| 3872 #define CRYPTPROTECT_AUDIT 0x10 | |
| 3873 #define CRYPTPROTECT_NO_RECOVERY 0x20 | |
| 3874 #define CRYPTPROTECT_VERIFY_PROTECTION 0x40 | |
| 3875 #define CRYPTPROTECT_CRED_REGENERATE 0x80 | |
| 3876 #define CRYPTPROTECT_FIRST_RESERVED_FLAGVAL 0x0FFFFFFF | |
| 3877 #define CRYPTPROTECT_LAST_RESERVED_FLAGVAL 0xFFFFFFFF | |
| 3878 | |
| 3879 WINIMPM WINBOOL WINAPI CryptProtectData(DATA_BLOB *pDataIn,LPCWSTR szDataDescr,DATA_BLOB *pOptionalEntropy,PVOID pvReserved,CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,DWORD dwFlags,DATA_BLOB *pDataOut); | |
| 3880 WINIMPM WINBOOL WINAPI CryptUnprotectData(DATA_BLOB *pDataIn,LPWSTR *ppszDataDescr,DATA_BLOB *pOptionalEntropy,PVOID pvReserved,CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct,DWORD dwFlags,DATA_BLOB *pDataOut); | |
| 3881 | |
| 3882 #define CRYPTPROTECTMEMORY_BLOCK_SIZE 16 | |
| 3883 #define CRYPTPROTECTMEMORY_SAME_PROCESS 0x0 | |
| 3884 #define CRYPTPROTECTMEMORY_CROSS_PROCESS 0x1 | |
| 3885 #define CRYPTPROTECTMEMORY_SAME_LOGON 0x2 | |
| 3886 | |
| 3887 WINIMPM WINBOOL WINAPI CryptProtectMemory(LPVOID pDataIn,DWORD cbDataIn,DWORD dwFlags); | |
| 3888 WINIMPM WINBOOL WINAPI CryptUnprotectMemory(LPVOID pDataIn,DWORD cbDataIn,DWORD dwFlags); | |
| 3889 WINIMPM PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate(HCRYPTPROV hProv,PCERT_NAME_BLOB pSubjectIssuerBlob,DWORD dwFlags,PCRYPT_KEY_PROV_INFO pKeyProvInfo,PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,PSYSTEMTIME pStartTime,PSYSTEMTIME pEndTime,PCERT_EXTENSIONS pExtensions); | |
| 3890 | |
| 3891 #define CERT_CREATE_SELFSIGN_NO_SIGN 1 | |
| 3892 #define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2 | |
| 3893 | |
| 3894 WINIMPM WINBOOL WINAPI CryptGetKeyIdentifierProperty(const CRYPT_HASH_BLOB *pKeyIdentifier,DWORD dwPropId,DWORD dwFlags,LPCWSTR pwszComputerName,void *pvReserved,void *pvData,DWORD *pcbData); | |
| 3895 | |
| 3896 #define CRYPT_KEYID_MACHINE_FLAG 0x20 | |
| 3897 | |
| 3898 #define CRYPT_KEYID_ALLOC_FLAG 0x8000 | |
| 3899 | |
| 3900 WINIMPM WINBOOL WINAPI CryptSetKeyIdentifierProperty(const CRYPT_HASH_BLOB *pKeyIdentifier,DWORD dwPropId,DWORD dwFlags,LPCWSTR pwszComputerName,void *pvReserved,const void *pvData); | |
| 3901 | |
| 3902 #define CRYPT_KEYID_DELETE_FLAG 0x10 | |
| 3903 #define CRYPT_KEYID_SET_NEW_FLAG 0x2000 | |
| 3904 | |
| 3905 typedef WINBOOL (WINAPI *PFN_CRYPT_ENUM_KEYID_PROP)(const CRYPT_HASH_BLOB *pKeyIdentifier,DWORD dwFlags,void *pvReserved,void *pvArg,DWORD cProp,DWORD *rgdwPropId,void **rgpvData,DWORD *rgcbData); | |
| 3906 | |
| 3907 WINIMPM WINBOOL WINAPI CryptEnumKeyIdentifierProperties(const CRYPT_HASH_BLOB *pKeyIdentifier,DWORD dwPropId,DWORD dwFlags,LPCWSTR pwszComputerName,void *pvReserved,void *pvArg,PFN_CRYPT_ENUM_KEYID_PROP pfnEnum); | |
| 3908 WINIMPM WINBOOL WINAPI CryptCreateKeyIdentifierFromCSP(DWORD dwCertEncodingType,LPCSTR pszPubKeyOID,const PUBLICKEYSTRUC *pPubKeyStruc,DWORD cbPubKeyStruc,DWORD dwFlags,void *pvReserved,BYTE *pbHash,DWORD *pcbHash); | |
| 3909 | |
| 3910 #define CERT_CHAIN_CONFIG_REGPATH L"Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config" | |
| 3911 #define CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME L"DisableAIAUrlRetrieval" | |
| 3912 #define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME L"MaxAIAUrlCountInCert" | |
| 3913 #define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_DEFAULT 5 | |
| 3914 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME L"MaxAIAUrlRetrievalCountPerChain" | |
| 3915 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_DEFAULT 10 | |
| 3916 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME L"MaxAIAUrlRetrievalByteCount" | |
| 3917 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_DEFAULT 100000 | |
| 3918 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME L"MaxAIAUrlRetrievalCertCount" | |
| 3919 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT 10 | |
| 3920 | |
| 3921 typedef HANDLE HCERTCHAINENGINE; | |
| 3922 | |
| 3923 #define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL) | |
| 3924 #define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)0x1) | |
| 3925 | |
| 3926 #define CERT_CHAIN_CACHE_END_CERT 0x1 | |
| 3927 #define CERT_CHAIN_THREAD_STORE_SYNC 0x2 | |
| 3928 #define CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x4 | |
| 3929 #define CERT_CHAIN_USE_LOCAL_MACHINE_STORE 0x8 | |
| 3930 #define CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE 0x10 | |
| 3931 #define CERT_CHAIN_ENABLE_SHARE_STORE 0x20 | |
| 3932 | |
| 3933 typedef struct _CERT_CHAIN_ENGINE_CONFIG { | |
| 3934 DWORD cbSize; | |
| 3935 HCERTSTORE hRestrictedRoot; | |
| 3936 HCERTSTORE hRestrictedTrust; | |
| 3937 HCERTSTORE hRestrictedOther; | |
| 3938 DWORD cAdditionalStore; | |
| 3939 HCERTSTORE *rghAdditionalStore; | |
| 3940 DWORD dwFlags; | |
| 3941 DWORD dwUrlRetrievalTimeout; | |
| 3942 DWORD MaximumCachedCertificates; | |
| 3943 DWORD CycleDetectionModulus; | |
| 3944 } CERT_CHAIN_ENGINE_CONFIG,*PCERT_CHAIN_ENGINE_CONFIG; | |
| 3945 | |
| 3946 WINIMPM WINBOOL WINAPI CertCreateCertificateChainEngine(PCERT_CHAIN_ENGINE_CONFIG pConfig,HCERTCHAINENGINE *phChainEngine); | |
| 3947 WINIMPM VOID WINAPI CertFreeCertificateChainEngine(HCERTCHAINENGINE hChainEngine); | |
| 3948 WINIMPM WINBOOL WINAPI CertResyncCertificateChainEngine(HCERTCHAINENGINE hChainEngine); | |
| 3949 | |
| 3950 typedef struct _CERT_TRUST_STATUS { | |
| 3951 DWORD dwErrorStatus; | |
| 3952 DWORD dwInfoStatus; | |
| 3953 } CERT_TRUST_STATUS,*PCERT_TRUST_STATUS; | |
| 3954 | |
| 3955 #define CERT_TRUST_NO_ERROR 0x0 | |
| 3956 #define CERT_TRUST_IS_NOT_TIME_VALID 0x1 | |
| 3957 #define CERT_TRUST_IS_NOT_TIME_NESTED 0x2 | |
| 3958 #define CERT_TRUST_IS_REVOKED 0x4 | |
| 3959 #define CERT_TRUST_IS_NOT_SIGNATURE_VALID 0x8 | |
| 3960 #define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 0x10 | |
| 3961 #define CERT_TRUST_IS_UNTRUSTED_ROOT 0x20 | |
| 3962 #define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 0x40 | |
| 3963 #define CERT_TRUST_IS_CYCLIC 0x80 | |
| 3964 | |
| 3965 #define CERT_TRUST_INVALID_EXTENSION 0x100 | |
| 3966 #define CERT_TRUST_INVALID_POLICY_CONSTRAINTS 0x200 | |
| 3967 #define CERT_TRUST_INVALID_BASIC_CONSTRAINTS 0x400 | |
| 3968 #define CERT_TRUST_INVALID_NAME_CONSTRAINTS 0x800 | |
| 3969 #define CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT 0x1000 | |
| 3970 #define CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT 0x2000 | |
| 3971 #define CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT 0x4000 | |
| 3972 #define CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT 0x8000 | |
| 3973 | |
| 3974 #define CERT_TRUST_IS_OFFLINE_REVOCATION 0x1000000 | |
| 3975 #define CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY 0x2000000 | |
| 3976 | |
| 3977 #define CERT_TRUST_IS_PARTIAL_CHAIN 0x10000 | |
| 3978 #define CERT_TRUST_CTL_IS_NOT_TIME_VALID 0x20000 | |
| 3979 #define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 0x40000 | |
| 3980 #define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 0x80000 | |
| 3981 | |
| 3982 #define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 0x1 | |
| 3983 #define CERT_TRUST_HAS_KEY_MATCH_ISSUER 0x2 | |
| 3984 #define CERT_TRUST_HAS_NAME_MATCH_ISSUER 0x4 | |
| 3985 #define CERT_TRUST_IS_SELF_SIGNED 0x8 | |
| 3986 | |
| 3987 #define CERT_TRUST_HAS_PREFERRED_ISSUER 0x100 | |
| 3988 #define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY 0x200 | |
| 3989 #define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 0x400 | |
| 3990 | |
| 3991 #define CERT_TRUST_IS_COMPLEX_CHAIN 0x10000 | |
| 3992 | |
| 3993 typedef struct _CERT_REVOCATION_INFO { | |
| 3994 DWORD cbSize; | |
| 3995 DWORD dwRevocationResult; | |
| 3996 LPCSTR pszRevocationOid; | |
| 3997 LPVOID pvOidSpecificInfo; | |
| 3998 WINBOOL fHasFreshnessTime; | |
| 3999 DWORD dwFreshnessTime; | |
| 4000 PCERT_REVOCATION_CRL_INFO pCrlInfo; | |
| 4001 } CERT_REVOCATION_INFO,*PCERT_REVOCATION_INFO; | |
| 4002 | |
| 4003 typedef struct _CERT_TRUST_LIST_INFO { | |
| 4004 DWORD cbSize; | |
| 4005 PCTL_ENTRY pCtlEntry; | |
| 4006 PCCTL_CONTEXT pCtlContext; | |
| 4007 } CERT_TRUST_LIST_INFO,*PCERT_TRUST_LIST_INFO; | |
| 4008 | |
| 4009 typedef struct _CERT_CHAIN_ELEMENT { | |
| 4010 DWORD cbSize; | |
| 4011 PCCERT_CONTEXT pCertContext; | |
| 4012 CERT_TRUST_STATUS TrustStatus; | |
| 4013 PCERT_REVOCATION_INFO pRevocationInfo; | |
| 4014 PCERT_ENHKEY_USAGE pIssuanceUsage; | |
| 4015 PCERT_ENHKEY_USAGE pApplicationUsage; | |
| 4016 LPCWSTR pwszExtendedErrorInfo; | |
| 4017 } CERT_CHAIN_ELEMENT,*PCERT_CHAIN_ELEMENT; | |
| 4018 | |
| 4019 typedef struct _CERT_SIMPLE_CHAIN { | |
| 4020 DWORD cbSize; | |
| 4021 CERT_TRUST_STATUS TrustStatus; | |
| 4022 DWORD cElement; | |
| 4023 PCERT_CHAIN_ELEMENT *rgpElement; | |
| 4024 PCERT_TRUST_LIST_INFO pTrustListInfo; | |
| 4025 WINBOOL fHasRevocationFreshnessTime; | |
| 4026 DWORD dwRevocationFreshnessTime; | |
| 4027 } CERT_SIMPLE_CHAIN,*PCERT_SIMPLE_CHAIN; | |
| 4028 | |
| 4029 typedef struct _CERT_CHAIN_CONTEXT CERT_CHAIN_CONTEXT,*PCERT_CHAIN_CONTEXT; | |
| 4030 typedef const CERT_CHAIN_CONTEXT *PCCERT_CHAIN_CONTEXT; | |
| 4031 | |
| 4032 struct _CERT_CHAIN_CONTEXT { | |
| 4033 DWORD cbSize; | |
| 4034 CERT_TRUST_STATUS TrustStatus; | |
| 4035 DWORD cChain; | |
| 4036 PCERT_SIMPLE_CHAIN *rgpChain; | |
| 4037 DWORD cLowerQualityChainContext; | |
| 4038 PCCERT_CHAIN_CONTEXT *rgpLowerQualityChainContext; | |
| 4039 WINBOOL fHasRevocationFreshnessTime; | |
| 4040 DWORD dwRevocationFreshnessTime; | |
| 4041 }; | |
| 4042 | |
| 4043 #define USAGE_MATCH_TYPE_AND 0x0 | |
| 4044 #define USAGE_MATCH_TYPE_OR 0x1 | |
| 4045 | |
| 4046 typedef struct _CERT_USAGE_MATCH { | |
| 4047 DWORD dwType; | |
| 4048 CERT_ENHKEY_USAGE Usage; | |
| 4049 } CERT_USAGE_MATCH,*PCERT_USAGE_MATCH; | |
| 4050 | |
| 4051 typedef struct _CTL_USAGE_MATCH { | |
| 4052 DWORD dwType; | |
| 4053 CTL_USAGE Usage; | |
| 4054 } CTL_USAGE_MATCH,*PCTL_USAGE_MATCH; | |
| 4055 | |
| 4056 typedef struct _CERT_CHAIN_PARA { | |
| 4057 DWORD cbSize; | |
| 4058 CERT_USAGE_MATCH RequestedUsage; | |
| 4059 #ifdef CERT_CHAIN_PARA_HAS_EXTRA_FIELDS | |
| 4060 CERT_USAGE_MATCH RequestedIssuancePolicy; | |
| 4061 DWORD dwUrlRetrievalTimeout; | |
| 4062 WINBOOL fCheckRevocationFreshnessTime; | |
| 4063 DWORD dwRevocationFreshnessTime; | |
| 4064 #endif | |
| 4065 } CERT_CHAIN_PARA,*PCERT_CHAIN_PARA; | |
| 4066 | |
| 4067 #define CERT_CHAIN_REVOCATION_CHECK_END_CERT 0x10000000 | |
| 4068 #define CERT_CHAIN_REVOCATION_CHECK_CHAIN 0x20000000 | |
| 4069 #define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000 | |
| 4070 #define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000 | |
| 4071 | |
| 4072 #define CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT 0x8000000 | |
| 4073 #define CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING 0x40 | |
| 4074 #define CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS 0x80 | |
| 4075 #define CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE 0x100 | |
| 4076 #define CERT_CHAIN_TIMESTAMP_TIME 0x200 | |
| 4077 | |
| 4078 WINIMPM WINBOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE hChainEngine,PCCERT_CONTEXT pCertContext,LPFILETIME pTime,HCERTSTORE hAdditionalStore,PCERT_CHAIN_PARA pChainPara,DWORD dwFlags,LPVOID pvReserved,PCCERT_CHAIN_CONTEXT *ppChainContext); | |
| 4079 WINIMPM VOID WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT pChainContext); | |
| 4080 WINIMPM PCCERT_CHAIN_CONTEXT WINAPI CertDuplicateCertificateChain(PCCERT_CHAIN_CONTEXT pChainContext); | |
| 4081 | |
| 4082 #define REVOCATION_OID_CRL_REVOCATION ((LPCSTR)1) | |
| 4083 | |
| 4084 typedef struct _CRL_REVOCATION_INFO { | |
| 4085 PCRL_ENTRY pCrlEntry; | |
| 4086 PCCRL_CONTEXT pCrlContext; | |
| 4087 PCCERT_CHAIN_CONTEXT pCrlIssuerChain; | |
| 4088 } CRL_REVOCATION_INFO,*PCRL_REVOCATION_INFO; | |
| 4089 | |
| 4090 WINIMPM PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE hCertStore,DWORD dwCertEncodingType,DWORD dwFindFlags,DWORD dwFindType,const void *pvFindPara,PCCERT_CHAIN_CONTEXT pPrevChainContext); | |
| 4091 | |
| 4092 #define CERT_CHAIN_FIND_BY_ISSUER 1 | |
| 4093 | |
| 4094 typedef WINBOOL (WINAPI *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK)(PCCERT_CONTEXT pCert,void *pvFindArg); | |
| 4095 | |
| 4096 typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA { | |
| 4097 DWORD cbSize; | |
| 4098 LPCSTR pszUsageIdentifier; | |
| 4099 DWORD dwKeySpec; | |
| 4100 DWORD dwAcquirePrivateKeyFlags; | |
| 4101 DWORD cIssuer; | |
| 4102 CERT_NAME_BLOB *rgIssuer; | |
| 4103 PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFindCallback; | |
| 4104 void *pvFindArg; | |
| 4105 #ifdef CERT_CHAIN_FIND_BY_ISSUER_PARA_HAS_EXTRA_FIELDS | |
| 4106 DWORD *pdwIssuerChainIndex; | |
| 4107 DWORD *pdwIssuerElementIndex; | |
| 4108 #endif | |
| 4109 } CERT_CHAIN_FIND_ISSUER_PARA,*PCERT_CHAIN_FIND_ISSUER_PARA,CERT_CHAIN_FIND_BY_ISSUER_PARA,*PCERT_CHAIN_FIND_BY_ISSUER_PARA; | |
| 4110 | |
| 4111 #define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 0x1 | |
| 4112 #define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 0x2 | |
| 4113 #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 0x4 | |
| 4114 #define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 0x8 | |
| 4115 #define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 0x4000 | |
| 4116 #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 0x8000 | |
| 4117 | |
| 4118 typedef struct _CERT_CHAIN_POLICY_PARA { | |
| 4119 DWORD cbSize; | |
| 4120 DWORD dwFlags; | |
| 4121 void *pvExtraPolicyPara; | |
| 4122 } CERT_CHAIN_POLICY_PARA,*PCERT_CHAIN_POLICY_PARA; | |
| 4123 | |
| 4124 typedef struct _CERT_CHAIN_POLICY_STATUS { | |
| 4125 DWORD cbSize; | |
| 4126 DWORD dwError; | |
| 4127 LONG lChainIndex; | |
| 4128 LONG lElementIndex; | |
| 4129 void *pvExtraPolicyStatus; | |
| 4130 } CERT_CHAIN_POLICY_STATUS,*PCERT_CHAIN_POLICY_STATUS; | |
| 4131 | |
| 4132 #define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG 0x1 | |
| 4133 #define CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG 0x2 | |
| 4134 #define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG 0x4 | |
| 4135 #define CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG 0x8 | |
| 4136 | |
| 4137 #define CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS (CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG | CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG | CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG) | |
| 4138 | |
| 4139 #define CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG 0x10 | |
| 4140 #define CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG 0x20 | |
| 4141 #define CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG 0x40 | |
| 4142 #define CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG 0x80 | |
| 4143 | |
| 4144 #define CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG 0x100 | |
| 4145 #define CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG 0x200 | |
| 4146 #define CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG 0x400 | |
| 4147 #define CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG 0x800 | |
| 4148 | |
| 4149 #define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS (CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG) | |
| 4150 | |
| 4151 #define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG 0x8000 | |
| 4152 #define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG 0x4000 | |
| 4153 | |
| 4154 WINIMPM WINBOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR pszPolicyOID,PCCERT_CHAIN_CONTEXT pChainContext,PCERT_CHAIN_POLICY_PARA pPolicyPara,PCERT_CHAIN_POLICY_STATUS pPolicyStatus); | |
| 4155 | |
| 4156 #define CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC "CertDllVerifyCertificateChainPolicy" | |
| 4157 | |
| 4158 #define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1) | |
| 4159 #define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2) | |
| 4160 #define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3) | |
| 4161 #define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4) | |
| 4162 #define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5) | |
| 4163 #define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6) | |
| 4164 #define CERT_CHAIN_POLICY_MICROSOFT_ROOT ((LPCSTR) 7) | |
| 4165 | |
| 4166 typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA { | |
| 4167 DWORD cbSize; | |
| 4168 DWORD dwRegPolicySettings; | |
| 4169 PCMSG_SIGNER_INFO pSignerInfo; | |
| 4170 } AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA,*PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA; | |
| 4171 | |
| 4172 typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS { | |
| 4173 DWORD cbSize; | |
| 4174 WINBOOL fCommercial; | |
| 4175 } AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS,*PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS; | |
| 4176 | |
| 4177 typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA { | |
| 4178 DWORD cbSize; | |
| 4179 DWORD dwRegPolicySettings; | |
| 4180 WINBOOL fCommercial; | |
| 4181 } AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA,*PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA; | |
| 4182 | |
| 4183 #define AUTHTYPE_CLIENT 1 | |
| 4184 #define AUTHTYPE_SERVER 2 | |
| 4185 | |
| 4186 typedef struct _HTTPSPolicyCallbackData { | |
| 4187 __MINGW_EXTENSION union { | |
| 4188 DWORD cbStruct; | |
| 4189 DWORD cbSize; | |
| 4190 }; | |
| 4191 DWORD dwAuthType; | |
| 4192 DWORD fdwChecks; | |
| 4193 WCHAR *pwszServerName; | |
| 4194 } HTTPSPolicyCallbackData,*PHTTPSPolicyCallbackData,SSL_EXTRA_CERT_CHAIN_POLICY_PARA,*PSSL_EXTRA_CERT_CHAIN_POLICY_PARA; | |
| 4195 | |
| 4196 #define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG 0x80000000 | |
| 4197 #define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG 0x40000000 | |
| 4198 | |
| 4199 #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x10000 | |
| 4200 | |
| 4201 WINIMPM WINBOOL WINAPI CryptStringToBinaryA(LPCSTR pszString,DWORD cchString,DWORD dwFlags,BYTE *pbBinary,DWORD *pcbBinary,DWORD *pdwSkip,DWORD *pdwFlags); | |
| 4202 WINIMPM WINBOOL WINAPI CryptStringToBinaryW(LPCWSTR pszString,DWORD cchString,DWORD dwFlags,BYTE *pbBinary,DWORD *pcbBinary,DWORD *pdwSkip,DWORD *pdwFlags); | |
| 4203 WINIMPM WINBOOL WINAPI CryptBinaryToStringA(CONST BYTE *pbBinary,DWORD cbBinary,DWORD dwFlags,LPSTR pszString,DWORD *pcchString); | |
| 4204 WINIMPM WINBOOL WINAPI CryptBinaryToStringW(CONST BYTE *pbBinary,DWORD cbBinary,DWORD dwFlags,LPWSTR pszString,DWORD *pcchString); | |
| 4205 | |
| 4206 #define CRYPT_STRING_BASE64HEADER 0x0 | |
| 4207 #define CRYPT_STRING_BASE64 0x1 | |
| 4208 #define CRYPT_STRING_BINARY 0x2 | |
| 4209 #define CRYPT_STRING_BASE64REQUESTHEADER 0x3 | |
| 4210 #define CRYPT_STRING_HEX 0x4 | |
| 4211 #define CRYPT_STRING_HEXASCII 0x5 | |
| 4212 #define CRYPT_STRING_BASE64_ANY 0x6 | |
| 4213 #define CRYPT_STRING_ANY 0x7 | |
| 4214 #define CRYPT_STRING_HEX_ANY 0x8 | |
| 4215 #define CRYPT_STRING_BASE64X509CRLHEADER 0x9 | |
| 4216 #define CRYPT_STRING_HEXADDR 0xa | |
| 4217 #define CRYPT_STRING_HEXASCIIADDR 0xb | |
| 4218 | |
| 4219 #define CRYPT_STRING_NOCR 0x80000000 | |
| 4220 | |
| 4221 WINIMPM HCERTSTORE WINAPI PFXImportCertStore(CRYPT_DATA_BLOB *pPFX,LPCWSTR szPassword,DWORD dwFlags); | |
| 4222 | |
| 4223 #define CRYPT_USER_KEYSET 0x1000 | |
| 4224 #define PKCS12_IMPORT_RESERVED_MASK 0xffff0000 | |
| 4225 | |
| 4226 WINIMPM WINBOOL WINAPI PFXIsPFXBlob(CRYPT_DATA_BLOB *pPFX); | |
| 4227 WINIMPM WINBOOL WINAPI PFXVerifyPassword(CRYPT_DATA_BLOB *pPFX,LPCWSTR szPassword,DWORD dwFlags); | |
| 4228 WINIMPM WINBOOL WINAPI PFXExportCertStoreEx(HCERTSTORE hStore,CRYPT_DATA_BLOB *pPFX,LPCWSTR szPassword,void *pvReserved,DWORD dwFlags); | |
| 4229 | |
| 4230 #define REPORT_NO_PRIVATE_KEY 0x1 | |
| 4231 #define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x2 | |
| 4232 #define EXPORT_PRIVATE_KEYS 0x4 | |
| 4233 #define PKCS12_EXPORT_RESERVED_MASK 0xffff0000 | |
| 4234 | |
| 4235 WINIMPM WINBOOL WINAPI PFXExportCertStore(HCERTSTORE hStore,CRYPT_DATA_BLOB *pPFX,LPCWSTR szPassword,DWORD dwFlags); | |
| 4236 | |
| 4237 #ifdef __cplusplus | |
| 4238 } | |
| 4239 #endif | |
| 4240 #endif |
