Diff

Not logged in

Differences From Artifact [01dc6f0e64f6c54b]:

To Artifact [56b59d671f703037]:


29 MS_DEF_DSS_DH_PROV 29 MS_DEF_DSS_DH_PROV 30 = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", 30 = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider", 31 MS_ENH_DSS_DH_PROV 31 MS_ENH_DSS_DH_PROV 32 = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", 32 = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider", 33 MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider" 33 MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider" 34 MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; 34 MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider"; 35 35 36 static if (WINVER > 0x501) { | 36 static if (_WIN32_WINNT > 0x501) { 37 const TCHAR[] MS_ENH_RSA_AES_PROV 37 const TCHAR[] MS_ENH_RSA_AES_PROV 38 = "Microsoft Enhanced RSA and AES Cryptographic Provider"; 38 = "Microsoft Enhanced RSA and AES Cryptographic Provider"; 39 } else static if (WINVER == 0x501) { | 39 } else static if (_WIN32_WINNT == 0x501) { 40 const TCHAR[] MS_ENH_RSA_AES_PROV 40 const TCHAR[] MS_ENH_RSA_AES_PROV 41 = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; 41 = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"; 42 } 42 } 43 43 44 ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } 44 ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; } 45 ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } 45 ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; } 46 ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } 46 ALG_ID GET_ALG_SID (ALG_ID x) { return x & 0x01FF; } ................................................................................................................................................................................ 132 CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, 132 CALG_TLS1PRF = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF, 133 CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_ 133 CALG_AES_128 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_ 134 CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_ 134 CALG_AES_192 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_ 135 CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_ 135 CALG_AES_256 = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_ 136 CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, 136 CALG_AES = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES, 137 } 137 } 138 138 139 /+ < > 139 enum { 140 #define CRYPT_VERIFYCONTEXT 0xF0000000 | 140 CRYPT_VERIFYCONTEXT = 0xF0000000, > 141 } > 142 > 143 enum { 141 #define CRYPT_NEWKEYSET 8 | 144 CRYPT_NEWKEYSET = 8, 142 #define CRYPT_DELETEKEYSET 16 | 145 CRYPT_DELETEKEYSET = 16, 143 #define CRYPT_MACHINE_KEYSET 32 | 146 CRYPT_MACHINE_KEYSET = 32, 144 #define CRYPT_SILENT 64 | 147 CRYPT_SILENT = 64, > 148 } > 149 > 150 enum { 145 #define CRYPT_EXPORTABLE 1 | 151 CRYPT_EXPORTABLE = 1, 146 #define CRYPT_USER_PROTECTED 2 | 152 CRYPT_USER_PROTECTED = 2, 147 #define CRYPT_CREATE_SALT 4 | 153 CRYPT_CREATE_SALT = 4, 148 #define CRYPT_UPDATE_KEY 8 | 154 CRYPT_UPDATE_KEY = 8, > 155 } > 156 > 157 enum { 149 #define SIMPLEBLOB 1 | 158 SIMPLEBLOB = 1, 150 #define PUBLICKEYBLOB 6 | 159 PUBLICKEYBLOB = 6, 151 #define PRIVATEKEYBLOB 7 | 160 PRIVATEKEYBLOB = 7, 152 #define PLAINTEXTKEYBLOB 8 | 161 PLAINTEXTKEYBLOB = 8, 153 #define OPAQUEKEYBLOB 9 | 162 OPAQUEKEYBLOB = 9, 154 #define PUBLICKEYBLOBEX 10 | 163 PUBLICKEYBLOBEX = 10, 155 #define SYMMETRICWRAPKEYBLOB 11 | 164 SYMMETRICWRAPKEYBLOB = 11, > 165 } > 166 > 167 enum { 156 #define AT_KEYEXCHANGE 1 | 168 AT_KEYEXCHANGE = 1, 157 #define AT_SIGNATURE 2 | 169 AT_SIGNATURE = 2, > 170 } > 171 > 172 enum { 158 #define CRYPT_USERDATA 1 | 173 CRYPT_USERDATA = 1, > 174 } > 175 > 176 enum { 159 #define PKCS5_PADDING 1 | 177 PKCS5_PADDING = 1, > 178 } > 179 > 180 enum { 160 #define CRYPT_MODE_CBC 1 | 181 CRYPT_MODE_CBC = 1, 161 #define CRYPT_MODE_ECB 2 | 182 CRYPT_MODE_ECB = 2, 162 #define CRYPT_MODE_OFB 3 | 183 CRYPT_MODE_OFB = 3, 163 #define CRYPT_MODE_CFB 4 | 184 CRYPT_MODE_CFB = 4, 164 #define CRYPT_MODE_CTS 5 | 185 CRYPT_MODE_CTS = 5, 165 #define CRYPT_MODE_CBCI 6 | 186 CRYPT_MODE_CBCI = 6, 166 #define CRYPT_MODE_CFBP 7 | 187 CRYPT_MODE_CFBP = 7, 167 #define CRYPT_MODE_OFBP 8 | 188 CRYPT_MODE_OFBP = 8, 168 #define CRYPT_MODE_CBCOFM 9 | 189 CRYPT_MODE_CBCOFM = 9, 169 #define CRYPT_MODE_CBCOFMI 10 | 190 CRYPT_MODE_CBCOFMI = 10, > 191 } > 192 > 193 enum { 170 #define CRYPT_ENCRYPT 1 | 194 CRYPT_ENCRYPT = 1, 171 #define CRYPT_DECRYPT 2 | 195 CRYPT_DECRYPT = 2, 172 #define CRYPT_EXPORT 4 | 196 CRYPT_EXPORT = 4, 173 #define CRYPT_READ 8 | 197 CRYPT_READ = 8, 174 #define CRYPT_WRITE 16 | 198 CRYPT_WRITE = 16, 175 #define CRYPT_MAC 32 | 199 CRYPT_MAC = 32, > 200 } > 201 > 202 enum { 176 #define HP_ALGID 1 | 203 HP_ALGID = 1, 177 #define HP_HASHVAL 2 | 204 HP_HASHVAL = 2, 178 #define HP_HASHSIZE 4 | 205 HP_HASHSIZE = 4, 179 #define HP_HMAC_INFO 5 | 206 HP_HMAC_INFO = 5, > 207 } > 208 > 209 enum { 180 #define CRYPT_FAILED FALSE | 210 CRYPT_FAILED = FALSE, 181 #define CRYPT_SUCCEED TRUE | 211 CRYPT_SUCCEED = TRUE, 182 #define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED) < 183 #define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED) < > 212 } > 213 > 214 bool RCRYPT_SUCCEEDED(BOOL r) { return r==CRYPT_SUCCEED; } > 215 bool RCRYPT_FAILED(BOOL r) { return r==CRYPT_FAILED; } > 216 > 217 enum { 184 #define PP_ENUMALGS 1 | 218 PP_ENUMALGS = 1, 185 #define PP_ENUMCONTAINERS 2 | 219 PP_ENUMCONTAINERS = 2, 186 #define PP_IMPTYPE 3 | 220 PP_IMPTYPE = 3, 187 #define PP_NAME 4 | 221 PP_NAME = 4, 188 #define PP_VERSION 5 | 222 PP_VERSION = 5, 189 #define PP_CONTAINER 6 | 223 PP_CONTAINER = 6, 190 #define PP_CHANGE_PASSWORD 7 | 224 PP_CHANGE_PASSWORD = 7, 191 #define PP_KEYSET_SEC_DESCR 8 | 225 PP_KEYSET_SEC_DESCR = 8, 192 #define PP_CERTCHAIN 9 | 226 PP_CERTCHAIN = 9, 193 #define PP_KEY_TYPE_SUBTYPE 10 | 227 PP_KEY_TYPE_SUBTYPE = 10, 194 #define PP_PROVTYPE 16 | 228 PP_PROVTYPE = 16, 195 #define PP_KEYSTORAGE 17 | 229 PP_KEYSTORAGE = 17, 196 #define PP_APPLI_CERT 18 | 230 PP_APPLI_CERT = 18, 197 #define PP_SYM_KEYSIZE 19 | 231 PP_SYM_KEYSIZE = 19, 198 #define PP_SESSION_KEYSIZE 20 | 232 PP_SESSION_KEYSIZE = 20, 199 #define PP_UI_PROMPT 21 | 233 PP_UI_PROMPT = 21, 200 #define PP_ENUMALGS_EX 22 | 234 PP_ENUMALGS_EX = 22, 201 #define PP_ENUMMANDROOTS 25 | 235 PP_ENUMMANDROOTS = 25, 202 #define PP_ENUMELECTROOTS 26 | 236 PP_ENUMELECTROOTS = 26, 203 #define PP_KEYSET_TYPE 27 | 237 PP_KEYSET_TYPE = 27, 204 #define PP_ADMIN_PIN 31 | 238 PP_ADMIN_PIN = 31, 205 #define PP_KEYEXCHANGE_PIN 32 | 239 PP_KEYEXCHANGE_PIN = 32, 206 #define PP_SIGNATURE_PIN 33 | 240 PP_SIGNATURE_PIN = 33, 207 #define PP_SIG_KEYSIZE_INC 34 | 241 PP_SIG_KEYSIZE_INC = 34, 208 #define PP_KEYX_KEYSIZE_INC 35 | 242 PP_KEYX_KEYSIZE_INC = 35, 209 #define PP_UNIQUE_CONTAINER 36 | 243 PP_UNIQUE_CONTAINER = 36, 210 #define PP_SGC_INFO 37 | 244 PP_SGC_INFO = 37, 211 #define PP_USE_HARDWARE_RNG 38 | 245 PP_USE_HARDWARE_RNG = 38, 212 #define PP_KEYSPEC 39 | 246 PP_KEYSPEC = 39, 213 #define PP_ENUMEX_SIGNING_PROT 40 | 247 PP_ENUMEX_SIGNING_PROT = 40, > 248 } > 249 > 250 enum { 214 #define CRYPT_FIRST 1 | 251 CRYPT_FIRST = 1, 215 #define CRYPT_NEXT 2 | 252 CRYPT_NEXT = 2, > 253 } > 254 > 255 enum { 216 #define CRYPT_IMPL_HARDWARE 1 | 256 CRYPT_IMPL_HARDWARE = 1, 217 #define CRYPT_IMPL_SOFTWARE 2 | 257 CRYPT_IMPL_SOFTWARE = 2, 218 #define CRYPT_IMPL_MIXED 3 | 258 CRYPT_IMPL_MIXED = 3, 219 #define CRYPT_IMPL_UNKNOWN 4 | 259 CRYPT_IMPL_UNKNOWN = 4, > 260 } > 261 > 262 enum { 220 #define PROV_RSA_FULL 1 | 263 PROV_RSA_FULL = 1, 221 #define PROV_RSA_SIG 2 | 264 PROV_RSA_SIG = 2, 222 #define PROV_DSS 3 | 265 PROV_DSS = 3, 223 #define PROV_FORTEZZA 4 | 266 PROV_FORTEZZA = 4, 224 #define PROV_MS_MAIL 5 | 267 PROV_MS_MAIL = 5, 225 #define PROV_SSL 6 | 268 PROV_SSL = 6, 226 #define PROV_STT_MER 7 | 269 PROV_STT_MER = 7, 227 #define PROV_STT_ACQ 8 | 270 PROV_STT_ACQ = 8, 228 #define PROV_STT_BRND 9 | 271 PROV_STT_BRND = 9, 229 #define PROV_STT_ROOT 10 | 272 PROV_STT_ROOT = 10, 230 #define PROV_STT_ISS 11 | 273 PROV_STT_ISS = 11, 231 #define PROV_RSA_SCHANNEL 12 | 274 PROV_RSA_SCHANNEL = 12, 232 #define PROV_DSS_DH 13 | 275 PROV_DSS_DH = 13, 233 #define PROV_EC_ECDSA_SIG 14 | 276 PROV_EC_ECDSA_SIG = 14, 234 #define PROV_EC_ECNRA_SIG 15 | 277 PROV_EC_ECNRA_SIG = 15, 235 #define PROV_EC_ECDSA_FULL 16 | 278 PROV_EC_ECDSA_FULL = 16, 236 #define PROV_EC_ECNRA_FULL 17 | 279 PROV_EC_ECNRA_FULL = 17, 237 #define PROV_DH_SCHANNEL 18 | 280 PROV_DH_SCHANNEL = 18, 238 #define PROV_SPYRUS_LYNKS 20 | 281 PROV_SPYRUS_LYNKS = 20, 239 #define PROV_RNG 21 | 282 PROV_RNG = 21, 240 #define PROV_INTEL_SEC 22 | 283 PROV_INTEL_SEC = 22, 241 #define PROV_RSA_AES 24 | 284 PROV_RSA_AES = 24, 242 #define MAXUIDLEN 64 | 285 MAXUIDLEN = 64, > 286 } > 287 > 288 enum { 243 #define CUR_BLOB_VERSION 2 | 289 CUR_BLOB_VERSION = 2, > 290 } > 291 > 292 enum { 244 #define X509_ASN_ENCODING 1 | 293 X509_ASN_ENCODING = 1, 245 #define PKCS_7_ASN_ENCODING 65536 | 294 PKCS_7_ASN_ENCODING = 65536, > 295 } > 296 > 297 enum { 246 #define CERT_V1 0 | 298 CERT_V1 = 0, 247 #define CERT_V2 1 | 299 CERT_V2 = 1, 248 #define CERT_V3 2 | 300 CERT_V3 = 2, > 301 } > 302 > 303 enum { 249 #define CERT_E_CHAINING (-2146762486) | 304 CERT_E_CHAINING = (-2146762486), 250 #define CERT_E_CN_NO_MATCH (-2146762481) | 305 CERT_E_CN_NO_MATCH = (-2146762481), 251 #define CERT_E_EXPIRED (-2146762495) | 306 CERT_E_EXPIRED = (-2146762495), 252 #define CERT_E_PURPOSE (-2146762490) | 307 CERT_E_PURPOSE = (-2146762490), 253 #define CERT_E_REVOCATION_FAILURE (-2146762482) | 308 CERT_E_REVOCATION_FAILURE = (-2146762482), 254 #define CERT_E_REVOKED (-2146762484) | 309 CERT_E_REVOKED = (-2146762484), 255 #define CERT_E_ROLE (-2146762493) | 310 CERT_E_ROLE = (-2146762493), 256 #define CERT_E_UNTRUSTEDROOT (-2146762487) | 311 CERT_E_UNTRUSTEDROOT = (-2146762487), 257 #define CERT_E_UNTRUSTEDTESTROOT (-2146762483) | 312 CERT_E_UNTRUSTEDTESTROOT = (-2146762483), 258 #define CERT_E_VALIDITYPERIODNESTING (-2146762494) | 313 CERT_E_VALIDITYPERIODNESTING = (-2146762494), 259 #define CERT_E_WRONG_USAGE (-2146762480) | 314 CERT_E_WRONG_USAGE = (-2146762480), 260 #define CERT_E_PATHLENCONST (-2146762492) | 315 CERT_E_PATHLENCONST = (-2146762492), 261 #define CERT_E_CRITICAL (-2146762491) | 316 CERT_E_CRITICAL = (-2146762491), 262 #define CERT_E_ISSUERCHAINING (-2146762489) | 317 CERT_E_ISSUERCHAINING = (-2146762489), 263 #define CERT_E_MALFORMED (-2146762488) | 318 CERT_E_MALFORMED = (-2146762488), 264 #define CRYPT_E_REVOCATION_OFFLINE (-2146885613) | 319 CRYPT_E_REVOCATION_OFFLINE = (-2146885613), 265 #define CRYPT_E_REVOKED (-2146885616) | 320 CRYPT_E_REVOKED = (-2146885616), 266 #define TRUST_E_BASIC_CONSTRAINTS (-2146869223) | 321 TRUST_E_BASIC_CONSTRAINTS = (-2146869223), 267 #define TRUST_E_CERT_SIGNATURE (-2146869244) | 322 TRUST_E_CERT_SIGNATURE = (-2146869244), 268 #define TRUST_E_FAIL (-2146762485) | 323 TRUST_E_FAIL = (-2146762485), > 324 } > 325 > 326 enum { 269 #define CERT_TRUST_NO_ERROR 0 | 327 CERT_TRUST_NO_ERROR = 0, 270 #define CERT_TRUST_IS_NOT_TIME_VALID 1 | 328 CERT_TRUST_IS_NOT_TIME_VALID = 1, 271 #define CERT_TRUST_IS_NOT_TIME_NESTED 2 | 329 CERT_TRUST_IS_NOT_TIME_NESTED = 2, 272 #define CERT_TRUST_IS_REVOKED 4 | 330 CERT_TRUST_IS_REVOKED = 4, 273 #define CERT_TRUST_IS_NOT_SIGNATURE_VALID 8 | 331 CERT_TRUST_IS_NOT_SIGNATURE_VALID = 8, 274 #define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 16 | 332 CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 16, 275 #define CERT_TRUST_IS_UNTRUSTED_ROOT 32 | 333 CERT_TRUST_IS_UNTRUSTED_ROOT = 32, 276 #define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 64 | 334 CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 64, 277 #define CERT_TRUST_IS_CYCLIC 128 | 335 CERT_TRUST_IS_CYCLIC = 128, 278 #define CERT_TRUST_IS_PARTIAL_CHAIN 65536 | 336 CERT_TRUST_IS_PARTIAL_CHAIN = 65536, 279 #define CERT_TRUST_CTL_IS_NOT_TIME_VALID 131072 | 337 CERT_TRUST_CTL_IS_NOT_TIME_VALID = 131072, 280 #define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 262144 | 338 CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 262144, 281 #define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 524288 | 339 CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 524288, > 340 } > 341 > 342 enum { 282 #define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 1 | 343 CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 1, 283 #define CERT_TRUST_HAS_KEY_MATCH_ISSUER 2 | 344 CERT_TRUST_HAS_KEY_MATCH_ISSUER = 2, 284 #define CERT_TRUST_HAS_NAME_MATCH_ISSUER 4 | 345 CERT_TRUST_HAS_NAME_MATCH_ISSUER = 4, 285 #define CERT_TRUST_IS_SELF_SIGNED 8 | 346 CERT_TRUST_IS_SELF_SIGNED = 8, 286 #define CERT_TRUST_IS_COMPLEX_CHAIN 65536 | 347 CERT_TRUST_IS_COMPLEX_CHAIN = 65536, > 348 } > 349 > 350 enum { 287 #define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1) | 351 CERT_CHAIN_POLICY_BASE = cast(LPCSTR) 1, 288 #define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2) | 352 CERT_CHAIN_POLICY_AUTHENTICODE = cast(LPCSTR) 2, 289 #define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3) | 353 CERT_CHAIN_POLICY_AUTHENTICODE_TS = cast(LPCSTR) 3, 290 #define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4) | 354 CERT_CHAIN_POLICY_SSL = cast(LPCSTR) 4, 291 #define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5) | 355 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = cast(LPCSTR) 5, 292 #define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6) | 356 CERT_CHAIN_POLICY_NT_AUTH = cast(LPCSTR) 6, > 357 } > 358 > 359 enum { 293 #define USAGE_MATCH_TYPE_AND 0 | 360 USAGE_MATCH_TYPE_AND = 0, 294 #define USAGE_MATCH_TYPE_OR 1 | 361 USAGE_MATCH_TYPE_OR = 1, > 362 } > 363 > 364 enum { 295 #define CERT_SIMPLE_NAME_STR 1 | 365 CERT_SIMPLE_NAME_STR = 1, 296 #define CERT_OID_NAME_STR 2 | 366 CERT_OID_NAME_STR = 2, 297 #define CERT_X500_NAME_STR 3 | 367 CERT_X500_NAME_STR = 3, > 368 } > 369 enum { 298 #define CERT_NAME_STR_SEMICOLON_FLAG 1073741824 | 370 CERT_NAME_STR_SEMICOLON_FLAG = 1073741824, 299 #define CERT_NAME_STR_CRLF_FLAG 134217728 | 371 CERT_NAME_STR_CRLF_FLAG = 134217728, 300 #define CERT_NAME_STR_NO_PLUS_FLAG 536870912 | 372 CERT_NAME_STR_NO_PLUS_FLAG = 536870912, 301 #define CERT_NAME_STR_NO_QUOTING_FLAG 268435456 | 373 CERT_NAME_STR_NO_QUOTING_FLAG = 268435456, 302 #define CERT_NAME_STR_REVERSE_FLAG 33554432 | 374 CERT_NAME_STR_REVERSE_FLAG = 33554432, 303 #define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 131072 | 375 CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = 131072, > 376 } > 377 > 378 enum { 304 #define CERT_FIND_ANY 0 | 379 CERT_FIND_ANY = 0, 305 #define CERT_FIND_CERT_ID 1048576 | 380 CERT_FIND_CERT_ID = 1048576, 306 #define CERT_FIND_CTL_USAGE 655360 | 381 CERT_FIND_CTL_USAGE = 655360, 307 #define CERT_FIND_ENHKEY_USAGE 655360 | 382 CERT_FIND_ENHKEY_USAGE = 655360, 308 #define CERT_FIND_EXISTING 851968 | 383 CERT_FIND_EXISTING = 851968, 309 #define CERT_FIND_HASH 65536 | 384 CERT_FIND_HASH = 65536, 310 #define CERT_FIND_ISSUER_ATTR 196612 | 385 CERT_FIND_ISSUER_ATTR = 196612, 311 #define CERT_FIND_ISSUER_NAME 131076 | 386 CERT_FIND_ISSUER_NAME = 131076, 312 #define CERT_FIND_ISSUER_OF 786432 | 387 CERT_FIND_ISSUER_OF = 786432, 313 #define CERT_FIND_KEY_IDENTIFIER 983040 | 388 CERT_FIND_KEY_IDENTIFIER = 983040, 314 #define CERT_FIND_KEY_SPEC 589824 | 389 CERT_FIND_KEY_SPEC = 589824, 315 #define CERT_FIND_MD5_HASH 262144 | 390 CERT_FIND_MD5_HASH = 262144, 316 #define CERT_FIND_PROPERTY 327680 | 391 CERT_FIND_PROPERTY = 327680, 317 #define CERT_FIND_PUBLIC_KEY 393216 | 392 CERT_FIND_PUBLIC_KEY = 393216, 318 #define CERT_FIND_SHA1_HASH 65536 | 393 CERT_FIND_SHA1_HASH = 65536, 319 #define CERT_FIND_SIGNATURE_HASH 917504 | 394 CERT_FIND_SIGNATURE_HASH = 917504, 320 #define CERT_FIND_SUBJECT_ATTR 196615 | 395 CERT_FIND_SUBJECT_ATTR = 196615, 321 #define CERT_FIND_SUBJECT_CERT 720896 | 396 CERT_FIND_SUBJECT_CERT = 720896, 322 #define CERT_FIND_SUBJECT_NAME 131079 | 397 CERT_FIND_SUBJECT_NAME = 131079, 323 #define CERT_FIND_SUBJECT_STR_A 458759 | 398 CERT_FIND_SUBJECT_STR_A = 458759, 324 #define CERT_FIND_SUBJECT_STR_W 524295 | 399 CERT_FIND_SUBJECT_STR_W = 524295, 325 #define CERT_FIND_ISSUER_STR_A 458756 | 400 CERT_FIND_ISSUER_STR_A = 458756, 326 #define CERT_FIND_ISSUER_STR_W 524292 | 401 CERT_FIND_ISSUER_STR_W = 524292, > 402 } > 403 > 404 enum { 327 #define CERT_FIND_OR_ENHKEY_USAGE_FLAG 16 | 405 CERT_FIND_OR_ENHKEY_USAGE_FLAG = 16, 328 #define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 1 | 406 CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = 1, 329 #define CERT_FIND_NO_ENHKEY_USAGE_FLAG 8 | 407 CERT_FIND_NO_ENHKEY_USAGE_FLAG = 8, 330 #define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 32 | 408 CERT_FIND_VALID_ENHKEY_USAGE_FLAG = 32, 331 #define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 2 | 409 CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = 2, > 410 } > 411 > 412 enum { 332 #define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 2 | 413 CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = 2, 333 #define CERT_UNICODE_IS_RDN_ATTRS_FLAG 1 | 414 CERT_UNICODE_IS_RDN_ATTRS_FLAG = 1, 334 #define CERT_CHAIN_FIND_BY_ISSUER 1 | 415 CERT_CHAIN_FIND_BY_ISSUER = 1, > 416 } > 417 > 418 enum { 335 #define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 1 | 419 CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG = 1, 336 #define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 2 | 420 CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG = 2, 337 #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 32768 < 338 #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 4 | 421 CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 4, 339 #define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 8 | 422 CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG = 8, 340 #define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 16384 | 423 CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG = 16384, > 424 CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG = 32768, > 425 } > 426 > 427 enum { 341 #define CERT_STORE_PROV_SYSTEM 10 | 428 CERT_STORE_PROV_SYSTEM = 10, 342 #define CERT_SYSTEM_STORE_LOCAL_MACHINE 131072 | 429 CERT_SYSTEM_STORE_LOCAL_MACHINE = 131072, > 430 } > 431 > 432 enum { 343 #define szOID_PKIX_KP_SERVER_AUTH "4235600" | 433 szOID_PKIX_KP_SERVER_AUTH = "4235600", 344 #define szOID_SERVER_GATED_CRYPTO "4235658" | 434 szOID_SERVER_GATED_CRYPTO = "4235658", 345 #define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1" | 435 szOID_SGC_NETSCAPE = "2.16.840.1.113730.4.1", 346 #define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2" | 436 szOID_PKIX_KP_CLIENT_AUTH = "1.3.6.1.5.5.7.3.2", > 437 } > 438 > 439 enum { 347 #define CRYPT_NOHASHOID 0x00000001 | 440 CRYPT_NOHASHOID = 0x00000001, 348 #define CRYPT_NO_SALT 0x10 | 441 CRYPT_NO_SALT = 0x10, 349 #define CRYPT_PREGEN 0x40 | 442 CRYPT_PREGEN = 0x40, > 443 } > 444 > 445 enum { 350 #define CRYPT_RECIPIENT 0x10 | 446 CRYPT_RECIPIENT = 0x10, 351 #define CRYPT_INITIATOR 0x40 | 447 CRYPT_INITIATOR = 0x40, 352 #define CRYPT_ONLINE 0x80 | 448 CRYPT_ONLINE = 0x80, 353 #define CRYPT_SF 0x100 | 449 CRYPT_SF = 0x100, 354 #define CRYPT_CREATE_IV 0x200 | 450 CRYPT_CREATE_IV = 0x200, 355 #define CRYPT_KEK 0x400 | 451 CRYPT_KEK = 0x400, 356 #define CRYPT_DATA_KEY 0x800 | 452 CRYPT_DATA_KEY = 0x800, 357 #define CRYPT_VOLATILE 0x1000 | 453 CRYPT_VOLATILE = 0x1000, 358 #define CRYPT_SGCKEY 0x2000 | 454 CRYPT_SGCKEY = 0x2000, > 455 } > 456 > 457 enum { 359 #define KP_IV 0x00000001 | 458 KP_IV = 0x00000001, 360 #define KP_SALT 0x00000002 | 459 KP_SALT = 0x00000002, 361 #define KP_PADDING 0x00000003 | 460 KP_PADDING = 0x00000003, 362 #define KP_MODE 0x00000004 | 461 KP_MODE = 0x00000004, 363 #define KP_MODE_BITS 0x00000005 | 462 KP_MODE_BITS = 0x00000005, 364 #define KP_PERMISSIONS 0x00000006 | 463 KP_PERMISSIONS = 0x00000006, 365 #define KP_ALGID 0x00000007 | 464 KP_ALGID = 0x00000007, 366 #define KP_BLOCKLEN 0x00000008 | 465 KP_BLOCKLEN = 0x00000008, 367 #define KP_KEYLEN 0x00000009 | 466 KP_KEYLEN = 0x00000009, 368 #define KP_SALT_EX 0x0000000a | 467 KP_SALT_EX = 0x0000000a, 369 #define KP_P 0x0000000b | 468 KP_P = 0x0000000b, 370 #define KP_G 0x0000000c | 469 KP_G = 0x0000000c, 371 #define KP_Q 0x0000000d | 470 KP_Q = 0x0000000d, 372 #define KP_X 0x0000000e | 471 KP_X = 0x0000000e, 373 #define KP_Y 0x0000000f | 472 KP_Y = 0x0000000f, 374 #define KP_RA 0x00000010 | 473 KP_RA = 0x00000010, 375 #define KP_RB 0x00000011 | 474 KP_RB = 0x00000011, 376 #define KP_INFO 0x00000012 | 475 KP_INFO = 0x00000012, 377 #define KP_EFFECTIVE_KEYLEN 0x00000013 | 476 KP_EFFECTIVE_KEYLEN = 0x00000013, 378 #define KP_SCHANNEL_ALG 0x00000014 | 477 KP_SCHANNEL_ALG = 0x00000014, 379 #define KP_PUB_PARAMS 0x00000027 | 478 KP_PUB_PARAMS = 0x00000027, > 479 } > 480 > 481 enum { 380 #define CRYPT_FLAG_PCT1 0x0001 | 482 CRYPT_FLAG_PCT1 = 0x0001, 381 #define CRYPT_FLAG_SSL2 0x0002 | 483 CRYPT_FLAG_SSL2 = 0x0002, 382 #define CRYPT_FLAG_SSL3 0x0004 | 484 CRYPT_FLAG_SSL3 = 0x0004, 383 #define CRYPT_FLAG_TLS1 0x0008 | 485 CRYPT_FLAG_TLS1 = 0x0008, 384 #define CRYPT_FLAG_IPSEC 0x0010 | 486 CRYPT_FLAG_IPSEC = 0x0010, 385 #define CRYPT_FLAG_SIGNING 0x0020 | 487 CRYPT_FLAG_SIGNING = 0x0020, > 488 } > 489 > 490 enum { 386 #define SCHANNEL_MAC_KEY 0x00000000 | 491 SCHANNEL_MAC_KEY = 0x00000000, 387 #define SCHANNEL_ENC_KEY 0x00000001 | 492 SCHANNEL_ENC_KEY = 0x00000001, > 493 } > 494 > 495 enum { 388 #define INTERNATIONAL_USAGE 0x00000001 | 496 INTERNATIONAL_USAGE = 0x00000001, 389 +/ < > 497 } > 498 390 499 391 alias UINT ALG_ID; 500 alias UINT ALG_ID; 392 alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; 501 alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH; 393 alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; 502 alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE; 394 503 395 struct VTableProvStruc { 504 struct VTableProvStruc { 396 FARPROC FuncVerifyImage; 505 FARPROC FuncVerifyImage; ................................................................................................................................................................................ 484 struct CERT_CONTEXT { 593 struct CERT_CONTEXT { 485 DWORD dwCertEncodingType; 594 DWORD dwCertEncodingType; 486 BYTE* pbCertEncoded; 595 BYTE* pbCertEncoded; 487 DWORD cbCertEncoded; 596 DWORD cbCertEncoded; 488 PCERT_INFO pCertInfo; 597 PCERT_INFO pCertInfo; 489 HCERTSTORE hCertStore; 598 HCERTSTORE hCertStore; 490 } 599 } 491 alias CERT_CONTEXT* PCERT_CONTEXT; | 600 alias CERT_CONTEXT* PCERT_CONTEXT; 492 alias CPtr!(CERT_CONTEXT) PCCERT_CONTEXT; | 601 alias const(CERT_CONTEXT)* PCCERT_CONTEXT; 493 602 494 struct CTL_USAGE { 603 struct CTL_USAGE { 495 DWORD cUsageIdentifier; 604 DWORD cUsageIdentifier; 496 LPSTR* rgpszUsageIdentifier; 605 LPSTR* rgpszUsageIdentifier; 497 } 606 } 498 alias CTL_USAGE CERT_ENHKEY_USAGE; 607 alias CTL_USAGE CERT_ENHKEY_USAGE; 499 alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; 608 alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE; ................................................................................................................................................................................ 565 struct CRL_CONTEXT { 674 struct CRL_CONTEXT { 566 DWORD dwCertEncodingType; 675 DWORD dwCertEncodingType; 567 BYTE* pbCrlEncoded; 676 BYTE* pbCrlEncoded; 568 DWORD cbCrlEncoded; 677 DWORD cbCrlEncoded; 569 PCRL_INFO pCrlInfo; 678 PCRL_INFO pCrlInfo; 570 HCERTSTORE hCertStore; 679 HCERTSTORE hCertStore; 571 } 680 } 572 alias CRL_CONTEXT* PCRL_CONTEXT; | 681 alias CRL_CONTEXT* PCRL_CONTEXT; 573 alias CPtr!(CRL_CONTEXT) PCCRL_CONTEXT; | 682 alias const(CRL_CONTEXT)* PCCRL_CONTEXT; 574 683 575 struct CERT_REVOCATION_CRL_INFO { 684 struct CERT_REVOCATION_CRL_INFO { 576 DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; 685 DWORD cbSize = CERT_REVOCATION_CRL_INFO.sizeof; 577 PCCRL_CONTEXT pBaseCRLContext; 686 PCCRL_CONTEXT pBaseCRLContext; 578 PCCRL_CONTEXT pDeltaCRLContext; 687 PCCRL_CONTEXT pDeltaCRLContext; 579 PCRL_ENTRY pCrlEntry; 688 PCRL_ENTRY pCrlEntry; 580 BOOL fDeltaCrlEntry; 689 BOOL fDeltaCrlEntry; ................................................................................................................................................................................ 639 DWORD cbCtlEncoded; 748 DWORD cbCtlEncoded; 640 PCTL_INFO pCtlInfo; 749 PCTL_INFO pCtlInfo; 641 HCERTSTORE hCertStore; 750 HCERTSTORE hCertStore; 642 HCRYPTMSG hCryptMsg; 751 HCRYPTMSG hCryptMsg; 643 BYTE* pbCtlContent; 752 BYTE* pbCtlContent; 644 DWORD cbCtlContent; 753 DWORD cbCtlContent; 645 } 754 } 646 alias CTL_CONTEXT* PCTL_CONTEXT; | 755 alias CTL_CONTEXT* PCTL_CONTEXT; 647 alias CPtr!(CTL_CONTEXT) PCCTL_CONTEXT; | 756 alias const(CTL_CONTEXT)* PCCTL_CONTEXT; 648 757 649 struct CERT_TRUST_LIST_INFO { 758 struct CERT_TRUST_LIST_INFO { 650 DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; 759 DWORD cbSize = CERT_TRUST_LIST_INFO.sizeof; 651 PCTL_ENTRY pCtlEntry; 760 PCTL_ENTRY pCtlEntry; 652 PCCTL_CONTEXT pCtlContext; 761 PCCTL_CONTEXT pCtlContext; 653 } 762 } 654 alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; 763 alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO; ................................................................................................................................................................................ 661 PCERT_TRUST_LIST_INFO pTrustListInfo; 770 PCERT_TRUST_LIST_INFO pTrustListInfo; 662 BOOL fHasRevocationFreshnessTime; 771 BOOL fHasRevocationFreshnessTime; 663 DWORD dwRevocationFreshnessTime; 772 DWORD dwRevocationFreshnessTime; 664 } 773 } 665 alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; 774 alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN; 666 775 667 /* #if (_WIN32_WINNT>=0x500) */ 776 /* #if (_WIN32_WINNT>=0x500) */ 668 alias CPtr!(CERT_CHAIN_CONTEXT) PCCERT_CHAIN_CONTEXT; | 777 alias const(CERT_CHAIN_CONTEXT)* PCCERT_CHAIN_CONTEXT; 669 struct CERT_CHAIN_CONTEXT { 778 struct CERT_CHAIN_CONTEXT { 670 DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; 779 DWORD cbSize = CERT_CHAIN_CONTEXT.sizeof; 671 CERT_TRUST_STATUS TrustStatus; 780 CERT_TRUST_STATUS TrustStatus; 672 DWORD cChain; 781 DWORD cChain; 673 PCERT_SIMPLE_CHAIN* rgpChain; 782 PCERT_SIMPLE_CHAIN* rgpChain; 674 DWORD cLowerQualityChainContext; 783 DWORD cLowerQualityChainContext; 675 PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; 784 PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext; ................................................................................................................................................................................ 716 BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, 825 BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT, 717 PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); 826 PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS); 718 void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); 827 void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT); 719 DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); 828 DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD); 720 DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); 829 DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD); 721 HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); 830 HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR); 722 HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); 831 HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR); 723 HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, CPtr!(void)); | 832 HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, const(void)*) 724 PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWOR 833 PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWOR 725 CPtr!(void), PCCERT_CONTEXT); | 834 const(void)*, PCCERT_CONTEXT); 726 BOOL CertFreeCertificateContext(PCCERT_CONTEXT); 835 BOOL CertFreeCertificateContext(PCCERT_CONTEXT); 727 PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, 836 PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE, 728 PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); 837 PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*); 729 PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWOR 838 PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWOR 730 CPtr!(void), PCCERT_CHAIN_CONTEXT); | 839 const(void)*, PCCERT_CHAIN_CONTEXT); 731 840 732 BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); 841 BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD); 733 BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); 842 BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD); 734 BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); 843 BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD); 735 BOOL CryptReleaseContext(HCRYPTPROV, DWORD); 844 BOOL CryptReleaseContext(HCRYPTPROV, DWORD); 736 BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); 845 BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*); 737 BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); 846 BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*); 738 BOOL CryptDestroyKey(HCRYPTKEY); 847 BOOL CryptDestroyKey(HCRYPTKEY); 739 static if (WINVER >= 0x0500) { | 848 static if (_WIN32_WINNT >= 0x500) { 740 BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); 849 BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*); 741 BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); 850 BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*); 742 } 851 } 743 BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); 852 BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD); 744 BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); 853 BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD); 745 BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); 854 BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD); 746 BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD); 855 BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD);