A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.
1 '' FreeBASIC binding for mingw-w64-v4.0.4 2 '' 3 '' based on the C header files: 4 '' DISCLAIMER 5 '' This file has no copyright assigned and is placed in the Public Domain. 6 '' This file is part of the mingw-w64 runtime package. 7 '' 8 '' The mingw-w64 runtime package and its code is distributed in the hope that it 9 '' will be useful but WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESSED OR 10 '' IMPLIED ARE HEREBY DISCLAIMED. This includes but is not limited to 11 '' warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 '' 13 '' translated to FreeBASIC by: 14 '' Copyright © 2015 FreeBASIC development team 15 16 #pragma once 17 18 #include once "_mingw.bi" 19 #include once "_mingw_unicode.bi" 20 #include once "guiddef.bi" 21 #include once "winapifamily.bi" 22 23 extern "Windows" 24 25 #define __WINCRYPT_H__ 26 #define GET_ALG_CLASS(x) (x and (7 shl 13)) 27 #define GET_ALG_TYPE(x) (x and (15 shl 9)) 28 #define GET_ALG_SID(x) (x and 511) 29 const ALG_CLASS_ANY = 0 30 const ALG_CLASS_SIGNATURE = 1 shl 13 31 const ALG_CLASS_MSG_ENCRYPT = 2 shl 13 32 const ALG_CLASS_DATA_ENCRYPT = 3 shl 13 33 const ALG_CLASS_HASH = 4 shl 13 34 const ALG_CLASS_KEY_EXCHANGE = 5 shl 13 35 const ALG_CLASS_ALL = 7 shl 13 36 const ALG_TYPE_ANY = 0 37 const ALG_TYPE_DSS = 1 shl 9 38 const ALG_TYPE_RSA = 2 shl 9 39 const ALG_TYPE_BLOCK = 3 shl 9 40 const ALG_TYPE_STREAM = 4 shl 9 41 const ALG_TYPE_DH = 5 shl 9 42 const ALG_TYPE_SECURECHANNEL = 6 shl 9 43 const ALG_SID_ANY = 0 44 const ALG_SID_RSA_ANY = 0 45 const ALG_SID_RSA_PKCS = 1 46 const ALG_SID_RSA_MSATWORK = 2 47 const ALG_SID_RSA_ENTRUST = 3 48 const ALG_SID_RSA_PGP = 4 49 const ALG_SID_DSS_ANY = 0 50 const ALG_SID_DSS_PKCS = 1 51 const ALG_SID_DSS_DMS = 2 52 53 #if _WIN32_WINNT >= &h0600 54 const ALG_SID_ECDSA = 3 55 #endif 56 57 const ALG_SID_DES = 1 58 const ALG_SID_3DES = 3 59 const ALG_SID_DESX = 4 60 const ALG_SID_IDEA = 5 61 const ALG_SID_CAST = 6 62 const ALG_SID_SAFERSK64 = 7 63 const ALG_SID_SAFERSK128 = 8 64 const ALG_SID_3DES_112 = 9 65 const ALG_SID_SKIPJACK = 10 66 const ALG_SID_TEK = 11 67 const ALG_SID_CYLINK_MEK = 12 68 const ALG_SID_RC5 = 13 69 const ALG_SID_AES_128 = 14 70 const ALG_SID_AES_192 = 15 71 const ALG_SID_AES_256 = 16 72 const ALG_SID_AES = 17 73 const CRYPT_MODE_CBCI = 6 74 const CRYPT_MODE_CFBP = 7 75 const CRYPT_MODE_OFBP = 8 76 const CRYPT_MODE_CBCOFM = 9 77 const CRYPT_MODE_CBCOFMI = 10 78 const ALG_SID_RC2 = 2 79 const ALG_SID_RC4 = 1 80 const ALG_SID_SEAL = 2 81 const ALG_SID_DH_SANDF = 1 82 const ALG_SID_DH_EPHEM = 2 83 const ALG_SID_AGREED_KEY_ANY = 3 84 const ALG_SID_KEA = 4 85 86 #if _WIN32_WINNT >= &h0600 87 const ALG_SID_ECDH = 5 88 #endif 89 90 const ALG_SID_MD2 = 1 91 const ALG_SID_MD4 = 2 92 const ALG_SID_MD5 = 3 93 const ALG_SID_SHA = 4 94 const ALG_SID_SHA1 = 4 95 const ALG_SID_MAC = 5 96 const ALG_SID_RIPEMD = 6 97 const ALG_SID_RIPEMD160 = 7 98 const ALG_SID_SSL3SHAMD5 = 8 99 const ALG_SID_HMAC = 9 100 const ALG_SID_TLS1PRF = 10 101 const ALG_SID_HASH_REPLACE_OWF = 11 102 const ALG_SID_SHA_256 = 12 103 const ALG_SID_SHA_384 = 13 104 const ALG_SID_SHA_512 = 14 105 const ALG_SID_SSL3_MASTER = 1 106 const ALG_SID_SCHANNEL_MASTER_HASH = 2 107 const ALG_SID_SCHANNEL_MAC_KEY = 3 108 const ALG_SID_PCT1_MASTER = 4 109 const ALG_SID_SSL2_MASTER = 5 110 const ALG_SID_TLS1_MASTER = 6 111 const ALG_SID_SCHANNEL_ENC_KEY = 7 112 113 #if _WIN32_WINNT >= &h0600 114 const ALG_SID_ECMQV = 1 115 #endif 116 117 const ALG_SID_EXAMPLE = 80 118 #define ALGIDDEF 119 type ALG_ID as ulong 120 const CALG_MD2 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_MD2 121 const CALG_MD4 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_MD4 122 const CALG_MD5 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_MD5 123 const CALG_SHA = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_SHA 124 const CALG_SHA1 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_SHA1 125 const CALG_MAC = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_MAC 126 const CALG_RSA_SIGN = (ALG_CLASS_SIGNATURE or ALG_TYPE_RSA) or ALG_SID_RSA_ANY 127 const CALG_DSS_SIGN = (ALG_CLASS_SIGNATURE or ALG_TYPE_DSS) or ALG_SID_DSS_ANY 128 const CALG_NO_SIGN = (ALG_CLASS_SIGNATURE or ALG_TYPE_ANY) or ALG_SID_ANY 129 const CALG_RSA_KEYX = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_RSA) or ALG_SID_RSA_ANY 130 const CALG_DES = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_DES 131 const CALG_3DES_112 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_3DES_112 132 const CALG_3DES = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_3DES 133 const CALG_DESX = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_DESX 134 const CALG_RC2 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_RC2 135 const CALG_RC4 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_STREAM) or ALG_SID_RC4 136 const CALG_SEAL = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_STREAM) or ALG_SID_SEAL 137 const CALG_DH_SF = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH) or ALG_SID_DH_SANDF 138 const CALG_DH_EPHEM = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH) or ALG_SID_DH_EPHEM 139 const CALG_AGREEDKEY_ANY = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH) or ALG_SID_AGREED_KEY_ANY 140 const CALG_KEA_KEYX = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH) or ALG_SID_KEA 141 const CALG_HUGHES_MD5 = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_ANY) or ALG_SID_MD5 142 const CALG_SKIPJACK = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_SKIPJACK 143 const CALG_TEK = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_TEK 144 const CALG_CYLINK_MEK = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_CYLINK_MEK 145 const CALG_SSL3_SHAMD5 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_SSL3SHAMD5 146 const CALG_SSL3_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL) or ALG_SID_SSL3_MASTER 147 const CALG_SCHANNEL_MASTER_HASH = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL) or ALG_SID_SCHANNEL_MASTER_HASH 148 const CALG_SCHANNEL_MAC_KEY = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL) or ALG_SID_SCHANNEL_MAC_KEY 149 const CALG_SCHANNEL_ENC_KEY = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL) or ALG_SID_SCHANNEL_ENC_KEY 150 const CALG_PCT1_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL) or ALG_SID_PCT1_MASTER 151 const CALG_SSL2_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL) or ALG_SID_SSL2_MASTER 152 const CALG_TLS1_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL) or ALG_SID_TLS1_MASTER 153 const CALG_RC5 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_RC5 154 const CALG_HMAC = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_HMAC 155 const CALG_TLS1PRF = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_TLS1PRF 156 const CALG_HASH_REPLACE_OWF = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_HASH_REPLACE_OWF 157 const CALG_AES_128 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_AES_128 158 const CALG_AES_192 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_AES_192 159 const CALG_AES_256 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_AES_256 160 const CALG_AES = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK) or ALG_SID_AES 161 const CALG_SHA_256 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_SHA_256 162 const CALG_SHA_384 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_SHA_384 163 const CALG_SHA_512 = (ALG_CLASS_HASH or ALG_TYPE_ANY) or ALG_SID_SHA_512 164 165 #if _WIN32_WINNT >= &h0600 166 const CALG_ECDH = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH) or ALG_SID_ECDH 167 const CALG_ECMQV = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_ANY) or ALG_SID_ECMQV 168 const CALG_ECDSA = (ALG_CLASS_SIGNATURE or ALG_TYPE_DSS) or ALG_SID_ECDSA 169 #endif 170 171 #define HCRYPTPROV_DEFINED 172 type HCRYPTHASH as ULONG_PTR 173 type HCRYPTKEY as ULONG_PTR 174 type HCRYPTPROV as ULONG_PTR 175 176 const CRYPT_VERIFYCONTEXT = &hf0000000 177 const CRYPT_NEWKEYSET = &h8 178 const CRYPT_DELETEKEYSET = &h10 179 const CRYPT_MACHINE_KEYSET = &h20 180 const CRYPT_SILENT = &h40 181 182 #if _WIN32_WINNT >= &h0600 183 const CRYPT_DEFAULT_CONTAINER_OPTIONAL = &h80 184 #endif 185 186 const CRYPT_EXPORTABLE = &h1 187 const CRYPT_USER_PROTECTED = &h2 188 const CRYPT_CREATE_SALT = &h4 189 const CRYPT_UPDATE_KEY = &h8 190 const CRYPT_NO_SALT = &h10 191 const CRYPT_PREGEN = &h40 192 const CRYPT_RECIPIENT = &h10 193 const CRYPT_INITIATOR = &h40 194 const CRYPT_ONLINE = &h80 195 const CRYPT_SF = &h100 196 const CRYPT_CREATE_IV = &h200 197 const CRYPT_KEK = &h400 198 const CRYPT_DATA_KEY = &h800 199 const CRYPT_VOLATILE = &h1000 200 const CRYPT_SGCKEY = &h2000 201 const CRYPT_ARCHIVABLE = &h4000 202 203 #if _WIN32_WINNT >= &h0600 204 const CRYPT_FORCE_KEY_PROTECTION_HIGH = &h8000 205 #endif 206 207 const CRYPT_USER_PROTECTED_STRONG = &h100000 208 const RSA1024BIT_KEY = &h4000000 209 const CRYPT_SERVER = &h400 210 const KEY_LENGTH_MASK = &hffff0000 211 const CRYPT_Y_ONLY = &h1 212 const CRYPT_SSL2_FALLBACK = &h2 213 const CRYPT_DESTROYKEY = &h4 214 const CRYPT_DECRYPT_RSA_NO_PADDING_CHECK = &h20 215 const CRYPT_OAEP = &h40 216 const CRYPT_BLOB_VER3 = &h80 217 const CRYPT_IPSEC_HMAC_KEY = &h100 218 const CRYPT_SECRETDIGEST = &h1 219 const CRYPT_OWF_REPL_LM_HASH = &h1 220 const CRYPT_LITTLE_ENDIAN = &h1 221 const CRYPT_NOHASHOID = &h1 222 const CRYPT_TYPE2_FORMAT = &h2 223 const CRYPT_X931_FORMAT = &h4 224 const CRYPT_MACHINE_DEFAULT = &h1 225 const CRYPT_USER_DEFAULT = &h2 226 const CRYPT_DELETE_DEFAULT = &h4 227 const SIMPLEBLOB = &h1 228 const PUBLICKEYBLOB = &h6 229 const PRIVATEKEYBLOB = &h7 230 const PLAINTEXTKEYBLOB = &h8 231 const OPAQUEKEYBLOB = &h9 232 const PUBLICKEYBLOBEX = &ha 233 const SYMMETRICWRAPKEYBLOB = &hb 234 const KEYSTATEBLOB = &hc 235 const AT_KEYEXCHANGE = 1 236 const AT_SIGNATURE = 2 237 const CRYPT_USERDATA = 1 238 const KP_IV = 1 239 const KP_SALT = 2 240 const KP_PADDING = 3 241 const KP_MODE = 4 242 const KP_MODE_BITS = 5 243 const KP_PERMISSIONS = 6 244 const KP_ALGID = 7 245 const KP_BLOCKLEN = 8 246 const KP_KEYLEN = 9 247 const KP_SALT_EX = 10 248 const KP_P = 11 249 const KP_G = 12 250 const KP_Q = 13 251 const KP_X = 14 252 const KP_Y = 15 253 const KP_RA = 16 254 const KP_RB = 17 255 const KP_INFO = 18 256 const KP_EFFECTIVE_KEYLEN = 19 257 const KP_SCHANNEL_ALG = 20 258 const KP_CLIENT_RANDOM = 21 259 const KP_SERVER_RANDOM = 22 260 const KP_RP = 23 261 const KP_PRECOMP_MD5 = 24 262 const KP_PRECOMP_SHA = 25 263 const KP_CERTIFICATE = 26 264 const KP_CLEAR_KEY = 27 265 const KP_PUB_EX_LEN = 28 266 const KP_PUB_EX_VAL = 29 267 const KP_KEYVAL = 30 268 const KP_ADMIN_PIN = 31 269 const KP_KEYEXCHANGE_PIN = 32 270 const KP_SIGNATURE_PIN = 33 271 const KP_PREHASH = 34 272 const KP_ROUNDS = 35 273 const KP_OAEP_PARAMS = 36 274 const KP_CMS_KEY_INFO = 37 275 const KP_CMS_DH_KEY_INFO = 38 276 const KP_PUB_PARAMS = 39 277 const KP_VERIFY_PARAMS = 40 278 const KP_HIGHEST_VERSION = 41 279 const KP_GET_USE_COUNT = 42 280 const KP_PIN_ID = 43 281 const KP_PIN_INFO = 44 282 const PKCS5_PADDING = 1 283 const RANDOM_PADDING = 2 284 const ZERO_PADDING = 3 285 const CRYPT_MODE_CBC = 1 286 const CRYPT_MODE_ECB = 2 287 const CRYPT_MODE_OFB = 3 288 const CRYPT_MODE_CFB = 4 289 const CRYPT_MODE_CTS = 5 290 const CRYPT_ENCRYPT = &h1 291 const CRYPT_DECRYPT = &h2 292 const CRYPT_EXPORT = &h4 293 const CRYPT_READ = &h8 294 const CRYPT_WRITE = &h10 295 const CRYPT_MAC = &h20 296 const CRYPT_EXPORT_KEY = &h40 297 const CRYPT_IMPORT_KEY = &h80 298 const CRYPT_ARCHIVE = &h100 299 const HP_ALGID = &h1 300 const HP_HASHVAL = &h2 301 const HP_HASHSIZE = &h4 302 const HP_HMAC_INFO = &h5 303 const HP_TLS1PRF_LABEL = &h6 304 const HP_TLS1PRF_SEED = &h7 305 const CRYPT_FAILED = FALSE 306 const CRYPT_SUCCEED = CTRUE 307 #define RCRYPT_SUCCEEDED(RT) ((RT) = CRYPT_SUCCEED) 308 #define RCRYPT_FAILED(RT) ((RT) = CRYPT_FAILED) 309 const PP_ENUMALGS = 1 310 const PP_ENUMCONTAINERS = 2 311 const PP_IMPTYPE = 3 312 const PP_NAME = 4 313 const PP_VERSION = 5 314 const PP_CONTAINER = 6 315 const PP_CHANGE_PASSWORD = 7 316 const PP_KEYSET_SEC_DESCR = 8 317 const PP_CERTCHAIN = 9 318 const PP_KEY_TYPE_SUBTYPE = 10 319 const PP_PROVTYPE = 16 320 const PP_KEYSTORAGE = 17 321 const PP_APPLI_CERT = 18 322 const PP_SYM_KEYSIZE = 19 323 const PP_SESSION_KEYSIZE = 20 324 const PP_UI_PROMPT = 21 325 const PP_ENUMALGS_EX = 22 326 const PP_ENUMMANDROOTS = 25 327 const PP_ENUMELECTROOTS = 26 328 const PP_KEYSET_TYPE = 27 329 const PP_ADMIN_PIN = 31 330 const PP_KEYEXCHANGE_PIN = 32 331 const PP_SIGNATURE_PIN = 33 332 const PP_SIG_KEYSIZE_INC = 34 333 const PP_KEYX_KEYSIZE_INC = 35 334 const PP_UNIQUE_CONTAINER = 36 335 const PP_SGC_INFO = 37 336 const PP_USE_HARDWARE_RNG = 38 337 const PP_KEYSPEC = 39 338 const PP_ENUMEX_SIGNING_PROT = 40 339 const PP_CRYPT_COUNT_KEY_USE = 41 340 341 #if _WIN32_WINNT >= &h0600 342 const PP_USER_CERTSTORE = 42 343 const PP_SMARTCARD_READER = 43 344 const PP_SMARTCARD_GUID = 45 345 const PP_ROOT_CERTSTORE = 46 346 #endif 347 348 #if _WIN32_WINNT = &h0602 349 const PP_SMARTCARD_READER_ICON = 47 350 #endif 351 352 const CRYPT_FIRST = 1 353 const CRYPT_NEXT = 2 354 const CRYPT_SGC_ENUM = 4 355 const CRYPT_IMPL_HARDWARE = 1 356 const CRYPT_IMPL_SOFTWARE = 2 357 const CRYPT_IMPL_MIXED = 3 358 const CRYPT_IMPL_UNKNOWN = 4 359 const CRYPT_IMPL_REMOVABLE = 8 360 const CRYPT_SEC_DESCR = &h1 361 const CRYPT_PSTORE = &h2 362 const CRYPT_UI_PROMPT = &h4 363 const CRYPT_FLAG_PCT1 = &h1 364 const CRYPT_FLAG_SSL2 = &h2 365 const CRYPT_FLAG_SSL3 = &h4 366 const CRYPT_FLAG_TLS1 = &h8 367 const CRYPT_FLAG_IPSEC = &h10 368 const CRYPT_FLAG_SIGNING = &h20 369 const CRYPT_SGC = &h1 370 const CRYPT_FASTSGC = &h2 371 const PP_CLIENT_HWND = 1 372 const PP_CONTEXT_INFO = 11 373 const PP_KEYEXCHANGE_KEYSIZE = 12 374 const PP_SIGNATURE_KEYSIZE = 13 375 const PP_KEYEXCHANGE_ALG = 14 376 const PP_SIGNATURE_ALG = 15 377 const PP_DELETEKEY = 24 378 379 #if _WIN32_WINNT >= &h0600 380 const PP_PIN_PROMPT_STRING = 44 381 const PP_SECURE_KEYEXCHANGE_PIN = 47 382 const PP_SECURE_SIGNATURE_PIN = 48 383 #endif 384 385 const PROV_RSA_FULL = 1 386 const PROV_RSA_SIG = 2 387 const PROV_DSS = 3 388 const PROV_FORTEZZA = 4 389 const PROV_MS_EXCHANGE = 5 390 const PROV_SSL = 6 391 const PROV_STT_MER = 7 392 const PROV_STT_ACQ = 8 393 const PROV_STT_BRND = 9 394 const PROV_STT_ROOT = 10 395 const PROV_STT_ISS = 11 396 const PROV_RSA_SCHANNEL = 12 397 const PROV_DSS_DH = 13 398 const PROV_EC_ECDSA_SIG = 14 399 const PROV_EC_ECNRA_SIG = 15 400 const PROV_EC_ECDSA_FULL = 16 401 const PROV_EC_ECNRA_FULL = 17 402 const PROV_DH_SCHANNEL = 18 403 const PROV_SPYRUS_LYNKS = 20 404 const PROV_RNG = 21 405 const PROV_INTEL_SEC = 22 406 const PROV_REPLACE_OWF = 23 407 const PROV_RSA_AES = 24 408 409 #ifdef UNICODE 410 #define MS_DEF_PROV MS_DEF_PROV_W 411 #define MS_ENHANCED_PROV MS_ENHANCED_PROV_W 412 #define MS_STRONG_PROV MS_STRONG_PROV_W 413 #define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_W 414 #define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_W 415 #define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_W 416 #define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_W 417 #define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_W 418 #define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_W 419 #define MS_SCARD_PROV MS_SCARD_PROV_W 420 #define MS_ENH_RSA_AES_PROV_XP MS_ENH_RSA_AES_PROV_XP_W 421 #define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_W 422 #else 423 #define MS_DEF_PROV MS_DEF_PROV_A 424 #define MS_ENHANCED_PROV MS_ENHANCED_PROV_A 425 #define MS_STRONG_PROV MS_STRONG_PROV_A 426 #define MS_DEF_RSA_SIG_PROV MS_DEF_RSA_SIG_PROV_A 427 #define MS_DEF_RSA_SCHANNEL_PROV MS_DEF_RSA_SCHANNEL_PROV_A 428 #define MS_DEF_DSS_PROV MS_DEF_DSS_PROV_A 429 #define MS_DEF_DSS_DH_PROV MS_DEF_DSS_DH_PROV_A 430 #define MS_ENH_DSS_DH_PROV MS_ENH_DSS_DH_PROV_A 431 #define MS_DEF_DH_SCHANNEL_PROV MS_DEF_DH_SCHANNEL_PROV_A 432 #define MS_SCARD_PROV MS_SCARD_PROV_A 433 #define MS_ENH_RSA_AES_PROV_XP MS_ENH_RSA_AES_PROV_XP_A 434 #define MS_ENH_RSA_AES_PROV MS_ENH_RSA_AES_PROV_A 435 #endif 436 437 #define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0" 438 #define MS_DEF_PROV_W wstr("Microsoft Base Cryptographic Provider v1.0") 439 #define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0" 440 #define MS_ENHANCED_PROV_W wstr("Microsoft Enhanced Cryptographic Provider v1.0") 441 #define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider" 442 #define MS_STRONG_PROV_W wstr("Microsoft Strong Cryptographic Provider") 443 #define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider" 444 #define MS_DEF_RSA_SIG_PROV_W wstr("Microsoft RSA Signature Cryptographic Provider") 445 #define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider" 446 #define MS_DEF_RSA_SCHANNEL_PROV_W wstr("Microsoft RSA SChannel Cryptographic Provider") 447 #define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider" 448 #define MS_DEF_DSS_PROV_W wstr("Microsoft Base DSS Cryptographic Provider") 449 #define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" 450 #define MS_DEF_DSS_DH_PROV_W wstr("Microsoft Base DSS and Diffie-Hellman Cryptographic Provider") 451 #define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" 452 #define MS_ENH_DSS_DH_PROV_W wstr("Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider") 453 #define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider" 454 #define MS_DEF_DH_SCHANNEL_PROV_W wstr("Microsoft DH SChannel Cryptographic Provider") 455 #define MS_SCARD_PROV_A "Microsoft Base Smart Card Crypto Provider" 456 #define MS_SCARD_PROV_W wstr("Microsoft Base Smart Card Crypto Provider") 457 #define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider" 458 #define MS_ENH_RSA_AES_PROV_W wstr("Microsoft Enhanced RSA and AES Cryptographic Provider") 459 #define MS_ENH_RSA_AES_PROV_XP_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)" 460 #define MS_ENH_RSA_AES_PROV_XP_W wstr("Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)") 461 const MAXUIDLEN = 64 462 #define EXPO_OFFLOAD_REG_VALUE "ExpoOffload" 463 #define EXPO_OFFLOAD_FUNC_NAME "OffloadModExpo" 464 #define szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS !"Software\\Policies\\Microsoft\\Cryptography" 465 #define szKEY_CACHE_ENABLED "CachePrivateKeys" 466 #define szKEY_CACHE_SECONDS "PrivateKeyLifetimeSeconds" 467 #define szPRIV_KEY_CACHE_MAX_ITEMS "PrivKeyCacheMaxItems" 468 const cPRIV_KEY_CACHE_MAX_ITEMS_DEFAULT = 20 469 #define szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS "PrivKeyCachePurgeIntervalSeconds" 470 const cPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS_DEFAULT = 86400 471 const CUR_BLOB_VERSION = 2 472 473 type _CMS_KEY_INFO 474 dwVersion as DWORD 475 Algid as ALG_ID 476 pbOID as UBYTE ptr 477 cbOID as DWORD 478 end type 479 480 type CMS_KEY_INFO as _CMS_KEY_INFO 481 type PCMS_KEY_INFO as _CMS_KEY_INFO ptr 482 483 type _HMAC_Info 484 HashAlgid as ALG_ID 485 pbInnerString as UBYTE ptr 486 cbInnerString as DWORD 487 pbOuterString as UBYTE ptr 488 cbOuterString as DWORD 489 end type 490 491 type HMAC_INFO as _HMAC_Info 492 type PHMAC_INFO as _HMAC_Info ptr 493 494 type _SCHANNEL_ALG 495 dwUse as DWORD 496 Algid as ALG_ID 497 cBits as DWORD 498 dwFlags as DWORD 499 dwReserved as DWORD 500 end type 501 502 type SCHANNEL_ALG as _SCHANNEL_ALG 503 type PSCHANNEL_ALG as _SCHANNEL_ALG ptr 504 const SCHANNEL_MAC_KEY = &h0 505 const SCHANNEL_ENC_KEY = &h1 506 const INTERNATIONAL_USAGE = &h1 507 508 type _PROV_ENUMALGS 509 aiAlgid as ALG_ID 510 dwBitLen as DWORD 511 dwNameLen as DWORD 512 szName as zstring * 20 513 end type 514 515 type PROV_ENUMALGS as _PROV_ENUMALGS 516 517 type _PROV_ENUMALGS_EX 518 aiAlgid as ALG_ID 519 dwDefaultLen as DWORD 520 dwMinLen as DWORD 521 dwMaxLen as DWORD 522 dwProtocols as DWORD 523 dwNameLen as DWORD 524 szName as zstring * 20 525 dwLongNameLen as DWORD 526 szLongName as zstring * 40 527 end type 528 529 type PROV_ENUMALGS_EX as _PROV_ENUMALGS_EX 530 531 type _PUBLICKEYSTRUC 532 bType as UBYTE 533 bVersion as UBYTE 534 reserved as WORD 535 aiKeyAlg as ALG_ID 536 end type 537 538 type BLOBHEADER as _PUBLICKEYSTRUC 539 type PUBLICKEYSTRUC as _PUBLICKEYSTRUC 540 541 type _RSAPUBKEY 542 magic as DWORD 543 bitlen as DWORD 544 pubexp as DWORD 545 end type 546 547 type RSAPUBKEY as _RSAPUBKEY 548 549 type _PUBKEY 550 magic as DWORD 551 bitlen as DWORD 552 end type 553 554 type DHPUBKEY as _PUBKEY 555 type DSSPUBKEY as _PUBKEY 556 type KEAPUBKEY as _PUBKEY 557 type TEKPUBKEY as _PUBKEY 558 559 type _DSSSEED 560 counter as DWORD 561 seed(0 to 19) as UBYTE 562 end type 563 564 type DSSSEED as _DSSSEED 565 566 type _PUBKEYVER3 567 magic as DWORD 568 bitlenP as DWORD 569 bitlenQ as DWORD 570 bitlenJ as DWORD 571 DSSSeed as DSSSEED 572 end type 573 574 type DHPUBKEY_VER3 as _PUBKEYVER3 575 type DSSPUBKEY_VER3 as _PUBKEYVER3 576 577 type _PRIVKEYVER3 578 magic as DWORD 579 bitlenP as DWORD 580 bitlenQ as DWORD 581 bitlenJ as DWORD 582 bitlenX as DWORD 583 DSSSeed as DSSSEED 584 end type 585 586 type DHPRIVKEY_VER3 as _PRIVKEYVER3 587 type DSSPRIVKEY_VER3 as _PRIVKEYVER3 588 589 type _KEY_TYPE_SUBTYPE 590 dwKeySpec as DWORD 591 as GUID Type 592 Subtype as GUID 593 end type 594 595 type KEY_TYPE_SUBTYPE as _KEY_TYPE_SUBTYPE 596 type PKEY_TYPE_SUBTYPE as _KEY_TYPE_SUBTYPE ptr 597 598 type _CERT_FORTEZZA_DATA_PROP 599 SerialNumber(0 to 7) as ubyte 600 CertIndex as long 601 CertLabel(0 to 35) as ubyte 602 end type 603 604 type CERT_FORTEZZA_DATA_PROP as _CERT_FORTEZZA_DATA_PROP 605 606 type _CRYPT_RC4_KEY_STATE 607 Key(0 to 15) as ubyte 608 SBox(0 to 255) as ubyte 609 i as ubyte 610 j as ubyte 611 end type 612 613 type CRYPT_RC4_KEY_STATE as _CRYPT_RC4_KEY_STATE 614 type PCRYPT_RC4_KEY_STATE as _CRYPT_RC4_KEY_STATE ptr 615 616 type _CRYPT_DES_KEY_STATE 617 Key(0 to 7) as ubyte 618 IV(0 to 7) as ubyte 619 Feedback(0 to 7) as ubyte 620 end type 621 622 type CRYPT_DES_KEY_STATE as _CRYPT_DES_KEY_STATE 623 type PCRYPT_DES_KEY_STATE as _CRYPT_DES_KEY_STATE ptr 624 625 type _CRYPT_3DES_KEY_STATE 626 Key(0 to 23) as ubyte 627 IV(0 to 7) as ubyte 628 Feedback(0 to 7) as ubyte 629 end type 630 631 type CRYPT_3DES_KEY_STATE as _CRYPT_3DES_KEY_STATE 632 type PCRYPT_3DES_KEY_STATE as _CRYPT_3DES_KEY_STATE ptr 633 634 #if _WIN32_WINNT >= &h0600 635 type _CRYPT_AES_128_KEY_STATE 636 Key(0 to 15) as ubyte 637 IV(0 to 15) as ubyte 638 EncryptionState(0 to 10, 0 to 15) as ubyte 639 DecryptionState(0 to 10, 0 to 15) as ubyte 640 Feedback(0 to 15) as ubyte 641 end type 642 643 type CRYPT_AES_128_KEY_STATE as _CRYPT_AES_128_KEY_STATE 644 type PCRYPT_AES_128_KEY_STATE as _CRYPT_AES_128_KEY_STATE ptr 645 646 type _CRYPT_AES_256_KEY_STATE 647 Key(0 to 31) as ubyte 648 IV(0 to 15) as ubyte 649 EncryptionState(0 to 14, 0 to 15) as ubyte 650 DecryptionState(0 to 14, 0 to 15) as ubyte 651 Feedback(0 to 15) as ubyte 652 end type 653 654 type CRYPT_AES_256_KEY_STATE as _CRYPT_AES_256_KEY_STATE 655 type PCRYPT_AES_256_KEY_STATE as _CRYPT_AES_256_KEY_STATE ptr 656 #endif 657 658 #define CRYPTO_BLOBS_DEFINED 659 660 type _CRYPTOAPI_BLOB 661 cbData as DWORD 662 pbData as UBYTE ptr 663 end type 664 665 type CRYPT_INTEGER_BLOB as _CRYPTOAPI_BLOB 666 type PCRYPT_INTEGER_BLOB as _CRYPTOAPI_BLOB ptr 667 type CRYPT_UINT_BLOB as _CRYPTOAPI_BLOB 668 type PCRYPT_UINT_BLOB as _CRYPTOAPI_BLOB ptr 669 type CRYPT_OBJID_BLOB as _CRYPTOAPI_BLOB 670 type PCRYPT_OBJID_BLOB as _CRYPTOAPI_BLOB ptr 671 type CERT_NAME_BLOB as _CRYPTOAPI_BLOB 672 type PCERT_NAME_BLOB as _CRYPTOAPI_BLOB ptr 673 type CERT_RDN_VALUE_BLOB as _CRYPTOAPI_BLOB 674 type PCERT_RDN_VALUE_BLOB as _CRYPTOAPI_BLOB ptr 675 type CERT_BLOB as _CRYPTOAPI_BLOB 676 type PCERT_BLOB as _CRYPTOAPI_BLOB ptr 677 type CRL_BLOB as _CRYPTOAPI_BLOB 678 type PCRL_BLOB as _CRYPTOAPI_BLOB ptr 679 type DATA_BLOB as _CRYPTOAPI_BLOB 680 type PDATA_BLOB as _CRYPTOAPI_BLOB ptr 681 type CRYPT_DATA_BLOB as _CRYPTOAPI_BLOB 682 type PCRYPT_DATA_BLOB as _CRYPTOAPI_BLOB ptr 683 type CRYPT_HASH_BLOB as _CRYPTOAPI_BLOB 684 type PCRYPT_HASH_BLOB as _CRYPTOAPI_BLOB ptr 685 type CRYPT_DIGEST_BLOB as _CRYPTOAPI_BLOB 686 type PCRYPT_DIGEST_BLOB as _CRYPTOAPI_BLOB ptr 687 type CRYPT_DER_BLOB as _CRYPTOAPI_BLOB 688 type PCRYPT_DER_BLOB as _CRYPTOAPI_BLOB ptr 689 type CRYPT_ATTR_BLOB as _CRYPTOAPI_BLOB 690 type PCRYPT_ATTR_BLOB as _CRYPTOAPI_BLOB ptr 691 692 type _CMS_DH_KEY_INFO 693 dwVersion as DWORD 694 Algid as ALG_ID 695 pszContentEncObjId as LPSTR 696 PubInfo as CRYPT_DATA_BLOB 697 pReserved as any ptr 698 end type 699 700 type CMS_DH_KEY_INFO as _CMS_DH_KEY_INFO 701 type PCMS_DH_KEY_INFO as _CMS_DH_KEY_INFO ptr 702 declare function CryptAcquireContextA(byval phProv as HCRYPTPROV ptr, byval szContainer as LPCSTR, byval szProvider as LPCSTR, byval dwProvType as DWORD, byval dwFlags as DWORD) as WINBOOL 703 704 #ifndef UNICODE 705 declare function CryptAcquireContext alias "CryptAcquireContextA"(byval phProv as HCRYPTPROV ptr, byval szContainer as LPCSTR, byval szProvider as LPCSTR, byval dwProvType as DWORD, byval dwFlags as DWORD) as WINBOOL 706 #endif 707 708 declare function CryptAcquireContextW(byval phProv as HCRYPTPROV ptr, byval szContainer as LPCWSTR, byval szProvider as LPCWSTR, byval dwProvType as DWORD, byval dwFlags as DWORD) as WINBOOL 709 710 #ifdef UNICODE 711 declare function CryptAcquireContext alias "CryptAcquireContextW"(byval phProv as HCRYPTPROV ptr, byval szContainer as LPCWSTR, byval szProvider as LPCWSTR, byval dwProvType as DWORD, byval dwFlags as DWORD) as WINBOOL 712 #endif 713 714 declare function CryptReleaseContext(byval hProv as HCRYPTPROV, byval dwFlags as DWORD) as WINBOOL 715 declare function CryptGenKey(byval hProv as HCRYPTPROV, byval Algid as ALG_ID, byval dwFlags as DWORD, byval phKey as HCRYPTKEY ptr) as WINBOOL 716 declare function CryptDeriveKey(byval hProv as HCRYPTPROV, byval Algid as ALG_ID, byval hBaseData as HCRYPTHASH, byval dwFlags as DWORD, byval phKey as HCRYPTKEY ptr) as WINBOOL 717 declare function CryptDestroyKey(byval hKey as HCRYPTKEY) as WINBOOL 718 declare function CryptSetKeyParam(byval hKey as HCRYPTKEY, byval dwParam as DWORD, byval pbData as const UBYTE ptr, byval dwFlags as DWORD) as WINBOOL 719 declare function CryptGetKeyParam(byval hKey as HCRYPTKEY, byval dwParam as DWORD, byval pbData as UBYTE ptr, byval pdwDataLen as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 720 declare function CryptSetHashParam(byval hHash as HCRYPTHASH, byval dwParam as DWORD, byval pbData as const UBYTE ptr, byval dwFlags as DWORD) as WINBOOL 721 declare function CryptGetHashParam(byval hHash as HCRYPTHASH, byval dwParam as DWORD, byval pbData as UBYTE ptr, byval pdwDataLen as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 722 declare function CryptSetProvParam(byval hProv as HCRYPTPROV, byval dwParam as DWORD, byval pbData as const UBYTE ptr, byval dwFlags as DWORD) as WINBOOL 723 declare function CryptGetProvParam(byval hProv as HCRYPTPROV, byval dwParam as DWORD, byval pbData as UBYTE ptr, byval pdwDataLen as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 724 declare function CryptGenRandom(byval hProv as HCRYPTPROV, byval dwLen as DWORD, byval pbBuffer as UBYTE ptr) as WINBOOL 725 declare function CryptGetUserKey(byval hProv as HCRYPTPROV, byval dwKeySpec as DWORD, byval phUserKey as HCRYPTKEY ptr) as WINBOOL 726 declare function CryptExportKey(byval hKey as HCRYPTKEY, byval hExpKey as HCRYPTKEY, byval dwBlobType as DWORD, byval dwFlags as DWORD, byval pbData as UBYTE ptr, byval pdwDataLen as DWORD ptr) as WINBOOL 727 declare function CryptImportKey(byval hProv as HCRYPTPROV, byval pbData as const UBYTE ptr, byval dwDataLen as DWORD, byval hPubKey as HCRYPTKEY, byval dwFlags as DWORD, byval phKey as HCRYPTKEY ptr) as WINBOOL 728 declare function CryptEncrypt(byval hKey as HCRYPTKEY, byval hHash as HCRYPTHASH, byval Final as WINBOOL, byval dwFlags as DWORD, byval pbData as UBYTE ptr, byval pdwDataLen as DWORD ptr, byval dwBufLen as DWORD) as WINBOOL 729 declare function CryptDecrypt(byval hKey as HCRYPTKEY, byval hHash as HCRYPTHASH, byval Final as WINBOOL, byval dwFlags as DWORD, byval pbData as UBYTE ptr, byval pdwDataLen as DWORD ptr) as WINBOOL 730 declare function CryptCreateHash(byval hProv as HCRYPTPROV, byval Algid as ALG_ID, byval hKey as HCRYPTKEY, byval dwFlags as DWORD, byval phHash as HCRYPTHASH ptr) as WINBOOL 731 declare function CryptHashData(byval hHash as HCRYPTHASH, byval pbData as const UBYTE ptr, byval dwDataLen as DWORD, byval dwFlags as DWORD) as WINBOOL 732 declare function CryptHashSessionKey(byval hHash as HCRYPTHASH, byval hKey as HCRYPTKEY, byval dwFlags as DWORD) as WINBOOL 733 declare function CryptDestroyHash(byval hHash as HCRYPTHASH) as WINBOOL 734 declare function CryptSignHashA(byval hHash as HCRYPTHASH, byval dwKeySpec as DWORD, byval szDescription as LPCSTR, byval dwFlags as DWORD, byval pbSignature as UBYTE ptr, byval pdwSigLen as DWORD ptr) as WINBOOL 735 736 #ifndef UNICODE 737 declare function CryptSignHash alias "CryptSignHashA"(byval hHash as HCRYPTHASH, byval dwKeySpec as DWORD, byval szDescription as LPCSTR, byval dwFlags as DWORD, byval pbSignature as UBYTE ptr, byval pdwSigLen as DWORD ptr) as WINBOOL 738 #endif 739 740 declare function CryptSignHashW(byval hHash as HCRYPTHASH, byval dwKeySpec as DWORD, byval szDescription as LPCWSTR, byval dwFlags as DWORD, byval pbSignature as UBYTE ptr, byval pdwSigLen as DWORD ptr) as WINBOOL 741 742 #ifdef UNICODE 743 declare function CryptSignHash alias "CryptSignHashW"(byval hHash as HCRYPTHASH, byval dwKeySpec as DWORD, byval szDescription as LPCWSTR, byval dwFlags as DWORD, byval pbSignature as UBYTE ptr, byval pdwSigLen as DWORD ptr) as WINBOOL 744 #endif 745 746 declare function CryptVerifySignatureA(byval hHash as HCRYPTHASH, byval pbSignature as const UBYTE ptr, byval dwSigLen as DWORD, byval hPubKey as HCRYPTKEY, byval szDescription as LPCSTR, byval dwFlags as DWORD) as WINBOOL 747 748 #ifndef UNICODE 749 declare function CryptVerifySignature alias "CryptVerifySignatureA"(byval hHash as HCRYPTHASH, byval pbSignature as const UBYTE ptr, byval dwSigLen as DWORD, byval hPubKey as HCRYPTKEY, byval szDescription as LPCSTR, byval dwFlags as DWORD) as WINBOOL 750 #endif 751 752 declare function CryptVerifySignatureW(byval hHash as HCRYPTHASH, byval pbSignature as const UBYTE ptr, byval dwSigLen as DWORD, byval hPubKey as HCRYPTKEY, byval szDescription as LPCWSTR, byval dwFlags as DWORD) as WINBOOL 753 754 #ifdef UNICODE 755 declare function CryptVerifySignature alias "CryptVerifySignatureW"(byval hHash as HCRYPTHASH, byval pbSignature as const UBYTE ptr, byval dwSigLen as DWORD, byval hPubKey as HCRYPTKEY, byval szDescription as LPCWSTR, byval dwFlags as DWORD) as WINBOOL 756 #endif 757 758 declare function CryptSetProviderA(byval pszProvName as LPCSTR, byval dwProvType as DWORD) as WINBOOL 759 760 #ifndef UNICODE 761 declare function CryptSetProvider alias "CryptSetProviderA"(byval pszProvName as LPCSTR, byval dwProvType as DWORD) as WINBOOL 762 #endif 763 764 declare function CryptSetProviderW(byval pszProvName as LPCWSTR, byval dwProvType as DWORD) as WINBOOL 765 766 #ifdef UNICODE 767 declare function CryptSetProvider alias "CryptSetProviderW"(byval pszProvName as LPCWSTR, byval dwProvType as DWORD) as WINBOOL 768 #endif 769 770 declare function CryptSetProviderExA(byval pszProvName as LPCSTR, byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 771 772 #ifndef UNICODE 773 declare function CryptSetProviderEx alias "CryptSetProviderExA"(byval pszProvName as LPCSTR, byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 774 #endif 775 776 declare function CryptSetProviderExW(byval pszProvName as LPCWSTR, byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 777 778 #ifdef UNICODE 779 declare function CryptSetProviderEx alias "CryptSetProviderExW"(byval pszProvName as LPCWSTR, byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 780 #endif 781 782 declare function CryptGetDefaultProviderA(byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pszProvName as LPSTR, byval pcbProvName as DWORD ptr) as WINBOOL 783 784 #ifndef UNICODE 785 declare function CryptGetDefaultProvider alias "CryptGetDefaultProviderA"(byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pszProvName as LPSTR, byval pcbProvName as DWORD ptr) as WINBOOL 786 #endif 787 788 declare function CryptGetDefaultProviderW(byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pszProvName as LPWSTR, byval pcbProvName as DWORD ptr) as WINBOOL 789 790 #ifdef UNICODE 791 declare function CryptGetDefaultProvider alias "CryptGetDefaultProviderW"(byval dwProvType as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pszProvName as LPWSTR, byval pcbProvName as DWORD ptr) as WINBOOL 792 #endif 793 794 declare function CryptEnumProviderTypesA(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szTypeName as LPSTR, byval pcbTypeName as DWORD ptr) as WINBOOL 795 796 #ifndef UNICODE 797 declare function CryptEnumProviderTypes alias "CryptEnumProviderTypesA"(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szTypeName as LPSTR, byval pcbTypeName as DWORD ptr) as WINBOOL 798 #endif 799 800 declare function CryptEnumProviderTypesW(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szTypeName as LPWSTR, byval pcbTypeName as DWORD ptr) as WINBOOL 801 802 #ifdef UNICODE 803 declare function CryptEnumProviderTypes alias "CryptEnumProviderTypesW"(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szTypeName as LPWSTR, byval pcbTypeName as DWORD ptr) as WINBOOL 804 #endif 805 806 declare function CryptEnumProvidersA(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szProvName as LPSTR, byval pcbProvName as DWORD ptr) as WINBOOL 807 808 #ifndef UNICODE 809 declare function CryptEnumProviders alias "CryptEnumProvidersA"(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szProvName as LPSTR, byval pcbProvName as DWORD ptr) as WINBOOL 810 #endif 811 812 declare function CryptEnumProvidersW(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szProvName as LPWSTR, byval pcbProvName as DWORD ptr) as WINBOOL 813 814 #ifdef UNICODE 815 declare function CryptEnumProviders alias "CryptEnumProvidersW"(byval dwIndex as DWORD, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval pdwProvType as DWORD ptr, byval szProvName as LPWSTR, byval pcbProvName as DWORD ptr) as WINBOOL 816 #endif 817 818 declare function CryptContextAddRef(byval hProv as HCRYPTPROV, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD) as WINBOOL 819 declare function CryptDuplicateKey(byval hKey as HCRYPTKEY, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval phKey as HCRYPTKEY ptr) as WINBOOL 820 declare function CryptDuplicateHash(byval hHash as HCRYPTHASH, byval pdwReserved as DWORD ptr, byval dwFlags as DWORD, byval phHash as HCRYPTHASH ptr) as WINBOOL 821 declare function GetEncSChannel cdecl(byval pData as UBYTE ptr ptr, byval dwDecSize as DWORD ptr) as WINBOOL 822 type HCRYPTPROV_OR_NCRYPT_KEY_HANDLE as ULONG_PTR 823 type HCRYPTPROV_LEGACY as ULONG_PTR 824 825 end extern 826 827 #include once "bcrypt.bi" 828 #include once "ncrypt.bi" 829 830 extern "Windows" 831 832 type _CRYPT_BIT_BLOB 833 cbData as DWORD 834 pbData as UBYTE ptr 835 cUnusedBits as DWORD 836 end type 837 838 type CRYPT_BIT_BLOB as _CRYPT_BIT_BLOB 839 type PCRYPT_BIT_BLOB as _CRYPT_BIT_BLOB ptr 840 841 type _CRYPT_ALGORITHM_IDENTIFIER 842 pszObjId as LPSTR 843 Parameters as CRYPT_OBJID_BLOB 844 end type 845 846 type CRYPT_ALGORITHM_IDENTIFIER as _CRYPT_ALGORITHM_IDENTIFIER 847 type PCRYPT_ALGORITHM_IDENTIFIER as _CRYPT_ALGORITHM_IDENTIFIER ptr 848 #define szOID_RSA "1.2.840.113549" 849 #define szOID_PKCS "1.2.840.113549.1" 850 #define szOID_RSA_HASH "1.2.840.113549.2" 851 #define szOID_RSA_ENCRYPT "1.2.840.113549.3" 852 #define szOID_PKCS_1 "1.2.840.113549.1.1" 853 #define szOID_PKCS_2 "1.2.840.113549.1.2" 854 #define szOID_PKCS_3 "1.2.840.113549.1.3" 855 #define szOID_PKCS_4 "1.2.840.113549.1.4" 856 #define szOID_PKCS_5 "1.2.840.113549.1.5" 857 #define szOID_PKCS_6 "1.2.840.113549.1.6" 858 #define szOID_PKCS_7 "1.2.840.113549.1.7" 859 #define szOID_PKCS_8 "1.2.840.113549.1.8" 860 #define szOID_PKCS_9 "1.2.840.113549.1.9" 861 #define szOID_PKCS_10 "1.2.840.113549.1.10" 862 #define szOID_PKCS_12 "1.2.840.113549.1.12" 863 #define szOID_RSA_RSA "1.2.840.113549.1.1.1" 864 #define szOID_RSA_MD2RSA "1.2.840.113549.1.1.2" 865 #define szOID_RSA_MD4RSA "1.2.840.113549.1.1.3" 866 #define szOID_RSA_MD5RSA "1.2.840.113549.1.1.4" 867 #define szOID_RSA_SHA1RSA "1.2.840.113549.1.1.5" 868 #define szOID_RSA_SETOAEP_RSA "1.2.840.113549.1.1.6" 869 #define szOID_RSAES_OAEP "1.2.840.113549.1.1.7" 870 #define szOID_RSA_MGF1 "1.2.840.113549.1.1.8" 871 #define szOID_RSA_PSPECIFIED "1.2.840.113549.1.1.9" 872 #define szOID_RSA_SSA_PSS "1.2.840.113549.1.1.10" 873 #define szOID_RSA_SHA256RSA "1.2.840.113549.1.1.11" 874 #define szOID_RSA_SHA384RSA "1.2.840.113549.1.1.12" 875 #define szOID_RSA_SHA512RSA "1.2.840.113549.1.1.13" 876 #define szOID_RSA_DH "1.2.840.113549.1.3.1" 877 #define szOID_RSA_data "1.2.840.113549.1.7.1" 878 #define szOID_RSA_signedData "1.2.840.113549.1.7.2" 879 #define szOID_RSA_envelopedData "1.2.840.113549.1.7.3" 880 #define szOID_RSA_signEnvData "1.2.840.113549.1.7.4" 881 #define szOID_RSA_digestedData "1.2.840.113549.1.7.5" 882 #define szOID_RSA_hashedData "1.2.840.113549.1.7.5" 883 #define szOID_RSA_encryptedData "1.2.840.113549.1.7.6" 884 #define szOID_RSA_emailAddr "1.2.840.113549.1.9.1" 885 #define szOID_RSA_unstructName "1.2.840.113549.1.9.2" 886 #define szOID_RSA_contentType "1.2.840.113549.1.9.3" 887 #define szOID_RSA_messageDigest "1.2.840.113549.1.9.4" 888 #define szOID_RSA_signingTime "1.2.840.113549.1.9.5" 889 #define szOID_RSA_counterSign "1.2.840.113549.1.9.6" 890 #define szOID_RSA_challengePwd "1.2.840.113549.1.9.7" 891 #define szOID_RSA_unstructAddr "1.2.840.113549.1.9.8" 892 #define szOID_RSA_extCertAttrs "1.2.840.113549.1.9.9" 893 #define szOID_RSA_certExtensions "1.2.840.113549.1.9.14" 894 #define szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15" 895 #define szOID_RSA_preferSignedData "1.2.840.113549.1.9.15.1" 896 #define szOID_TIMESTAMP_TOKEN "1.2.840.113549.1.9.16.1.4" 897 #define szOID_RFC3161_counterSign "1.3.6.1.4.1.311.3.3.1" 898 #define szOID_RSA_SMIMEalg "1.2.840.113549.1.9.16.3" 899 #define szOID_RSA_SMIMEalgESDH "1.2.840.113549.1.9.16.3.5" 900 #define szOID_RSA_SMIMEalgCMS3DESwrap "1.2.840.113549.1.9.16.3.6" 901 #define szOID_RSA_SMIMEalgCMSRC2wrap "1.2.840.113549.1.9.16.3.7" 902 #define szOID_RSA_MD2 "1.2.840.113549.2.2" 903 #define szOID_RSA_MD4 "1.2.840.113549.2.4" 904 #define szOID_RSA_MD5 "1.2.840.113549.2.5" 905 #define szOID_RSA_RC2CBC "1.2.840.113549.3.2" 906 #define szOID_RSA_RC4 "1.2.840.113549.3.4" 907 #define szOID_RSA_DES_EDE3_CBC "1.2.840.113549.3.7" 908 #define szOID_RSA_RC5_CBCPad "1.2.840.113549.3.9" 909 #define szOID_ANSI_X942 "1.2.840.10046" 910 #define szOID_ANSI_X942_DH "1.2.840.10046.2.1" 911 #define szOID_X957 "1.2.840.10040" 912 #define szOID_X957_DSA "1.2.840.10040.4.1" 913 #define szOID_X957_SHA1DSA "1.2.840.10040.4.3" 914 #define szOID_ECC_PUBLIC_KEY "1.2.840.10045.2.1" 915 #define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7" 916 #define szOID_ECC_CURVE_P384 "1.3.132.0.34" 917 #define szOID_ECC_CURVE_P521 "1.3.132.0.35" 918 #define szOID_ECDSA_SHA1 "1.2.840.10045.4.1" 919 #define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3" 920 #define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2" 921 #define szOID_ECDSA_SHA384 "1.2.840.10045.4.3.3" 922 #define szOID_ECDSA_SHA512 "1.2.840.10045.4.3.4" 923 #define szOID_NIST_AES128_CBC "2.16.840.1.101.3.4.1.2" 924 #define szOID_NIST_AES192_CBC "2.16.840.1.101.3.4.1.22" 925 #define szOID_NIST_AES256_CBC "2.16.840.1.101.3.4.1.42" 926 #define szOID_NIST_AES128_WRAP "2.16.840.1.101.3.4.1.5" 927 #define szOID_NIST_AES192_WRAP "2.16.840.1.101.3.4.1.25" 928 #define szOID_NIST_AES256_WRAP "2.16.840.1.101.3.4.1.45" 929 #define szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF "1.3.133.16.840.63.0.2" 930 #define szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF "1.3.132.1.11.1" 931 #define szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF "1.3.132.1.11.2" 932 #define szOID_DS "2.5" 933 #define szOID_DSALG "2.5.8" 934 #define szOID_DSALG_CRPT "2.5.8.1" 935 #define szOID_DSALG_HASH "2.5.8.2" 936 #define szOID_DSALG_SIGN "2.5.8.3" 937 #define szOID_DSALG_RSA "2.5.8.1.1" 938 #define szOID_OIW "1.3.14" 939 #define szOID_OIWSEC "1.3.14.3.2" 940 #define szOID_OIWSEC_md4RSA "1.3.14.3.2.2" 941 #define szOID_OIWSEC_md5RSA "1.3.14.3.2.3" 942 #define szOID_OIWSEC_md4RSA2 "1.3.14.3.2.4" 943 #define szOID_OIWSEC_desECB "1.3.14.3.2.6" 944 #define szOID_OIWSEC_desCBC "1.3.14.3.2.7" 945 #define szOID_OIWSEC_desOFB "1.3.14.3.2.8" 946 #define szOID_OIWSEC_desCFB "1.3.14.3.2.9" 947 #define szOID_OIWSEC_desMAC "1.3.14.3.2.10" 948 #define szOID_OIWSEC_rsaSign "1.3.14.3.2.11" 949 #define szOID_OIWSEC_dsa "1.3.14.3.2.12" 950 #define szOID_OIWSEC_shaDSA "1.3.14.3.2.13" 951 #define szOID_OIWSEC_mdc2RSA "1.3.14.3.2.14" 952 #define szOID_OIWSEC_shaRSA "1.3.14.3.2.15" 953 #define szOID_OIWSEC_dhCommMod "1.3.14.3.2.16" 954 #define szOID_OIWSEC_desEDE "1.3.14.3.2.17" 955 #define szOID_OIWSEC_sha "1.3.14.3.2.18" 956 #define szOID_OIWSEC_mdc2 "1.3.14.3.2.19" 957 #define szOID_OIWSEC_dsaComm "1.3.14.3.2.20" 958 #define szOID_OIWSEC_dsaCommSHA "1.3.14.3.2.21" 959 #define szOID_OIWSEC_rsaXchg "1.3.14.3.2.22" 960 #define szOID_OIWSEC_keyHashSeal "1.3.14.3.2.23" 961 #define szOID_OIWSEC_md2RSASign "1.3.14.3.2.24" 962 #define szOID_OIWSEC_md5RSASign "1.3.14.3.2.25" 963 #define szOID_OIWSEC_sha1 "1.3.14.3.2.26" 964 #define szOID_OIWSEC_dsaSHA1 "1.3.14.3.2.27" 965 #define szOID_OIWSEC_dsaCommSHA1 "1.3.14.3.2.28" 966 #define szOID_OIWSEC_sha1RSASign "1.3.14.3.2.29" 967 #define szOID_OIWDIR "1.3.14.7.2" 968 #define szOID_OIWDIR_CRPT "1.3.14.7.2.1" 969 #define szOID_OIWDIR_HASH "1.3.14.7.2.2" 970 #define szOID_OIWDIR_SIGN "1.3.14.7.2.3" 971 #define szOID_OIWDIR_md2 "1.3.14.7.2.2.1" 972 #define szOID_OIWDIR_md2RSA "1.3.14.7.2.3.1" 973 #define szOID_INFOSEC "2.16.840.1.101.2.1" 974 #define szOID_INFOSEC_sdnsSignature "2.16.840.1.101.2.1.1.1" 975 #define szOID_INFOSEC_mosaicSignature "2.16.840.1.101.2.1.1.2" 976 #define szOID_INFOSEC_sdnsConfidentiality "2.16.840.1.101.2.1.1.3" 977 #define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4" 978 #define szOID_INFOSEC_sdnsIntegrity "2.16.840.1.101.2.1.1.5" 979 #define szOID_INFOSEC_mosaicIntegrity "2.16.840.1.101.2.1.1.6" 980 #define szOID_INFOSEC_sdnsTokenProtection "2.16.840.1.101.2.1.1.7" 981 #define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8" 982 #define szOID_INFOSEC_sdnsKeyManagement "2.16.840.1.101.2.1.1.9" 983 #define szOID_INFOSEC_mosaicKeyManagement "2.16.840.1.101.2.1.1.10" 984 #define szOID_INFOSEC_sdnsKMandSig "2.16.840.1.101.2.1.1.11" 985 #define szOID_INFOSEC_mosaicKMandSig "2.16.840.1.101.2.1.1.12" 986 #define szOID_INFOSEC_SuiteASignature "2.16.840.1.101.2.1.1.13" 987 #define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14" 988 #define szOID_INFOSEC_SuiteAIntegrity "2.16.840.1.101.2.1.1.15" 989 #define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16" 990 #define szOID_INFOSEC_SuiteAKeyManagement "2.16.840.1.101.2.1.1.17" 991 #define szOID_INFOSEC_SuiteAKMandSig "2.16.840.1.101.2.1.1.18" 992 #define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19" 993 #define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20" 994 #define szOID_INFOSEC_mosaicUpdatedInteg "2.16.840.1.101.2.1.1.21" 995 #define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1" 996 #define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2" 997 #define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3" 998 999 type _CRYPT_OBJID_TABLE 1000 dwAlgId as DWORD 1001 pszObjId as LPCSTR 1002 end type 1003 1004 type CRYPT_OBJID_TABLE as _CRYPT_OBJID_TABLE 1005 type PCRYPT_OBJID_TABLE as _CRYPT_OBJID_TABLE ptr 1006 1007 type _CRYPT_HASH_INFO 1008 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 1009 Hash as CRYPT_HASH_BLOB 1010 end type 1011 1012 type CRYPT_HASH_INFO as _CRYPT_HASH_INFO 1013 type PCRYPT_HASH_INFO as _CRYPT_HASH_INFO ptr 1014 1015 type _CERT_EXTENSION 1016 pszObjId as LPSTR 1017 fCritical as WINBOOL 1018 Value as CRYPT_OBJID_BLOB 1019 end type 1020 1021 type CERT_EXTENSION as _CERT_EXTENSION 1022 type PCERT_EXTENSION as _CERT_EXTENSION ptr 1023 type PCCERT_EXTENSION as const CERT_EXTENSION ptr 1024 1025 type _CRYPT_ATTRIBUTE_TYPE_VALUE 1026 pszObjId as LPSTR 1027 Value as CRYPT_OBJID_BLOB 1028 end type 1029 1030 type CRYPT_ATTRIBUTE_TYPE_VALUE as _CRYPT_ATTRIBUTE_TYPE_VALUE 1031 type PCRYPT_ATTRIBUTE_TYPE_VALUE as _CRYPT_ATTRIBUTE_TYPE_VALUE ptr 1032 1033 type _CRYPT_ATTRIBUTE 1034 pszObjId as LPSTR 1035 cValue as DWORD 1036 rgValue as PCRYPT_ATTR_BLOB 1037 end type 1038 1039 type CRYPT_ATTRIBUTE as _CRYPT_ATTRIBUTE 1040 type PCRYPT_ATTRIBUTE as _CRYPT_ATTRIBUTE ptr 1041 1042 type _CRYPT_ATTRIBUTES 1043 cAttr as DWORD 1044 rgAttr as PCRYPT_ATTRIBUTE 1045 end type 1046 1047 type CRYPT_ATTRIBUTES as _CRYPT_ATTRIBUTES 1048 type PCRYPT_ATTRIBUTES as _CRYPT_ATTRIBUTES ptr 1049 1050 type _CERT_RDN_ATTR 1051 pszObjId as LPSTR 1052 dwValueType as DWORD 1053 Value as CERT_RDN_VALUE_BLOB 1054 end type 1055 1056 type CERT_RDN_ATTR as _CERT_RDN_ATTR 1057 type PCERT_RDN_ATTR as _CERT_RDN_ATTR ptr 1058 #define szOID_COMMON_NAME "2.5.4.3" 1059 #define szOID_SUR_NAME "2.5.4.4" 1060 #define szOID_DEVICE_SERIAL_NUMBER "2.5.4.5" 1061 #define szOID_COUNTRY_NAME "2.5.4.6" 1062 #define szOID_LOCALITY_NAME "2.5.4.7" 1063 #define szOID_STATE_OR_PROVINCE_NAME "2.5.4.8" 1064 #define szOID_STREET_ADDRESS "2.5.4.9" 1065 #define szOID_ORGANIZATION_NAME "2.5.4.10" 1066 #define szOID_ORGANIZATIONAL_UNIT_NAME "2.5.4.11" 1067 #define szOID_TITLE "2.5.4.12" 1068 #define szOID_DESCRIPTION "2.5.4.13" 1069 #define szOID_SEARCH_GUIDE "2.5.4.14" 1070 #define szOID_BUSINESS_CATEGORY "2.5.4.15" 1071 #define szOID_POSTAL_ADDRESS "2.5.4.16" 1072 #define szOID_POSTAL_CODE "2.5.4.17" 1073 #define szOID_POST_OFFICE_BOX "2.5.4.18" 1074 #define szOID_PHYSICAL_DELIVERY_OFFICE_NAME "2.5.4.19" 1075 #define szOID_TELEPHONE_NUMBER "2.5.4.20" 1076 #define szOID_TELEX_NUMBER "2.5.4.21" 1077 #define szOID_TELETEXT_TERMINAL_IDENTIFIER "2.5.4.22" 1078 #define szOID_FACSIMILE_TELEPHONE_NUMBER "2.5.4.23" 1079 #define szOID_X21_ADDRESS "2.5.4.24" 1080 #define szOID_INTERNATIONAL_ISDN_NUMBER "2.5.4.25" 1081 #define szOID_REGISTERED_ADDRESS "2.5.4.26" 1082 #define szOID_DESTINATION_INDICATOR "2.5.4.27" 1083 #define szOID_PREFERRED_DELIVERY_METHOD "2.5.4.28" 1084 #define szOID_PRESENTATION_ADDRESS "2.5.4.29" 1085 #define szOID_SUPPORTED_APPLICATION_CONTEXT "2.5.4.30" 1086 #define szOID_MEMBER "2.5.4.31" 1087 #define szOID_OWNER "2.5.4.32" 1088 #define szOID_ROLE_OCCUPANT "2.5.4.33" 1089 #define szOID_SEE_ALSO "2.5.4.34" 1090 #define szOID_USER_PASSWORD "2.5.4.35" 1091 #define szOID_USER_CERTIFICATE "2.5.4.36" 1092 #define szOID_CA_CERTIFICATE "2.5.4.37" 1093 #define szOID_AUTHORITY_REVOCATION_LIST "2.5.4.38" 1094 #define szOID_CERTIFICATE_REVOCATION_LIST "2.5.4.39" 1095 #define szOID_CROSS_CERTIFICATE_PAIR "2.5.4.40" 1096 #define szOID_GIVEN_NAME "2.5.4.42" 1097 #define szOID_INITIALS "2.5.4.43" 1098 #define szOID_DN_QUALIFIER "2.5.4.46" 1099 #define szOID_DOMAIN_COMPONENT "0.9.2342.19200300.100.1.25" 1100 #define szOID_PKCS_12_FRIENDLY_NAME_ATTR "1.2.840.113549.1.9.20" 1101 #define szOID_PKCS_12_LOCAL_KEY_ID "1.2.840.113549.1.9.21" 1102 #define szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR "1.3.6.1.4.1.311.17.1" 1103 #define szOID_LOCAL_MACHINE_KEYSET "1.3.6.1.4.1.311.17.2" 1104 #define szOID_PKCS_12_EXTENDED_ATTRIBUTES "1.3.6.1.4.1.311.17.3" 1105 #define szOID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID "1.3.6.1.4.1.311.17.4" 1106 #define szOID_KEYID_RDN "1.3.6.1.4.1.311.10.7.1" 1107 #define szOID_EV_RDN_LOCALE "1.3.6.1.4.1.311.60.2.1.1" 1108 #define szOID_EV_RDN_STATE_OR_PROVINCE "1.3.6.1.4.1.311.60.2.1.2" 1109 #define szOID_EV_RDN_COUNTRY "1.3.6.1.4.1.311.60.2.1.3" 1110 const CERT_RDN_ANY_TYPE = 0 1111 const CERT_RDN_ENCODED_BLOB = 1 1112 const CERT_RDN_OCTET_STRING = 2 1113 const CERT_RDN_NUMERIC_STRING = 3 1114 const CERT_RDN_PRINTABLE_STRING = 4 1115 const CERT_RDN_TELETEX_STRING = 5 1116 const CERT_RDN_T61_STRING = 5 1117 const CERT_RDN_VIDEOTEX_STRING = 6 1118 const CERT_RDN_IA5_STRING = 7 1119 const CERT_RDN_GRAPHIC_STRING = 8 1120 const CERT_RDN_VISIBLE_STRING = 9 1121 const CERT_RDN_ISO646_STRING = 9 1122 const CERT_RDN_GENERAL_STRING = 10 1123 const CERT_RDN_UNIVERSAL_STRING = 11 1124 const CERT_RDN_INT4_STRING = 11 1125 const CERT_RDN_BMP_STRING = 12 1126 const CERT_RDN_UNICODE_STRING = 12 1127 const CERT_RDN_UTF8_STRING = 13 1128 const CERT_RDN_TYPE_MASK = &h000000ff 1129 const CERT_RDN_FLAGS_MASK = &hff000000 1130 const CERT_RDN_ENABLE_T61_UNICODE_FLAG = &h80000000 1131 const CERT_RDN_ENABLE_UTF8_UNICODE_FLAG = &h20000000 1132 const CERT_RDN_FORCE_UTF8_UNICODE_FLAG = &h10000000 1133 const CERT_RDN_DISABLE_CHECK_TYPE_FLAG = &h40000000 1134 const CERT_RDN_DISABLE_IE4_UTF8_FLAG = &h1000000 1135 const CERT_RDN_ENABLE_PUNYCODE_FLAG = &h2000000 1136 #define IS_CERT_RDN_CHAR_STRING(X) (((X) and CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING) 1137 1138 type _CERT_RDN 1139 cRDNAttr as DWORD 1140 rgRDNAttr as PCERT_RDN_ATTR 1141 end type 1142 1143 type CERT_RDN as _CERT_RDN 1144 type PCERT_RDN as _CERT_RDN ptr 1145 1146 type _CERT_NAME_INFO 1147 cRDN as DWORD 1148 rgRDN as PCERT_RDN 1149 end type 1150 1151 type CERT_NAME_INFO as _CERT_NAME_INFO 1152 type PCERT_NAME_INFO as _CERT_NAME_INFO ptr 1153 1154 type _CERT_NAME_VALUE 1155 dwValueType as DWORD 1156 Value as CERT_RDN_VALUE_BLOB 1157 end type 1158 1159 type CERT_NAME_VALUE as _CERT_NAME_VALUE 1160 type PCERT_NAME_VALUE as _CERT_NAME_VALUE ptr 1161 1162 type _CERT_PUBLIC_KEY_INFO 1163 Algorithm as CRYPT_ALGORITHM_IDENTIFIER 1164 PublicKey as CRYPT_BIT_BLOB 1165 end type 1166 1167 type CERT_PUBLIC_KEY_INFO as _CERT_PUBLIC_KEY_INFO 1168 type PCERT_PUBLIC_KEY_INFO as _CERT_PUBLIC_KEY_INFO ptr 1169 #define CERT_RSA_PUBLIC_KEY_OBJID szOID_RSA_RSA 1170 #define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN szOID_RSA_RSA 1171 #define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG szOID_RSA_RSA 1172 1173 type _CRYPT_ECC_PRIVATE_KEY_INFO 1174 dwVersion as DWORD 1175 PrivateKey as CRYPT_DER_BLOB 1176 szCurveOid as LPSTR 1177 PublicKey as CRYPT_BIT_BLOB 1178 end type 1179 1180 type CRYPT_ECC_PRIVATE_KEY_INFO as _CRYPT_ECC_PRIVATE_KEY_INFO 1181 type PCRYPT_ECC_PRIVATE_KEY_INFO as _CRYPT_ECC_PRIVATE_KEY_INFO ptr 1182 const CRYPT_ECC_PRIVATE_KEY_INFO_v1 = 1 1183 1184 type _CRYPT_PRIVATE_KEY_INFO 1185 Version as DWORD 1186 Algorithm as CRYPT_ALGORITHM_IDENTIFIER 1187 PrivateKey as CRYPT_DER_BLOB 1188 pAttributes as PCRYPT_ATTRIBUTES 1189 end type 1190 1191 type CRYPT_PRIVATE_KEY_INFO as _CRYPT_PRIVATE_KEY_INFO 1192 type PCRYPT_PRIVATE_KEY_INFO as _CRYPT_PRIVATE_KEY_INFO ptr 1193 1194 type _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO 1195 EncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 1196 EncryptedPrivateKey as CRYPT_DATA_BLOB 1197 end type 1198 1199 type CRYPT_ENCRYPTED_PRIVATE_KEY_INFO as _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO 1200 type PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO as _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO ptr 1201 type PCRYPT_DECRYPT_PRIVATE_KEY_FUNC as function(byval Algorithm as CRYPT_ALGORITHM_IDENTIFIER, byval EncryptedPrivateKey as CRYPT_DATA_BLOB, byval pbClearTextKey as UBYTE ptr, byval pcbClearTextKey as DWORD ptr, byval pVoidDecryptFunc as LPVOID) as WINBOOL 1202 type PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC as function(byval pAlgorithm as CRYPT_ALGORITHM_IDENTIFIER ptr, byval pClearTextPrivateKey as CRYPT_DATA_BLOB ptr, byval pbEncryptedKey as UBYTE ptr, byval pcbEncryptedKey as DWORD ptr, byval pVoidEncryptFunc as LPVOID) as WINBOOL 1203 type PCRYPT_RESOLVE_HCRYPTPROV_FUNC as function(byval pPrivateKeyInfo as CRYPT_PRIVATE_KEY_INFO ptr, byval phCryptProv as HCRYPTPROV ptr, byval pVoidResolveFunc as LPVOID) as WINBOOL 1204 1205 type _CRYPT_PKCS8_IMPORT_PARAMS 1206 PrivateKey as CRYPT_DIGEST_BLOB 1207 pResolvehCryptProvFunc as PCRYPT_RESOLVE_HCRYPTPROV_FUNC 1208 pVoidResolveFunc as LPVOID 1209 pDecryptPrivateKeyFunc as PCRYPT_DECRYPT_PRIVATE_KEY_FUNC 1210 pVoidDecryptFunc as LPVOID 1211 end type 1212 1213 type CRYPT_PKCS8_IMPORT_PARAMS as _CRYPT_PKCS8_IMPORT_PARAMS 1214 type PCRYPT_PKCS8_IMPORT_PARAMS as _CRYPT_PKCS8_IMPORT_PARAMS ptr 1215 type CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS as _CRYPT_PKCS8_IMPORT_PARAMS 1216 type PCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS as _CRYPT_PKCS8_IMPORT_PARAMS ptr 1217 1218 type _CRYPT_PKCS8_EXPORT_PARAMS 1219 hCryptProv as HCRYPTPROV 1220 dwKeySpec as DWORD 1221 pszPrivateKeyObjId as LPSTR 1222 pEncryptPrivateKeyFunc as PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC 1223 pVoidEncryptFunc as LPVOID 1224 end type 1225 1226 type CRYPT_PKCS8_EXPORT_PARAMS as _CRYPT_PKCS8_EXPORT_PARAMS 1227 type PCRYPT_PKCS8_EXPORT_PARAMS as _CRYPT_PKCS8_EXPORT_PARAMS ptr 1228 1229 type _CERT_INFO 1230 dwVersion as DWORD 1231 SerialNumber as CRYPT_INTEGER_BLOB 1232 SignatureAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 1233 Issuer as CERT_NAME_BLOB 1234 NotBefore as FILETIME 1235 NotAfter as FILETIME 1236 Subject as CERT_NAME_BLOB 1237 SubjectPublicKeyInfo as CERT_PUBLIC_KEY_INFO 1238 IssuerUniqueId as CRYPT_BIT_BLOB 1239 SubjectUniqueId as CRYPT_BIT_BLOB 1240 cExtension as DWORD 1241 rgExtension as PCERT_EXTENSION 1242 end type 1243 1244 type CERT_INFO as _CERT_INFO 1245 type PCERT_INFO as _CERT_INFO ptr 1246 const CERT_V1 = 0 1247 const CERT_V2 = 1 1248 const CERT_V3 = 2 1249 const CERT_INFO_VERSION_FLAG = 1 1250 const CERT_INFO_SERIAL_NUMBER_FLAG = 2 1251 const CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3 1252 const CERT_INFO_ISSUER_FLAG = 4 1253 const CERT_INFO_NOT_BEFORE_FLAG = 5 1254 const CERT_INFO_NOT_AFTER_FLAG = 6 1255 const CERT_INFO_SUBJECT_FLAG = 7 1256 const CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8 1257 const CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9 1258 const CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10 1259 const CERT_INFO_EXTENSION_FLAG = 11 1260 1261 type _CRL_ENTRY 1262 SerialNumber as CRYPT_INTEGER_BLOB 1263 RevocationDate as FILETIME 1264 cExtension as DWORD 1265 rgExtension as PCERT_EXTENSION 1266 end type 1267 1268 type CRL_ENTRY as _CRL_ENTRY 1269 type PCRL_ENTRY as _CRL_ENTRY ptr 1270 1271 type _CRL_INFO 1272 dwVersion as DWORD 1273 SignatureAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 1274 Issuer as CERT_NAME_BLOB 1275 ThisUpdate as FILETIME 1276 NextUpdate as FILETIME 1277 cCRLEntry as DWORD 1278 rgCRLEntry as PCRL_ENTRY 1279 cExtension as DWORD 1280 rgExtension as PCERT_EXTENSION 1281 end type 1282 1283 type CRL_INFO as _CRL_INFO 1284 type PCRL_INFO as _CRL_INFO ptr 1285 const CRL_V1 = 0 1286 const CRL_V2 = 1 1287 const CERT_BUNDLE_CERTIFICATE = 0 1288 const CERT_BUNDLE_CRL = 1 1289 1290 type _CERT_OR_CRL_BLOB 1291 dwChoice as DWORD 1292 cbEncoded as DWORD 1293 pbEncoded as UBYTE ptr 1294 end type 1295 1296 type CERT_OR_CRL_BLOB as _CERT_OR_CRL_BLOB 1297 type PCERT_OR_CRL_BLOB as _CERT_OR_CRL_BLOB ptr 1298 1299 type _CERT_OR_CRL_BUNDLE 1300 cItem as DWORD 1301 rgItem as PCERT_OR_CRL_BLOB 1302 end type 1303 1304 type CERT_OR_CRL_BUNDLE as _CERT_OR_CRL_BUNDLE 1305 type PCERT_OR_CRL_BUNDLE as _CERT_OR_CRL_BUNDLE ptr 1306 1307 type _CERT_REQUEST_INFO 1308 dwVersion as DWORD 1309 Subject as CERT_NAME_BLOB 1310 SubjectPublicKeyInfo as CERT_PUBLIC_KEY_INFO 1311 cAttribute as DWORD 1312 rgAttribute as PCRYPT_ATTRIBUTE 1313 end type 1314 1315 type CERT_REQUEST_INFO as _CERT_REQUEST_INFO 1316 type PCERT_REQUEST_INFO as _CERT_REQUEST_INFO ptr 1317 const CERT_REQUEST_V1 = 0 1318 1319 type _CERT_KEYGEN_REQUEST_INFO 1320 dwVersion as DWORD 1321 SubjectPublicKeyInfo as CERT_PUBLIC_KEY_INFO 1322 pwszChallengeString as LPWSTR 1323 end type 1324 1325 type CERT_KEYGEN_REQUEST_INFO as _CERT_KEYGEN_REQUEST_INFO 1326 type PCERT_KEYGEN_REQUEST_INFO as _CERT_KEYGEN_REQUEST_INFO ptr 1327 const CERT_KEYGEN_REQUEST_V1 = 0 1328 1329 type _CERT_SIGNED_CONTENT_INFO 1330 ToBeSigned as CRYPT_DER_BLOB 1331 SignatureAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 1332 Signature as CRYPT_BIT_BLOB 1333 end type 1334 1335 type CERT_SIGNED_CONTENT_INFO as _CERT_SIGNED_CONTENT_INFO 1336 type PCERT_SIGNED_CONTENT_INFO as _CERT_SIGNED_CONTENT_INFO ptr 1337 1338 type _CTL_USAGE 1339 cUsageIdentifier as DWORD 1340 rgpszUsageIdentifier as LPSTR ptr 1341 end type 1342 1343 type CTL_USAGE as _CTL_USAGE 1344 type PCTL_USAGE as _CTL_USAGE ptr 1345 type CERT_ENHKEY_USAGE as _CTL_USAGE 1346 type PCERT_ENHKEY_USAGE as _CTL_USAGE ptr 1347 type PCCTL_USAGE as const CTL_USAGE ptr 1348 type PCCERT_ENHKEY_USAGE as const CERT_ENHKEY_USAGE ptr 1349 1350 type _CTL_ENTRY 1351 SubjectIdentifier as CRYPT_DATA_BLOB 1352 cAttribute as DWORD 1353 rgAttribute as PCRYPT_ATTRIBUTE 1354 end type 1355 1356 type CTL_ENTRY as _CTL_ENTRY 1357 type PCTL_ENTRY as _CTL_ENTRY ptr 1358 1359 type _CTL_INFO 1360 dwVersion as DWORD 1361 SubjectUsage as CTL_USAGE 1362 ListIdentifier as CRYPT_DATA_BLOB 1363 SequenceNumber as CRYPT_INTEGER_BLOB 1364 ThisUpdate as FILETIME 1365 NextUpdate as FILETIME 1366 SubjectAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 1367 cCTLEntry as DWORD 1368 rgCTLEntry as PCTL_ENTRY 1369 cExtension as DWORD 1370 rgExtension as PCERT_EXTENSION 1371 end type 1372 1373 type CTL_INFO as _CTL_INFO 1374 type PCTL_INFO as _CTL_INFO ptr 1375 const CTL_V1 = 0 1376 1377 type _CRYPT_TIME_STAMP_REQUEST_INFO 1378 pszTimeStampAlgorithm as LPSTR 1379 pszContentType as LPSTR 1380 Content as CRYPT_OBJID_BLOB 1381 cAttribute as DWORD 1382 rgAttribute as PCRYPT_ATTRIBUTE 1383 end type 1384 1385 type CRYPT_TIME_STAMP_REQUEST_INFO as _CRYPT_TIME_STAMP_REQUEST_INFO 1386 type PCRYPT_TIME_STAMP_REQUEST_INFO as _CRYPT_TIME_STAMP_REQUEST_INFO ptr 1387 1388 type _CRYPT_ENROLLMENT_NAME_VALUE_PAIR 1389 pwszName as LPWSTR 1390 pwszValue as LPWSTR 1391 end type 1392 1393 type CRYPT_ENROLLMENT_NAME_VALUE_PAIR as _CRYPT_ENROLLMENT_NAME_VALUE_PAIR 1394 type PCRYPT_ENROLLMENT_NAME_VALUE_PAIR as _CRYPT_ENROLLMENT_NAME_VALUE_PAIR ptr 1395 1396 type _CRYPT_CSP_PROVIDER 1397 dwKeySpec as DWORD 1398 pwszProviderName as LPWSTR 1399 Signature as CRYPT_BIT_BLOB 1400 end type 1401 1402 type CRYPT_CSP_PROVIDER as _CRYPT_CSP_PROVIDER 1403 type PCRYPT_CSP_PROVIDER as _CRYPT_CSP_PROVIDER ptr 1404 const CERT_ENCODING_TYPE_MASK = &h0000ffff 1405 const CMSG_ENCODING_TYPE_MASK = &hffff0000 1406 #define GET_CERT_ENCODING_TYPE(T) (T and CERT_ENCODING_TYPE_MASK) 1407 #define GET_CMSG_ENCODING_TYPE(T) (T and CMSG_ENCODING_TYPE_MASK) 1408 const CRYPT_ASN_ENCODING = &h1 1409 const CRYPT_NDR_ENCODING = &h2 1410 const X509_ASN_ENCODING = &h1 1411 const X509_NDR_ENCODING = &h2 1412 const PKCS_7_ASN_ENCODING = &h10000 1413 const PKCS_7_NDR_ENCODING = &h20000 1414 declare function CryptFormatObject(byval dwCertEncodingType as DWORD, byval dwFormatType as DWORD, byval dwFormatStrType as DWORD, byval pFormatStruct as any ptr, byval lpszStructType as LPCSTR, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval pbFormat as any ptr, byval pcbFormat as DWORD ptr) as WINBOOL 1415 const CRYPT_FORMAT_STR_MULTI_LINE = &h1 1416 const CRYPT_FORMAT_STR_NO_HEX = &h10 1417 const CRYPT_FORMAT_SIMPLE = &h1 1418 const CRYPT_FORMAT_X509 = &h2 1419 const CRYPT_FORMAT_OID = &h4 1420 const CRYPT_FORMAT_RDN_SEMICOLON = &h100 1421 const CRYPT_FORMAT_RDN_CRLF = &h200 1422 const CRYPT_FORMAT_RDN_UNQUOTE = &h400 1423 const CRYPT_FORMAT_RDN_REVERSE = &h800 1424 const CRYPT_FORMAT_COMMA = &h1000 1425 const CRYPT_FORMAT_SEMICOLON = CRYPT_FORMAT_RDN_SEMICOLON 1426 const CRYPT_FORMAT_CRLF = CRYPT_FORMAT_RDN_CRLF 1427 type PFN_CRYPT_ALLOC as function(byval cbSize as uinteger) as LPVOID 1428 type PFN_CRYPT_FREE as sub(byval pv as LPVOID) 1429 1430 type _CRYPT_ENCODE_PARA 1431 cbSize as DWORD 1432 pfnAlloc as PFN_CRYPT_ALLOC 1433 pfnFree as PFN_CRYPT_FREE 1434 end type 1435 1436 type CRYPT_ENCODE_PARA as _CRYPT_ENCODE_PARA 1437 type PCRYPT_ENCODE_PARA as _CRYPT_ENCODE_PARA ptr 1438 declare function CryptEncodeObjectEx(byval dwCertEncodingType as DWORD, byval lpszStructType as LPCSTR, byval pvStructInfo as const any ptr, byval dwFlags as DWORD, byval pEncodePara as PCRYPT_ENCODE_PARA, byval pvEncoded as any ptr, byval pcbEncoded as DWORD ptr) as WINBOOL 1439 declare function CryptEncodeObject(byval dwCertEncodingType as DWORD, byval lpszStructType as LPCSTR, byval pvStructInfo as const any ptr, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr) as WINBOOL 1440 const CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG = &h8 1441 const CRYPT_ENCODE_ALLOC_FLAG = &h8000 1442 const CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG = CERT_RDN_ENABLE_T61_UNICODE_FLAG 1443 const CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG = CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 1444 const CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG = CERT_RDN_FORCE_UTF8_UNICODE_FLAG 1445 const CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG = CERT_RDN_DISABLE_CHECK_TYPE_FLAG 1446 const CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG = &h10000 1447 const CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG = &h20000 1448 const CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG = &h40000 1449 const CRYPT_ENCODE_ENABLE_IA5CONVERSION_FLAG = CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG or CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG 1450 1451 type _CRYPT_DECODE_PARA 1452 cbSize as DWORD 1453 pfnAlloc as PFN_CRYPT_ALLOC 1454 pfnFree as PFN_CRYPT_FREE 1455 end type 1456 1457 type CRYPT_DECODE_PARA as _CRYPT_DECODE_PARA 1458 type PCRYPT_DECODE_PARA as _CRYPT_DECODE_PARA ptr 1459 declare function CryptDecodeObjectEx(byval dwCertEncodingType as DWORD, byval lpszStructType as LPCSTR, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval dwFlags as DWORD, byval pDecodePara as PCRYPT_DECODE_PARA, byval pvStructInfo as any ptr, byval pcbStructInfo as DWORD ptr) as WINBOOL 1460 declare function CryptDecodeObject(byval dwCertEncodingType as DWORD, byval lpszStructType as LPCSTR, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval dwFlags as DWORD, byval pvStructInfo as any ptr, byval pcbStructInfo as DWORD ptr) as WINBOOL 1461 const CRYPT_DECODE_NOCOPY_FLAG = &h1 1462 const CRYPT_DECODE_TO_BE_SIGNED_FLAG = &h2 1463 const CRYPT_DECODE_SHARE_OID_STRING_FLAG = &h4 1464 const CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG = &h8 1465 const CRYPT_DECODE_ALLOC_FLAG = &h8000 1466 const CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG = CERT_RDN_DISABLE_IE4_UTF8_FLAG 1467 const CRYPT_DECODE_ENABLE_PUNYCODE_FLAG = &h2000000 1468 const CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG = &h4000000 1469 const CRYPT_DECODE_ENABLE_IA5CONVERSION_FLAG = CRYPT_DECODE_ENABLE_PUNYCODE_FLAG or CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG 1470 const CRYPT_ENCODE_DECODE_NONE = 0 1471 const X509_CERT = cast(LPCSTR, 1) 1472 const X509_CERT_TO_BE_SIGNED = cast(LPCSTR, 2) 1473 const X509_CERT_CRL_TO_BE_SIGNED = cast(LPCSTR, 3) 1474 const X509_CERT_REQUEST_TO_BE_SIGNED = cast(LPCSTR, 4) 1475 const X509_EXTENSIONS = cast(LPCSTR, 5) 1476 const X509_NAME_VALUE = cast(LPCSTR, 6) 1477 const X509_NAME = cast(LPCSTR, 7) 1478 const X509_PUBLIC_KEY_INFO = cast(LPCSTR, 8) 1479 const X509_AUTHORITY_KEY_ID = cast(LPCSTR, 9) 1480 const X509_KEY_ATTRIBUTES = cast(LPCSTR, 10) 1481 const X509_KEY_USAGE_RESTRICTION = cast(LPCSTR, 11) 1482 const X509_ALTERNATE_NAME = cast(LPCSTR, 12) 1483 const X509_BASIC_CONSTRAINTS = cast(LPCSTR, 13) 1484 const X509_KEY_USAGE = cast(LPCSTR, 14) 1485 const X509_BASIC_CONSTRAINTS2 = cast(LPCSTR, 15) 1486 const X509_CERT_POLICIES = cast(LPCSTR, 16) 1487 const PKCS_UTC_TIME = cast(LPCSTR, 17) 1488 const PKCS_TIME_REQUEST = cast(LPCSTR, 18) 1489 const RSA_CSP_PUBLICKEYBLOB = cast(LPCSTR, 19) 1490 const X509_UNICODE_NAME = cast(LPCSTR, 20) 1491 const X509_KEYGEN_REQUEST_TO_BE_SIGNED = cast(LPCSTR, 21) 1492 const PKCS_ATTRIBUTE = cast(LPCSTR, 22) 1493 const PKCS_CONTENT_INFO_SEQUENCE_OF_ANY = cast(LPCSTR, 23) 1494 const X509_UNICODE_NAME_VALUE = cast(LPCSTR, 24) 1495 const X509_ANY_STRING = X509_NAME_VALUE 1496 const X509_UNICODE_ANY_STRING = X509_UNICODE_NAME_VALUE 1497 const X509_OCTET_STRING = cast(LPCSTR, 25) 1498 const X509_BITS = cast(LPCSTR, 26) 1499 const X509_INTEGER = cast(LPCSTR, 27) 1500 const X509_MULTI_BYTE_INTEGER = cast(LPCSTR, 28) 1501 const X509_ENUMERATED = cast(LPCSTR, 29) 1502 const X509_CHOICE_OF_TIME = cast(LPCSTR, 30) 1503 const X509_AUTHORITY_KEY_ID2 = cast(LPCSTR, 31) 1504 const X509_AUTHORITY_INFO_ACCESS = cast(LPCSTR, 32) 1505 const X509_SUBJECT_INFO_ACCESS = X509_AUTHORITY_INFO_ACCESS 1506 const X509_CRL_REASON_CODE = X509_ENUMERATED 1507 const PKCS_CONTENT_INFO = cast(LPCSTR, 33) 1508 const X509_SEQUENCE_OF_ANY = cast(LPCSTR, 34) 1509 const X509_CRL_DIST_POINTS = cast(LPCSTR, 35) 1510 const X509_ENHANCED_KEY_USAGE = cast(LPCSTR, 36) 1511 const PKCS_CTL = cast(LPCSTR, 37) 1512 const X509_MULTI_BYTE_UINT = cast(LPCSTR, 38) 1513 const X509_DSS_PUBLICKEY = X509_MULTI_BYTE_UINT 1514 const X509_DSS_PARAMETERS = cast(LPCSTR, 39) 1515 const X509_DSS_SIGNATURE = cast(LPCSTR, 40) 1516 const PKCS_RC2_CBC_PARAMETERS = cast(LPCSTR, 41) 1517 const PKCS_SMIME_CAPABILITIES = cast(LPCSTR, 42) 1518 const X509_QC_STATEMENTS_EXT = cast(LPCSTR, 42) 1519 const PKCS_RSA_PRIVATE_KEY = cast(LPCSTR, 43) 1520 const PKCS_PRIVATE_KEY_INFO = cast(LPCSTR, 44) 1521 const PKCS_ENCRYPTED_PRIVATE_KEY_INFO = cast(LPCSTR, 45) 1522 const X509_PKIX_POLICY_QUALIFIER_USERNOTICE = cast(LPCSTR, 46) 1523 const X509_DH_PUBLICKEY = X509_MULTI_BYTE_UINT 1524 const X509_DH_PARAMETERS = cast(LPCSTR, 47) 1525 const X509_ECC_SIGNATURE = cast(LPCSTR, 47) 1526 const PKCS_ATTRIBUTES = cast(LPCSTR, 48) 1527 const PKCS_SORTED_CTL = cast(LPCSTR, 49) 1528 const X942_DH_PARAMETERS = cast(LPCSTR, 50) 1529 const X509_BITS_WITHOUT_TRAILING_ZEROES = cast(LPCSTR, 51) 1530 const X942_OTHER_INFO = cast(LPCSTR, 52) 1531 const X509_CERT_PAIR = cast(LPCSTR, 53) 1532 const X509_ISSUING_DIST_POINT = cast(LPCSTR, 54) 1533 const X509_NAME_CONSTRAINTS = cast(LPCSTR, 55) 1534 const X509_POLICY_MAPPINGS = cast(LPCSTR, 56) 1535 const X509_POLICY_CONSTRAINTS = cast(LPCSTR, 57) 1536 const X509_CROSS_CERT_DIST_POINTS = cast(LPCSTR, 58) 1537 const CMC_DATA = cast(LPCSTR, 59) 1538 const CMC_RESPONSE = cast(LPCSTR, 60) 1539 const CMC_STATUS = cast(LPCSTR, 61) 1540 const CMC_ADD_EXTENSIONS = cast(LPCSTR, 62) 1541 const CMC_ADD_ATTRIBUTES = cast(LPCSTR, 63) 1542 const X509_CERTIFICATE_TEMPLATE = cast(LPCSTR, 64) 1543 const OCSP_SIGNED_REQUEST = cast(LPCSTR, 65) 1544 const OCSP_REQUEST = cast(LPCSTR, 66) 1545 const OCSP_RESPONSE = cast(LPCSTR, 67) 1546 const OCSP_BASIC_SIGNED_RESPONSE = cast(LPCSTR, 68) 1547 const OCSP_BASIC_RESPONSE = cast(LPCSTR, 69) 1548 const X509_LOGOTYPE_EXT = cast(LPCSTR, 70) 1549 const X509_BIOMETRIC_EXT = cast(LPCSTR, 71) 1550 const CNG_RSA_PUBLIC_KEY_BLOB = cast(LPCSTR, 72) 1551 const X509_OBJECT_IDENTIFIER = cast(LPCSTR, 73) 1552 const X509_ALGORITHM_IDENTIFIER = cast(LPCSTR, 74) 1553 const PKCS_RSA_SSA_PSS_PARAMETERS = cast(LPCSTR, 75) 1554 const PKCS_RSAES_OAEP_PARAMETERS = cast(LPCSTR, 76) 1555 const ECC_CMS_SHARED_INFO = cast(LPCSTR, 77) 1556 const TIMESTAMP_REQUEST = cast(LPCSTR, 78) 1557 const TIMESTAMP_RESPONSE = cast(LPCSTR, 79) 1558 const TIMESTAMP_INFO = cast(LPCSTR, 80) 1559 const X509_CERT_BUNDLE = cast(LPCSTR, 81) 1560 const X509_ECC_PRIVATE_KEY = cast(LPCSTR, 82) 1561 const CNG_RSA_PRIVATE_KEY_BLOB = cast(LPCSTR, 83) 1562 const PKCS7_SIGNER_INFO = cast(LPCSTR, 500) 1563 const CMS_SIGNER_INFO = cast(LPCSTR, 501) 1564 #define szOID_AUTHORITY_KEY_IDENTIFIER "2.5.29.1" 1565 #define szOID_KEY_ATTRIBUTES "2.5.29.2" 1566 #define szOID_CERT_POLICIES_95 "2.5.29.3" 1567 #define szOID_KEY_USAGE_RESTRICTION "2.5.29.4" 1568 #define szOID_SUBJECT_ALT_NAME "2.5.29.7" 1569 #define szOID_ISSUER_ALT_NAME "2.5.29.8" 1570 #define szOID_BASIC_CONSTRAINTS "2.5.29.10" 1571 #define szOID_KEY_USAGE "2.5.29.15" 1572 #define szOID_PRIVATEKEY_USAGE_PERIOD "2.5.29.16" 1573 #define szOID_BASIC_CONSTRAINTS2 "2.5.29.19" 1574 #define szOID_CERT_POLICIES "2.5.29.32" 1575 #define szOID_ANY_CERT_POLICY "2.5.29.32.0" 1576 #define szOID_INHIBIT_ANY_POLICY "2.5.29.54" 1577 #define szOID_AUTHORITY_KEY_IDENTIFIER2 "2.5.29.35" 1578 #define szOID_SUBJECT_KEY_IDENTIFIER "2.5.29.14" 1579 #define szOID_SUBJECT_ALT_NAME2 "2.5.29.17" 1580 #define szOID_ISSUER_ALT_NAME2 "2.5.29.18" 1581 #define szOID_CRL_REASON_CODE "2.5.29.21" 1582 #define szOID_REASON_CODE_HOLD "2.5.29.23" 1583 #define szOID_CRL_DIST_POINTS "2.5.29.31" 1584 #define szOID_ENHANCED_KEY_USAGE "2.5.29.37" 1585 #define szOID_ANY_ENHANCED_KEY_USAGE "2.5.29.37.0" 1586 #define szOID_CRL_NUMBER "2.5.29.20" 1587 #define szOID_DELTA_CRL_INDICATOR "2.5.29.27" 1588 #define szOID_ISSUING_DIST_POINT "2.5.29.28" 1589 #define szOID_FRESHEST_CRL "2.5.29.46" 1590 #define szOID_NAME_CONSTRAINTS "2.5.29.30" 1591 #define szOID_POLICY_MAPPINGS "2.5.29.33" 1592 #define szOID_LEGACY_POLICY_MAPPINGS "2.5.29.5" 1593 #define szOID_POLICY_CONSTRAINTS "2.5.29.36" 1594 #define szOID_RENEWAL_CERTIFICATE "1.3.6.1.4.1.311.13.1" 1595 #define szOID_ENROLLMENT_NAME_VALUE_PAIR "1.3.6.1.4.1.311.13.2.1" 1596 #define szOID_ENROLLMENT_CSP_PROVIDER "1.3.6.1.4.1.311.13.2.2" 1597 #define szOID_OS_VERSION "1.3.6.1.4.1.311.13.2.3" 1598 #define szOID_ENROLLMENT_AGENT "1.3.6.1.4.1.311.20.2.1" 1599 #define szOID_PKIX "1.3.6.1.5.5.7" 1600 #define szOID_PKIX_PE "1.3.6.1.5.5.7.1" 1601 #define szOID_AUTHORITY_INFO_ACCESS "1.3.6.1.5.5.7.1.1" 1602 #define szOID_SUBJECT_INFO_ACCESS "1.3.6.1.5.5.7.1.11" 1603 #define szOID_BIOMETRIC_EXT "1.3.6.1.5.5.7.1.2" 1604 #define szOID_QC_STATEMENTS_EXT "1.3.6.1.5.5.7.1.3" 1605 #define szOID_LOGOTYPE_EXT "1.3.6.1.5.5.7.1.12" 1606 #define szOID_CERT_EXTENSIONS "1.3.6.1.4.1.311.2.1.14" 1607 #define szOID_NEXT_UPDATE_LOCATION "1.3.6.1.4.1.311.10.2" 1608 #define szOID_REMOVE_CERTIFICATE "1.3.6.1.4.1.311.10.8.1" 1609 #define szOID_CROSS_CERT_DIST_POINTS "1.3.6.1.4.1.311.10.9.1" 1610 #define szOID_CTL "1.3.6.1.4.1.311.10.1" 1611 #define szOID_SORTED_CTL "1.3.6.1.4.1.311.10.1.1" 1612 #define szOID_SERIALIZED "1.3.6.1.4.1.311.10.3.3.1" 1613 #define szOID_NT_PRINCIPAL_NAME "1.3.6.1.4.1.311.20.2.3" 1614 #define szOID_INTERNATIONALIZED_EMAIL_ADDRESS "1.3.6.1.4.1.311.20.2.4" 1615 #define szOID_PRODUCT_UPDATE "1.3.6.1.4.1.311.31.1" 1616 #define szOID_ANY_APPLICATION_POLICY "1.3.6.1.4.1.311.10.12.1" 1617 #define szOID_AUTO_ENROLL_CTL_USAGE "1.3.6.1.4.1.311.20.1" 1618 #define szOID_ENROLL_CERTTYPE_EXTENSION "1.3.6.1.4.1.311.20.2" 1619 #define szOID_CERT_MANIFOLD "1.3.6.1.4.1.311.20.3" 1620 #define szOID_CERTSRV_CA_VERSION "1.3.6.1.4.1.311.21.1" 1621 #define szOID_CERTSRV_PREVIOUS_CERT_HASH "1.3.6.1.4.1.311.21.2" 1622 #define szOID_CRL_VIRTUAL_BASE "1.3.6.1.4.1.311.21.3" 1623 #define szOID_CRL_NEXT_PUBLISH "1.3.6.1.4.1.311.21.4" 1624 #define szOID_KP_CA_EXCHANGE "1.3.6.1.4.1.311.21.5" 1625 #define szOID_KP_KEY_RECOVERY_AGENT "1.3.6.1.4.1.311.21.6" 1626 #define szOID_CERTIFICATE_TEMPLATE "1.3.6.1.4.1.311.21.7" 1627 #define szOID_ENTERPRISE_OID_ROOT "1.3.6.1.4.1.311.21.8" 1628 #define szOID_RDN_DUMMY_SIGNER "1.3.6.1.4.1.311.21.9" 1629 #define szOID_APPLICATION_CERT_POLICIES "1.3.6.1.4.1.311.21.10" 1630 #define szOID_APPLICATION_POLICY_MAPPINGS "1.3.6.1.4.1.311.21.11" 1631 #define szOID_APPLICATION_POLICY_CONSTRAINTS "1.3.6.1.4.1.311.21.12" 1632 #define szOID_ARCHIVED_KEY_ATTR "1.3.6.1.4.1.311.21.13" 1633 #define szOID_CRL_SELF_CDP "1.3.6.1.4.1.311.21.14" 1634 #define szOID_REQUIRE_CERT_CHAIN_POLICY "1.3.6.1.4.1.311.21.15" 1635 #define szOID_ARCHIVED_KEY_CERT_HASH "1.3.6.1.4.1.311.21.16" 1636 #define szOID_ISSUED_CERT_HASH "1.3.6.1.4.1.311.21.17" 1637 #define szOID_DS_EMAIL_REPLICATION "1.3.6.1.4.1.311.21.19" 1638 #define szOID_REQUEST_CLIENT_INFO "1.3.6.1.4.1.311.21.20" 1639 #define szOID_ENCRYPTED_KEY_HASH "1.3.6.1.4.1.311.21.21" 1640 #define szOID_CERTSRV_CROSSCA_VERSION "1.3.6.1.4.1.311.21.22" 1641 #define szOID_NTDS_REPLICATION "1.3.6.1.4.1.311.25.1" 1642 #define szOID_SUBJECT_DIR_ATTRS "2.5.29.9" 1643 #define szOID_PKIX_KP "1.3.6.1.5.5.7.3" 1644 #define szOID_PKIX_KP_SERVER_AUTH "1.3.6.1.5.5.7.3.1" 1645 #define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2" 1646 #define szOID_PKIX_KP_CODE_SIGNING "1.3.6.1.5.5.7.3.3" 1647 #define szOID_PKIX_KP_EMAIL_PROTECTION "1.3.6.1.5.5.7.3.4" 1648 #define szOID_PKIX_KP_IPSEC_END_SYSTEM "1.3.6.1.5.5.7.3.5" 1649 #define szOID_PKIX_KP_IPSEC_TUNNEL "1.3.6.1.5.5.7.3.6" 1650 #define szOID_PKIX_KP_IPSEC_USER "1.3.6.1.5.5.7.3.7" 1651 #define szOID_PKIX_KP_TIMESTAMP_SIGNING "1.3.6.1.5.5.7.3.8" 1652 #define szOID_PKIX_KP_OCSP_SIGNING "1.3.6.1.5.5.7.3.9" 1653 #define szOID_PKIX_OCSP_NONCE "1.3.6.1.5.5.7.48.1.2" 1654 #define szOID_PKIX_OCSP_NOCHECK "1.3.6.1.5.5.7.48.1.5" 1655 #define szOID_IPSEC_KP_IKE_INTERMEDIATE "1.3.6.1.5.5.8.2.2" 1656 #define szOID_PKINIT_KP_KDC "1.3.6.1.5.2.3.5" 1657 #define szOID_KP_CTL_USAGE_SIGNING "1.3.6.1.4.1.311.10.3.1" 1658 #define szOID_KP_TIME_STAMP_SIGNING "1.3.6.1.4.1.311.10.3.2" 1659 #define szOID_SERVER_GATED_CRYPTO "1.3.6.1.4.1.311.10.3.3" 1660 #define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1" 1661 #define szOID_KP_EFS "1.3.6.1.4.1.311.10.3.4" 1662 #define szOID_EFS_RECOVERY "1.3.6.1.4.1.311.10.3.4.1" 1663 #define szOID_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5" 1664 #define szOID_NT5_CRYPTO "1.3.6.1.4.1.311.10.3.6" 1665 #define szOID_OEM_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.7" 1666 #define szOID_EMBEDDED_NT_CRYPTO "1.3.6.1.4.1.311.10.3.8" 1667 #define szOID_ROOT_LIST_SIGNER "1.3.6.1.4.1.311.10.3.9" 1668 #define szOID_KP_QUALIFIED_SUBORDINATION "1.3.6.1.4.1.311.10.3.10" 1669 #define szOID_KP_KEY_RECOVERY "1.3.6.1.4.1.311.10.3.11" 1670 #define szOID_KP_DOCUMENT_SIGNING "1.3.6.1.4.1.311.10.3.12" 1671 #define szOID_KP_LIFETIME_SIGNING "1.3.6.1.4.1.311.10.3.13" 1672 #define szOID_KP_MOBILE_DEVICE_SOFTWARE "1.3.6.1.4.1.311.10.3.14" 1673 #define szOID_KP_SMART_DISPLAY "1.3.6.1.4.1.311.10.3.15" 1674 #define szOID_KP_CSP_SIGNATURE "1.3.6.1.4.1.311.10.3.16" 1675 #define szOID_DRM "1.3.6.1.4.1.311.10.5.1" 1676 #define szOID_DRM_INDIVIDUALIZATION "1.3.6.1.4.1.311.10.5.2" 1677 #define szOID_LICENSES "1.3.6.1.4.1.311.10.6.1" 1678 #define szOID_LICENSE_SERVER "1.3.6.1.4.1.311.10.6.2" 1679 #define szOID_KP_SMARTCARD_LOGON "1.3.6.1.4.1.311.20.2.2" 1680 #define szOID_KP_KERNEL_MODE_CODE_SIGNING "1.3.6.1.4.1.311.61.1.1" 1681 #define szOID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING "1.3.6.1.4.1.311.61.4.1" 1682 #define szOID_REVOKED_LIST_SIGNER "1.3.6.1.4.1.311.10.3.19" 1683 #define szOID_DISALLOWED_LIST "1.3.6.1.4.1.311.10.3.30" 1684 #define szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING "1.3.6.1.4.1.311.61.5.1" 1685 #define szOID_YESNO_TRUST_ATTR "1.3.6.1.4.1.311.10.4.1" 1686 #define szOID_PKIX_POLICY_QUALIFIER_CPS "1.3.6.1.5.5.7.2.1" 1687 #define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2" 1688 #define szOID_ROOT_PROGRAM_FLAGS "1.3.6.1.4.1.311.60.1.1" 1689 const CERT_ROOT_PROGRAM_FLAG_ORG = &h80 1690 const CERT_ROOT_PROGRAM_FLAG_LSC = &h40 1691 const CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO = &h20 1692 const CERT_ROOT_PROGRAM_FLAG_OU = &h10 1693 const CERT_ROOT_PROGRAM_FLAG_ADDRESS = &h08 1694 #define szOID_CERT_POLICIES_95_QUALIFIER1 "2.16.840.1.113733.1.7.1.1" 1695 1696 type _CERT_EXTENSIONS 1697 cExtension as DWORD 1698 rgExtension as PCERT_EXTENSION 1699 end type 1700 1701 type CERT_EXTENSIONS as _CERT_EXTENSIONS 1702 type PCERT_EXTENSIONS as _CERT_EXTENSIONS ptr 1703 const CERT_UNICODE_RDN_ERR_INDEX_MASK = &h3ff 1704 const CERT_UNICODE_RDN_ERR_INDEX_SHIFT = 22 1705 const CERT_UNICODE_ATTR_ERR_INDEX_MASK = &h3f 1706 const CERT_UNICODE_ATTR_ERR_INDEX_SHIFT = 16 1707 const CERT_UNICODE_VALUE_ERR_INDEX_MASK = &hffff 1708 const CERT_UNICODE_VALUE_ERR_INDEX_SHIFT = 0 1709 #define GET_CERT_UNICODE_RDN_ERR_INDEX(X) ((X shr CERT_UNICODE_RDN_ERR_INDEX_SHIFT) and CERT_UNICODE_RDN_ERR_INDEX_MASK) 1710 #define GET_CERT_UNICODE_ATTR_ERR_INDEX(X) ((X shr CERT_UNICODE_ATTR_ERR_INDEX_SHIFT) and CERT_UNICODE_ATTR_ERR_INDEX_MASK) 1711 #define GET_CERT_UNICODE_VALUE_ERR_INDEX(X) (X and CERT_UNICODE_VALUE_ERR_INDEX_MASK) 1712 1713 type _CERT_AUTHORITY_KEY_ID_INFO 1714 KeyId as CRYPT_DATA_BLOB 1715 CertIssuer as CERT_NAME_BLOB 1716 CertSerialNumber as CRYPT_INTEGER_BLOB 1717 end type 1718 1719 type CERT_AUTHORITY_KEY_ID_INFO as _CERT_AUTHORITY_KEY_ID_INFO 1720 type PCERT_AUTHORITY_KEY_ID_INFO as _CERT_AUTHORITY_KEY_ID_INFO ptr 1721 1722 type _CERT_PRIVATE_KEY_VALIDITY 1723 NotBefore as FILETIME 1724 NotAfter as FILETIME 1725 end type 1726 1727 type CERT_PRIVATE_KEY_VALIDITY as _CERT_PRIVATE_KEY_VALIDITY 1728 type PCERT_PRIVATE_KEY_VALIDITY as _CERT_PRIVATE_KEY_VALIDITY ptr 1729 1730 type _CERT_KEY_ATTRIBUTES_INFO 1731 KeyId as CRYPT_DATA_BLOB 1732 IntendedKeyUsage as CRYPT_BIT_BLOB 1733 pPrivateKeyUsagePeriod as PCERT_PRIVATE_KEY_VALIDITY 1734 end type 1735 1736 type CERT_KEY_ATTRIBUTES_INFO as _CERT_KEY_ATTRIBUTES_INFO 1737 type PCERT_KEY_ATTRIBUTES_INFO as _CERT_KEY_ATTRIBUTES_INFO ptr 1738 const CERT_ENCIPHER_ONLY_KEY_USAGE = &h01 1739 const CERT_OFFLINE_CRL_SIGN_KEY_USAGE = &h02 1740 const CERT_KEY_CERT_SIGN_KEY_USAGE = &h04 1741 const CERT_KEY_AGREEMENT_KEY_USAGE = &h08 1742 const CERT_DATA_ENCIPHERMENT_KEY_USAGE = &h10 1743 const CERT_KEY_ENCIPHERMENT_KEY_USAGE = &h20 1744 const CERT_NON_REPUDIATION_KEY_USAGE = &h40 1745 const CERT_DIGITAL_SIGNATURE_KEY_USAGE = &h80 1746 const CERT_DECIPHER_ONLY_KEY_USAGE = &h80 1747 1748 type _CERT_POLICY_ID 1749 cCertPolicyElementId as DWORD 1750 rgpszCertPolicyElementId as LPSTR ptr 1751 end type 1752 1753 type CERT_POLICY_ID as _CERT_POLICY_ID 1754 type PCERT_POLICY_ID as _CERT_POLICY_ID ptr 1755 1756 type _CERT_KEY_USAGE_RESTRICTION_INFO 1757 cCertPolicyId as DWORD 1758 rgCertPolicyId as PCERT_POLICY_ID 1759 RestrictedKeyUsage as CRYPT_BIT_BLOB 1760 end type 1761 1762 type CERT_KEY_USAGE_RESTRICTION_INFO as _CERT_KEY_USAGE_RESTRICTION_INFO 1763 type PCERT_KEY_USAGE_RESTRICTION_INFO as _CERT_KEY_USAGE_RESTRICTION_INFO ptr 1764 1765 type _CERT_OTHER_NAME 1766 pszObjId as LPSTR 1767 Value as CRYPT_OBJID_BLOB 1768 end type 1769 1770 type CERT_OTHER_NAME as _CERT_OTHER_NAME 1771 type PCERT_OTHER_NAME as _CERT_OTHER_NAME ptr 1772 1773 type _CERT_ALT_NAME_ENTRY 1774 dwAltNameChoice as DWORD 1775 1776 union 1777 pOtherName as PCERT_OTHER_NAME 1778 pwszRfc822Name as LPWSTR 1779 pwszDNSName as LPWSTR 1780 DirectoryName as CERT_NAME_BLOB 1781 pwszURL as LPWSTR 1782 IPAddress as CRYPT_DATA_BLOB 1783 pszRegisteredID as LPSTR 1784 end union 1785 end type 1786 1787 type CERT_ALT_NAME_ENTRY as _CERT_ALT_NAME_ENTRY 1788 type PCERT_ALT_NAME_ENTRY as _CERT_ALT_NAME_ENTRY ptr 1789 const CERT_ALT_NAME_OTHER_NAME = 1 1790 const CERT_ALT_NAME_RFC822_NAME = 2 1791 const CERT_ALT_NAME_DNS_NAME = 3 1792 const CERT_ALT_NAME_X400_ADDRESS = 4 1793 const CERT_ALT_NAME_DIRECTORY_NAME = 5 1794 const CERT_ALT_NAME_EDI_PARTY_NAME = 6 1795 const CERT_ALT_NAME_URL = 7 1796 const CERT_ALT_NAME_IP_ADDRESS = 8 1797 const CERT_ALT_NAME_REGISTERED_ID = 9 1798 1799 type _CERT_ALT_NAME_INFO 1800 cAltEntry as DWORD 1801 rgAltEntry as PCERT_ALT_NAME_ENTRY 1802 end type 1803 1804 type CERT_ALT_NAME_INFO as _CERT_ALT_NAME_INFO 1805 type PCERT_ALT_NAME_INFO as _CERT_ALT_NAME_INFO ptr 1806 const CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK = &hff 1807 const CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT = 16 1808 const CERT_ALT_NAME_VALUE_ERR_INDEX_MASK = &h0000ffff 1809 const CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT = 0 1810 #define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X) ((X shr CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) and CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK) 1811 #define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X) (X and CERT_ALT_NAME_VALUE_ERR_INDEX_MASK) 1812 1813 type _CERT_BASIC_CONSTRAINTS_INFO 1814 SubjectType as CRYPT_BIT_BLOB 1815 fPathLenConstraint as WINBOOL 1816 dwPathLenConstraint as DWORD 1817 cSubtreesConstraint as DWORD 1818 rgSubtreesConstraint as CERT_NAME_BLOB ptr 1819 end type 1820 1821 type CERT_BASIC_CONSTRAINTS_INFO as _CERT_BASIC_CONSTRAINTS_INFO 1822 type PCERT_BASIC_CONSTRAINTS_INFO as _CERT_BASIC_CONSTRAINTS_INFO ptr 1823 const CERT_CA_SUBJECT_FLAG = &h80 1824 const CERT_END_ENTITY_SUBJECT_FLAG = &h40 1825 1826 type _CERT_BASIC_CONSTRAINTS2_INFO 1827 fCA as WINBOOL 1828 fPathLenConstraint as WINBOOL 1829 dwPathLenConstraint as DWORD 1830 end type 1831 1832 type CERT_BASIC_CONSTRAINTS2_INFO as _CERT_BASIC_CONSTRAINTS2_INFO 1833 type PCERT_BASIC_CONSTRAINTS2_INFO as _CERT_BASIC_CONSTRAINTS2_INFO ptr 1834 1835 type _CERT_POLICY_QUALIFIER_INFO 1836 pszPolicyQualifierId as LPSTR 1837 Qualifier as CRYPT_OBJID_BLOB 1838 end type 1839 1840 type CERT_POLICY_QUALIFIER_INFO as _CERT_POLICY_QUALIFIER_INFO 1841 type PCERT_POLICY_QUALIFIER_INFO as _CERT_POLICY_QUALIFIER_INFO ptr 1842 1843 type _CERT_POLICY_INFO 1844 pszPolicyIdentifier as LPSTR 1845 cPolicyQualifier as DWORD 1846 rgPolicyQualifier as CERT_POLICY_QUALIFIER_INFO ptr 1847 end type 1848 1849 type CERT_POLICY_INFO as _CERT_POLICY_INFO 1850 type PCERT_POLICY_INFO as _CERT_POLICY_INFO ptr 1851 1852 type _CERT_POLICIES_INFO 1853 cPolicyInfo as DWORD 1854 rgPolicyInfo as CERT_POLICY_INFO ptr 1855 end type 1856 1857 type CERT_POLICIES_INFO as _CERT_POLICIES_INFO 1858 type PCERT_POLICIES_INFO as _CERT_POLICIES_INFO ptr 1859 1860 type _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE 1861 pszOrganization as LPSTR 1862 cNoticeNumbers as DWORD 1863 rgNoticeNumbers as long ptr 1864 end type 1865 1866 type CERT_POLICY_QUALIFIER_NOTICE_REFERENCE as _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE 1867 type PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE as _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE ptr 1868 1869 type _CERT_POLICY_QUALIFIER_USER_NOTICE 1870 pNoticeReference as CERT_POLICY_QUALIFIER_NOTICE_REFERENCE ptr 1871 pszDisplayText as LPWSTR 1872 end type 1873 1874 type CERT_POLICY_QUALIFIER_USER_NOTICE as _CERT_POLICY_QUALIFIER_USER_NOTICE 1875 type PCERT_POLICY_QUALIFIER_USER_NOTICE as _CERT_POLICY_QUALIFIER_USER_NOTICE ptr 1876 1877 type _CPS_URLS 1878 pszURL as LPWSTR 1879 pAlgorithm as CRYPT_ALGORITHM_IDENTIFIER ptr 1880 pDigest as CRYPT_DATA_BLOB ptr 1881 end type 1882 1883 type CPS_URLS as _CPS_URLS 1884 type PCPS_URLS as _CPS_URLS ptr 1885 1886 type _CERT_POLICY95_QUALIFIER1 1887 pszPracticesReference as LPWSTR 1888 pszNoticeIdentifier as LPSTR 1889 pszNSINoticeIdentifier as LPSTR 1890 cCPSURLs as DWORD 1891 rgCPSURLs as CPS_URLS ptr 1892 end type 1893 1894 type CERT_POLICY95_QUALIFIER1 as _CERT_POLICY95_QUALIFIER1 1895 type PCERT_POLICY95_QUALIFIER1 as _CERT_POLICY95_QUALIFIER1 ptr 1896 1897 type _CERT_POLICY_MAPPING 1898 pszIssuerDomainPolicy as LPSTR 1899 pszSubjectDomainPolicy as LPSTR 1900 end type 1901 1902 type CERT_POLICY_MAPPING as _CERT_POLICY_MAPPING 1903 type PCERT_POLICY_MAPPING as _CERT_POLICY_MAPPING ptr 1904 1905 type _CERT_POLICY_MAPPINGS_INFO 1906 cPolicyMapping as DWORD 1907 rgPolicyMapping as PCERT_POLICY_MAPPING 1908 end type 1909 1910 type CERT_POLICY_MAPPINGS_INFO as _CERT_POLICY_MAPPINGS_INFO 1911 type PCERT_POLICY_MAPPINGS_INFO as _CERT_POLICY_MAPPINGS_INFO ptr 1912 1913 type _CERT_POLICY_CONSTRAINTS_INFO 1914 fRequireExplicitPolicy as WINBOOL 1915 dwRequireExplicitPolicySkipCerts as DWORD 1916 fInhibitPolicyMapping as WINBOOL 1917 dwInhibitPolicyMappingSkipCerts as DWORD 1918 end type 1919 1920 type CERT_POLICY_CONSTRAINTS_INFO as _CERT_POLICY_CONSTRAINTS_INFO 1921 type PCERT_POLICY_CONSTRAINTS_INFO as _CERT_POLICY_CONSTRAINTS_INFO ptr 1922 1923 type _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY 1924 pszObjId as LPSTR 1925 cValue as DWORD 1926 rgValue as PCRYPT_DER_BLOB 1927 end type 1928 1929 type CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY as _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY 1930 type PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY as _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY ptr 1931 1932 type _CRYPT_CONTENT_INFO 1933 pszObjId as LPSTR 1934 Content as CRYPT_DER_BLOB 1935 end type 1936 1937 type CRYPT_CONTENT_INFO as _CRYPT_CONTENT_INFO 1938 type PCRYPT_CONTENT_INFO as _CRYPT_CONTENT_INFO ptr 1939 1940 type _CRYPT_SEQUENCE_OF_ANY 1941 cValue as DWORD 1942 rgValue as PCRYPT_DER_BLOB 1943 end type 1944 1945 type CRYPT_SEQUENCE_OF_ANY as _CRYPT_SEQUENCE_OF_ANY 1946 type PCRYPT_SEQUENCE_OF_ANY as _CRYPT_SEQUENCE_OF_ANY ptr 1947 1948 type _CERT_AUTHORITY_KEY_ID2_INFO 1949 KeyId as CRYPT_DATA_BLOB 1950 AuthorityCertIssuer as CERT_ALT_NAME_INFO 1951 AuthorityCertSerialNumber as CRYPT_INTEGER_BLOB 1952 end type 1953 1954 type CERT_AUTHORITY_KEY_ID2_INFO as _CERT_AUTHORITY_KEY_ID2_INFO 1955 type PCERT_AUTHORITY_KEY_ID2_INFO as _CERT_AUTHORITY_KEY_ID2_INFO ptr 1956 1957 type _CERT_ACCESS_DESCRIPTION 1958 pszAccessMethod as LPSTR 1959 AccessLocation as CERT_ALT_NAME_ENTRY 1960 end type 1961 1962 type CERT_ACCESS_DESCRIPTION as _CERT_ACCESS_DESCRIPTION 1963 type PCERT_ACCESS_DESCRIPTION as _CERT_ACCESS_DESCRIPTION ptr 1964 1965 type _CERT_AUTHORITY_INFO_ACCESS 1966 cAccDescr as DWORD 1967 rgAccDescr as PCERT_ACCESS_DESCRIPTION 1968 end type 1969 1970 type CERT_AUTHORITY_INFO_ACCESS as _CERT_AUTHORITY_INFO_ACCESS 1971 type PCERT_AUTHORITY_INFO_ACCESS as _CERT_AUTHORITY_INFO_ACCESS ptr 1972 type CERT_SUBJECT_INFO_ACCESS as CERT_AUTHORITY_INFO_ACCESS 1973 type PCERT_SUBJECT_INFO_ACCESS as CERT_AUTHORITY_INFO_ACCESS ptr 1974 1975 #define szOID_PKIX_ACC_DESCR "1.3.6.1.5.5.7.48" 1976 #define szOID_PKIX_OCSP "1.3.6.1.5.5.7.48.1" 1977 #define szOID_PKIX_CA_ISSUERS "1.3.6.1.5.5.7.48.2" 1978 #define szOID_PKIX_TIME_STAMPING "1.3.6.1.5.5.7.48.3" 1979 #define szOID_PKIX_CA_REPOSITORY "1.3.6.1.5.5.7.48.5" 1980 const CRL_REASON_UNSPECIFIED = 0 1981 const CRL_REASON_KEY_COMPROMISE = 1 1982 const CRL_REASON_CA_COMPROMISE = 2 1983 const CRL_REASON_AFFILIATION_CHANGED = 3 1984 const CRL_REASON_SUPERSEDED = 4 1985 const CRL_REASON_CESSATION_OF_OPERATION = 5 1986 const CRL_REASON_CERTIFICATE_HOLD = 6 1987 const CRL_REASON_REMOVE_FROM_CRL = 8 1988 1989 type _CRL_DIST_POINT_NAME 1990 dwDistPointNameChoice as DWORD 1991 1992 union 1993 FullName as CERT_ALT_NAME_INFO 1994 end union 1995 end type 1996 1997 type CRL_DIST_POINT_NAME as _CRL_DIST_POINT_NAME 1998 type PCRL_DIST_POINT_NAME as _CRL_DIST_POINT_NAME ptr 1999 const CRL_DIST_POINT_NO_NAME = 0 2000 const CRL_DIST_POINT_FULL_NAME = 1 2001 const CRL_DIST_POINT_ISSUER_RDN_NAME = 2 2002 2003 type _CRL_DIST_POINT 2004 DistPointName as CRL_DIST_POINT_NAME 2005 ReasonFlags as CRYPT_BIT_BLOB 2006 CRLIssuer as CERT_ALT_NAME_INFO 2007 end type 2008 2009 type CRL_DIST_POINT as _CRL_DIST_POINT 2010 type PCRL_DIST_POINT as _CRL_DIST_POINT ptr 2011 const CRL_REASON_UNUSED_FLAG = &h80 2012 const CRL_REASON_KEY_COMPROMISE_FLAG = &h40 2013 const CRL_REASON_CA_COMPROMISE_FLAG = &h20 2014 const CRL_REASON_AFFILIATION_CHANGED_FLAG = &h10 2015 const CRL_REASON_SUPERSEDED_FLAG = &h08 2016 const CRL_REASON_CESSATION_OF_OPERATION_FLAG = &h04 2017 const CRL_REASON_CERTIFICATE_HOLD_FLAG = &h02 2018 2019 type _CRL_DIST_POINTS_INFO 2020 cDistPoint as DWORD 2021 rgDistPoint as PCRL_DIST_POINT 2022 end type 2023 2024 type CRL_DIST_POINTS_INFO as _CRL_DIST_POINTS_INFO 2025 type PCRL_DIST_POINTS_INFO as _CRL_DIST_POINTS_INFO ptr 2026 const CRL_DIST_POINT_ERR_INDEX_MASK = &h7f 2027 const CRL_DIST_POINT_ERR_INDEX_SHIFT = 24 2028 #define GET_CRL_DIST_POINT_ERR_INDEX(X) ((X shr CRL_DIST_POINT_ERR_INDEX_SHIFT) and CRL_DIST_POINT_ERR_INDEX_MASK) 2029 const CRL_DIST_POINT_ERR_CRL_ISSUER_BIT = &h80000000 2030 #define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X) (0 <> (X and CRL_DIST_POINT_ERR_CRL_ISSUER_BIT)) 2031 2032 type _CROSS_CERT_DIST_POINTS_INFO 2033 dwSyncDeltaTime as DWORD 2034 cDistPoint as DWORD 2035 rgDistPoint as PCERT_ALT_NAME_INFO 2036 end type 2037 2038 type CROSS_CERT_DIST_POINTS_INFO as _CROSS_CERT_DIST_POINTS_INFO 2039 type PCROSS_CERT_DIST_POINTS_INFO as _CROSS_CERT_DIST_POINTS_INFO ptr 2040 const CROSS_CERT_DIST_POINT_ERR_INDEX_MASK = &hff 2041 const CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT = 24 2042 #define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(X) ((X shr CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) and CROSS_CERT_DIST_POINT_ERR_INDEX_MASK) 2043 2044 type _CERT_PAIR 2045 Forward as CERT_BLOB 2046 Reverse as CERT_BLOB 2047 end type 2048 2049 type CERT_PAIR as _CERT_PAIR 2050 type PCERT_PAIR as _CERT_PAIR ptr 2051 2052 type _CRL_ISSUING_DIST_POINT 2053 DistPointName as CRL_DIST_POINT_NAME 2054 fOnlyContainsUserCerts as WINBOOL 2055 fOnlyContainsCACerts as WINBOOL 2056 OnlySomeReasonFlags as CRYPT_BIT_BLOB 2057 fIndirectCRL as WINBOOL 2058 end type 2059 2060 type CRL_ISSUING_DIST_POINT as _CRL_ISSUING_DIST_POINT 2061 type PCRL_ISSUING_DIST_POINT as _CRL_ISSUING_DIST_POINT ptr 2062 2063 type _CERT_GENERAL_SUBTREE 2064 Base as CERT_ALT_NAME_ENTRY 2065 dwMinimum as DWORD 2066 fMaximum as WINBOOL 2067 dwMaximum as DWORD 2068 end type 2069 2070 type CERT_GENERAL_SUBTREE as _CERT_GENERAL_SUBTREE 2071 type PCERT_GENERAL_SUBTREE as _CERT_GENERAL_SUBTREE ptr 2072 2073 type _CERT_NAME_CONSTRAINTS_INFO 2074 cPermittedSubtree as DWORD 2075 rgPermittedSubtree as PCERT_GENERAL_SUBTREE 2076 cExcludedSubtree as DWORD 2077 rgExcludedSubtree as PCERT_GENERAL_SUBTREE 2078 end type 2079 2080 type CERT_NAME_CONSTRAINTS_INFO as _CERT_NAME_CONSTRAINTS_INFO 2081 type PCERT_NAME_CONSTRAINTS_INFO as _CERT_NAME_CONSTRAINTS_INFO ptr 2082 const CERT_EXCLUDED_SUBTREE_BIT = &h80000000 2083 #define IS_CERT_EXCLUDED_SUBTREE(X) (0 <> (X and CERT_EXCLUDED_SUBTREE_BIT)) 2084 const SORTED_CTL_EXT_FLAGS_OFFSET = 0 2085 const SORTED_CTL_EXT_COUNT_OFFSET = 4 2086 const SORTED_CTL_EXT_MAX_COLLISION_OFFSET = 8 2087 const SORTED_CTL_EXT_HASH_BUCKET_OFFSET = 12 2088 const SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG = &h1 2089 2090 type _CERT_DSS_PARAMETERS 2091 p as CRYPT_UINT_BLOB 2092 q as CRYPT_UINT_BLOB 2093 g as CRYPT_UINT_BLOB 2094 end type 2095 2096 type CERT_DSS_PARAMETERS as _CERT_DSS_PARAMETERS 2097 type PCERT_DSS_PARAMETERS as _CERT_DSS_PARAMETERS ptr 2098 const CERT_DSS_R_LEN = 20 2099 const CERT_DSS_S_LEN = 20 2100 const CERT_DSS_SIGNATURE_LEN = CERT_DSS_R_LEN + CERT_DSS_S_LEN 2101 const CERT_MAX_ASN_ENCODED_DSS_SIGNATURE_LEN = 48 2102 2103 type _CERT_DH_PARAMETERS 2104 p as CRYPT_UINT_BLOB 2105 g as CRYPT_UINT_BLOB 2106 end type 2107 2108 type CERT_DH_PARAMETERS as _CERT_DH_PARAMETERS 2109 type PCERT_DH_PARAMETERS as _CERT_DH_PARAMETERS ptr 2110 2111 type _CERT_ECC_SIGNATURE 2112 r as CRYPT_UINT_BLOB 2113 s as CRYPT_UINT_BLOB 2114 end type 2115 2116 type CERT_ECC_SIGNATURE as _CERT_ECC_SIGNATURE 2117 type PCERT_ECC_SIGNATURE as _CERT_ECC_SIGNATURE ptr 2118 2119 type _CERT_X942_DH_VALIDATION_PARAMS 2120 seed as CRYPT_BIT_BLOB 2121 pgenCounter as DWORD 2122 end type 2123 2124 type CERT_X942_DH_VALIDATION_PARAMS as _CERT_X942_DH_VALIDATION_PARAMS 2125 type PCERT_X942_DH_VALIDATION_PARAMS as _CERT_X942_DH_VALIDATION_PARAMS ptr 2126 2127 type _CERT_X942_DH_PARAMETERS 2128 p as CRYPT_UINT_BLOB 2129 g as CRYPT_UINT_BLOB 2130 q as CRYPT_UINT_BLOB 2131 j as CRYPT_UINT_BLOB 2132 pValidationParams as PCERT_X942_DH_VALIDATION_PARAMS 2133 end type 2134 2135 type CERT_X942_DH_PARAMETERS as _CERT_X942_DH_PARAMETERS 2136 type PCERT_X942_DH_PARAMETERS as _CERT_X942_DH_PARAMETERS ptr 2137 const CRYPT_X942_COUNTER_BYTE_LENGTH = 4 2138 const CRYPT_X942_KEY_LENGTH_BYTE_LENGTH = 4 2139 const CRYPT_X942_PUB_INFO_BYTE_LENGTH = 512 / 8 2140 2141 type _CRYPT_X942_OTHER_INFO 2142 pszContentEncryptionObjId as LPSTR 2143 rgbCounter(0 to 3) as UBYTE 2144 rgbKeyLength(0 to 3) as UBYTE 2145 PubInfo as CRYPT_DATA_BLOB 2146 end type 2147 2148 type CRYPT_X942_OTHER_INFO as _CRYPT_X942_OTHER_INFO 2149 type PCRYPT_X942_OTHER_INFO as _CRYPT_X942_OTHER_INFO ptr 2150 const CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH = 4 2151 2152 type _CRYPT_ECC_CMS_SHARED_INFO 2153 Algorithm as CRYPT_ALGORITHM_IDENTIFIER 2154 EntityUInfo as CRYPT_DATA_BLOB 2155 rgbSuppPubInfo(0 to 3) as UBYTE 2156 end type 2157 2158 type CRYPT_ECC_CMS_SHARED_INFO as _CRYPT_ECC_CMS_SHARED_INFO 2159 type PCRYPT_ECC_CMS_SHARED_INFO as _CRYPT_ECC_CMS_SHARED_INFO ptr 2160 2161 type _CRYPT_RC2_CBC_PARAMETERS 2162 dwVersion as DWORD 2163 fIV as WINBOOL 2164 rgbIV(0 to 7) as UBYTE 2165 end type 2166 2167 type CRYPT_RC2_CBC_PARAMETERS as _CRYPT_RC2_CBC_PARAMETERS 2168 type PCRYPT_RC2_CBC_PARAMETERS as _CRYPT_RC2_CBC_PARAMETERS ptr 2169 const CRYPT_RC2_40BIT_VERSION = 160 2170 const CRYPT_RC2_56BIT_VERSION = 52 2171 const CRYPT_RC2_64BIT_VERSION = 120 2172 const CRYPT_RC2_128BIT_VERSION = 58 2173 2174 type _CRYPT_SMIME_CAPABILITY 2175 pszObjId as LPSTR 2176 Parameters as CRYPT_OBJID_BLOB 2177 end type 2178 2179 type CRYPT_SMIME_CAPABILITY as _CRYPT_SMIME_CAPABILITY 2180 type PCRYPT_SMIME_CAPABILITY as _CRYPT_SMIME_CAPABILITY ptr 2181 2182 type _CRYPT_SMIME_CAPABILITIES 2183 cCapability as DWORD 2184 rgCapability as PCRYPT_SMIME_CAPABILITY 2185 end type 2186 2187 type CRYPT_SMIME_CAPABILITIES as _CRYPT_SMIME_CAPABILITIES 2188 type PCRYPT_SMIME_CAPABILITIES as _CRYPT_SMIME_CAPABILITIES ptr 2189 2190 type _CERT_QC_STATEMENT 2191 pszStatementId as LPSTR 2192 StatementInfo as CRYPT_OBJID_BLOB 2193 end type 2194 2195 type CERT_QC_STATEMENT as _CERT_QC_STATEMENT 2196 type PCERT_QC_STATEMENT as _CERT_QC_STATEMENT ptr 2197 2198 type _CERT_QC_STATEMENTS_EXT_INFO 2199 cStatement as DWORD 2200 rgStatement as PCERT_QC_STATEMENT 2201 end type 2202 2203 type CERT_QC_STATEMENTS_EXT_INFO as _CERT_QC_STATEMENTS_EXT_INFO 2204 type PCERT_QC_STATEMENTS_EXT_INFO as _CERT_QC_STATEMENTS_EXT_INFO ptr 2205 #define szOID_QC_EU_COMPLIANCE "0.4.0.1862.1.1" 2206 #define szOID_QC_SSCD "0.4.0.1862.1.4" 2207 2208 type _CRYPT_MASK_GEN_ALGORITHM 2209 pszObjId as LPSTR 2210 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2211 end type 2212 2213 type CRYPT_MASK_GEN_ALGORITHM as _CRYPT_MASK_GEN_ALGORITHM 2214 type PCRYPT_MASK_GEN_ALGORITHM as _CRYPT_MASK_GEN_ALGORITHM ptr 2215 2216 type _CRYPT_RSA_SSA_PSS_PARAMETERS 2217 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2218 MaskGenAlgorithm as CRYPT_MASK_GEN_ALGORITHM 2219 dwSaltLength as DWORD 2220 dwTrailerField as DWORD 2221 end type 2222 2223 type CRYPT_RSA_SSA_PSS_PARAMETERS as _CRYPT_RSA_SSA_PSS_PARAMETERS 2224 type PCRYPT_RSA_SSA_PSS_PARAMETERS as _CRYPT_RSA_SSA_PSS_PARAMETERS ptr 2225 const PKCS_RSA_SSA_PSS_TRAILER_FIELD_BC = 1 2226 2227 type _CRYPT_PSOURCE_ALGORITHM 2228 pszObjId as LPSTR 2229 EncodingParameters as CRYPT_DATA_BLOB 2230 end type 2231 2232 type CRYPT_PSOURCE_ALGORITHM as _CRYPT_PSOURCE_ALGORITHM 2233 type PCRYPT_PSOURCE_ALGORITHM as _CRYPT_PSOURCE_ALGORITHM ptr 2234 2235 type _CRYPT_RSAES_OAEP_PARAMETERS 2236 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2237 MaskGenAlgorithm as CRYPT_MASK_GEN_ALGORITHM 2238 PSourceAlgorithm as CRYPT_PSOURCE_ALGORITHM 2239 end type 2240 2241 type CRYPT_RSAES_OAEP_PARAMETERS as _CRYPT_RSAES_OAEP_PARAMETERS 2242 type PCRYPT_RSAES_OAEP_PARAMETERS as _CRYPT_RSAES_OAEP_PARAMETERS ptr 2243 #define szOID_VERISIGN_PRIVATE_6_9 "2.16.840.1.113733.1.6.9" 2244 #define szOID_VERISIGN_ONSITE_JURISDICTION_HASH "2.16.840.1.113733.1.6.11" 2245 #define szOID_VERISIGN_BITSTRING_6_13 "2.16.840.1.113733.1.6.13" 2246 #define szOID_VERISIGN_ISS_STRONG_CRYPTO "2.16.840.1.113733.1.8.1" 2247 #define szOID_NETSCAPE "2.16.840.1.113730" 2248 #define szOID_NETSCAPE_CERT_EXTENSION "2.16.840.1.113730.1" 2249 #define szOID_NETSCAPE_CERT_TYPE "2.16.840.1.113730.1.1" 2250 #define szOID_NETSCAPE_BASE_URL "2.16.840.1.113730.1.2" 2251 #define szOID_NETSCAPE_REVOCATION_URL "2.16.840.1.113730.1.3" 2252 #define szOID_NETSCAPE_CA_REVOCATION_URL "2.16.840.1.113730.1.4" 2253 #define szOID_NETSCAPE_CERT_RENEWAL_URL "2.16.840.1.113730.1.7" 2254 #define szOID_NETSCAPE_CA_POLICY_URL "2.16.840.1.113730.1.8" 2255 #define szOID_NETSCAPE_SSL_SERVER_NAME "2.16.840.1.113730.1.12" 2256 #define szOID_NETSCAPE_COMMENT "2.16.840.1.113730.1.13" 2257 #define szOID_NETSCAPE_DATA_TYPE "2.16.840.1.113730.2" 2258 #define szOID_NETSCAPE_CERT_SEQUENCE "2.16.840.1.113730.2.5" 2259 const NETSCAPE_SIGN_CA_CERT_TYPE = &h01 2260 const NETSCAPE_SMIME_CA_CERT_TYPE = &h02 2261 const NETSCAPE_SSL_CA_CERT_TYPE = &h04 2262 const NETSCAPE_SIGN_CERT_TYPE = &h10 2263 const NETSCAPE_SMIME_CERT_TYPE = &h20 2264 const NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE = &h40 2265 const NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE = &h80 2266 #define szOID_CT_PKI_DATA "1.3.6.1.5.5.7.12.2" 2267 #define szOID_CT_PKI_RESPONSE "1.3.6.1.5.5.7.12.3" 2268 #define szOID_PKIX_NO_SIGNATURE "1.3.6.1.5.5.7.6.2" 2269 #define szOID_CMC "1.3.6.1.5.5.7.7" 2270 #define szOID_CMC_STATUS_INFO "1.3.6.1.5.5.7.7.1" 2271 #define szOID_CMC_IDENTIFICATION "1.3.6.1.5.5.7.7.2" 2272 #define szOID_CMC_IDENTITY_PROOF "1.3.6.1.5.5.7.7.3" 2273 #define szOID_CMC_DATA_RETURN "1.3.6.1.5.5.7.7.4" 2274 #define szOID_CMC_TRANSACTION_ID "1.3.6.1.5.5.7.7.5" 2275 #define szOID_CMC_SENDER_NONCE "1.3.6.1.5.5.7.7.6" 2276 #define szOID_CMC_RECIPIENT_NONCE "1.3.6.1.5.5.7.7.7" 2277 #define szOID_CMC_ADD_EXTENSIONS "1.3.6.1.5.5.7.7.8" 2278 #define szOID_CMC_ENCRYPTED_POP "1.3.6.1.5.5.7.7.9" 2279 #define szOID_CMC_DECRYPTED_POP "1.3.6.1.5.5.7.7.10" 2280 #define szOID_CMC_LRA_POP_WITNESS "1.3.6.1.5.5.7.7.11" 2281 #define szOID_CMC_GET_CERT "1.3.6.1.5.5.7.7.15" 2282 #define szOID_CMC_GET_CRL "1.3.6.1.5.5.7.7.16" 2283 #define szOID_CMC_REVOKE_REQUEST "1.3.6.1.5.5.7.7.17" 2284 #define szOID_CMC_REG_INFO "1.3.6.1.5.5.7.7.18" 2285 #define szOID_CMC_RESPONSE_INFO "1.3.6.1.5.5.7.7.19" 2286 #define szOID_CMC_QUERY_PENDING "1.3.6.1.5.5.7.7.21" 2287 #define szOID_CMC_ID_POP_LINK_RANDOM "1.3.6.1.5.5.7.7.22" 2288 #define szOID_CMC_ID_POP_LINK_WITNESS "1.3.6.1.5.5.7.7.23" 2289 #define szOID_CMC_ID_CONFIRM_CERT_ACCEPTANCE "1.3.6.1.5.5.7.7.24" 2290 #define szOID_CMC_ADD_ATTRIBUTES "1.3.6.1.4.1.311.10.10.1" 2291 2292 type _CMC_TAGGED_ATTRIBUTE 2293 dwBodyPartID as DWORD 2294 Attribute as CRYPT_ATTRIBUTE 2295 end type 2296 2297 type CMC_TAGGED_ATTRIBUTE as _CMC_TAGGED_ATTRIBUTE 2298 type PCMC_TAGGED_ATTRIBUTE as _CMC_TAGGED_ATTRIBUTE ptr 2299 2300 type _CMC_TAGGED_CERT_REQUEST 2301 dwBodyPartID as DWORD 2302 SignedCertRequest as CRYPT_DER_BLOB 2303 end type 2304 2305 type CMC_TAGGED_CERT_REQUEST as _CMC_TAGGED_CERT_REQUEST 2306 type PCMC_TAGGED_CERT_REQUEST as _CMC_TAGGED_CERT_REQUEST ptr 2307 2308 type _CMC_TAGGED_REQUEST 2309 dwTaggedRequestChoice as DWORD 2310 2311 union 2312 pTaggedCertRequest as PCMC_TAGGED_CERT_REQUEST 2313 end union 2314 end type 2315 2316 type CMC_TAGGED_REQUEST as _CMC_TAGGED_REQUEST 2317 type PCMC_TAGGED_REQUEST as _CMC_TAGGED_REQUEST ptr 2318 const CMC_TAGGED_CERT_REQUEST_CHOICE = 1 2319 2320 type _CMC_TAGGED_CONTENT_INFO 2321 dwBodyPartID as DWORD 2322 EncodedContentInfo as CRYPT_DER_BLOB 2323 end type 2324 2325 type CMC_TAGGED_CONTENT_INFO as _CMC_TAGGED_CONTENT_INFO 2326 type PCMC_TAGGED_CONTENT_INFO as _CMC_TAGGED_CONTENT_INFO ptr 2327 2328 type _CMC_TAGGED_OTHER_MSG 2329 dwBodyPartID as DWORD 2330 pszObjId as LPSTR 2331 Value as CRYPT_OBJID_BLOB 2332 end type 2333 2334 type CMC_TAGGED_OTHER_MSG as _CMC_TAGGED_OTHER_MSG 2335 type PCMC_TAGGED_OTHER_MSG as _CMC_TAGGED_OTHER_MSG ptr 2336 2337 type _CMC_DATA_INFO 2338 cTaggedAttribute as DWORD 2339 rgTaggedAttribute as PCMC_TAGGED_ATTRIBUTE 2340 cTaggedRequest as DWORD 2341 rgTaggedRequest as PCMC_TAGGED_REQUEST 2342 cTaggedContentInfo as DWORD 2343 rgTaggedContentInfo as PCMC_TAGGED_CONTENT_INFO 2344 cTaggedOtherMsg as DWORD 2345 rgTaggedOtherMsg as PCMC_TAGGED_OTHER_MSG 2346 end type 2347 2348 type CMC_DATA_INFO as _CMC_DATA_INFO 2349 type PCMC_DATA_INFO as _CMC_DATA_INFO ptr 2350 2351 type _CMC_RESPONSE_INFO 2352 cTaggedAttribute as DWORD 2353 rgTaggedAttribute as PCMC_TAGGED_ATTRIBUTE 2354 cTaggedContentInfo as DWORD 2355 rgTaggedContentInfo as PCMC_TAGGED_CONTENT_INFO 2356 cTaggedOtherMsg as DWORD 2357 rgTaggedOtherMsg as PCMC_TAGGED_OTHER_MSG 2358 end type 2359 2360 type CMC_RESPONSE_INFO as _CMC_RESPONSE_INFO 2361 type PCMC_RESPONSE_INFO as _CMC_RESPONSE_INFO ptr 2362 2363 type _CMC_PEND_INFO 2364 PendToken as CRYPT_DATA_BLOB 2365 PendTime as FILETIME 2366 end type 2367 2368 type CMC_PEND_INFO as _CMC_PEND_INFO 2369 type PCMC_PEND_INFO as _CMC_PEND_INFO ptr 2370 2371 type _CMC_STATUS_INFO 2372 dwStatus as DWORD 2373 cBodyList as DWORD 2374 rgdwBodyList as DWORD ptr 2375 pwszStatusString as LPWSTR 2376 dwOtherInfoChoice as DWORD 2377 2378 union 2379 dwFailInfo as DWORD 2380 pPendInfo as PCMC_PEND_INFO 2381 end union 2382 end type 2383 2384 type CMC_STATUS_INFO as _CMC_STATUS_INFO 2385 type PCMC_STATUS_INFO as _CMC_STATUS_INFO ptr 2386 const CMC_OTHER_INFO_NO_CHOICE = 0 2387 const CMC_OTHER_INFO_FAIL_CHOICE = 1 2388 const CMC_OTHER_INFO_PEND_CHOICE = 2 2389 const CMC_STATUS_SUCCESS = 0 2390 const CMC_STATUS_FAILED = 2 2391 const CMC_STATUS_PENDING = 3 2392 const CMC_STATUS_NO_SUPPORT = 4 2393 const CMC_STATUS_CONFIRM_REQUIRED = 5 2394 const CMC_FAIL_BAD_ALG = 0 2395 const CMC_FAIL_BAD_MESSAGE_CHECK = 1 2396 const CMC_FAIL_BAD_REQUEST = 2 2397 const CMC_FAIL_BAD_TIME = 3 2398 const CMC_FAIL_BAD_CERT_ID = 4 2399 const CMC_FAIL_UNSUPORTED_EXT = 5 2400 const CMC_FAIL_MUST_ARCHIVE_KEYS = 6 2401 const CMC_FAIL_BAD_IDENTITY = 7 2402 const CMC_FAIL_POP_REQUIRED = 8 2403 const CMC_FAIL_POP_FAILED = 9 2404 const CMC_FAIL_NO_KEY_REUSE = 10 2405 const CMC_FAIL_INTERNAL_CA_ERROR = 11 2406 const CMC_FAIL_TRY_LATER = 12 2407 2408 type _CMC_ADD_EXTENSIONS_INFO 2409 dwCmcDataReference as DWORD 2410 cCertReference as DWORD 2411 rgdwCertReference as DWORD ptr 2412 cExtension as DWORD 2413 rgExtension as PCERT_EXTENSION 2414 end type 2415 2416 type CMC_ADD_EXTENSIONS_INFO as _CMC_ADD_EXTENSIONS_INFO 2417 type PCMC_ADD_EXTENSIONS_INFO as _CMC_ADD_EXTENSIONS_INFO ptr 2418 2419 type _CMC_ADD_ATTRIBUTES_INFO 2420 dwCmcDataReference as DWORD 2421 cCertReference as DWORD 2422 rgdwCertReference as DWORD ptr 2423 cAttribute as DWORD 2424 rgAttribute as PCRYPT_ATTRIBUTE 2425 end type 2426 2427 type CMC_ADD_ATTRIBUTES_INFO as _CMC_ADD_ATTRIBUTES_INFO 2428 type PCMC_ADD_ATTRIBUTES_INFO as _CMC_ADD_ATTRIBUTES_INFO ptr 2429 2430 type _CERT_TEMPLATE_EXT 2431 pszObjId as LPSTR 2432 dwMajorVersion as DWORD 2433 fMinorVersion as WINBOOL 2434 dwMinorVersion as DWORD 2435 end type 2436 2437 type CERT_TEMPLATE_EXT as _CERT_TEMPLATE_EXT 2438 type PCERT_TEMPLATE_EXT as _CERT_TEMPLATE_EXT ptr 2439 2440 type _CERT_HASHED_URL 2441 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2442 Hash as CRYPT_HASH_BLOB 2443 pwszUrl as LPWSTR 2444 end type 2445 2446 type CERT_HASHED_URL as _CERT_HASHED_URL 2447 type PCERT_HASHED_URL as _CERT_HASHED_URL ptr 2448 2449 type _CERT_LOGOTYPE_DETAILS 2450 pwszMimeType as LPWSTR 2451 cHashedUrl as DWORD 2452 rgHashedUrl as PCERT_HASHED_URL 2453 end type 2454 2455 type CERT_LOGOTYPE_DETAILS as _CERT_LOGOTYPE_DETAILS 2456 type PCERT_LOGOTYPE_DETAILS as _CERT_LOGOTYPE_DETAILS ptr 2457 2458 type _CERT_LOGOTYPE_REFERENCE 2459 cHashedUrl as DWORD 2460 rgHashedUrl as PCERT_HASHED_URL 2461 end type 2462 2463 type CERT_LOGOTYPE_REFERENCE as _CERT_LOGOTYPE_REFERENCE 2464 type PCERT_LOGOTYPE_REFERENCE as _CERT_LOGOTYPE_REFERENCE ptr 2465 2466 type _CERT_LOGOTYPE_IMAGE_INFO 2467 dwLogotypeImageInfoChoice as DWORD 2468 dwFileSize as DWORD 2469 dwXSize as DWORD 2470 dwYSize as DWORD 2471 dwLogotypeImageResolutionChoice as DWORD 2472 2473 union 2474 dwNumBits as DWORD 2475 dwTableSize as DWORD 2476 end union 2477 2478 pwszLanguage as LPWSTR 2479 end type 2480 2481 type CERT_LOGOTYPE_IMAGE_INFO as _CERT_LOGOTYPE_IMAGE_INFO 2482 type PCERT_LOGOTYPE_IMAGE_INFO as _CERT_LOGOTYPE_IMAGE_INFO ptr 2483 const CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE = 1 2484 const CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE = 2 2485 const CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE = 0 2486 const CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE = 1 2487 const CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE = 2 2488 2489 type _CERT_LOGOTYPE_IMAGE 2490 LogotypeDetails as CERT_LOGOTYPE_DETAILS 2491 pLogotypeImageInfo as PCERT_LOGOTYPE_IMAGE_INFO 2492 end type 2493 2494 type CERT_LOGOTYPE_IMAGE as _CERT_LOGOTYPE_IMAGE 2495 type PCERT_LOGOTYPE_IMAGE as _CERT_LOGOTYPE_IMAGE ptr 2496 2497 type _CERT_LOGOTYPE_AUDIO_INFO 2498 dwFileSize as DWORD 2499 dwPlayTime as DWORD 2500 dwChannels as DWORD 2501 dwSampleRate as DWORD 2502 pwszLanguage as LPWSTR 2503 end type 2504 2505 type CERT_LOGOTYPE_AUDIO_INFO as _CERT_LOGOTYPE_AUDIO_INFO 2506 type PCERT_LOGOTYPE_AUDIO_INFO as _CERT_LOGOTYPE_AUDIO_INFO ptr 2507 2508 type _CERT_LOGOTYPE_AUDIO 2509 LogotypeDetails as CERT_LOGOTYPE_DETAILS 2510 pLogotypeAudioInfo as PCERT_LOGOTYPE_AUDIO_INFO 2511 end type 2512 2513 type CERT_LOGOTYPE_AUDIO as _CERT_LOGOTYPE_AUDIO 2514 type PCERT_LOGOTYPE_AUDIO as _CERT_LOGOTYPE_AUDIO ptr 2515 2516 type _CERT_LOGOTYPE_DATA 2517 cLogotypeImage as DWORD 2518 rgLogotypeImage as PCERT_LOGOTYPE_IMAGE 2519 cLogotypeAudio as DWORD 2520 rgLogotypeAudio as PCERT_LOGOTYPE_AUDIO 2521 end type 2522 2523 type CERT_LOGOTYPE_DATA as _CERT_LOGOTYPE_DATA 2524 type PCERT_LOGOTYPE_DATA as _CERT_LOGOTYPE_DATA ptr 2525 2526 type _CERT_LOGOTYPE_INFO 2527 dwLogotypeInfoChoice as DWORD 2528 2529 union 2530 pLogotypeDirectInfo as PCERT_LOGOTYPE_DATA 2531 pLogotypeIndirectInfo as PCERT_LOGOTYPE_REFERENCE 2532 end union 2533 end type 2534 2535 type CERT_LOGOTYPE_INFO as _CERT_LOGOTYPE_INFO 2536 type PCERT_LOGOTYPE_INFO as _CERT_LOGOTYPE_INFO ptr 2537 const CERT_LOGOTYPE_DIRECT_INFO_CHOICE = 1 2538 const CERT_LOGOTYPE_INDIRECT_INFO_CHOICE = 2 2539 2540 type _CERT_OTHER_LOGOTYPE_INFO 2541 pszObjId as LPSTR 2542 LogotypeInfo as CERT_LOGOTYPE_INFO 2543 end type 2544 2545 type CERT_OTHER_LOGOTYPE_INFO as _CERT_OTHER_LOGOTYPE_INFO 2546 type PCERT_OTHER_LOGOTYPE_INFO as _CERT_OTHER_LOGOTYPE_INFO ptr 2547 #define szOID_LOYALTY_OTHER_LOGOTYPE "1.3.6.1.5.5.7.20.1" 2548 #define szOID_BACKGROUND_OTHER_LOGOTYPE "1.3.6.1.5.5.7.20.2" 2549 2550 type _CERT_LOGOTYPE_EXT_INFO 2551 cCommunityLogo as DWORD 2552 rgCommunityLogo as PCERT_LOGOTYPE_INFO 2553 pIssuerLogo as PCERT_LOGOTYPE_INFO 2554 pSubjectLogo as PCERT_LOGOTYPE_INFO 2555 cOtherLogo as DWORD 2556 rgOtherLogo as PCERT_OTHER_LOGOTYPE_INFO 2557 end type 2558 2559 type CERT_LOGOTYPE_EXT_INFO as _CERT_LOGOTYPE_EXT_INFO 2560 type PCERT_LOGOTYPE_EXT_INFO as _CERT_LOGOTYPE_EXT_INFO ptr 2561 2562 type _CERT_BIOMETRIC_DATA 2563 dwTypeOfBiometricDataChoice as DWORD 2564 2565 union 2566 dwPredefined as DWORD 2567 pszObjId as LPSTR 2568 end union 2569 2570 HashedUrl as CERT_HASHED_URL 2571 end type 2572 2573 type CERT_BIOMETRIC_DATA as _CERT_BIOMETRIC_DATA 2574 type PCERT_BIOMETRIC_DATA as _CERT_BIOMETRIC_DATA ptr 2575 const CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE = 1 2576 const CERT_BIOMETRIC_OID_DATA_CHOICE = 2 2577 const CERT_BIOMETRIC_PICTURE_TYPE = 0 2578 const CERT_BIOMETRIC_SIGNATURE_TYPE = 1 2579 2580 type _CERT_BIOMETRIC_EXT_INFO 2581 cBiometricData as DWORD 2582 rgBiometricData as PCERT_BIOMETRIC_DATA 2583 end type 2584 2585 type CERT_BIOMETRIC_EXT_INFO as _CERT_BIOMETRIC_EXT_INFO 2586 type PCERT_BIOMETRIC_EXT_INFO as _CERT_BIOMETRIC_EXT_INFO ptr 2587 2588 type _OCSP_SIGNATURE_INFO 2589 SignatureAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2590 Signature as CRYPT_BIT_BLOB 2591 cCertEncoded as DWORD 2592 rgCertEncoded as PCERT_BLOB 2593 end type 2594 2595 type OCSP_SIGNATURE_INFO as _OCSP_SIGNATURE_INFO 2596 type POCSP_SIGNATURE_INFO as _OCSP_SIGNATURE_INFO ptr 2597 2598 type _OCSP_SIGNED_REQUEST_INFO 2599 ToBeSigned as CRYPT_DER_BLOB 2600 pOptionalSignatureInfo as POCSP_SIGNATURE_INFO 2601 end type 2602 2603 type OCSP_SIGNED_REQUEST_INFO as _OCSP_SIGNED_REQUEST_INFO 2604 type POCSP_SIGNED_REQUEST_INFO as _OCSP_SIGNED_REQUEST_INFO ptr 2605 2606 type _OCSP_CERT_ID 2607 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2608 IssuerNameHash as CRYPT_HASH_BLOB 2609 IssuerKeyHash as CRYPT_HASH_BLOB 2610 SerialNumber as CRYPT_INTEGER_BLOB 2611 end type 2612 2613 type OCSP_CERT_ID as _OCSP_CERT_ID 2614 type POCSP_CERT_ID as _OCSP_CERT_ID ptr 2615 2616 type _OCSP_REQUEST_ENTRY 2617 CertId as OCSP_CERT_ID 2618 cExtension as DWORD 2619 rgExtension as PCERT_EXTENSION 2620 end type 2621 2622 type OCSP_REQUEST_ENTRY as _OCSP_REQUEST_ENTRY 2623 type POCSP_REQUEST_ENTRY as _OCSP_REQUEST_ENTRY ptr 2624 2625 type _OCSP_REQUEST_INFO 2626 dwVersion as DWORD 2627 pRequestorName as PCERT_ALT_NAME_ENTRY 2628 cRequestEntry as DWORD 2629 rgRequestEntry as POCSP_REQUEST_ENTRY 2630 cExtension as DWORD 2631 rgExtension as PCERT_EXTENSION 2632 end type 2633 2634 type OCSP_REQUEST_INFO as _OCSP_REQUEST_INFO 2635 type POCSP_REQUEST_INFO as _OCSP_REQUEST_INFO ptr 2636 const OCSP_REQUEST_V1 = 0 2637 2638 type _OCSP_RESPONSE_INFO 2639 dwStatus as DWORD 2640 pszObjId as LPSTR 2641 Value as CRYPT_OBJID_BLOB 2642 end type 2643 2644 type OCSP_RESPONSE_INFO as _OCSP_RESPONSE_INFO 2645 type POCSP_RESPONSE_INFO as _OCSP_RESPONSE_INFO ptr 2646 const OCSP_SUCCESSFUL_RESPONSE = 0 2647 const OCSP_MALFORMED_REQUEST_RESPONSE = 1 2648 const OCSP_INTERNAL_ERROR_RESPONSE = 2 2649 const OCSP_TRY_LATER_RESPONSE = 3 2650 const OCSP_SIG_REQUIRED_RESPONSE = 5 2651 const OCSP_UNAUTHORIZED_RESPONSE = 6 2652 #define szOID_PKIX_OCSP_BASIC_SIGNED_RESPONSE "1.3.6.1.5.5.7.48.1.1" 2653 2654 type _OCSP_BASIC_SIGNED_RESPONSE_INFO 2655 ToBeSigned as CRYPT_DER_BLOB 2656 SignatureInfo as OCSP_SIGNATURE_INFO 2657 end type 2658 2659 type OCSP_BASIC_SIGNED_RESPONSE_INFO as _OCSP_BASIC_SIGNED_RESPONSE_INFO 2660 type POCSP_BASIC_SIGNED_RESPONSE_INFO as _OCSP_BASIC_SIGNED_RESPONSE_INFO ptr 2661 2662 type _OCSP_BASIC_REVOKED_INFO 2663 RevocationDate as FILETIME 2664 dwCrlReasonCode as DWORD 2665 end type 2666 2667 type OCSP_BASIC_REVOKED_INFO as _OCSP_BASIC_REVOKED_INFO 2668 type POCSP_BASIC_REVOKED_INFO as _OCSP_BASIC_REVOKED_INFO ptr 2669 2670 type _OCSP_BASIC_RESPONSE_ENTRY 2671 CertId as OCSP_CERT_ID 2672 dwCertStatus as DWORD 2673 2674 union 2675 pRevokedInfo as POCSP_BASIC_REVOKED_INFO 2676 end union 2677 2678 ThisUpdate as FILETIME 2679 NextUpdate as FILETIME 2680 cExtension as DWORD 2681 rgExtension as PCERT_EXTENSION 2682 end type 2683 2684 type OCSP_BASIC_RESPONSE_ENTRY as _OCSP_BASIC_RESPONSE_ENTRY 2685 type POCSP_BASIC_RESPONSE_ENTRY as _OCSP_BASIC_RESPONSE_ENTRY ptr 2686 const OCSP_BASIC_GOOD_CERT_STATUS = 0 2687 const OCSP_BASIC_REVOKED_CERT_STATUS = 1 2688 const OCSP_BASIC_UNKNOWN_CERT_STATUS = 2 2689 2690 type _OCSP_BASIC_RESPONSE_INFO 2691 dwVersion as DWORD 2692 dwResponderIdChoice as DWORD 2693 2694 union 2695 ByNameResponderId as CERT_NAME_BLOB 2696 ByKeyResponderId as CRYPT_HASH_BLOB 2697 end union 2698 2699 ProducedAt as FILETIME 2700 cResponseEntry as DWORD 2701 rgResponseEntry as POCSP_BASIC_RESPONSE_ENTRY 2702 cExtension as DWORD 2703 rgExtension as PCERT_EXTENSION 2704 end type 2705 2706 type OCSP_BASIC_RESPONSE_INFO as _OCSP_BASIC_RESPONSE_INFO 2707 type POCSP_BASIC_RESPONSE_INFO as _OCSP_BASIC_RESPONSE_INFO ptr 2708 const OCSP_BASIC_RESPONSE_V1 = 0 2709 const OCSP_BASIC_BY_NAME_RESPONDER_ID = 1 2710 const OCSP_BASIC_BY_KEY_RESPONDER_ID = 2 2711 type HCRYPTOIDFUNCSET as any ptr 2712 type HCRYPTOIDFUNCADDR as any ptr 2713 #define CRYPT_OID_ENCODE_OBJECT_FUNC "CryptDllEncodeObject" 2714 #define CRYPT_OID_DECODE_OBJECT_FUNC "CryptDllDecodeObject" 2715 #define CRYPT_OID_ENCODE_OBJECT_EX_FUNC "CryptDllEncodeObjectEx" 2716 #define CRYPT_OID_DECODE_OBJECT_EX_FUNC "CryptDllDecodeObjectEx" 2717 #define CRYPT_OID_CREATE_COM_OBJECT_FUNC "CryptDllCreateCOMObject" 2718 #define CRYPT_OID_VERIFY_REVOCATION_FUNC "CertDllVerifyRevocation" 2719 #define CRYPT_OID_VERIFY_CTL_USAGE_FUNC "CertDllVerifyCTLUsage" 2720 #define CRYPT_OID_FORMAT_OBJECT_FUNC "CryptDllFormatObject" 2721 #define CRYPT_OID_FIND_OID_INFO_FUNC "CryptDllFindOIDInfo" 2722 #define CRYPT_OID_FIND_LOCALIZED_NAME_FUNC "CryptDllFindLocalizedName" 2723 #define CRYPT_OID_REGPATH !"Software\\Microsoft\\Cryptography\\OID" 2724 #define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType " 2725 #define CRYPT_OID_REG_DLL_VALUE_NAME wstr("Dll") 2726 #define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME wstr("FuncName") 2727 #define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A "FuncName" 2728 #define CRYPT_OID_REG_FLAGS_VALUE_NAME wstr("CryptFlags") 2729 #define CRYPT_DEFAULT_OID "DEFAULT" 2730 2731 type _CRYPT_OID_FUNC_ENTRY 2732 pszOID as LPCSTR 2733 pvFuncAddr as any ptr 2734 end type 2735 2736 type CRYPT_OID_FUNC_ENTRY as _CRYPT_OID_FUNC_ENTRY 2737 type PCRYPT_OID_FUNC_ENTRY as _CRYPT_OID_FUNC_ENTRY ptr 2738 const CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG = 1 2739 const CRYPT_GET_INSTALLED_OID_FUNC_FLAG = &h1 2740 const CRYPT_REGISTER_FIRST_INDEX = 0 2741 const CRYPT_REGISTER_LAST_INDEX = &hffffffff 2742 2743 declare function CryptInstallOIDFunctionAddress(byval hModule as HMODULE, byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval cFuncEntry as DWORD, byval rgFuncEntry as const CRYPT_OID_FUNC_ENTRY ptr, byval dwFlags as DWORD) as WINBOOL 2744 declare function CryptInitOIDFunctionSet(byval pszFuncName as LPCSTR, byval dwFlags as DWORD) as HCRYPTOIDFUNCSET 2745 declare function CryptGetOIDFunctionAddress(byval hFuncSet as HCRYPTOIDFUNCSET, byval dwEncodingType as DWORD, byval pszOID as LPCSTR, byval dwFlags as DWORD, byval ppvFuncAddr as any ptr ptr, byval phFuncAddr as HCRYPTOIDFUNCADDR ptr) as WINBOOL 2746 declare function CryptGetDefaultOIDDllList(byval hFuncSet as HCRYPTOIDFUNCSET, byval dwEncodingType as DWORD, byval pwszDllList as wstring ptr, byval pcchDllList as DWORD ptr) as WINBOOL 2747 declare function CryptGetDefaultOIDFunctionAddress(byval hFuncSet as HCRYPTOIDFUNCSET, byval dwEncodingType as DWORD, byval pwszDll as LPCWSTR, byval dwFlags as DWORD, byval ppvFuncAddr as any ptr ptr, byval phFuncAddr as HCRYPTOIDFUNCADDR ptr) as WINBOOL 2748 declare function CryptFreeOIDFunctionAddress(byval hFuncAddr as HCRYPTOIDFUNCADDR, byval dwFlags as DWORD) as WINBOOL 2749 declare function CryptRegisterOIDFunction(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval pszOID as LPCSTR, byval pwszDll as LPCWSTR, byval pszOverrideFuncName as LPCSTR) as WINBOOL 2750 declare function CryptUnregisterOIDFunction(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval pszOID as LPCSTR) as WINBOOL 2751 declare function CryptRegisterDefaultOIDFunction(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval dwIndex as DWORD, byval pwszDll as LPCWSTR) as WINBOOL 2752 declare function CryptUnregisterDefaultOIDFunction(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval pwszDll as LPCWSTR) as WINBOOL 2753 declare function CryptSetOIDFunctionValue(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval pszOID as LPCSTR, byval pwszValueName as LPCWSTR, byval dwValueType as DWORD, byval pbValueData as const UBYTE ptr, byval cbValueData as DWORD) as WINBOOL 2754 declare function CryptGetOIDFunctionValue(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval pszOID as LPCSTR, byval pwszValueName as LPCWSTR, byval pdwValueType as DWORD ptr, byval pbValueData as UBYTE ptr, byval pcbValueData as DWORD ptr) as WINBOOL 2755 type PFN_CRYPT_ENUM_OID_FUNC as function(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval pszOID as LPCSTR, byval cValue as DWORD, byval rgdwValueType as const DWORD ptr, byval rgpwszValueName as const LPCWSTR ptr, byval rgpbValueData as const UBYTE const ptr ptr, byval rgcbValueData as const DWORD ptr, byval pvArg as any ptr) as WINBOOL 2756 declare function CryptEnumOIDFunction(byval dwEncodingType as DWORD, byval pszFuncName as LPCSTR, byval pszOID as LPCSTR, byval dwFlags as DWORD, byval pvArg as any ptr, byval pfnEnumOIDFunc as PFN_CRYPT_ENUM_OID_FUNC) as WINBOOL 2757 2758 const CRYPT_MATCH_ANY_ENCODING_TYPE = &hffffffff 2759 const CALG_OID_INFO_CNG_ONLY = &hffffffff 2760 const CALG_OID_INFO_PARAMETERS = &hfffffffe 2761 #define IS_SPECIAL_OID_INFO_ALGID(Algid) (Algid >= CALG_OID_INFO_PARAMETERS) 2762 #define CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM wstr("CryptOIDInfoHashParameters") 2763 #define CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM wstr("CryptOIDInfoECCParameters") 2764 #define CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM wstr("CryptOIDInfoMgf1Parameters") 2765 #define CRYPT_OID_INFO_NO_SIGN_ALGORITHM wstr("CryptOIDInfoNoSign") 2766 #define CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM wstr("CryptOIDInfoOAEPParameters") 2767 #define CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM wstr("CryptOIDInfoECCWrapParameters") 2768 #define CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM wstr("CryptOIDInfoNoParameters") 2769 2770 type _CRYPT_OID_INFO 2771 cbSize as DWORD 2772 pszOID as LPCSTR 2773 pwszName as LPCWSTR 2774 dwGroupId as DWORD 2775 2776 union 2777 dwValue as DWORD 2778 Algid as ALG_ID 2779 dwLength as DWORD 2780 end union 2781 2782 ExtraInfo as CRYPT_DATA_BLOB 2783 end type 2784 2785 type CRYPT_OID_INFO as _CRYPT_OID_INFO 2786 type PCRYPT_OID_INFO as _CRYPT_OID_INFO ptr 2787 type CCRYPT_OID_INFO as const CRYPT_OID_INFO 2788 type PCCRYPT_OID_INFO as const CRYPT_OID_INFO ptr 2789 2790 const CRYPT_HASH_ALG_OID_GROUP_ID = 1 2791 const CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2 2792 const CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3 2793 const CRYPT_SIGN_ALG_OID_GROUP_ID = 4 2794 const CRYPT_RDN_ATTR_OID_GROUP_ID = 5 2795 const CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6 2796 const CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7 2797 const CRYPT_POLICY_OID_GROUP_ID = 8 2798 const CRYPT_TEMPLATE_OID_GROUP_ID = 9 2799 const CRYPT_KDF_OID_GROUP_ID = 10 2800 const CRYPT_LAST_OID_GROUP_ID = 10 2801 const CRYPT_FIRST_ALG_OID_GROUP_ID = CRYPT_HASH_ALG_OID_GROUP_ID 2802 const CRYPT_LAST_ALG_OID_GROUP_ID = CRYPT_SIGN_ALG_OID_GROUP_ID 2803 const CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG = &h1 2804 const CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG = &h2 2805 const CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG = &h4 2806 const CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG = &h40000000 2807 const CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG = &h80000000 2808 declare function CryptFindOIDInfo(byval dwKeyType as DWORD, byval pvKey as any ptr, byval dwGroupId as DWORD) as PCCRYPT_OID_INFO 2809 const CRYPT_OID_INFO_OID_KEY = 1 2810 const CRYPT_OID_INFO_NAME_KEY = 2 2811 const CRYPT_OID_INFO_ALGID_KEY = 3 2812 const CRYPT_OID_INFO_SIGN_KEY = 4 2813 const CRYPT_OID_INFO_CNG_ALGID_KEY = 5 2814 const CRYPT_OID_INFO_CNG_SIGN_KEY = 6 2815 const CRYPT_OID_INFO_OID_KEY_FLAGS_MASK = &hffff0000 2816 const CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG = &h80000000 2817 const CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG = &h40000000 2818 const CRYPT_OID_DISABLE_SEARCH_DS_FLAG = &h80000000 2819 const CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK = &h0fff0000 2820 const CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT = 16 2821 const CRYPT_INSTALL_OID_INFO_BEFORE_FLAG = 1 2822 type PFN_CRYPT_ENUM_OID_INFO as function(byval pInfo as PCCRYPT_OID_INFO, byval pvArg as any ptr) as WINBOOL 2823 2824 declare function CryptRegisterOIDInfo(byval pInfo as PCCRYPT_OID_INFO, byval dwFlags as DWORD) as WINBOOL 2825 declare function CryptUnregisterOIDInfo(byval pInfo as PCCRYPT_OID_INFO) as WINBOOL 2826 declare function CryptEnumOIDInfo(byval dwGroupId as DWORD, byval dwFlags as DWORD, byval pvArg as any ptr, byval pfnEnumOIDInfo as PFN_CRYPT_ENUM_OID_INFO) as WINBOOL 2827 declare function CryptFindLocalizedName(byval pwszCryptName as LPCWSTR) as LPCWSTR 2828 2829 const CRYPT_LOCALIZED_NAME_ENCODING_TYPE = 0 2830 #define CRYPT_LOCALIZED_NAME_OID "LocalizedNames" 2831 #define CERT_STRONG_SIGN_ECDSA_ALGORITHM wstr("ECDSA") 2832 2833 type _CERT_STRONG_SIGN_SERIALIZED_INFO 2834 dwFlags as DWORD 2835 pwszCNGSignHashAlgids as LPWSTR 2836 pwszCNGPubKeyMinBitLengths as LPWSTR 2837 end type 2838 2839 type CERT_STRONG_SIGN_SERIALIZED_INFO as _CERT_STRONG_SIGN_SERIALIZED_INFO 2840 type PCERT_STRONG_SIGN_SERIALIZED_INFO as _CERT_STRONG_SIGN_SERIALIZED_INFO ptr 2841 2842 type _CERT_STRONG_SIGN_PARA 2843 cbSize as DWORD 2844 dwInfoChoice as DWORD 2845 2846 union 2847 pvInfo as any ptr 2848 pSerializedInfo as PCERT_STRONG_SIGN_SERIALIZED_INFO 2849 pszOID as LPSTR 2850 end union 2851 end type 2852 2853 type CERT_STRONG_SIGN_PARA as _CERT_STRONG_SIGN_PARA 2854 type PCERT_STRONG_SIGN_PARA as _CERT_STRONG_SIGN_PARA ptr 2855 type PCCERT_STRONG_SIGN_PARA as const CERT_STRONG_SIGN_PARA ptr 2856 2857 const CERT_STRONG_SIGN_SERIALIZED_INFO_CHOICE = 1 2858 const CERT_STRONG_SIGN_OID_INFO_CHOICE = 2 2859 const CERT_STRONG_SIGN_ENABLE_CRL_CHECK = &h1 2860 const CERT_STRONG_SIGN_ENABLE_OCSP_CHECK = &h2 2861 #define szOID_CERT_STRONG_SIGN_OS_PREFIX "1.3.6.1.4.1.311.72.1." 2862 #define szOID_CERT_STRONG_SIGN_OS_1 "1.3.6.1.4.1.311.72.1.1" 2863 #define szOID_CERT_STRONG_SIGN_OS_CURRENT szOID_CERT_STRONG_SIGN_OS_1 2864 #define CERT_STRONG_SIGN_PARA_OS_1 (sizeof(CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_SIGN_OS_1) 2865 #define CERT_STRONG_SIGN_PARA_OS_CURRENT (sizeof(CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_SIGN_OS_CURRENT) 2866 #define szOID_CERT_STRONG_KEY_OS_PREFIX "1.3.6.1.4.1.311.72.2." 2867 #define szOID_CERT_STRONG_KEY_OS_1 "1.3.6.1.4.1.311.72.2.1" 2868 #define szOID_CERT_STRONG_KEY_OS_CURRENT szOID_CERT_STRONG_KEY_OS_1 2869 #define CERT_STRONG_KEY_PARA_OS_1 (sizeof(CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_KEY_OS_1) 2870 #define CERT_STRONG_KEY_PARA_OS_CURRENT (sizeof(CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_KEY_OS_CURRENT) 2871 type HCRYPTMSG as any ptr 2872 #define szOID_PKCS_7_DATA "1.2.840.113549.1.7.1" 2873 #define szOID_PKCS_7_SIGNED "1.2.840.113549.1.7.2" 2874 #define szOID_PKCS_7_ENVELOPED "1.2.840.113549.1.7.3" 2875 #define szOID_PKCS_7_SIGNEDANDENVELOPED "1.2.840.113549.1.7.4" 2876 #define szOID_PKCS_7_DIGESTED "1.2.840.113549.1.7.5" 2877 #define szOID_PKCS_7_ENCRYPTED "1.2.840.113549.1.7.6" 2878 #define szOID_PKCS_9_CONTENT_TYPE "1.2.840.113549.1.9.3" 2879 #define szOID_PKCS_9_MESSAGE_DIGEST "1.2.840.113549.1.9.4" 2880 const CMSG_DATA = 1 2881 const CMSG_SIGNED = 2 2882 const CMSG_ENVELOPED = 3 2883 const CMSG_SIGNED_AND_ENVELOPED = 4 2884 const CMSG_HASHED = 5 2885 const CMSG_ENCRYPTED = 6 2886 const CMSG_ALL_FLAGS = culng(not 0u) 2887 const CMSG_DATA_FLAG = 1 shl CMSG_DATA 2888 const CMSG_SIGNED_FLAG = 1 shl CMSG_SIGNED 2889 const CMSG_ENVELOPED_FLAG = 1 shl CMSG_ENVELOPED 2890 const CMSG_SIGNED_AND_ENVELOPED_FLAG = 1 shl CMSG_SIGNED_AND_ENVELOPED 2891 const CMSG_HASHED_FLAG = 1 shl CMSG_HASHED 2892 const CMSG_ENCRYPTED_FLAG = 1 shl CMSG_ENCRYPTED 2893 2894 type _CERT_ISSUER_SERIAL_NUMBER 2895 Issuer as CERT_NAME_BLOB 2896 SerialNumber as CRYPT_INTEGER_BLOB 2897 end type 2898 2899 type CERT_ISSUER_SERIAL_NUMBER as _CERT_ISSUER_SERIAL_NUMBER 2900 type PCERT_ISSUER_SERIAL_NUMBER as _CERT_ISSUER_SERIAL_NUMBER ptr 2901 2902 type _CERT_ID 2903 dwIdChoice as DWORD 2904 2905 union 2906 IssuerSerialNumber as CERT_ISSUER_SERIAL_NUMBER 2907 KeyId as CRYPT_HASH_BLOB 2908 HashId as CRYPT_HASH_BLOB 2909 end union 2910 end type 2911 2912 type CERT_ID as _CERT_ID 2913 type PCERT_ID as _CERT_ID ptr 2914 const CERT_ID_ISSUER_SERIAL_NUMBER = 1 2915 const CERT_ID_KEY_IDENTIFIER = 2 2916 const CERT_ID_SHA1_HASH = 3 2917 2918 type _CMSG_SIGNER_ENCODE_INFO 2919 cbSize as DWORD 2920 pCertInfo as PCERT_INFO 2921 2922 union 2923 hCryptProv as HCRYPTPROV 2924 hNCryptKey as NCRYPT_KEY_HANDLE 2925 end union 2926 2927 dwKeySpec as DWORD 2928 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2929 pvHashAuxInfo as any ptr 2930 cAuthAttr as DWORD 2931 rgAuthAttr as PCRYPT_ATTRIBUTE 2932 cUnauthAttr as DWORD 2933 rgUnauthAttr as PCRYPT_ATTRIBUTE 2934 end type 2935 2936 type CMSG_SIGNER_ENCODE_INFO as _CMSG_SIGNER_ENCODE_INFO 2937 type PCMSG_SIGNER_ENCODE_INFO as _CMSG_SIGNER_ENCODE_INFO ptr 2938 2939 type _CMSG_SIGNED_ENCODE_INFO 2940 cbSize as DWORD 2941 cSigners as DWORD 2942 rgSigners as PCMSG_SIGNER_ENCODE_INFO 2943 cCertEncoded as DWORD 2944 rgCertEncoded as PCERT_BLOB 2945 cCrlEncoded as DWORD 2946 rgCrlEncoded as PCRL_BLOB 2947 end type 2948 2949 type CMSG_SIGNED_ENCODE_INFO as _CMSG_SIGNED_ENCODE_INFO 2950 type PCMSG_SIGNED_ENCODE_INFO as _CMSG_SIGNED_ENCODE_INFO ptr 2951 type CMSG_RECIPIENT_ENCODE_INFO as _CMSG_RECIPIENT_ENCODE_INFO 2952 type PCMSG_RECIPIENT_ENCODE_INFO as _CMSG_RECIPIENT_ENCODE_INFO ptr 2953 2954 type _CMSG_ENVELOPED_ENCODE_INFO 2955 cbSize as DWORD 2956 hCryptProv as HCRYPTPROV_LEGACY 2957 ContentEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2958 pvEncryptionAuxInfo as any ptr 2959 cRecipients as DWORD 2960 rgpRecipients as PCERT_INFO ptr 2961 end type 2962 2963 type CMSG_ENVELOPED_ENCODE_INFO as _CMSG_ENVELOPED_ENCODE_INFO 2964 type PCMSG_ENVELOPED_ENCODE_INFO as _CMSG_ENVELOPED_ENCODE_INFO ptr 2965 2966 type _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO 2967 cbSize as DWORD 2968 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2969 pvKeyEncryptionAuxInfo as any ptr 2970 hCryptProv as HCRYPTPROV_LEGACY 2971 RecipientPublicKey as CRYPT_BIT_BLOB 2972 RecipientId as CERT_ID 2973 end type 2974 2975 type CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO as _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO 2976 type PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO as _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO ptr 2977 2978 type _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO 2979 cbSize as DWORD 2980 RecipientPublicKey as CRYPT_BIT_BLOB 2981 RecipientId as CERT_ID 2982 Date as FILETIME 2983 pOtherAttr as PCRYPT_ATTRIBUTE_TYPE_VALUE 2984 end type 2985 2986 type CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO as _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO 2987 type PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO as _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO ptr 2988 2989 type _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 2990 cbSize as DWORD 2991 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2992 pvKeyEncryptionAuxInfo as any ptr 2993 KeyWrapAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 2994 pvKeyWrapAuxInfo as any ptr 2995 hCryptProv as HCRYPTPROV_LEGACY 2996 dwKeySpec as DWORD 2997 dwKeyChoice as DWORD 2998 2999 union 3000 pEphemeralAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER 3001 pSenderId as PCERT_ID 3002 end union 3003 3004 UserKeyingMaterial as CRYPT_DATA_BLOB 3005 cRecipientEncryptedKeys as DWORD 3006 rgpRecipientEncryptedKeys as PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO ptr 3007 end type 3008 3009 type CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO as _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 3010 type PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO as _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO ptr 3011 const CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE = 1 3012 const CMSG_KEY_AGREE_STATIC_KEY_CHOICE = 2 3013 3014 type _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO 3015 cbSize as DWORD 3016 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3017 pvKeyEncryptionAuxInfo as any ptr 3018 hCryptProv as HCRYPTPROV 3019 dwKeyChoice as DWORD 3020 3021 union 3022 hKeyEncryptionKey as HCRYPTKEY 3023 pvKeyEncryptionKey as any ptr 3024 end union 3025 3026 KeyId as CRYPT_DATA_BLOB 3027 Date as FILETIME 3028 pOtherAttr as PCRYPT_ATTRIBUTE_TYPE_VALUE 3029 end type 3030 3031 type CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO as _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO 3032 type PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO as _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO ptr 3033 const CMSG_MAIL_LIST_HANDLE_KEY_CHOICE = 1 3034 const CMSG_KEY_TRANS_RECIPIENT = 1 3035 const CMSG_KEY_AGREE_RECIPIENT = 2 3036 const CMSG_MAIL_LIST_RECIPIENT = 3 3037 const CMSG_RC4_NO_SALT_FLAG = &h40000000 3038 const CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG = &h80000000 3039 3040 type _CMSG_RECIPIENT_ENCODE_INFO 3041 dwRecipientChoice as DWORD 3042 3043 union 3044 pKeyTrans as PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO 3045 pKeyAgree as PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 3046 pMailList as PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO 3047 end union 3048 end type 3049 3050 type _CMSG_RC2_AUX_INFO 3051 cbSize as DWORD 3052 dwBitLen as DWORD 3053 end type 3054 3055 type CMSG_RC2_AUX_INFO as _CMSG_RC2_AUX_INFO 3056 type PCMSG_RC2_AUX_INFO as _CMSG_RC2_AUX_INFO ptr 3057 3058 type _CMSG_SP3_COMPATIBLE_AUX_INFO 3059 cbSize as DWORD 3060 dwFlags as DWORD 3061 end type 3062 3063 type CMSG_SP3_COMPATIBLE_AUX_INFO as _CMSG_SP3_COMPATIBLE_AUX_INFO 3064 type PCMSG_SP3_COMPATIBLE_AUX_INFO as _CMSG_SP3_COMPATIBLE_AUX_INFO ptr 3065 3066 type _CMSG_RC4_AUX_INFO 3067 cbSize as DWORD 3068 dwBitLen as DWORD 3069 end type 3070 3071 type CMSG_RC4_AUX_INFO as _CMSG_RC4_AUX_INFO 3072 type PCMSG_RC4_AUX_INFO as _CMSG_RC4_AUX_INFO ptr 3073 3074 type _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO 3075 cbSize as DWORD 3076 SignedInfo as CMSG_SIGNED_ENCODE_INFO 3077 EnvelopedInfo as CMSG_ENVELOPED_ENCODE_INFO 3078 end type 3079 3080 type CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO as _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO 3081 type PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO as _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO ptr 3082 3083 type _CMSG_HASHED_ENCODE_INFO 3084 cbSize as DWORD 3085 hCryptProv as HCRYPTPROV_LEGACY 3086 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3087 pvHashAuxInfo as any ptr 3088 end type 3089 3090 type CMSG_HASHED_ENCODE_INFO as _CMSG_HASHED_ENCODE_INFO 3091 type PCMSG_HASHED_ENCODE_INFO as _CMSG_HASHED_ENCODE_INFO ptr 3092 3093 type _CMSG_ENCRYPTED_ENCODE_INFO 3094 cbSize as DWORD 3095 ContentEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3096 pvEncryptionAuxInfo as any ptr 3097 end type 3098 3099 type CMSG_ENCRYPTED_ENCODE_INFO as _CMSG_ENCRYPTED_ENCODE_INFO 3100 type PCMSG_ENCRYPTED_ENCODE_INFO as _CMSG_ENCRYPTED_ENCODE_INFO ptr 3101 type PFN_CMSG_STREAM_OUTPUT as function(byval pvArg as const any ptr, byval pbData as UBYTE ptr, byval cbData as DWORD, byval fFinal as WINBOOL) as WINBOOL 3102 const CMSG_INDEFINITE_LENGTH = &hffffffff 3103 3104 type _CMSG_STREAM_INFO 3105 cbContent as DWORD 3106 pfnStreamOutput as PFN_CMSG_STREAM_OUTPUT 3107 pvArg as any ptr 3108 end type 3109 3110 type CMSG_STREAM_INFO as _CMSG_STREAM_INFO 3111 type PCMSG_STREAM_INFO as _CMSG_STREAM_INFO ptr 3112 const CMSG_BARE_CONTENT_FLAG = &h1 3113 const CMSG_LENGTH_ONLY_FLAG = &h2 3114 const CMSG_DETACHED_FLAG = &h4 3115 const CMSG_AUTHENTICATED_ATTRIBUTES_FLAG = &h8 3116 const CMSG_CONTENTS_OCTETS_FLAG = &h10 3117 const CMSG_MAX_LENGTH_FLAG = &h20 3118 const CMSG_CMS_ENCAPSULATED_CONTENT_FLAG = &h40 3119 const CMSG_CRYPT_RELEASE_CONTEXT_FLAG = &h8000 3120 3121 declare function CryptMsgOpenToEncode(byval dwMsgEncodingType as DWORD, byval dwFlags as DWORD, byval dwMsgType as DWORD, byval pvMsgEncodeInfo as const any ptr, byval pszInnerContentObjID as LPSTR, byval pStreamInfo as PCMSG_STREAM_INFO) as HCRYPTMSG 3122 declare function CryptMsgCalculateEncodedLength(byval dwMsgEncodingType as DWORD, byval dwFlags as DWORD, byval dwMsgType as DWORD, byval pvMsgEncodeInfo as const any ptr, byval pszInnerContentObjID as LPSTR, byval cbData as DWORD) as DWORD 3123 declare function CryptMsgOpenToDecode(byval dwMsgEncodingType as DWORD, byval dwFlags as DWORD, byval dwMsgType as DWORD, byval hCryptProv as HCRYPTPROV_LEGACY, byval pRecipientInfo as PCERT_INFO, byval pStreamInfo as PCMSG_STREAM_INFO) as HCRYPTMSG 3124 declare function CryptMsgDuplicate(byval hCryptMsg as HCRYPTMSG) as HCRYPTMSG 3125 declare function CryptMsgClose(byval hCryptMsg as HCRYPTMSG) as WINBOOL 3126 declare function CryptMsgUpdate(byval hCryptMsg as HCRYPTMSG, byval pbData as const UBYTE ptr, byval cbData as DWORD, byval fFinal as WINBOOL) as WINBOOL 3127 declare function CryptMsgGetParam(byval hCryptMsg as HCRYPTMSG, byval dwParamType as DWORD, byval dwIndex as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 3128 3129 const CMSG_TYPE_PARAM = 1 3130 const CMSG_CONTENT_PARAM = 2 3131 const CMSG_BARE_CONTENT_PARAM = 3 3132 const CMSG_INNER_CONTENT_TYPE_PARAM = 4 3133 const CMSG_SIGNER_COUNT_PARAM = 5 3134 const CMSG_SIGNER_INFO_PARAM = 6 3135 const CMSG_SIGNER_CERT_INFO_PARAM = 7 3136 const CMSG_SIGNER_HASH_ALGORITHM_PARAM = 8 3137 const CMSG_SIGNER_AUTH_ATTR_PARAM = 9 3138 const CMSG_SIGNER_UNAUTH_ATTR_PARAM = 10 3139 const CMSG_CERT_COUNT_PARAM = 11 3140 const CMSG_CERT_PARAM = 12 3141 const CMSG_CRL_COUNT_PARAM = 13 3142 const CMSG_CRL_PARAM = 14 3143 const CMSG_ENVELOPE_ALGORITHM_PARAM = 15 3144 const CMSG_RECIPIENT_COUNT_PARAM = 17 3145 const CMSG_RECIPIENT_INDEX_PARAM = 18 3146 const CMSG_RECIPIENT_INFO_PARAM = 19 3147 const CMSG_HASH_ALGORITHM_PARAM = 20 3148 const CMSG_HASH_DATA_PARAM = 21 3149 const CMSG_COMPUTED_HASH_PARAM = 22 3150 const CMSG_ENCRYPT_PARAM = 26 3151 const CMSG_ENCRYPTED_DIGEST = 27 3152 const CMSG_ENCODED_SIGNER = 28 3153 const CMSG_ENCODED_MESSAGE = 29 3154 const CMSG_VERSION_PARAM = 30 3155 const CMSG_ATTR_CERT_COUNT_PARAM = 31 3156 const CMSG_ATTR_CERT_PARAM = 32 3157 const CMSG_CMS_RECIPIENT_COUNT_PARAM = 33 3158 const CMSG_CMS_RECIPIENT_INDEX_PARAM = 34 3159 const CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM = 35 3160 const CMSG_CMS_RECIPIENT_INFO_PARAM = 36 3161 const CMSG_UNPROTECTED_ATTR_PARAM = 37 3162 const CMSG_SIGNER_CERT_ID_PARAM = 38 3163 const CMSG_CMS_SIGNER_INFO_PARAM = 39 3164 3165 type _CMSG_SIGNER_INFO 3166 dwVersion as DWORD 3167 Issuer as CERT_NAME_BLOB 3168 SerialNumber as CRYPT_INTEGER_BLOB 3169 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3170 HashEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3171 EncryptedHash as CRYPT_DATA_BLOB 3172 AuthAttrs as CRYPT_ATTRIBUTES 3173 UnauthAttrs as CRYPT_ATTRIBUTES 3174 end type 3175 3176 type CMSG_SIGNER_INFO as _CMSG_SIGNER_INFO 3177 type PCMSG_SIGNER_INFO as _CMSG_SIGNER_INFO ptr 3178 3179 type _CMSG_CMS_SIGNER_INFO 3180 dwVersion as DWORD 3181 SignerId as CERT_ID 3182 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3183 HashEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3184 EncryptedHash as CRYPT_DATA_BLOB 3185 AuthAttrs as CRYPT_ATTRIBUTES 3186 UnauthAttrs as CRYPT_ATTRIBUTES 3187 end type 3188 3189 type CMSG_CMS_SIGNER_INFO as _CMSG_CMS_SIGNER_INFO 3190 type PCMSG_CMS_SIGNER_INFO as _CMSG_CMS_SIGNER_INFO ptr 3191 type CMSG_ATTR as CRYPT_ATTRIBUTES 3192 type PCMSG_ATTR as CRYPT_ATTRIBUTES ptr 3193 3194 const CMSG_SIGNED_DATA_V1 = 1 3195 const CMSG_SIGNED_DATA_V3 = 3 3196 const CMSG_SIGNED_DATA_PKCS_1_5_VERSION = CMSG_SIGNED_DATA_V1 3197 const CMSG_SIGNED_DATA_CMS_VERSION = CMSG_SIGNED_DATA_V3 3198 const CMSG_SIGNER_INFO_V1 = 1 3199 const CMSG_SIGNER_INFO_V3 = 3 3200 const CMSG_SIGNER_INFO_PKCS_1_5_VERSION = CMSG_SIGNER_INFO_V1 3201 const CMSG_SIGNER_INFO_CMS_VERSION = CMSG_SIGNER_INFO_V3 3202 const CMSG_HASHED_DATA_V0 = 0 3203 const CMSG_HASHED_DATA_V2 = 2 3204 const CMSG_HASHED_DATA_PKCS_1_5_VERSION = CMSG_HASHED_DATA_V0 3205 const CMSG_HASHED_DATA_CMS_VERSION = CMSG_HASHED_DATA_V2 3206 const CMSG_ENVELOPED_DATA_V0 = 0 3207 const CMSG_ENVELOPED_DATA_V2 = 2 3208 const CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION = CMSG_ENVELOPED_DATA_V0 3209 const CMSG_ENVELOPED_DATA_CMS_VERSION = CMSG_ENVELOPED_DATA_V2 3210 3211 type _CMSG_KEY_TRANS_RECIPIENT_INFO 3212 dwVersion as DWORD 3213 RecipientId as CERT_ID 3214 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3215 EncryptedKey as CRYPT_DATA_BLOB 3216 end type 3217 3218 type CMSG_KEY_TRANS_RECIPIENT_INFO as _CMSG_KEY_TRANS_RECIPIENT_INFO 3219 type PCMSG_KEY_TRANS_RECIPIENT_INFO as _CMSG_KEY_TRANS_RECIPIENT_INFO ptr 3220 3221 type _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO 3222 RecipientId as CERT_ID 3223 EncryptedKey as CRYPT_DATA_BLOB 3224 Date as FILETIME 3225 pOtherAttr as PCRYPT_ATTRIBUTE_TYPE_VALUE 3226 end type 3227 3228 type CMSG_RECIPIENT_ENCRYPTED_KEY_INFO as _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO 3229 type PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO as _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO ptr 3230 3231 type _CMSG_KEY_AGREE_RECIPIENT_INFO 3232 dwVersion as DWORD 3233 dwOriginatorChoice as DWORD 3234 3235 union 3236 OriginatorCertId as CERT_ID 3237 OriginatorPublicKeyInfo as CERT_PUBLIC_KEY_INFO 3238 end union 3239 3240 UserKeyingMaterial as CRYPT_DATA_BLOB 3241 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3242 cRecipientEncryptedKeys as DWORD 3243 rgpRecipientEncryptedKeys as PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO ptr 3244 end type 3245 3246 type CMSG_KEY_AGREE_RECIPIENT_INFO as _CMSG_KEY_AGREE_RECIPIENT_INFO 3247 type PCMSG_KEY_AGREE_RECIPIENT_INFO as _CMSG_KEY_AGREE_RECIPIENT_INFO ptr 3248 const CMSG_KEY_AGREE_ORIGINATOR_CERT = 1 3249 const CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY = 2 3250 3251 type _CMSG_MAIL_LIST_RECIPIENT_INFO 3252 dwVersion as DWORD 3253 KeyId as CRYPT_DATA_BLOB 3254 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3255 EncryptedKey as CRYPT_DATA_BLOB 3256 Date as FILETIME 3257 pOtherAttr as PCRYPT_ATTRIBUTE_TYPE_VALUE 3258 end type 3259 3260 type CMSG_MAIL_LIST_RECIPIENT_INFO as _CMSG_MAIL_LIST_RECIPIENT_INFO 3261 type PCMSG_MAIL_LIST_RECIPIENT_INFO as _CMSG_MAIL_LIST_RECIPIENT_INFO ptr 3262 3263 type _CMSG_CMS_RECIPIENT_INFO 3264 dwRecipientChoice as DWORD 3265 3266 union 3267 pKeyTrans as PCMSG_KEY_TRANS_RECIPIENT_INFO 3268 pKeyAgree as PCMSG_KEY_AGREE_RECIPIENT_INFO 3269 pMailList as PCMSG_MAIL_LIST_RECIPIENT_INFO 3270 end union 3271 end type 3272 3273 type CMSG_CMS_RECIPIENT_INFO as _CMSG_CMS_RECIPIENT_INFO 3274 type PCMSG_CMS_RECIPIENT_INFO as _CMSG_CMS_RECIPIENT_INFO ptr 3275 const CMSG_ENVELOPED_RECIPIENT_V0 = 0 3276 const CMSG_ENVELOPED_RECIPIENT_V2 = 2 3277 const CMSG_ENVELOPED_RECIPIENT_V3 = 3 3278 const CMSG_ENVELOPED_RECIPIENT_V4 = 4 3279 const CMSG_KEY_TRANS_PKCS_1_5_VERSION = CMSG_ENVELOPED_RECIPIENT_V0 3280 const CMSG_KEY_TRANS_CMS_VERSION = CMSG_ENVELOPED_RECIPIENT_V2 3281 const CMSG_KEY_AGREE_VERSION = CMSG_ENVELOPED_RECIPIENT_V3 3282 const CMSG_MAIL_LIST_VERSION = CMSG_ENVELOPED_RECIPIENT_V4 3283 declare function CryptMsgControl(byval hCryptMsg as HCRYPTMSG, byval dwFlags as DWORD, byval dwCtrlType as DWORD, byval pvCtrlPara as const any ptr) as WINBOOL 3284 const CMSG_CTRL_VERIFY_SIGNATURE = 1 3285 const CMSG_CTRL_DECRYPT = 2 3286 const CMSG_CTRL_VERIFY_HASH = 5 3287 const CMSG_CTRL_ADD_SIGNER = 6 3288 const CMSG_CTRL_DEL_SIGNER = 7 3289 const CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR = 8 3290 const CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR = 9 3291 const CMSG_CTRL_ADD_CERT = 10 3292 const CMSG_CTRL_DEL_CERT = 11 3293 const CMSG_CTRL_ADD_CRL = 12 3294 const CMSG_CTRL_DEL_CRL = 13 3295 const CMSG_CTRL_ADD_ATTR_CERT = 14 3296 const CMSG_CTRL_DEL_ATTR_CERT = 15 3297 const CMSG_CTRL_KEY_TRANS_DECRYPT = 16 3298 const CMSG_CTRL_KEY_AGREE_DECRYPT = 17 3299 const CMSG_CTRL_MAIL_LIST_DECRYPT = 18 3300 const CMSG_CTRL_VERIFY_SIGNATURE_EX = 19 3301 const CMSG_CTRL_ADD_CMS_SIGNER_INFO = 20 3302 const CMSG_CTRL_ENABLE_STRONG_SIGNATURE = 21 3303 3304 type _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA 3305 cbSize as DWORD 3306 hCryptProv as HCRYPTPROV_LEGACY 3307 dwSignerIndex as DWORD 3308 dwSignerType as DWORD 3309 pvSigner as any ptr 3310 end type 3311 3312 type CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA as _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA 3313 type PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA as _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA ptr 3314 const CMSG_VERIFY_SIGNER_PUBKEY = 1 3315 const CMSG_VERIFY_SIGNER_CERT = 2 3316 const CMSG_VERIFY_SIGNER_CHAIN = 3 3317 const CMSG_VERIFY_SIGNER_NULL = 4 3318 3319 type _CMSG_CTRL_DECRYPT_PARA 3320 cbSize as DWORD 3321 3322 union 3323 hCryptProv as HCRYPTPROV 3324 hNCryptKey as NCRYPT_KEY_HANDLE 3325 end union 3326 3327 dwKeySpec as DWORD 3328 dwRecipientIndex as DWORD 3329 end type 3330 3331 type CMSG_CTRL_DECRYPT_PARA as _CMSG_CTRL_DECRYPT_PARA 3332 type PCMSG_CTRL_DECRYPT_PARA as _CMSG_CTRL_DECRYPT_PARA ptr 3333 3334 type _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA 3335 cbSize as DWORD 3336 3337 union 3338 hCryptProv as HCRYPTPROV 3339 hNCryptKey as NCRYPT_KEY_HANDLE 3340 end union 3341 3342 dwKeySpec as DWORD 3343 pKeyTrans as PCMSG_KEY_TRANS_RECIPIENT_INFO 3344 dwRecipientIndex as DWORD 3345 end type 3346 3347 type CMSG_CTRL_KEY_TRANS_DECRYPT_PARA as _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA 3348 type PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA as _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA ptr 3349 3350 type _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA 3351 cbSize as DWORD 3352 3353 union 3354 hCryptProv as HCRYPTPROV 3355 hNCryptKey as NCRYPT_KEY_HANDLE 3356 end union 3357 3358 dwKeySpec as DWORD 3359 pKeyAgree as PCMSG_KEY_AGREE_RECIPIENT_INFO 3360 dwRecipientIndex as DWORD 3361 dwRecipientEncryptedKeyIndex as DWORD 3362 OriginatorPublicKey as CRYPT_BIT_BLOB 3363 end type 3364 3365 type CMSG_CTRL_KEY_AGREE_DECRYPT_PARA as _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA 3366 type PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA as _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA ptr 3367 3368 type _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA 3369 cbSize as DWORD 3370 hCryptProv as HCRYPTPROV 3371 pMailList as PCMSG_MAIL_LIST_RECIPIENT_INFO 3372 dwRecipientIndex as DWORD 3373 dwKeyChoice as DWORD 3374 3375 union 3376 hKeyEncryptionKey as HCRYPTKEY 3377 pvKeyEncryptionKey as any ptr 3378 end union 3379 end type 3380 3381 type CMSG_CTRL_MAIL_LIST_DECRYPT_PARA as _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA 3382 type PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA as _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA ptr 3383 3384 type _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA 3385 cbSize as DWORD 3386 dwSignerIndex as DWORD 3387 blob as CRYPT_DATA_BLOB 3388 end type 3389 3390 type CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA as _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA 3391 type PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA as _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA ptr 3392 3393 type _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA 3394 cbSize as DWORD 3395 dwSignerIndex as DWORD 3396 dwUnauthAttrIndex as DWORD 3397 end type 3398 3399 type CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA as _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA 3400 type PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA as _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA ptr 3401 const CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG = &h1 3402 declare function CryptMsgVerifyCountersignatureEncoded(byval hCryptProv as HCRYPTPROV_LEGACY, byval dwEncodingType as DWORD, byval pbSignerInfo as PBYTE, byval cbSignerInfo as DWORD, byval pbSignerInfoCountersignature as PBYTE, byval cbSignerInfoCountersignature as DWORD, byval pciCountersigner as PCERT_INFO) as WINBOOL 3403 declare function CryptMsgVerifyCountersignatureEncodedEx(byval hCryptProv as HCRYPTPROV_LEGACY, byval dwEncodingType as DWORD, byval pbSignerInfo as PBYTE, byval cbSignerInfo as DWORD, byval pbSignerInfoCountersignature as PBYTE, byval cbSignerInfoCountersignature as DWORD, byval dwSignerType as DWORD, byval pvSigner as any ptr, byval dwFlags as DWORD, byval pvExtra as any ptr) as WINBOOL 3404 declare function CryptMsgCountersign(byval hCryptMsg as HCRYPTMSG, byval dwIndex as DWORD, byval cCountersigners as DWORD, byval rgCountersigners as PCMSG_SIGNER_ENCODE_INFO) as WINBOOL 3405 declare function CryptMsgCountersignEncoded(byval dwEncodingType as DWORD, byval pbSignerInfo as PBYTE, byval cbSignerInfo as DWORD, byval cCountersigners as DWORD, byval rgCountersigners as PCMSG_SIGNER_ENCODE_INFO, byval pbCountersignature as PBYTE, byval pcbCountersignature as PDWORD) as WINBOOL 3406 type PFN_CMSG_ALLOC as function(byval cb as uinteger) as any ptr 3407 type PFN_CMSG_FREE as sub(byval pv as any ptr) 3408 3409 #define CMSG_OID_GEN_ENCRYPT_KEY_FUNC "CryptMsgDllGenEncryptKey" 3410 #define CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC "CryptMsgDllExportEncryptKey" 3411 #define CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC "CryptMsgDllImportEncryptKey" 3412 3413 type PFN_CMSG_GEN_ENCRYPT_KEY as function(byval phCryptProv as HCRYPTPROV ptr, byval paiEncrypt as PCRYPT_ALGORITHM_IDENTIFIER, byval pvEncryptAuxInfo as PVOID, byval pPublicKeyInfo as PCERT_PUBLIC_KEY_INFO, byval pfnAlloc as PFN_CMSG_ALLOC, byval phEncryptKey as HCRYPTKEY ptr, byval ppbEncryptParameters as PBYTE ptr, byval pcbEncryptParameters as PDWORD) as WINBOOL 3414 type PFN_CMSG_EXPORT_ENCRYPT_KEY as function(byval hCryptProv as HCRYPTPROV, byval hEncryptKey as HCRYPTKEY, byval pPublicKeyInfo as PCERT_PUBLIC_KEY_INFO, byval pbData as PBYTE, byval pcbData as PDWORD) as WINBOOL 3415 type PFN_CMSG_IMPORT_ENCRYPT_KEY as function(byval hCryptProv as HCRYPTPROV, byval dwKeySpec as DWORD, byval paiEncrypt as PCRYPT_ALGORITHM_IDENTIFIER, byval paiPubKey as PCRYPT_ALGORITHM_IDENTIFIER, byval pbEncodedKey as PBYTE, byval cbEncodedKey as DWORD, byval phEncryptKey as HCRYPTKEY ptr) as WINBOOL 3416 const CMSG_DEFAULT_INSTALLABLE_FUNC_OID = cast(LPCSTR, 1) 3417 3418 type _CMSG_CONTENT_ENCRYPT_INFO 3419 cbSize as DWORD 3420 hCryptProv as HCRYPTPROV_LEGACY 3421 ContentEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3422 pvEncryptionAuxInfo as any ptr 3423 cRecipients as DWORD 3424 rgCmsRecipients as PCMSG_RECIPIENT_ENCODE_INFO 3425 pfnAlloc as PFN_CMSG_ALLOC 3426 pfnFree as PFN_CMSG_FREE 3427 dwEncryptFlags as DWORD 3428 3429 union 3430 hContentEncryptKey as HCRYPTKEY 3431 hCNGContentEncryptKey as BCRYPT_KEY_HANDLE 3432 end union 3433 3434 dwFlags as DWORD 3435 fCNG as WINBOOL 3436 pbCNGContentEncryptKeyObject as UBYTE ptr 3437 pbContentEncryptKey as UBYTE ptr 3438 cbContentEncryptKey as DWORD 3439 end type 3440 3441 type CMSG_CONTENT_ENCRYPT_INFO as _CMSG_CONTENT_ENCRYPT_INFO 3442 type PCMSG_CONTENT_ENCRYPT_INFO as _CMSG_CONTENT_ENCRYPT_INFO ptr 3443 const CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG = &h1 3444 const CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG = &h1 3445 const CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG = &h2 3446 const CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG = &h8000 3447 #define CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllGenContentEncryptKey" 3448 #define CMSG_OID_CAPI1_GEN_CONTENT_ENCRYPT_KEY_FUNC CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC 3449 #define CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllCNGGenContentEncryptKey" 3450 type PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY as function(byval pContentEncryptInfo as PCMSG_CONTENT_ENCRYPT_INFO, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 3451 3452 type _CMSG_KEY_TRANS_ENCRYPT_INFO 3453 cbSize as DWORD 3454 dwRecipientIndex as DWORD 3455 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3456 EncryptedKey as CRYPT_DATA_BLOB 3457 dwFlags as DWORD 3458 end type 3459 3460 type CMSG_KEY_TRANS_ENCRYPT_INFO as _CMSG_KEY_TRANS_ENCRYPT_INFO 3461 type PCMSG_KEY_TRANS_ENCRYPT_INFO as _CMSG_KEY_TRANS_ENCRYPT_INFO ptr 3462 const CMSG_KEY_TRANS_ENCRYPT_FREE_PARA_FLAG = &h1 3463 const CMSG_KEY_TRANS_ENCRYPT_FREE_OBJID_FLAG = &h2 3464 #define CMSG_OID_EXPORT_KEY_TRANS_FUNC "CryptMsgDllExportKeyTrans" 3465 #define CMSG_OID_CAPI1_EXPORT_KEY_TRANS_FUNC CMSG_OID_EXPORT_KEY_TRANS_FUNC 3466 #define CMSG_OID_CNG_EXPORT_KEY_TRANS_FUNC "CryptMsgDllCNGExportKeyTrans" 3467 type PFN_CMSG_EXPORT_KEY_TRANS as function(byval pContentEncryptInfo as PCMSG_CONTENT_ENCRYPT_INFO, byval pKeyTransEncodeInfo as PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO, byval pKeyTransEncryptInfo as PCMSG_KEY_TRANS_ENCRYPT_INFO, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 3468 3469 type _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 3470 cbSize as DWORD 3471 EncryptedKey as CRYPT_DATA_BLOB 3472 end type 3473 3474 type CMSG_KEY_AGREE_KEY_ENCRYPT_INFO as _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 3475 type PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO as _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO ptr 3476 3477 type _CMSG_KEY_AGREE_ENCRYPT_INFO 3478 cbSize as DWORD 3479 dwRecipientIndex as DWORD 3480 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3481 UserKeyingMaterial as CRYPT_DATA_BLOB 3482 dwOriginatorChoice as DWORD 3483 3484 union 3485 OriginatorCertId as CERT_ID 3486 OriginatorPublicKeyInfo as CERT_PUBLIC_KEY_INFO 3487 end union 3488 3489 cKeyAgreeKeyEncryptInfo as DWORD 3490 rgpKeyAgreeKeyEncryptInfo as PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO ptr 3491 dwFlags as DWORD 3492 end type 3493 3494 type CMSG_KEY_AGREE_ENCRYPT_INFO as _CMSG_KEY_AGREE_ENCRYPT_INFO 3495 type PCMSG_KEY_AGREE_ENCRYPT_INFO as _CMSG_KEY_AGREE_ENCRYPT_INFO ptr 3496 const CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG = &h1 3497 const CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG = &h2 3498 const CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG = &h4 3499 const CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG = &h8 3500 const CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG = &h10 3501 const CMSG_KEY_AGREE_ENCRYPT_FREE_OBJID_FLAG = &h20 3502 #define CMSG_OID_EXPORT_KEY_AGREE_FUNC "CryptMsgDllExportKeyAgree" 3503 #define CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC CMSG_OID_EXPORT_KEY_AGREE_FUNC 3504 #define CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC "CryptMsgDllCNGExportKeyAgree" 3505 type PFN_CMSG_EXPORT_KEY_AGREE as function(byval pContentEncryptInfo as PCMSG_CONTENT_ENCRYPT_INFO, byval pKeyAgreeEncodeInfo as PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, byval pKeyAgreeEncryptInfo as PCMSG_KEY_AGREE_ENCRYPT_INFO, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 3506 3507 type _CMSG_MAIL_LIST_ENCRYPT_INFO 3508 cbSize as DWORD 3509 dwRecipientIndex as DWORD 3510 KeyEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3511 EncryptedKey as CRYPT_DATA_BLOB 3512 dwFlags as DWORD 3513 end type 3514 3515 type CMSG_MAIL_LIST_ENCRYPT_INFO as _CMSG_MAIL_LIST_ENCRYPT_INFO 3516 type PCMSG_MAIL_LIST_ENCRYPT_INFO as _CMSG_MAIL_LIST_ENCRYPT_INFO ptr 3517 const CMSG_MAIL_LIST_ENCRYPT_FREE_PARA_FLAG = &h1 3518 const CMSG_MAIL_LIST_ENCRYPT_FREE_OBJID_FLAG = &h2 3519 #define CMSG_OID_EXPORT_MAIL_LIST_FUNC "CryptMsgDllExportMailList" 3520 #define CMSG_OID_CAPI1_EXPORT_MAIL_LIST_FUNC CMSG_OID_EXPORT_MAIL_LIST_FUNC 3521 #define CMSG_OID_IMPORT_KEY_TRANS_FUNC "CryptMsgDllImportKeyTrans" 3522 #define CMSG_OID_CAPI1_IMPORT_KEY_TRANS_FUNC CMSG_OID_IMPORT_KEY_TRANS_FUNC 3523 #define CMSG_OID_IMPORT_KEY_AGREE_FUNC "CryptMsgDllImportKeyAgree" 3524 #define CMSG_OID_CAPI1_IMPORT_KEY_AGREE_FUNC CMSG_OID_IMPORT_KEY_AGREE_FUNC 3525 #define CMSG_OID_IMPORT_MAIL_LIST_FUNC "CryptMsgDllImportMailList" 3526 #define CMSG_OID_CAPI1_IMPORT_MAIL_LIST_FUNC CMSG_OID_IMPORT_MAIL_LIST_FUNC 3527 3528 type PFN_CMSG_EXPORT_MAIL_LIST as function(byval pContentEncryptInfo as PCMSG_CONTENT_ENCRYPT_INFO, byval pMailListEncodeInfo as PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, byval pMailListEncryptInfo as PCMSG_MAIL_LIST_ENCRYPT_INFO, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 3529 type PFN_CMSG_IMPORT_KEY_TRANS as function(byval pContentEncryptionAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pKeyTransDecryptPara as PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA, byval dwFlags as DWORD, byval pvReserved as any ptr, byval phContentEncryptKey as HCRYPTKEY ptr) as WINBOOL 3530 type PFN_CMSG_IMPORT_KEY_AGREE as function(byval pContentEncryptionAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pKeyAgreeDecryptPara as PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA, byval dwFlags as DWORD, byval pvReserved as any ptr, byval phContentEncryptKey as HCRYPTKEY ptr) as WINBOOL 3531 type PFN_CMSG_IMPORT_MAIL_LIST as function(byval pContentEncryptionAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pMailListDecryptPara as PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA, byval dwFlags as DWORD, byval pvReserved as any ptr, byval phContentEncryptKey as HCRYPTKEY ptr) as WINBOOL 3532 3533 type _CMSG_CNG_CONTENT_DECRYPT_INFO 3534 cbSize as DWORD 3535 ContentEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 3536 pfnAlloc as PFN_CMSG_ALLOC 3537 pfnFree as PFN_CMSG_FREE 3538 hNCryptKey as NCRYPT_KEY_HANDLE 3539 pbContentEncryptKey as UBYTE ptr 3540 cbContentEncryptKey as DWORD 3541 hCNGContentEncryptKey as BCRYPT_KEY_HANDLE 3542 pbCNGContentEncryptKeyObject as UBYTE ptr 3543 end type 3544 3545 type CMSG_CNG_CONTENT_DECRYPT_INFO as _CMSG_CNG_CONTENT_DECRYPT_INFO 3546 type PCMSG_CNG_CONTENT_DECRYPT_INFO as _CMSG_CNG_CONTENT_DECRYPT_INFO ptr 3547 #define CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC "CryptMsgDllCNGImportKeyTrans" 3548 #define CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC "CryptMsgDllCNGImportKeyAgree" 3549 #define CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllCNGImportContentEncryptKey" 3550 3551 type PFN_CMSG_CNG_IMPORT_KEY_TRANS as function(byval pCNGContentDecryptInfo as PCMSG_CNG_CONTENT_DECRYPT_INFO, byval pKeyTransDecryptPara as PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 3552 type PFN_CMSG_CNG_IMPORT_KEY_AGREE as function(byval pCNGContentDecryptInfo as PCMSG_CNG_CONTENT_DECRYPT_INFO, byval pKeyAgreeDecryptPara as PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 3553 type PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY as function(byval pCNGContentDecryptInfo as PCMSG_CNG_CONTENT_DECRYPT_INFO, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 3554 type HCERTSTORE as any ptr 3555 3556 type _CERT_CONTEXT 3557 dwCertEncodingType as DWORD 3558 pbCertEncoded as UBYTE ptr 3559 cbCertEncoded as DWORD 3560 pCertInfo as PCERT_INFO 3561 hCertStore as HCERTSTORE 3562 end type 3563 3564 type CERT_CONTEXT as _CERT_CONTEXT 3565 type PCERT_CONTEXT as _CERT_CONTEXT ptr 3566 type PCCERT_CONTEXT as const CERT_CONTEXT ptr 3567 3568 type _CRL_CONTEXT 3569 dwCertEncodingType as DWORD 3570 pbCrlEncoded as UBYTE ptr 3571 cbCrlEncoded as DWORD 3572 pCrlInfo as PCRL_INFO 3573 hCertStore as HCERTSTORE 3574 end type 3575 3576 type CRL_CONTEXT as _CRL_CONTEXT 3577 type PCRL_CONTEXT as _CRL_CONTEXT ptr 3578 type PCCRL_CONTEXT as const CRL_CONTEXT ptr 3579 3580 type _CTL_CONTEXT 3581 dwMsgAndCertEncodingType as DWORD 3582 pbCtlEncoded as UBYTE ptr 3583 cbCtlEncoded as DWORD 3584 pCtlInfo as PCTL_INFO 3585 hCertStore as HCERTSTORE 3586 hCryptMsg as HCRYPTMSG 3587 pbCtlContent as UBYTE ptr 3588 cbCtlContent as DWORD 3589 end type 3590 3591 type CTL_CONTEXT as _CTL_CONTEXT 3592 type PCTL_CONTEXT as _CTL_CONTEXT ptr 3593 type PCCTL_CONTEXT as const CTL_CONTEXT ptr 3594 3595 const CERT_KEY_PROV_HANDLE_PROP_ID = 1 3596 const CERT_KEY_PROV_INFO_PROP_ID = 2 3597 const CERT_SHA1_HASH_PROP_ID = 3 3598 const CERT_MD5_HASH_PROP_ID = 4 3599 const CERT_HASH_PROP_ID = CERT_SHA1_HASH_PROP_ID 3600 const CERT_KEY_CONTEXT_PROP_ID = 5 3601 const CERT_KEY_SPEC_PROP_ID = 6 3602 const CERT_IE30_RESERVED_PROP_ID = 7 3603 const CERT_PUBKEY_HASH_RESERVED_PROP_ID = 8 3604 const CERT_ENHKEY_USAGE_PROP_ID = 9 3605 const CERT_CTL_USAGE_PROP_ID = CERT_ENHKEY_USAGE_PROP_ID 3606 const CERT_NEXT_UPDATE_LOCATION_PROP_ID = 10 3607 const CERT_FRIENDLY_NAME_PROP_ID = 11 3608 const CERT_PVK_FILE_PROP_ID = 12 3609 const CERT_DESCRIPTION_PROP_ID = 13 3610 const CERT_ACCESS_STATE_PROP_ID = 14 3611 const CERT_SIGNATURE_HASH_PROP_ID = 15 3612 const CERT_SMART_CARD_DATA_PROP_ID = 16 3613 const CERT_EFS_PROP_ID = 17 3614 const CERT_FORTEZZA_DATA_PROP_ID = 18 3615 const CERT_ARCHIVED_PROP_ID = 19 3616 const CERT_KEY_IDENTIFIER_PROP_ID = 20 3617 const CERT_AUTO_ENROLL_PROP_ID = 21 3618 const CERT_PUBKEY_ALG_PARA_PROP_ID = 22 3619 const CERT_CROSS_CERT_DIST_POINTS_PROP_ID = 23 3620 const CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID = 24 3621 const CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID = 25 3622 const CERT_ENROLLMENT_PROP_ID = 26 3623 const CERT_DATE_STAMP_PROP_ID = 27 3624 const CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID = 28 3625 const CERT_SUBJECT_NAME_MD5_HASH_PROP_ID = 29 3626 const CERT_EXTENDED_ERROR_INFO_PROP_ID = 30 3627 const CERT_RENEWAL_PROP_ID = 64 3628 const CERT_ARCHIVED_KEY_HASH_PROP_ID = 65 3629 const CERT_AUTO_ENROLL_RETRY_PROP_ID = 66 3630 const CERT_AIA_URL_RETRIEVED_PROP_ID = 67 3631 const CERT_AUTHORITY_INFO_ACCESS_PROP_ID = 68 3632 const CERT_BACKED_UP_PROP_ID = 69 3633 const CERT_OCSP_RESPONSE_PROP_ID = 70 3634 const CERT_REQUEST_ORIGINATOR_PROP_ID = 71 3635 const CERT_SOURCE_LOCATION_PROP_ID = 72 3636 const CERT_SOURCE_URL_PROP_ID = 73 3637 const CERT_NEW_KEY_PROP_ID = 74 3638 const CERT_OCSP_CACHE_PREFIX_PROP_ID = 75 3639 const CERT_SMART_CARD_ROOT_INFO_PROP_ID = 76 3640 const CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID = 77 3641 const CERT_NCRYPT_KEY_HANDLE_PROP_ID = 78 3642 const CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID = 79 3643 const CERT_SUBJECT_INFO_ACCESS_PROP_ID = 80 3644 const CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID = 81 3645 const CERT_CA_DISABLE_CRL_PROP_ID = 82 3646 const CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID = 83 3647 const CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID = 84 3648 const CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID = 85 3649 const CERT_SUBJECT_DISABLE_CRL_PROP_ID = 86 3650 const CERT_CEP_PROP_ID = 87 3651 const CERT_SIGN_HASH_CNG_ALG_PROP_ID = 89 3652 const CERT_SCARD_PIN_ID_PROP_ID = 90 3653 const CERT_SCARD_PIN_INFO_PROP_ID = 91 3654 const CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID = 92 3655 const CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID = 93 3656 const CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID = 94 3657 const CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID = 95 3658 const CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID = 96 3659 const CERT_NO_EXPIRE_NOTIFICATION_PROP_ID = 97 3660 const CERT_AUTH_ROOT_SHA256_HASH_PROP_ID = 98 3661 const CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID = 99 3662 const CERT_HCRYPTPROV_TRANSFER_PROP_ID = 100 3663 const CERT_SMART_CARD_READER_PROP_ID = 101 3664 const CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID = 102 3665 const CERT_KEY_REPAIR_ATTEMPTED_PROP_ID = 103 3666 const CERT_DISALLOWED_FILETIME_PROP_ID = 104 3667 const CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID = 105 3668 const CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID = 106 3669 const CERT_FIRST_RESERVED_PROP_ID = 107 3670 const CERT_LAST_RESERVED_PROP_ID = &h00007fff 3671 const CERT_FIRST_USER_PROP_ID = &h8000 3672 const CERT_LAST_USER_PROP_ID = &h0000ffff 3673 #define IS_CERT_HASH_PROP_ID(X) (((CERT_SHA1_HASH_PROP_ID = (X)) orelse (CERT_MD5_HASH_PROP_ID = (X))) orelse (CERT_SIGNATURE_HASH_PROP_ID = (X))) 3674 #define IS_PUBKEY_HASH_PROP_ID(X) ((CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID = (X)) orelse (CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID = (X))) 3675 #define IS_CHAIN_HASH_PROP_ID(X) ((((CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID = (X)) orelse (CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID = (X))) orelse (CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID = (X))) orelse (CERT_SUBJECT_NAME_MD5_HASH_PROP_ID = (X))) 3676 #define IS_STRONG_SIGN_PROP_ID(X) (((CERT_SIGN_HASH_CNG_ALG_PROP_ID = (X)) orelse (CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID = (X))) orelse (CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID = (X))) 3677 #define szOID_CERT_PROP_ID_PREFIX "1.3.6.1.4.1.311.10.11." 3678 #define _szPROP_ID(PropId) #PropId 3679 #define szOID_CERT_PROP_ID(PropId) szOID_CERT_PROP_ID_PREFIX _szPROP_ID(PropId) 3680 #define __CRYPT32WTEXT(quote) wstr(quote) 3681 #define _CRYPT32WTEXT(quote) __CRYPT32WTEXT(quote) 3682 #define wszOID_CERT_PROP_ID(PropId) (_CRYPT32WTEXT(szOID_CERT_PROP_ID_PREFIX) + _CRYPT32WTEXT(_szPROP_ID(PropId))) 3683 #define szOID_CERT_KEY_IDENTIFIER_PROP_ID "1.3.6.1.4.1.311.10.11.20" 3684 #define szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.28" 3685 #define szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.29" 3686 #define szOID_CERT_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.4" 3687 #define szOID_CERT_SIGNATURE_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.15" 3688 #define szOID_DISALLOWED_HASH szOID_CERT_SIGNATURE_HASH_PROP_ID 3689 #define szOID_CERT_DISALLOWED_FILETIME_PROP_ID "1.3.6.1.4.1.311.10.11.104" 3690 const CERT_ACCESS_STATE_WRITE_PERSIST_FLAG = &h1 3691 const CERT_ACCESS_STATE_SYSTEM_STORE_FLAG = &h2 3692 const CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG = &h4 3693 const CERT_ACCESS_STATE_GP_SYSTEM_STORE_FLAG = &h8 3694 const CERT_ACCESS_STATE_SHARED_USER_FLAG = &h10 3695 #define szOID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION "1.3.6.1.4.1.311.60.3.1" 3696 #define szOID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION "1.3.6.1.4.1.311.60.3.2" 3697 #define szOID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL "1.3.6.1.4.1.311.60.3.3" 3698 3699 type _CRYPT_KEY_PROV_PARAM 3700 dwParam as DWORD 3701 pbData as UBYTE ptr 3702 cbData as DWORD 3703 dwFlags as DWORD 3704 end type 3705 3706 type CRYPT_KEY_PROV_PARAM as _CRYPT_KEY_PROV_PARAM 3707 type PCRYPT_KEY_PROV_PARAM as _CRYPT_KEY_PROV_PARAM ptr 3708 3709 type _CRYPT_KEY_PROV_INFO 3710 pwszContainerName as LPWSTR 3711 pwszProvName as LPWSTR 3712 dwProvType as DWORD 3713 dwFlags as DWORD 3714 cProvParam as DWORD 3715 rgProvParam as PCRYPT_KEY_PROV_PARAM 3716 dwKeySpec as DWORD 3717 end type 3718 3719 type CRYPT_KEY_PROV_INFO as _CRYPT_KEY_PROV_INFO 3720 type PCRYPT_KEY_PROV_INFO as _CRYPT_KEY_PROV_INFO ptr 3721 const CERT_SET_KEY_PROV_HANDLE_PROP_ID = &h1 3722 const CERT_SET_KEY_CONTEXT_PROP_ID = &h1 3723 const CERT_NCRYPT_KEY_SPEC = &hffffffff 3724 3725 type _CERT_KEY_CONTEXT 3726 cbSize as DWORD 3727 3728 union 3729 hCryptProv as HCRYPTPROV 3730 hNCryptKey as NCRYPT_KEY_HANDLE 3731 end union 3732 3733 dwKeySpec as DWORD 3734 end type 3735 3736 type CERT_KEY_CONTEXT as _CERT_KEY_CONTEXT 3737 type PCERT_KEY_CONTEXT as _CERT_KEY_CONTEXT ptr 3738 3739 type _ROOT_INFO_LUID 3740 LowPart as DWORD 3741 HighPart as LONG 3742 end type 3743 3744 type ROOT_INFO_LUID as _ROOT_INFO_LUID 3745 type PROOT_INFO_LUID as _ROOT_INFO_LUID ptr 3746 3747 type _CRYPT_SMART_CARD_ROOT_INFO 3748 rgbCardID(0 to 15) as UBYTE 3749 luid as ROOT_INFO_LUID 3750 end type 3751 3752 type CRYPT_SMART_CARD_ROOT_INFO as _CRYPT_SMART_CARD_ROOT_INFO 3753 type PCRYPT_SMART_CARD_ROOT_INFO as _CRYPT_SMART_CARD_ROOT_INFO ptr 3754 const CERT_STORE_PROV_MSG = cast(LPCSTR, 1) 3755 const CERT_STORE_PROV_MEMORY = cast(LPCSTR, 2) 3756 const CERT_STORE_PROV_FILE = cast(LPCSTR, 3) 3757 const CERT_STORE_PROV_REG = cast(LPCSTR, 4) 3758 const CERT_STORE_PROV_PKCS7 = cast(LPCSTR, 5) 3759 const CERT_STORE_PROV_SERIALIZED = cast(LPCSTR, 6) 3760 const CERT_STORE_PROV_FILENAME_A = cast(LPCSTR, 7) 3761 const CERT_STORE_PROV_FILENAME_W = cast(LPCSTR, 8) 3762 const CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W 3763 const CERT_STORE_PROV_SYSTEM_A = cast(LPCSTR, 9) 3764 const CERT_STORE_PROV_SYSTEM_W = cast(LPCSTR, 10) 3765 const CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W 3766 const CERT_STORE_PROV_COLLECTION = cast(LPCSTR, 11) 3767 const CERT_STORE_PROV_SYSTEM_REGISTRY_A = cast(LPCSTR, 12) 3768 const CERT_STORE_PROV_SYSTEM_REGISTRY_W = cast(LPCSTR, 13) 3769 const CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W 3770 const CERT_STORE_PROV_PHYSICAL_W = cast(LPCSTR, 14) 3771 const CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W 3772 const CERT_STORE_PROV_SMART_CARD_W = cast(LPCSTR, 15) 3773 const CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W 3774 const CERT_STORE_PROV_LDAP_W = cast(LPCSTR, 16) 3775 const CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W 3776 const CERT_STORE_PROV_PKCS12 = cast(LPCSTR, 17) 3777 #define sz_CERT_STORE_PROV_MEMORY "Memory" 3778 #define sz_CERT_STORE_PROV_FILENAME_W "File" 3779 #define sz_CERT_STORE_PROV_FILENAME sz_CERT_STORE_PROV_FILENAME_W 3780 #define sz_CERT_STORE_PROV_SYSTEM_W "System" 3781 #define sz_CERT_STORE_PROV_SYSTEM sz_CERT_STORE_PROV_SYSTEM_W 3782 #define sz_CERT_STORE_PROV_PKCS7 "PKCS7" 3783 #define sz_CERT_STORE_PROV_PKCS12 "PKCS12" 3784 #define sz_CERT_STORE_PROV_SERIALIZED "Serialized" 3785 #define sz_CERT_STORE_PROV_COLLECTION "Collection" 3786 #define sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W "SystemRegistry" 3787 #define sz_CERT_STORE_PROV_SYSTEM_REGISTRY sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W 3788 #define sz_CERT_STORE_PROV_PHYSICAL_W "Physical" 3789 #define sz_CERT_STORE_PROV_PHYSICAL sz_CERT_STORE_PROV_PHYSICAL_W 3790 #define sz_CERT_STORE_PROV_SMART_CARD_W "SmartCard" 3791 #define sz_CERT_STORE_PROV_SMART_CARD sz_CERT_STORE_PROV_SMART_CARD_W 3792 #define sz_CERT_STORE_PROV_LDAP_W "Ldap" 3793 #define sz_CERT_STORE_PROV_LDAP sz_CERT_STORE_PROV_LDAP_W 3794 const CERT_STORE_SIGNATURE_FLAG = &h1 3795 const CERT_STORE_TIME_VALIDITY_FLAG = &h2 3796 const CERT_STORE_REVOCATION_FLAG = &h4 3797 const CERT_STORE_NO_CRL_FLAG = &h10000 3798 const CERT_STORE_NO_ISSUER_FLAG = &h20000 3799 const CERT_STORE_BASE_CRL_FLAG = &h100 3800 const CERT_STORE_DELTA_CRL_FLAG = &h200 3801 const CERT_STORE_NO_CRYPT_RELEASE_FLAG = &h1 3802 const CERT_STORE_SET_LOCALIZED_NAME_FLAG = &h2 3803 const CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = &h4 3804 const CERT_STORE_DELETE_FLAG = &h10 3805 const CERT_STORE_UNSAFE_PHYSICAL_FLAG = &h20 3806 const CERT_STORE_SHARE_STORE_FLAG = &h40 3807 const CERT_STORE_SHARE_CONTEXT_FLAG = &h80 3808 const CERT_STORE_MANIFOLD_FLAG = &h100 3809 const CERT_STORE_ENUM_ARCHIVED_FLAG = &h200 3810 const CERT_STORE_UPDATE_KEYID_FLAG = &h400 3811 const CERT_STORE_BACKUP_RESTORE_FLAG = &h800 3812 const CERT_STORE_READONLY_FLAG = &h8000 3813 const CERT_STORE_OPEN_EXISTING_FLAG = &h4000 3814 const CERT_STORE_CREATE_NEW_FLAG = &h2000 3815 const CERT_STORE_MAXIMUM_ALLOWED_FLAG = &h1000 3816 const CERT_SYSTEM_STORE_MASK = &hffff0000 3817 const CERT_SYSTEM_STORE_RELOCATE_FLAG = &h80000000 3818 3819 type _CERT_SYSTEM_STORE_RELOCATE_PARA 3820 union 3821 hKeyBase as HKEY 3822 pvBase as any ptr 3823 end union 3824 3825 union 3826 pvSystemStore as any ptr 3827 pszSystemStore as LPCSTR 3828 pwszSystemStore as LPCWSTR 3829 end union 3830 end type 3831 3832 type CERT_SYSTEM_STORE_RELOCATE_PARA as _CERT_SYSTEM_STORE_RELOCATE_PARA 3833 type PCERT_SYSTEM_STORE_RELOCATE_PARA as _CERT_SYSTEM_STORE_RELOCATE_PARA ptr 3834 const CERT_SYSTEM_STORE_DEFER_READ_FLAG = &h20000000 3835 const CERT_SYSTEM_STORE_UNPROTECTED_FLAG = &h40000000 3836 const CERT_SYSTEM_STORE_LOCATION_MASK = &h00ff0000 3837 const CERT_SYSTEM_STORE_LOCATION_SHIFT = 16 3838 const CERT_SYSTEM_STORE_CURRENT_USER_ID = 1 3839 const CERT_SYSTEM_STORE_LOCAL_MACHINE_ID = 2 3840 const CERT_SYSTEM_STORE_CURRENT_SERVICE_ID = 4 3841 const CERT_SYSTEM_STORE_SERVICES_ID = 5 3842 const CERT_SYSTEM_STORE_USERS_ID = 6 3843 const CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID = 7 3844 const CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID = 8 3845 const CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID = 9 3846 const CERT_SYSTEM_STORE_CURRENT_USER = CERT_SYSTEM_STORE_CURRENT_USER_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3847 const CERT_SYSTEM_STORE_LOCAL_MACHINE = CERT_SYSTEM_STORE_LOCAL_MACHINE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3848 const CERT_SYSTEM_STORE_CURRENT_SERVICE = CERT_SYSTEM_STORE_CURRENT_SERVICE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3849 const CERT_SYSTEM_STORE_SERVICES = CERT_SYSTEM_STORE_SERVICES_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3850 const CERT_SYSTEM_STORE_USERS = CERT_SYSTEM_STORE_USERS_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3851 const CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3852 const CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3853 const CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID shl CERT_SYSTEM_STORE_LOCATION_SHIFT 3854 #define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH wstr(!"Software\\Policies\\Microsoft\\SystemCertificates") 3855 #define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH wstr(!"\\EFS") 3856 #define CERT_EFSBLOB_VALUE_NAME wstr("EFSBlob") 3857 #define CERT_PROT_ROOT_FLAGS_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH wstr(!"\\Root\\ProtectedRoots") 3858 #define CERT_PROT_ROOT_FLAGS_VALUE_NAME wstr("Flags") 3859 const CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG = &h1 3860 const CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG = &h2 3861 const CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG = &h4 3862 const CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG = &h8 3863 const CERT_PROT_ROOT_ONLY_LM_GPT_FLAG = &h8 3864 const CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG = &h10 3865 const CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG = &h20 3866 const CERT_PROT_ROOT_DISABLE_PEER_TRUST = &h10000 3867 #define CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME wstr("PeerUsages") 3868 #define CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME_A "PeerUsages" 3869 #define CERT_PROT_ROOT_PEER_USAGES_DEFAULT_A szOID_PKIX_KP_CLIENT_AUTH !"\0" szOID_PKIX_KP_EMAIL_PROTECTION !"\0" szOID_KP_EFS !"\0" 3870 #define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH wstr(!"\\TrustedPublisher\\Safer") 3871 #define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH wstr(!"Software\\Microsoft\\SystemCertificates") 3872 #define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH wstr(!"\\TrustedPublisher\\Safer") 3873 #define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME wstr("AuthenticodeFlags") 3874 const CERT_TRUST_PUB_ALLOW_TRUST_MASK = &h3 3875 const CERT_TRUST_PUB_ALLOW_END_USER_TRUST = &h0 3876 const CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST = &h1 3877 const CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST = &h2 3878 const CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG = &h100 3879 const CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG = &h200 3880 #define CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH wstr(!"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents") 3881 #define CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME wstr("RootAutoUpdate") 3882 #define CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH wstr(!"\\AuthRoot") 3883 #define CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME wstr("DisableRootAutoUpdate") 3884 #define CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH wstr(!"\\AuthRoot\\AutoUpdate") 3885 #define CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME wstr("RootDirUrl") 3886 #define CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH 3887 #define CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME 3888 #define CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME wstr("SyncDeltaTime") 3889 #define CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME wstr("Flags") 3890 const CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG = &h1 3891 const CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_PARTIAL_CHAIN_LOGGING_FLAG = &h2 3892 const CERT_AUTO_UPDATE_DISABLE_RANDOM_QUERY_STRING_FLAG = &h4 3893 #define CERT_AUTH_ROOT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME wstr("LastSyncTime") 3894 #define CERT_AUTH_ROOT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME wstr("EncodedCtl") 3895 #define CERT_AUTH_ROOT_CTL_FILENAME wstr("authroot.stl") 3896 #define CERT_AUTH_ROOT_CTL_FILENAME_A "authroot.stl" 3897 #define CERT_AUTH_ROOT_CAB_FILENAME wstr("authrootstl.cab") 3898 #define CERT_AUTH_ROOT_SEQ_FILENAME wstr("authrootseq.txt") 3899 #define CERT_AUTH_ROOT_CERT_EXT wstr(".crt") 3900 #define CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME wstr("DisallowedCertSyncDeltaTime") 3901 #define CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME wstr("DisallowedCertLastSyncTime") 3902 #define CERT_DISALLOWED_CERT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME wstr("DisallowedCertEncodedCtl") 3903 #define CERT_DISALLOWED_CERT_CTL_FILENAME wstr("disallowedcert.stl") 3904 #define CERT_DISALLOWED_CERT_CTL_FILENAME_A "disallowedcert.stl" 3905 #define CERT_DISALLOWED_CERT_CAB_FILENAME wstr("disallowedcertstl.cab") 3906 #define CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER wstr("DisallowedCert_AutoUpdate_1") 3907 const CERT_REGISTRY_STORE_REMOTE_FLAG = &h10000 3908 const CERT_REGISTRY_STORE_SERIALIZED_FLAG = &h20000 3909 const CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = &h80000000 3910 const CERT_REGISTRY_STORE_LM_GPT_FLAG = &h1000000 3911 3912 type _CERT_REGISTRY_STORE_CLIENT_GPT_PARA 3913 hKeyBase as HKEY 3914 pwszRegPath as LPWSTR 3915 end type 3916 3917 type CERT_REGISTRY_STORE_CLIENT_GPT_PARA as _CERT_REGISTRY_STORE_CLIENT_GPT_PARA 3918 type PCERT_REGISTRY_STORE_CLIENT_GPT_PARA as _CERT_REGISTRY_STORE_CLIENT_GPT_PARA ptr 3919 const CERT_REGISTRY_STORE_ROAMING_FLAG = &h40000 3920 3921 type _CERT_REGISTRY_STORE_ROAMING_PARA 3922 hKey as HKEY 3923 pwszStoreDirectory as LPWSTR 3924 end type 3925 3926 type CERT_REGISTRY_STORE_ROAMING_PARA as _CERT_REGISTRY_STORE_ROAMING_PARA 3927 type PCERT_REGISTRY_STORE_ROAMING_PARA as _CERT_REGISTRY_STORE_ROAMING_PARA ptr 3928 const CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = &h80000 3929 const CERT_REGISTRY_STORE_EXTERNAL_FLAG = &h100000 3930 #define CERT_IE_DIRTY_FLAGS_REGPATH wstr(!"Software\\Microsoft\\Cryptography\\IEDirtyFlags") 3931 const CERT_FILE_STORE_COMMIT_ENABLE_FLAG = &h10000 3932 const CERT_LDAP_STORE_SIGN_FLAG = &h10000 3933 const CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = &h20000 3934 const CERT_LDAP_STORE_OPENED_FLAG = &h40000 3935 3936 type _CERT_LDAP_STORE_OPENED_PARA 3937 pvLdapSessionHandle as any ptr 3938 pwszLdapUrl as LPCWSTR 3939 end type 3940 3941 type CERT_LDAP_STORE_OPENED_PARA as _CERT_LDAP_STORE_OPENED_PARA 3942 type PCERT_LDAP_STORE_OPENED_PARA as _CERT_LDAP_STORE_OPENED_PARA ptr 3943 const CERT_LDAP_STORE_UNBIND_FLAG = &h80000 3944 declare function CertOpenStore(byval lpszStoreProvider as LPCSTR, byval dwEncodingType as DWORD, byval hCryptProv as HCRYPTPROV_LEGACY, byval dwFlags as DWORD, byval pvPara as const any ptr) as HCERTSTORE 3945 type HCERTSTOREPROV as any ptr 3946 #define CRYPT_OID_OPEN_STORE_PROV_FUNC "CertDllOpenStoreProv" 3947 3948 type _CERT_STORE_PROV_INFO 3949 cbSize as DWORD 3950 cStoreProvFunc as DWORD 3951 rgpvStoreProvFunc as any ptr ptr 3952 hStoreProv as HCERTSTOREPROV 3953 dwStoreProvFlags as DWORD 3954 hStoreProvFuncAddr2 as HCRYPTOIDFUNCADDR 3955 end type 3956 3957 type CERT_STORE_PROV_INFO as _CERT_STORE_PROV_INFO 3958 type PCERT_STORE_PROV_INFO as _CERT_STORE_PROV_INFO ptr 3959 type PFN_CERT_DLL_OPEN_STORE_PROV_FUNC as function(byval lpszStoreProvider as LPCSTR, byval dwEncodingType as DWORD, byval hCryptProv as HCRYPTPROV_LEGACY, byval dwFlags as DWORD, byval pvPara as const any ptr, byval hCertStore as HCERTSTORE, byval pStoreProvInfo as PCERT_STORE_PROV_INFO) as WINBOOL 3960 3961 const CERT_STORE_PROV_EXTERNAL_FLAG = &h1 3962 const CERT_STORE_PROV_DELETED_FLAG = &h2 3963 const CERT_STORE_PROV_NO_PERSIST_FLAG = &h4 3964 const CERT_STORE_PROV_SYSTEM_STORE_FLAG = &h8 3965 const CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG = &h10 3966 const CERT_STORE_PROV_GP_SYSTEM_STORE_FLAG = &h20 3967 const CERT_STORE_PROV_SHARED_USER_FLAG = &h40 3968 const CERT_STORE_PROV_CLOSE_FUNC = 0 3969 const CERT_STORE_PROV_READ_CERT_FUNC = 1 3970 const CERT_STORE_PROV_WRITE_CERT_FUNC = 2 3971 const CERT_STORE_PROV_DELETE_CERT_FUNC = 3 3972 const CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC = 4 3973 const CERT_STORE_PROV_READ_CRL_FUNC = 5 3974 const CERT_STORE_PROV_WRITE_CRL_FUNC = 6 3975 const CERT_STORE_PROV_DELETE_CRL_FUNC = 7 3976 const CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC = 8 3977 const CERT_STORE_PROV_READ_CTL_FUNC = 9 3978 const CERT_STORE_PROV_WRITE_CTL_FUNC = 10 3979 const CERT_STORE_PROV_DELETE_CTL_FUNC = 11 3980 const CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC = 12 3981 const CERT_STORE_PROV_CONTROL_FUNC = 13 3982 const CERT_STORE_PROV_FIND_CERT_FUNC = 14 3983 const CERT_STORE_PROV_FREE_FIND_CERT_FUNC = 15 3984 const CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC = 16 3985 const CERT_STORE_PROV_FIND_CRL_FUNC = 17 3986 const CERT_STORE_PROV_FREE_FIND_CRL_FUNC = 18 3987 const CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC = 19 3988 const CERT_STORE_PROV_FIND_CTL_FUNC = 20 3989 const CERT_STORE_PROV_FREE_FIND_CTL_FUNC = 21 3990 const CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC = 22 3991 const CERT_STORE_PROV_WRITE_ADD_FLAG = &h1 3992 3993 type PFN_CERT_STORE_PROV_CLOSE as sub(byval hStoreProv as HCERTSTOREPROV, byval dwFlags as DWORD) 3994 type PFN_CERT_STORE_PROV_READ_CERT as function(byval hStoreProv as HCERTSTOREPROV, byval pStoreCertContext as PCCERT_CONTEXT, byval dwFlags as DWORD, byval ppProvCertContext as PCCERT_CONTEXT ptr) as WINBOOL 3995 type PFN_CERT_STORE_PROV_WRITE_CERT as function(byval hStoreProv as HCERTSTOREPROV, byval pCertContext as PCCERT_CONTEXT, byval dwFlags as DWORD) as WINBOOL 3996 type PFN_CERT_STORE_PROV_DELETE_CERT as function(byval hStoreProv as HCERTSTOREPROV, byval pCertContext as PCCERT_CONTEXT, byval dwFlags as DWORD) as WINBOOL 3997 type PFN_CERT_STORE_PROV_SET_CERT_PROPERTY as function(byval hStoreProv as HCERTSTOREPROV, byval pCertContext as PCCERT_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as const any ptr) as WINBOOL 3998 type PFN_CERT_STORE_PROV_READ_CRL as function(byval hStoreProv as HCERTSTOREPROV, byval pStoreCrlContext as PCCRL_CONTEXT, byval dwFlags as DWORD, byval ppProvCrlContext as PCCRL_CONTEXT ptr) as WINBOOL 3999 type PFN_CERT_STORE_PROV_WRITE_CRL as function(byval hStoreProv as HCERTSTOREPROV, byval pCrlContext as PCCRL_CONTEXT, byval dwFlags as DWORD) as WINBOOL 4000 type PFN_CERT_STORE_PROV_DELETE_CRL as function(byval hStoreProv as HCERTSTOREPROV, byval pCrlContext as PCCRL_CONTEXT, byval dwFlags as DWORD) as WINBOOL 4001 type PFN_CERT_STORE_PROV_SET_CRL_PROPERTY as function(byval hStoreProv as HCERTSTOREPROV, byval pCrlContext as PCCRL_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as const any ptr) as WINBOOL 4002 type PFN_CERT_STORE_PROV_READ_CTL as function(byval hStoreProv as HCERTSTOREPROV, byval pStoreCtlContext as PCCTL_CONTEXT, byval dwFlags as DWORD, byval ppProvCtlContext as PCCTL_CONTEXT ptr) as WINBOOL 4003 type PFN_CERT_STORE_PROV_WRITE_CTL as function(byval hStoreProv as HCERTSTOREPROV, byval pCtlContext as PCCTL_CONTEXT, byval dwFlags as DWORD) as WINBOOL 4004 type PFN_CERT_STORE_PROV_DELETE_CTL as function(byval hStoreProv as HCERTSTOREPROV, byval pCtlContext as PCCTL_CONTEXT, byval dwFlags as DWORD) as WINBOOL 4005 type PFN_CERT_STORE_PROV_SET_CTL_PROPERTY as function(byval hStoreProv as HCERTSTOREPROV, byval pCtlContext as PCCTL_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as const any ptr) as WINBOOL 4006 type PFN_CERT_STORE_PROV_CONTROL as function(byval hStoreProv as HCERTSTOREPROV, byval dwFlags as DWORD, byval dwCtrlType as DWORD, byval pvCtrlPara as const any ptr) as WINBOOL 4007 4008 type _CERT_STORE_PROV_FIND_INFO 4009 cbSize as DWORD 4010 dwMsgAndCertEncodingType as DWORD 4011 dwFindFlags as DWORD 4012 dwFindType as DWORD 4013 pvFindPara as const any ptr 4014 end type 4015 4016 type CERT_STORE_PROV_FIND_INFO as _CERT_STORE_PROV_FIND_INFO 4017 type PCERT_STORE_PROV_FIND_INFO as _CERT_STORE_PROV_FIND_INFO ptr 4018 type CCERT_STORE_PROV_FIND_INFO as const CERT_STORE_PROV_FIND_INFO 4019 type PCCERT_STORE_PROV_FIND_INFO as const CERT_STORE_PROV_FIND_INFO ptr 4020 type PFN_CERT_STORE_PROV_FIND_CERT as function(byval hStoreProv as HCERTSTOREPROV, byval pFindInfo as PCCERT_STORE_PROV_FIND_INFO, byval pPrevCertContext as PCCERT_CONTEXT, byval dwFlags as DWORD, byval ppvStoreProvFindInfo as any ptr ptr, byval ppProvCertContext as PCCERT_CONTEXT ptr) as WINBOOL 4021 type PFN_CERT_STORE_PROV_FREE_FIND_CERT as function(byval hStoreProv as HCERTSTOREPROV, byval pCertContext as PCCERT_CONTEXT, byval pvStoreProvFindInfo as any ptr, byval dwFlags as DWORD) as WINBOOL 4022 type PFN_CERT_STORE_PROV_GET_CERT_PROPERTY as function(byval hStoreProv as HCERTSTOREPROV, byval pCertContext as PCCERT_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 4023 type PFN_CERT_STORE_PROV_FIND_CRL as function(byval hStoreProv as HCERTSTOREPROV, byval pFindInfo as PCCERT_STORE_PROV_FIND_INFO, byval pPrevCrlContext as PCCRL_CONTEXT, byval dwFlags as DWORD, byval ppvStoreProvFindInfo as any ptr ptr, byval ppProvCrlContext as PCCRL_CONTEXT ptr) as WINBOOL 4024 type PFN_CERT_STORE_PROV_FREE_FIND_CRL as function(byval hStoreProv as HCERTSTOREPROV, byval pCrlContext as PCCRL_CONTEXT, byval pvStoreProvFindInfo as any ptr, byval dwFlags as DWORD) as WINBOOL 4025 type PFN_CERT_STORE_PROV_GET_CRL_PROPERTY as function(byval hStoreProv as HCERTSTOREPROV, byval pCrlContext as PCCRL_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 4026 type PFN_CERT_STORE_PROV_FIND_CTL as function(byval hStoreProv as HCERTSTOREPROV, byval pFindInfo as PCCERT_STORE_PROV_FIND_INFO, byval pPrevCtlContext as PCCTL_CONTEXT, byval dwFlags as DWORD, byval ppvStoreProvFindInfo as any ptr ptr, byval ppProvCtlContext as PCCTL_CONTEXT ptr) as WINBOOL 4027 type PFN_CERT_STORE_PROV_FREE_FIND_CTL as function(byval hStoreProv as HCERTSTOREPROV, byval pCtlContext as PCCTL_CONTEXT, byval pvStoreProvFindInfo as any ptr, byval dwFlags as DWORD) as WINBOOL 4028 type PFN_CERT_STORE_PROV_GET_CTL_PROPERTY as function(byval hStoreProv as HCERTSTOREPROV, byval pCtlContext as PCCTL_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 4029 declare function CertDuplicateStore(byval hCertStore as HCERTSTORE) as HCERTSTORE 4030 4031 const CERT_STORE_SAVE_AS_STORE = 1 4032 const CERT_STORE_SAVE_AS_PKCS7 = 2 4033 const CERT_STORE_SAVE_AS_PKCS12 = 3 4034 const CERT_STORE_SAVE_TO_FILE = 1 4035 const CERT_STORE_SAVE_TO_MEMORY = 2 4036 const CERT_STORE_SAVE_TO_FILENAME_A = 3 4037 const CERT_STORE_SAVE_TO_FILENAME_W = 4 4038 const CERT_STORE_SAVE_TO_FILENAME = CERT_STORE_SAVE_TO_FILENAME_W 4039 const CERT_CLOSE_STORE_FORCE_FLAG = &h1 4040 const CERT_CLOSE_STORE_CHECK_FLAG = &h2 4041 4042 declare function CertSaveStore(byval hCertStore as HCERTSTORE, byval dwEncodingType as DWORD, byval dwSaveAs as DWORD, byval dwSaveTo as DWORD, byval pvSaveToPara as any ptr, byval dwFlags as DWORD) as WINBOOL 4043 declare function CertCloseStore(byval hCertStore as HCERTSTORE, byval dwFlags as DWORD) as WINBOOL 4044 declare function CertGetSubjectCertificateFromStore(byval hCertStore as HCERTSTORE, byval dwCertEncodingType as DWORD, byval pCertId as PCERT_INFO) as PCCERT_CONTEXT 4045 declare function CertEnumCertificatesInStore(byval hCertStore as HCERTSTORE, byval pPrevCertContext as PCCERT_CONTEXT) as PCCERT_CONTEXT 4046 declare function CertFindCertificateInStore(byval hCertStore as HCERTSTORE, byval dwCertEncodingType as DWORD, byval dwFindFlags as DWORD, byval dwFindType as DWORD, byval pvFindPara as const any ptr, byval pPrevCertContext as PCCERT_CONTEXT) as PCCERT_CONTEXT 4047 4048 const CERT_COMPARE_MASK = &hffff 4049 const CERT_COMPARE_SHIFT = 16 4050 const CERT_COMPARE_ANY = 0 4051 const CERT_COMPARE_SHA1_HASH = 1 4052 const CERT_COMPARE_NAME = 2 4053 const CERT_COMPARE_ATTR = 3 4054 const CERT_COMPARE_MD5_HASH = 4 4055 const CERT_COMPARE_PROPERTY = 5 4056 const CERT_COMPARE_PUBLIC_KEY = 6 4057 const CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH 4058 const CERT_COMPARE_NAME_STR_A = 7 4059 const CERT_COMPARE_NAME_STR_W = 8 4060 const CERT_COMPARE_KEY_SPEC = 9 4061 const CERT_COMPARE_ENHKEY_USAGE = 10 4062 const CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE 4063 const CERT_COMPARE_SUBJECT_CERT = 11 4064 const CERT_COMPARE_ISSUER_OF = 12 4065 const CERT_COMPARE_EXISTING = 13 4066 const CERT_COMPARE_SIGNATURE_HASH = 14 4067 const CERT_COMPARE_KEY_IDENTIFIER = 15 4068 const CERT_COMPARE_CERT_ID = 16 4069 const CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17 4070 const CERT_COMPARE_PUBKEY_MD5_HASH = 18 4071 const CERT_COMPARE_SUBJECT_INFO_ACCESS = 19 4072 const CERT_COMPARE_HASH_STR = 20 4073 const CERT_COMPARE_HAS_PRIVATE_KEY = 21 4074 const CERT_FIND_ANY = CERT_COMPARE_ANY shl CERT_COMPARE_SHIFT 4075 const CERT_FIND_SHA1_HASH = CERT_COMPARE_SHA1_HASH shl CERT_COMPARE_SHIFT 4076 const CERT_FIND_MD5_HASH = CERT_COMPARE_MD5_HASH shl CERT_COMPARE_SHIFT 4077 const CERT_FIND_SIGNATURE_HASH = CERT_COMPARE_SIGNATURE_HASH shl CERT_COMPARE_SHIFT 4078 const CERT_FIND_KEY_IDENTIFIER = CERT_COMPARE_KEY_IDENTIFIER shl CERT_COMPARE_SHIFT 4079 const CERT_FIND_HASH = CERT_FIND_SHA1_HASH 4080 const CERT_FIND_PROPERTY = CERT_COMPARE_PROPERTY shl CERT_COMPARE_SHIFT 4081 const CERT_FIND_PUBLIC_KEY = CERT_COMPARE_PUBLIC_KEY shl CERT_COMPARE_SHIFT 4082 const CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT) or CERT_INFO_SUBJECT_FLAG 4083 const CERT_FIND_SUBJECT_ATTR = (CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT) or CERT_INFO_SUBJECT_FLAG 4084 const CERT_FIND_ISSUER_NAME = (CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT) or CERT_INFO_ISSUER_FLAG 4085 const CERT_FIND_ISSUER_ATTR = (CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT) or CERT_INFO_ISSUER_FLAG 4086 const CERT_FIND_SUBJECT_STR_A = (CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT) or CERT_INFO_SUBJECT_FLAG 4087 const CERT_FIND_SUBJECT_STR_W = (CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT) or CERT_INFO_SUBJECT_FLAG 4088 const CERT_FIND_SUBJECT_STR = CERT_FIND_SUBJECT_STR_W 4089 const CERT_FIND_ISSUER_STR_A = (CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT) or CERT_INFO_ISSUER_FLAG 4090 const CERT_FIND_ISSUER_STR_W = (CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT) or CERT_INFO_ISSUER_FLAG 4091 const CERT_FIND_ISSUER_STR = CERT_FIND_ISSUER_STR_W 4092 const CERT_FIND_KEY_SPEC = CERT_COMPARE_KEY_SPEC shl CERT_COMPARE_SHIFT 4093 const CERT_FIND_ENHKEY_USAGE = CERT_COMPARE_ENHKEY_USAGE shl CERT_COMPARE_SHIFT 4094 const CERT_FIND_CTL_USAGE = CERT_FIND_ENHKEY_USAGE 4095 const CERT_FIND_SUBJECT_CERT = CERT_COMPARE_SUBJECT_CERT shl CERT_COMPARE_SHIFT 4096 const CERT_FIND_ISSUER_OF = CERT_COMPARE_ISSUER_OF shl CERT_COMPARE_SHIFT 4097 const CERT_FIND_EXISTING = CERT_COMPARE_EXISTING shl CERT_COMPARE_SHIFT 4098 const CERT_FIND_CERT_ID = CERT_COMPARE_CERT_ID shl CERT_COMPARE_SHIFT 4099 const CERT_FIND_CROSS_CERT_DIST_POINTS = CERT_COMPARE_CROSS_CERT_DIST_POINTS shl CERT_COMPARE_SHIFT 4100 const CERT_FIND_PUBKEY_MD5_HASH = CERT_COMPARE_PUBKEY_MD5_HASH shl CERT_COMPARE_SHIFT 4101 const CERT_FIND_SUBJECT_INFO_ACCESS = CERT_COMPARE_SUBJECT_INFO_ACCESS shl CERT_COMPARE_SHIFT 4102 const CERT_FIND_HASH_STR = CERT_COMPARE_HASH_STR shl CERT_COMPARE_SHIFT 4103 const CERT_FIND_HAS_PRIVATE_KEY = CERT_COMPARE_HAS_PRIVATE_KEY shl CERT_COMPARE_SHIFT 4104 const CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = &h1 4105 const CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = &h2 4106 const CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = &h4 4107 const CERT_FIND_NO_ENHKEY_USAGE_FLAG = &h8 4108 const CERT_FIND_OR_ENHKEY_USAGE_FLAG = &h10 4109 const CERT_FIND_VALID_ENHKEY_USAGE_FLAG = &h20 4110 const CERT_FIND_OPTIONAL_CTL_USAGE_FLAG = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 4111 const CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 4112 const CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 4113 const CERT_FIND_NO_CTL_USAGE_FLAG = CERT_FIND_NO_ENHKEY_USAGE_FLAG 4114 const CERT_FIND_OR_CTL_USAGE_FLAG = CERT_FIND_OR_ENHKEY_USAGE_FLAG 4115 const CERT_FIND_VALID_CTL_USAGE_FLAG = CERT_FIND_VALID_ENHKEY_USAGE_FLAG 4116 4117 declare function CertGetIssuerCertificateFromStore(byval hCertStore as HCERTSTORE, byval pSubjectContext as PCCERT_CONTEXT, byval pPrevIssuerContext as PCCERT_CONTEXT, byval pdwFlags as DWORD ptr) as PCCERT_CONTEXT 4118 declare function CertVerifySubjectCertificateContext(byval pSubject as PCCERT_CONTEXT, byval pIssuer as PCCERT_CONTEXT, byval pdwFlags as DWORD ptr) as WINBOOL 4119 declare function CertDuplicateCertificateContext(byval pCertContext as PCCERT_CONTEXT) as PCCERT_CONTEXT 4120 declare function CertCreateCertificateContext(byval dwCertEncodingType as DWORD, byval pbCertEncoded as const UBYTE ptr, byval cbCertEncoded as DWORD) as PCCERT_CONTEXT 4121 declare function CertFreeCertificateContext(byval pCertContext as PCCERT_CONTEXT) as WINBOOL 4122 declare function CertSetCertificateContextProperty(byval pCertContext as PCCERT_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as const any ptr) as WINBOOL 4123 4124 type _CRL_FIND_ISSUED_FOR_PARA 4125 pSubjectCert as PCCERT_CONTEXT 4126 pIssuerCert as PCCERT_CONTEXT 4127 end type 4128 4129 type CRL_FIND_ISSUED_FOR_PARA as _CRL_FIND_ISSUED_FOR_PARA 4130 type PCRL_FIND_ISSUED_FOR_PARA as _CRL_FIND_ISSUED_FOR_PARA ptr 4131 4132 type _CTL_ANY_SUBJECT_INFO 4133 SubjectAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 4134 SubjectIdentifier as CRYPT_DATA_BLOB 4135 end type 4136 4137 type CTL_ANY_SUBJECT_INFO as _CTL_ANY_SUBJECT_INFO 4138 type PCTL_ANY_SUBJECT_INFO as _CTL_ANY_SUBJECT_INFO ptr 4139 const CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG = &h40000000 4140 const CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG = &h80000000 4141 const CTL_ENTRY_FROM_PROP_CHAIN_FLAG = &h1 4142 const CRL_FIND_ANY = 0 4143 const CRL_FIND_ISSUED_BY = 1 4144 const CRL_FIND_EXISTING = 2 4145 const CRL_FIND_ISSUED_FOR = 3 4146 const CRL_FIND_ISSUED_BY_AKI_FLAG = &h1 4147 const CRL_FIND_ISSUED_BY_SIGNATURE_FLAG = &h2 4148 const CRL_FIND_ISSUED_BY_DELTA_FLAG = &h4 4149 const CRL_FIND_ISSUED_BY_BASE_FLAG = &h8 4150 const CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG = &h10 4151 const CERT_STORE_ADD_NEW = 1 4152 const CERT_STORE_ADD_USE_EXISTING = 2 4153 const CERT_STORE_ADD_REPLACE_EXISTING = 3 4154 const CERT_STORE_ADD_ALWAYS = 4 4155 const CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 4156 const CERT_STORE_ADD_NEWER = 6 4157 const CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 4158 const CERT_STORE_CERTIFICATE_CONTEXT = 1 4159 const CERT_STORE_CRL_CONTEXT = 2 4160 const CERT_STORE_CTL_CONTEXT = 3 4161 const CERT_STORE_ALL_CONTEXT_FLAG = culng(not 0u) 4162 const CERT_STORE_CERTIFICATE_CONTEXT_FLAG = 1 shl CERT_STORE_CERTIFICATE_CONTEXT 4163 const CERT_STORE_CRL_CONTEXT_FLAG = 1 shl CERT_STORE_CRL_CONTEXT 4164 const CERT_STORE_CTL_CONTEXT_FLAG = 1 shl CERT_STORE_CTL_CONTEXT 4165 const CTL_ANY_SUBJECT_TYPE = 1 4166 const CTL_CERT_SUBJECT_TYPE = 2 4167 4168 declare function CertGetCertificateContextProperty(byval pCertContext as PCCERT_CONTEXT, byval dwPropId as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 4169 declare function CertEnumCertificateContextProperties(byval pCertContext as PCCERT_CONTEXT, byval dwPropId as DWORD) as DWORD 4170 declare function CertCreateCTLEntryFromCertificateContextProperties(byval pCertContext as PCCERT_CONTEXT, byval cOptAttr as DWORD, byval rgOptAttr as PCRYPT_ATTRIBUTE, byval dwFlags as DWORD, byval pvReserved as any ptr, byval pCtlEntry as PCTL_ENTRY, byval pcbCtlEntry as DWORD ptr) as WINBOOL 4171 declare function CertSetCertificateContextPropertiesFromCTLEntry(byval pCertContext as PCCERT_CONTEXT, byval pCtlEntry as PCTL_ENTRY, byval dwFlags as DWORD) as WINBOOL 4172 declare function CertGetCRLFromStore(byval hCertStore as HCERTSTORE, byval pIssuerContext as PCCERT_CONTEXT, byval pPrevCrlContext as PCCRL_CONTEXT, byval pdwFlags as DWORD ptr) as PCCRL_CONTEXT 4173 declare function CertEnumCRLsInStore(byval hCertStore as HCERTSTORE, byval pPrevCrlContext as PCCRL_CONTEXT) as PCCRL_CONTEXT 4174 declare function CertFindCRLInStore(byval hCertStore as HCERTSTORE, byval dwCertEncodingType as DWORD, byval dwFindFlags as DWORD, byval dwFindType as DWORD, byval pvFindPara as const any ptr, byval pPrevCrlContext as PCCRL_CONTEXT) as PCCRL_CONTEXT 4175 declare function CertDuplicateCRLContext(byval pCrlContext as PCCRL_CONTEXT) as PCCRL_CONTEXT 4176 declare function CertCreateCRLContext(byval dwCertEncodingType as DWORD, byval pbCrlEncoded as const UBYTE ptr, byval cbCrlEncoded as DWORD) as PCCRL_CONTEXT 4177 declare function CertFreeCRLContext(byval pCrlContext as PCCRL_CONTEXT) as WINBOOL 4178 declare function CertSetCRLContextProperty(byval pCrlContext as PCCRL_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as const any ptr) as WINBOOL 4179 declare function CertGetCRLContextProperty(byval pCrlContext as PCCRL_CONTEXT, byval dwPropId as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 4180 declare function CertEnumCRLContextProperties(byval pCrlContext as PCCRL_CONTEXT, byval dwPropId as DWORD) as DWORD 4181 declare function CertFindCertificateInCRL(byval pCert as PCCERT_CONTEXT, byval pCrlContext as PCCRL_CONTEXT, byval dwFlags as DWORD, byval pvReserved as any ptr, byval ppCrlEntry as PCRL_ENTRY ptr) as WINBOOL 4182 declare function CertIsValidCRLForCertificate(byval pCert as PCCERT_CONTEXT, byval pCrl as PCCRL_CONTEXT, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 4183 declare function CertAddEncodedCertificateToStore(byval hCertStore as HCERTSTORE, byval dwCertEncodingType as DWORD, byval pbCertEncoded as const UBYTE ptr, byval cbCertEncoded as DWORD, byval dwAddDisposition as DWORD, byval ppCertContext as PCCERT_CONTEXT ptr) as WINBOOL 4184 declare function CertAddCertificateContextToStore(byval hCertStore as HCERTSTORE, byval pCertContext as PCCERT_CONTEXT, byval dwAddDisposition as DWORD, byval ppStoreContext as PCCERT_CONTEXT ptr) as WINBOOL 4185 declare function CertAddSerializedElementToStore(byval hCertStore as HCERTSTORE, byval pbElement as const UBYTE ptr, byval cbElement as DWORD, byval dwAddDisposition as DWORD, byval dwFlags as DWORD, byval dwContextTypeFlags as DWORD, byval pdwContextType as DWORD ptr, byval ppvContext as const any ptr ptr) as WINBOOL 4186 declare function CertDeleteCertificateFromStore(byval pCertContext as PCCERT_CONTEXT) as WINBOOL 4187 declare function CertAddEncodedCRLToStore(byval hCertStore as HCERTSTORE, byval dwCertEncodingType as DWORD, byval pbCrlEncoded as const UBYTE ptr, byval cbCrlEncoded as DWORD, byval dwAddDisposition as DWORD, byval ppCrlContext as PCCRL_CONTEXT ptr) as WINBOOL 4188 declare function CertAddCRLContextToStore(byval hCertStore as HCERTSTORE, byval pCrlContext as PCCRL_CONTEXT, byval dwAddDisposition as DWORD, byval ppStoreContext as PCCRL_CONTEXT ptr) as WINBOOL 4189 declare function CertDeleteCRLFromStore(byval pCrlContext as PCCRL_CONTEXT) as WINBOOL 4190 declare function CertSerializeCertificateStoreElement(byval pCertContext as PCCERT_CONTEXT, byval dwFlags as DWORD, byval pbElement as UBYTE ptr, byval pcbElement as DWORD ptr) as WINBOOL 4191 declare function CertSerializeCRLStoreElement(byval pCrlContext as PCCRL_CONTEXT, byval dwFlags as DWORD, byval pbElement as UBYTE ptr, byval pcbElement as DWORD ptr) as WINBOOL 4192 declare function CertDuplicateCTLContext(byval pCtlContext as PCCTL_CONTEXT) as PCCTL_CONTEXT 4193 declare function CertCreateCTLContext(byval dwMsgAndCertEncodingType as DWORD, byval pbCtlEncoded as const UBYTE ptr, byval cbCtlEncoded as DWORD) as PCCTL_CONTEXT 4194 declare function CertFreeCTLContext(byval pCtlContext as PCCTL_CONTEXT) as WINBOOL 4195 declare function CertSetCTLContextProperty(byval pCtlContext as PCCTL_CONTEXT, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as const any ptr) as WINBOOL 4196 declare function CertGetCTLContextProperty(byval pCtlContext as PCCTL_CONTEXT, byval dwPropId as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 4197 declare function CertEnumCTLContextProperties(byval pCtlContext as PCCTL_CONTEXT, byval dwPropId as DWORD) as DWORD 4198 declare function CertEnumCTLsInStore(byval hCertStore as HCERTSTORE, byval pPrevCtlContext as PCCTL_CONTEXT) as PCCTL_CONTEXT 4199 declare function CertFindSubjectInCTL(byval dwEncodingType as DWORD, byval dwSubjectType as DWORD, byval pvSubject as any ptr, byval pCtlContext as PCCTL_CONTEXT, byval dwFlags as DWORD) as PCTL_ENTRY 4200 declare function CertFindCTLInStore(byval hCertStore as HCERTSTORE, byval dwMsgAndCertEncodingType as DWORD, byval dwFindFlags as DWORD, byval dwFindType as DWORD, byval pvFindPara as const any ptr, byval pPrevCtlContext as PCCTL_CONTEXT) as PCCTL_CONTEXT 4201 4202 const CTL_FIND_ANY = 0 4203 const CTL_FIND_SHA1_HASH = 1 4204 const CTL_FIND_MD5_HASH = 2 4205 const CTL_FIND_USAGE = 3 4206 const CTL_FIND_SUBJECT = 4 4207 const CTL_FIND_EXISTING = 5 4208 const CTL_FIND_SAME_USAGE_FLAG = &h1 4209 const CTL_FIND_NO_LIST_ID_CBDATA = &hffffffff 4210 const CTL_FIND_NO_SIGNER_PTR = cast(PCERT_INFO, -1) 4211 const CERT_STORE_CTRL_RESYNC = 1 4212 const CERT_STORE_CTRL_NOTIFY_CHANGE = 2 4213 const CERT_STORE_CTRL_COMMIT = 3 4214 const CERT_STORE_CTRL_AUTO_RESYNC = 4 4215 const CERT_STORE_CTRL_CANCEL_NOTIFY = 5 4216 const CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG = &h1 4217 const CERT_STORE_CTRL_COMMIT_FORCE_FLAG = &h1 4218 const CERT_STORE_CTRL_COMMIT_CLEAR_FLAG = &h2 4219 const CERT_STORE_LOCALIZED_NAME_PROP_ID = &h1000 4220 const CERT_CREATE_CONTEXT_NOCOPY_FLAG = &h1 4221 const CERT_CREATE_CONTEXT_SORTED_FLAG = &h2 4222 const CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG = &h4 4223 const CERT_CREATE_CONTEXT_NO_ENTRY_FLAG = &h8 4224 const CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG = &h1 4225 const CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG = &h2 4226 const CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG = &h4 4227 const CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG = &h8 4228 4229 type _CTL_FIND_USAGE_PARA 4230 cbSize as DWORD 4231 SubjectUsage as CTL_USAGE 4232 ListIdentifier as CRYPT_DATA_BLOB 4233 pSigner as PCERT_INFO 4234 end type 4235 4236 type CTL_FIND_USAGE_PARA as _CTL_FIND_USAGE_PARA 4237 type PCTL_FIND_USAGE_PARA as _CTL_FIND_USAGE_PARA ptr 4238 4239 type _CTL_FIND_SUBJECT_PARA 4240 cbSize as DWORD 4241 pUsagePara as PCTL_FIND_USAGE_PARA 4242 dwSubjectType as DWORD 4243 pvSubject as any ptr 4244 end type 4245 4246 type CTL_FIND_SUBJECT_PARA as _CTL_FIND_SUBJECT_PARA 4247 type PCTL_FIND_SUBJECT_PARA as _CTL_FIND_SUBJECT_PARA ptr 4248 type PFN_CERT_CREATE_CONTEXT_SORT_FUNC as function(byval cbTotalEncoded as DWORD, byval cbRemainEncoded as DWORD, byval cEntry as DWORD, byval pvSort as any ptr) as WINBOOL 4249 4250 type _CERT_CREATE_CONTEXT_PARA 4251 cbSize as DWORD 4252 pfnFree as PFN_CRYPT_FREE 4253 pvFree as any ptr 4254 pfnSort as PFN_CERT_CREATE_CONTEXT_SORT_FUNC 4255 pvSort as any ptr 4256 end type 4257 4258 type CERT_CREATE_CONTEXT_PARA as _CERT_CREATE_CONTEXT_PARA 4259 type PCERT_CREATE_CONTEXT_PARA as _CERT_CREATE_CONTEXT_PARA ptr 4260 4261 type _CERT_SYSTEM_STORE_INFO 4262 cbSize as DWORD 4263 end type 4264 4265 type CERT_SYSTEM_STORE_INFO as _CERT_SYSTEM_STORE_INFO 4266 type PCERT_SYSTEM_STORE_INFO as _CERT_SYSTEM_STORE_INFO ptr 4267 4268 type _CERT_PHYSICAL_STORE_INFO 4269 cbSize as DWORD 4270 pszOpenStoreProvider as LPSTR 4271 dwOpenEncodingType as DWORD 4272 dwOpenFlags as DWORD 4273 OpenParameters as CRYPT_DATA_BLOB 4274 dwFlags as DWORD 4275 dwPriority as DWORD 4276 end type 4277 4278 type CERT_PHYSICAL_STORE_INFO as _CERT_PHYSICAL_STORE_INFO 4279 type PCERT_PHYSICAL_STORE_INFO as _CERT_PHYSICAL_STORE_INFO ptr 4280 declare function CertAddEncodedCTLToStore(byval hCertStore as HCERTSTORE, byval dwMsgAndCertEncodingType as DWORD, byval pbCtlEncoded as const UBYTE ptr, byval cbCtlEncoded as DWORD, byval dwAddDisposition as DWORD, byval ppCtlContext as PCCTL_CONTEXT ptr) as WINBOOL 4281 declare function CertAddCTLContextToStore(byval hCertStore as HCERTSTORE, byval pCtlContext as PCCTL_CONTEXT, byval dwAddDisposition as DWORD, byval ppStoreContext as PCCTL_CONTEXT ptr) as WINBOOL 4282 declare function CertSerializeCTLStoreElement(byval pCtlContext as PCCTL_CONTEXT, byval dwFlags as DWORD, byval pbElement as UBYTE ptr, byval pcbElement as DWORD ptr) as WINBOOL 4283 declare function CertDeleteCTLFromStore(byval pCtlContext as PCCTL_CONTEXT) as WINBOOL 4284 declare function CertAddCertificateLinkToStore(byval hCertStore as HCERTSTORE, byval pCertContext as PCCERT_CONTEXT, byval dwAddDisposition as DWORD, byval ppStoreContext as PCCERT_CONTEXT ptr) as WINBOOL 4285 declare function CertAddCRLLinkToStore(byval hCertStore as HCERTSTORE, byval pCrlContext as PCCRL_CONTEXT, byval dwAddDisposition as DWORD, byval ppStoreContext as PCCRL_CONTEXT ptr) as WINBOOL 4286 declare function CertAddCTLLinkToStore(byval hCertStore as HCERTSTORE, byval pCtlContext as PCCTL_CONTEXT, byval dwAddDisposition as DWORD, byval ppStoreContext as PCCTL_CONTEXT ptr) as WINBOOL 4287 declare function CertAddStoreToCollection(byval hCollectionStore as HCERTSTORE, byval hSiblingStore as HCERTSTORE, byval dwUpdateFlags as DWORD, byval dwPriority as DWORD) as WINBOOL 4288 declare sub CertRemoveStoreFromCollection(byval hCollectionStore as HCERTSTORE, byval hSiblingStore as HCERTSTORE) 4289 declare function CertControlStore(byval hCertStore as HCERTSTORE, byval dwFlags as DWORD, byval dwCtrlType as DWORD, byval pvCtrlPara as const any ptr) as WINBOOL 4290 declare function CertSetStoreProperty(byval hCertStore as HCERTSTORE, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pvData as const any ptr) as WINBOOL 4291 declare function CertGetStoreProperty(byval hCertStore as HCERTSTORE, byval dwPropId as DWORD, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 4292 declare function CertCreateContext(byval dwContextType as DWORD, byval dwEncodingType as DWORD, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval dwFlags as DWORD, byval pCreatePara as PCERT_CREATE_CONTEXT_PARA) as const any ptr 4293 declare function CertRegisterSystemStore(byval pvSystemStore as const any ptr, byval dwFlags as DWORD, byval pStoreInfo as PCERT_SYSTEM_STORE_INFO, byval pvReserved as any ptr) as WINBOOL 4294 declare function CertRegisterPhysicalStore(byval pvSystemStore as const any ptr, byval dwFlags as DWORD, byval pwszStoreName as LPCWSTR, byval pStoreInfo as PCERT_PHYSICAL_STORE_INFO, byval pvReserved as any ptr) as WINBOOL 4295 declare function CertUnregisterSystemStore(byval pvSystemStore as const any ptr, byval dwFlags as DWORD) as WINBOOL 4296 declare function CertUnregisterPhysicalStore(byval pvSystemStore as const any ptr, byval dwFlags as DWORD, byval pwszStoreName as LPCWSTR) as WINBOOL 4297 4298 type PFN_CERT_ENUM_SYSTEM_STORE_LOCATION as function(byval pwszStoreLocation as LPCWSTR, byval dwFlags as DWORD, byval pvReserved as any ptr, byval pvArg as any ptr) as WINBOOL 4299 type PFN_CERT_ENUM_SYSTEM_STORE as function(byval pvSystemStore as const any ptr, byval dwFlags as DWORD, byval pStoreInfo as PCERT_SYSTEM_STORE_INFO, byval pvReserved as any ptr, byval pvArg as any ptr) as WINBOOL 4300 type PFN_CERT_ENUM_PHYSICAL_STORE as function(byval pvSystemStore as const any ptr, byval dwFlags as DWORD, byval pwszStoreName as LPCWSTR, byval pStoreInfo as PCERT_PHYSICAL_STORE_INFO, byval pvReserved as any ptr, byval pvArg as any ptr) as WINBOOL 4301 4302 const CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG = &h1 4303 #define CERT_PHYSICAL_STORE_DEFAULT_NAME wstr(".Default") 4304 #define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME wstr(".GroupPolicy") 4305 #define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME wstr(".LocalMachine") 4306 #define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME wstr(".UserCertificate") 4307 #define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME wstr(".LocalMachineGroupPolicy") 4308 #define CERT_PHYSICAL_STORE_ENTERPRISE_NAME wstr(".Enterprise") 4309 #define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME wstr(".AuthRoot") 4310 #define CERT_PHYSICAL_STORE_SMART_CARD_NAME wstr(".SmartCard") 4311 4312 declare function CertEnumSystemStoreLocation(byval dwFlags as DWORD, byval pvArg as any ptr, byval pfnEnum as PFN_CERT_ENUM_SYSTEM_STORE_LOCATION) as WINBOOL 4313 declare function CertEnumSystemStore(byval dwFlags as DWORD, byval pvSystemStoreLocationPara as any ptr, byval pvArg as any ptr, byval pfnEnum as PFN_CERT_ENUM_SYSTEM_STORE) as WINBOOL 4314 declare function CertEnumPhysicalStore(byval pvSystemStore as const any ptr, byval dwFlags as DWORD, byval pvArg as any ptr, byval pfnEnum as PFN_CERT_ENUM_PHYSICAL_STORE) as WINBOOL 4315 4316 #define CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC "CertDllOpenSystemStoreProv" 4317 #define CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC "CertDllRegisterSystemStore" 4318 #define CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC "CertDllUnregisterSystemStore" 4319 #define CRYPT_OID_ENUM_SYSTEM_STORE_FUNC "CertDllEnumSystemStore" 4320 #define CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC "CertDllRegisterPhysicalStore" 4321 #define CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC "CertDllUnregisterPhysicalStore" 4322 #define CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC "CertDllEnumPhysicalStore" 4323 #define CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME wstr("SystemStoreLocation") 4324 const CMSG_TRUSTED_SIGNER_FLAG = &h1 4325 const CMSG_SIGNER_ONLY_FLAG = &h2 4326 const CMSG_USE_SIGNER_INDEX_FLAG = &h4 4327 const CMSG_CMS_ENCAPSULATED_CTL_FLAG = &h8000 4328 const CMSG_ENCODE_SORTED_CTL_FLAG = &h1 4329 const CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG = &h2 4330 4331 declare function CertGetEnhancedKeyUsage(byval pCertContext as PCCERT_CONTEXT, byval dwFlags as DWORD, byval pUsage as PCERT_ENHKEY_USAGE, byval pcbUsage as DWORD ptr) as WINBOOL 4332 declare function CertSetEnhancedKeyUsage(byval pCertContext as PCCERT_CONTEXT, byval pUsage as PCERT_ENHKEY_USAGE) as WINBOOL 4333 declare function CertAddEnhancedKeyUsageIdentifier(byval pCertContext as PCCERT_CONTEXT, byval pszUsageIdentifier as LPCSTR) as WINBOOL 4334 declare function CertRemoveEnhancedKeyUsageIdentifier(byval pCertContext as PCCERT_CONTEXT, byval pszUsageIdentifier as LPCSTR) as WINBOOL 4335 declare function CertGetValidUsages(byval cCerts as DWORD, byval rghCerts as PCCERT_CONTEXT ptr, byval cNumOIDs as long ptr, byval rghOIDs as LPSTR ptr, byval pcbOIDs as DWORD ptr) as WINBOOL 4336 declare function CryptMsgGetAndVerifySigner(byval hCryptMsg as HCRYPTMSG, byval cSignerStore as DWORD, byval rghSignerStore as HCERTSTORE ptr, byval dwFlags as DWORD, byval ppSigner as PCCERT_CONTEXT ptr, byval pdwSignerIndex as DWORD ptr) as WINBOOL 4337 declare function CryptMsgSignCTL(byval dwMsgEncodingType as DWORD, byval pbCtlContent as UBYTE ptr, byval cbCtlContent as DWORD, byval pSignInfo as PCMSG_SIGNED_ENCODE_INFO, byval dwFlags as DWORD, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr) as WINBOOL 4338 declare function CryptMsgEncodeAndSignCTL(byval dwMsgEncodingType as DWORD, byval pCtlInfo as PCTL_INFO, byval pSignInfo as PCMSG_SIGNED_ENCODE_INFO, byval dwFlags as DWORD, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr) as WINBOOL 4339 declare function CertFindSubjectInSortedCTL(byval pSubjectIdentifier as PCRYPT_DATA_BLOB, byval pCtlContext as PCCTL_CONTEXT, byval dwFlags as DWORD, byval pvReserved as any ptr, byval pEncodedAttributes as PCRYPT_DER_BLOB) as WINBOOL 4340 declare function CertEnumSubjectInSortedCTL(byval pCtlContext as PCCTL_CONTEXT, byval ppvNextSubject as any ptr ptr, byval pSubjectIdentifier as PCRYPT_DER_BLOB, byval pEncodedAttributes as PCRYPT_DER_BLOB) as WINBOOL 4341 4342 type _CTL_VERIFY_USAGE_PARA 4343 cbSize as DWORD 4344 ListIdentifier as CRYPT_DATA_BLOB 4345 cCtlStore as DWORD 4346 rghCtlStore as HCERTSTORE ptr 4347 cSignerStore as DWORD 4348 rghSignerStore as HCERTSTORE ptr 4349 end type 4350 4351 type CTL_VERIFY_USAGE_PARA as _CTL_VERIFY_USAGE_PARA 4352 type PCTL_VERIFY_USAGE_PARA as _CTL_VERIFY_USAGE_PARA ptr 4353 4354 type _CTL_VERIFY_USAGE_STATUS 4355 cbSize as DWORD 4356 dwError as DWORD 4357 dwFlags as DWORD 4358 ppCtl as PCCTL_CONTEXT ptr 4359 dwCtlEntryIndex as DWORD 4360 ppSigner as PCCERT_CONTEXT ptr 4361 dwSignerIndex as DWORD 4362 end type 4363 4364 type CTL_VERIFY_USAGE_STATUS as _CTL_VERIFY_USAGE_STATUS 4365 type PCTL_VERIFY_USAGE_STATUS as _CTL_VERIFY_USAGE_STATUS ptr 4366 const CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG = &h1 4367 const CERT_VERIFY_TRUSTED_SIGNERS_FLAG = &h2 4368 const CERT_VERIFY_NO_TIME_CHECK_FLAG = &h4 4369 const CERT_VERIFY_ALLOW_MORE_USAGE_FLAG = &h8 4370 const CERT_VERIFY_UPDATED_CTL_FLAG = &h1 4371 declare function CertVerifyCTLUsage(byval dwEncodingType as DWORD, byval dwSubjectType as DWORD, byval pvSubject as any ptr, byval pSubjectUsage as PCTL_USAGE, byval dwFlags as DWORD, byval pVerifyUsagePara as PCTL_VERIFY_USAGE_PARA, byval pVerifyUsageStatus as PCTL_VERIFY_USAGE_STATUS) as WINBOOL 4372 4373 type _CERT_REVOCATION_CRL_INFO 4374 cbSize as DWORD 4375 pBaseCrlContext as PCCRL_CONTEXT 4376 pDeltaCrlContext as PCCRL_CONTEXT 4377 pCrlEntry as PCRL_ENTRY 4378 fDeltaCrlEntry as WINBOOL 4379 end type 4380 4381 type CERT_REVOCATION_CRL_INFO as _CERT_REVOCATION_CRL_INFO 4382 type PCERT_REVOCATION_CRL_INFO as _CERT_REVOCATION_CRL_INFO ptr 4383 type CERT_REVOCATION_CHAIN_PARA as _CERT_REVOCATION_CHAIN_PARA 4384 type PCERT_REVOCATION_CHAIN_PARA as _CERT_REVOCATION_CHAIN_PARA ptr 4385 4386 type _CERT_REVOCATION_PARA 4387 cbSize as DWORD 4388 pIssuerCert as PCCERT_CONTEXT 4389 cCertStore as DWORD 4390 rgCertStore as HCERTSTORE ptr 4391 hCrlStore as HCERTSTORE 4392 pftTimeToUse as LPFILETIME 4393 end type 4394 4395 type CERT_REVOCATION_PARA as _CERT_REVOCATION_PARA 4396 type PCERT_REVOCATION_PARA as _CERT_REVOCATION_PARA ptr 4397 4398 type _CERT_REVOCATION_STATUS 4399 cbSize as DWORD 4400 dwIndex as DWORD 4401 dwError as DWORD 4402 dwReason as DWORD 4403 fHasFreshnessTime as WINBOOL 4404 dwFreshnessTime as DWORD 4405 end type 4406 4407 type CERT_REVOCATION_STATUS as _CERT_REVOCATION_STATUS 4408 type PCERT_REVOCATION_STATUS as _CERT_REVOCATION_STATUS ptr 4409 const CERT_CONTEXT_REVOCATION_TYPE = 1 4410 const CERT_VERIFY_REV_CHAIN_FLAG = &h1 4411 const CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION = &h2 4412 const CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG = &h4 4413 const CERT_VERIFY_REV_SERVER_OCSP_FLAG = &h8 4414 const CERT_VERIFY_REV_NO_OCSP_FAILOVER_TO_CRL_FLAG = &h10 4415 const CERT_UNICODE_IS_RDN_ATTRS_FLAG = &h1 4416 const CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG = &h2 4417 const CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB = 1 4418 const CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT = 2 4419 const CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL = 3 4420 const CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE = 4 4421 const CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY = 1 4422 const CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT = 2 4423 const CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN = 3 4424 const CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL = 4 4425 const CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG = &h1 4426 const CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG = &h2 4427 const CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG = &h4 4428 #define CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC "CryptDllExtractEncodedSignatureParameters" 4429 #define CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC "CryptDllSignAndEncodeHash" 4430 #define CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC "CryptDllVerifyEncodedSignature" 4431 const CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG = &h1 4432 const CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG = &h2 4433 const CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID = 1 4434 const CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID = 2 4435 4436 type _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO 4437 CertSignHashCNGAlgPropData as CRYPT_DATA_BLOB 4438 CertIssuerPubKeyBitLengthPropData as CRYPT_DATA_BLOB 4439 end type 4440 4441 type CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO as _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO 4442 type PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO as _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO ptr 4443 type PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC as function(byval dwCertEncodingType as DWORD, byval pSignatureAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval ppvDecodedSignPara as any ptr ptr, byval ppwszCNGHashAlgid as LPWSTR ptr) as WINBOOL 4444 type PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC as function(byval hKey as NCRYPT_KEY_HANDLE, byval dwCertEncodingType as DWORD, byval pSignatureAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pvDecodedSignPara as any ptr, byval pwszCNGPubKeyAlgid as LPCWSTR, byval pwszCNGHashAlgid as LPCWSTR, byval pbComputedHash as UBYTE ptr, byval cbComputedHash as DWORD, byval pbSignature as UBYTE ptr, byval pcbSignature as DWORD ptr) as WINBOOL 4445 type PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC as function(byval dwCertEncodingType as DWORD, byval pPubKeyInfo as PCERT_PUBLIC_KEY_INFO, byval pSignatureAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pvDecodedSignPara as any ptr, byval pwszCNGPubKeyAlgid as LPCWSTR, byval pwszCNGHashAlgid as LPCWSTR, byval pbComputedHash as UBYTE ptr, byval cbComputedHash as DWORD, byval pbSignature as UBYTE ptr, byval cbSignature as DWORD) as WINBOOL 4446 type HCRYPTDEFAULTCONTEXT as any ptr 4447 4448 type _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA 4449 cOID as DWORD 4450 rgpszOID as LPSTR ptr 4451 end type 4452 4453 type CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA as _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA 4454 type PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA as _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA ptr 4455 declare function CertVerifyRevocation(byval dwEncodingType as DWORD, byval dwRevType as DWORD, byval cContext as DWORD, byval rgpvContext as PVOID ptr, byval dwFlags as DWORD, byval pRevPara as PCERT_REVOCATION_PARA, byval pRevStatus as PCERT_REVOCATION_STATUS) as WINBOOL 4456 declare function CertCompareIntegerBlob(byval pInt1 as PCRYPT_INTEGER_BLOB, byval pInt2 as PCRYPT_INTEGER_BLOB) as WINBOOL 4457 declare function CertCompareCertificate(byval dwCertEncodingType as DWORD, byval pCertId1 as PCERT_INFO, byval pCertId2 as PCERT_INFO) as WINBOOL 4458 declare function CertCompareCertificateName(byval dwCertEncodingType as DWORD, byval pCertName1 as PCERT_NAME_BLOB, byval pCertName2 as PCERT_NAME_BLOB) as WINBOOL 4459 declare function CertIsRDNAttrsInCertificateName(byval dwCertEncodingType as DWORD, byval dwFlags as DWORD, byval pCertName as PCERT_NAME_BLOB, byval pRDN as PCERT_RDN) as WINBOOL 4460 declare function CertComparePublicKeyInfo(byval dwCertEncodingType as DWORD, byval pPublicKey1 as PCERT_PUBLIC_KEY_INFO, byval pPublicKey2 as PCERT_PUBLIC_KEY_INFO) as WINBOOL 4461 declare function CertGetPublicKeyLength(byval dwCertEncodingType as DWORD, byval pPublicKey as PCERT_PUBLIC_KEY_INFO) as DWORD 4462 declare function CryptVerifyCertificateSignature(byval hCryptProv as HCRYPTPROV_LEGACY, byval dwCertEncodingType as DWORD, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval pPublicKey as PCERT_PUBLIC_KEY_INFO) as WINBOOL 4463 declare function CryptVerifyCertificateSignatureEx(byval hCryptProv as HCRYPTPROV_LEGACY, byval dwCertEncodingType as DWORD, byval dwSubjectType as DWORD, byval pvSubject as any ptr, byval dwIssuerType as DWORD, byval pvIssuer as any ptr, byval dwFlags as DWORD, byval pvExtra as any ptr) as WINBOOL 4464 declare function CertIsStrongHashToSign(byval pStrongSignPara as PCCERT_STRONG_SIGN_PARA, byval pwszCNGHashAlgid as LPCWSTR, byval pSigningCert as PCCERT_CONTEXT) as WINBOOL 4465 declare function CryptHashToBeSigned(byval hCryptProv as HCRYPTPROV_LEGACY, byval dwCertEncodingType as DWORD, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval pbComputedHash as UBYTE ptr, byval pcbComputedHash as DWORD ptr) as WINBOOL 4466 declare function CryptHashCertificate(byval hCryptProv as HCRYPTPROV_LEGACY, byval Algid as ALG_ID, byval dwFlags as DWORD, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval pbComputedHash as UBYTE ptr, byval pcbComputedHash as DWORD ptr) as WINBOOL 4467 4468 #if _WIN32_WINNT >= &h0600 4469 declare function CryptHashCertificate2(byval pwszCNGHashAlgid as LPCWSTR, byval dwFlags as DWORD, byval pvReserved as any ptr, byval pbEncoded as const UBYTE ptr, byval cbEncoded as DWORD, byval pbComputedHash as UBYTE ptr, byval pcbComputedHash as DWORD ptr) as WINBOOL 4470 #endif 4471 4472 declare function CryptSignCertificate(byval hCryptProvOrNCryptKey as HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, byval dwKeySpec as DWORD, byval dwCertEncodingType as DWORD, byval pbEncodedToBeSigned as const UBYTE ptr, byval cbEncodedToBeSigned as DWORD, byval pSignatureAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pvHashAuxInfo as const any ptr, byval pbSignature as UBYTE ptr, byval pcbSignature as DWORD ptr) as WINBOOL 4473 declare function CryptSignAndEncodeCertificate(byval hCryptProvOrNCryptKey as HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, byval dwKeySpec as DWORD, byval dwCertEncodingType as DWORD, byval lpszStructType as LPCSTR, byval pvStructInfo as const any ptr, byval pSignatureAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pvHashAuxInfo as const any ptr, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr) as WINBOOL 4474 declare function CertVerifyTimeValidity(byval pTimeToVerify as LPFILETIME, byval pCertInfo as PCERT_INFO) as LONG 4475 declare function CertVerifyCRLTimeValidity(byval pTimeToVerify as LPFILETIME, byval pCrlInfo as PCRL_INFO) as LONG 4476 declare function CertVerifyValidityNesting(byval pSubjectInfo as PCERT_INFO, byval pIssuerInfo as PCERT_INFO) as WINBOOL 4477 declare function CertVerifyCRLRevocation(byval dwCertEncodingType as DWORD, byval pCertId as PCERT_INFO, byval cCrlInfo as DWORD, byval rgpCrlInfo as PCRL_INFO ptr) as WINBOOL 4478 declare function CertAlgIdToOID(byval dwAlgId as DWORD) as LPCSTR 4479 declare function CertOIDToAlgId(byval pszObjId as LPCSTR) as DWORD 4480 declare function CertFindExtension(byval pszObjId as LPCSTR, byval cExtensions as DWORD, byval rgExtensions as CERT_EXTENSION ptr) as PCERT_EXTENSION 4481 declare function CertFindAttribute(byval pszObjId as LPCSTR, byval cAttr as DWORD, byval rgAttr as CRYPT_ATTRIBUTE ptr) as PCRYPT_ATTRIBUTE 4482 declare function CertFindRDNAttr(byval pszObjId as LPCSTR, byval pName as PCERT_NAME_INFO) as PCERT_RDN_ATTR 4483 declare function CertGetIntendedKeyUsage(byval dwCertEncodingType as DWORD, byval pCertInfo as PCERT_INFO, byval pbKeyUsage as UBYTE ptr, byval cbKeyUsage as DWORD) as WINBOOL 4484 declare function CryptInstallDefaultContext(byval hCryptProv as HCRYPTPROV, byval dwDefaultType as DWORD, byval pvDefaultPara as const any ptr, byval dwFlags as DWORD, byval pvReserved as any ptr, byval phDefaultContext as HCRYPTDEFAULTCONTEXT ptr) as WINBOOL 4485 declare function CryptUninstallDefaultContext(byval hDefaultContext as HCRYPTDEFAULTCONTEXT, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 4486 declare function CryptExportPublicKeyInfo(byval hCryptProvOrNCryptKey as HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, byval dwKeySpec as DWORD, byval dwCertEncodingType as DWORD, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval pcbInfo as DWORD ptr) as WINBOOL 4487 declare function CryptExportPublicKeyInfoEx(byval hCryptProvOrNCryptKey as HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, byval dwKeySpec as DWORD, byval dwCertEncodingType as DWORD, byval pszPublicKeyObjId as LPSTR, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval pcbInfo as DWORD ptr) as WINBOOL 4488 #define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC "CryptDllExportPublicKeyInfoEx" 4489 #define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC "CryptDllExportPublicKeyInfoEx2" 4490 type PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC as function(byval hNCryptKey as NCRYPT_KEY_HANDLE, byval dwCertEncodingType as DWORD, byval pszPublicKeyObjId as LPSTR, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval pcbInfo as DWORD ptr) as WINBOOL 4491 4492 #if _WIN32_WINNT >= &h0601 4493 #define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC "CryptDllExportPublicKeyInfoFromBCryptKeyHandle" 4494 type PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC as function(byval hBCryptKey as BCRYPT_KEY_HANDLE, byval dwCertEncodingType as DWORD, byval pszPublicKeyObjId as LPSTR, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval pcbInfo as DWORD ptr) as WINBOOL 4495 declare function CryptExportPublicKeyInfoFromBCryptKeyHandle(byval hBCryptKey as BCRYPT_KEY_HANDLE, byval dwCertEncodingType as DWORD, byval pszPublicKeyObjId as LPSTR, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval pcbInfo as DWORD ptr) as WINBOOL 4496 #endif 4497 4498 #define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC "CryptDllImportPublicKeyInfoEx" 4499 #define CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC "CryptDllImportPrivateKeyInfoEx" 4500 #define CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC "CryptDllExportPrivateKeyInfoEx" 4501 const CRYPT_ACQUIRE_CACHE_FLAG = &h1 4502 const CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = &h2 4503 const CRYPT_ACQUIRE_COMPARE_KEY_FLAG = &h4 4504 const CRYPT_ACQUIRE_NO_HEALING = &h8 4505 const CRYPT_ACQUIRE_SILENT_FLAG = &h40 4506 const CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = &h80 4507 const CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = &h70000 4508 const CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = &h10000 4509 const CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = &h20000 4510 const CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = &h40000 4511 const CRYPT_FIND_USER_KEYSET_FLAG = &h1 4512 const CRYPT_FIND_MACHINE_KEYSET_FLAG = &h2 4513 const CRYPT_FIND_SILENT_KEYSET_FLAG = &h40 4514 const CRYPT_DELETE_KEYSET = CRYPT_DELETEKEYSET 4515 type PFN_IMPORT_PRIV_KEY_FUNC as function(byval hCryptProv as HCRYPTPROV, byval pPrivateKeyInfo as CRYPT_PRIVATE_KEY_INFO ptr, byval dwFlags as DWORD, byval pvAuxInfo as any ptr) as WINBOOL 4516 type PFN_EXPORT_PRIV_KEY_FUNC as function(byval hCryptProv as HCRYPTPROV, byval dwKeySpec as DWORD, byval pszPrivateKeyObjId as LPSTR, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval pPrivateKeyInfo as CRYPT_PRIVATE_KEY_INFO ptr, byval pcbPrivateKeyInfo as DWORD ptr) as WINBOOL 4517 declare function CryptImportPublicKeyInfo(byval hCryptProv as HCRYPTPROV, byval dwCertEncodingType as DWORD, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval phKey as HCRYPTKEY ptr) as WINBOOL 4518 declare function CryptImportPublicKeyInfoEx(byval hCryptProv as HCRYPTPROV, byval dwCertEncodingType as DWORD, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval aiKeyAlg as ALG_ID, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval phKey as HCRYPTKEY ptr) as WINBOOL 4519 4520 #if _WIN32_WINNT >= &h0600 4521 #define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC "CryptDllImportPublicKeyInfoEx2" 4522 type PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC as function(byval dwCertEncodingType as DWORD, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval phKey as BCRYPT_KEY_HANDLE ptr) as WINBOOL 4523 declare function CryptImportPublicKeyInfoEx2(byval dwCertEncodingType as DWORD, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval phKey as BCRYPT_KEY_HANDLE ptr) as WINBOOL 4524 #endif 4525 4526 declare function CryptAcquireCertificatePrivateKey(byval pCert as PCCERT_CONTEXT, byval dwFlags as DWORD, byval pvParameters as any ptr, byval phCryptProvOrNCryptKey as HCRYPTPROV_OR_NCRYPT_KEY_HANDLE ptr, byval pdwKeySpec as DWORD ptr, byval pfCallerFreeProvOrNCryptKey as WINBOOL ptr) as WINBOOL 4527 declare function CryptFindCertificateKeyProvInfo(byval pCert as PCCERT_CONTEXT, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 4528 declare function CryptImportPKCS8(byval sPrivateKeyAndParams as CRYPT_PKCS8_IMPORT_PARAMS, byval dwFlags as DWORD, byval phCryptProv as HCRYPTPROV ptr, byval pvAuxInfo as any ptr) as WINBOOL 4529 declare function CryptExportPKCS8(byval hCryptProv as HCRYPTPROV, byval dwKeySpec as DWORD, byval pszPrivateKeyObjId as LPSTR, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval pbPrivateKeyBlob as UBYTE ptr, byval pcbPrivateKeyBlob as DWORD ptr) as WINBOOL 4530 declare function CryptExportPKCS8Ex(byval psExportParams as CRYPT_PKCS8_EXPORT_PARAMS ptr, byval dwFlags as DWORD, byval pvAuxInfo as any ptr, byval pbPrivateKeyBlob as UBYTE ptr, byval pcbPrivateKeyBlob as DWORD ptr) as WINBOOL 4531 declare function CryptHashPublicKeyInfo(byval hCryptProv as HCRYPTPROV_LEGACY, byval Algid as ALG_ID, byval dwFlags as DWORD, byval dwCertEncodingType as DWORD, byval pInfo as PCERT_PUBLIC_KEY_INFO, byval pbComputedHash as UBYTE ptr, byval pcbComputedHash as DWORD ptr) as WINBOOL 4532 declare function CertRDNValueToStrA(byval dwValueType as DWORD, byval pValue as PCERT_RDN_VALUE_BLOB, byval psz as LPSTR, byval csz as DWORD) as DWORD 4533 4534 #ifndef UNICODE 4535 declare function CertRDNValueToStr alias "CertRDNValueToStrA"(byval dwValueType as DWORD, byval pValue as PCERT_RDN_VALUE_BLOB, byval psz as LPSTR, byval csz as DWORD) as DWORD 4536 #endif 4537 4538 declare function CertRDNValueToStrW(byval dwValueType as DWORD, byval pValue as PCERT_RDN_VALUE_BLOB, byval psz as LPWSTR, byval csz as DWORD) as DWORD 4539 4540 #ifdef UNICODE 4541 declare function CertRDNValueToStr alias "CertRDNValueToStrW"(byval dwValueType as DWORD, byval pValue as PCERT_RDN_VALUE_BLOB, byval psz as LPWSTR, byval csz as DWORD) as DWORD 4542 #endif 4543 4544 declare function CertNameToStrA(byval dwCertEncodingType as DWORD, byval pName as PCERT_NAME_BLOB, byval dwStrType as DWORD, byval psz as LPSTR, byval csz as DWORD) as DWORD 4545 4546 #ifndef UNICODE 4547 declare function CertNameToStr alias "CertNameToStrA"(byval dwCertEncodingType as DWORD, byval pName as PCERT_NAME_BLOB, byval dwStrType as DWORD, byval psz as LPSTR, byval csz as DWORD) as DWORD 4548 #endif 4549 4550 declare function CertNameToStrW(byval dwCertEncodingType as DWORD, byval pName as PCERT_NAME_BLOB, byval dwStrType as DWORD, byval psz as LPWSTR, byval csz as DWORD) as DWORD 4551 4552 #ifdef UNICODE 4553 declare function CertNameToStr alias "CertNameToStrW"(byval dwCertEncodingType as DWORD, byval pName as PCERT_NAME_BLOB, byval dwStrType as DWORD, byval psz as LPWSTR, byval csz as DWORD) as DWORD 4554 #endif 4555 4556 const CERT_SIMPLE_NAME_STR = 1 4557 const CERT_OID_NAME_STR = 2 4558 const CERT_X500_NAME_STR = 3 4559 const CERT_XML_NAME_STR = 4 4560 const CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG = &h10000 4561 const CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG = &h20000 4562 const CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG = &h40000 4563 const CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG = &h80000 4564 const CERT_NAME_STR_FORWARD_FLAG = &h1000000 4565 const CERT_NAME_STR_REVERSE_FLAG = &h2000000 4566 const CERT_NAME_STR_COMMA_FLAG = &h4000000 4567 const CERT_NAME_STR_CRLF_FLAG = &h8000000 4568 const CERT_NAME_STR_NO_QUOTING_FLAG = &h10000000 4569 const CERT_NAME_STR_NO_PLUS_FLAG = &h20000000 4570 const CERT_NAME_STR_SEMICOLON_FLAG = &h40000000 4571 const CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG = &h100000 4572 const CERT_NAME_STR_ENABLE_PUNYCODE_FLAG = &h200000 4573 declare function CertStrToNameA(byval dwCertEncodingType as DWORD, byval pszX500 as LPCSTR, byval dwStrType as DWORD, byval pvReserved as any ptr, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr, byval ppszError as LPCSTR ptr) as WINBOOL 4574 4575 #ifndef UNICODE 4576 declare function CertStrToName alias "CertStrToNameA"(byval dwCertEncodingType as DWORD, byval pszX500 as LPCSTR, byval dwStrType as DWORD, byval pvReserved as any ptr, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr, byval ppszError as LPCSTR ptr) as WINBOOL 4577 #endif 4578 4579 declare function CertStrToNameW(byval dwCertEncodingType as DWORD, byval pszX500 as LPCWSTR, byval dwStrType as DWORD, byval pvReserved as any ptr, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr, byval ppszError as LPCWSTR ptr) as WINBOOL 4580 4581 #ifdef UNICODE 4582 declare function CertStrToName alias "CertStrToNameW"(byval dwCertEncodingType as DWORD, byval pszX500 as LPCWSTR, byval dwStrType as DWORD, byval pvReserved as any ptr, byval pbEncoded as UBYTE ptr, byval pcbEncoded as DWORD ptr, byval ppszError as LPCWSTR ptr) as WINBOOL 4583 #endif 4584 4585 declare function CertGetNameStringA(byval pCertContext as PCCERT_CONTEXT, byval dwType as DWORD, byval dwFlags as DWORD, byval pvTypePara as any ptr, byval pszNameString as LPSTR, byval cchNameString as DWORD) as DWORD 4586 4587 #ifndef UNICODE 4588 declare function CertGetNameString alias "CertGetNameStringA"(byval pCertContext as PCCERT_CONTEXT, byval dwType as DWORD, byval dwFlags as DWORD, byval pvTypePara as any ptr, byval pszNameString as LPSTR, byval cchNameString as DWORD) as DWORD 4589 #endif 4590 4591 declare function CertGetNameStringW(byval pCertContext as PCCERT_CONTEXT, byval dwType as DWORD, byval dwFlags as DWORD, byval pvTypePara as any ptr, byval pszNameString as LPWSTR, byval cchNameString as DWORD) as DWORD 4592 4593 #ifdef UNICODE 4594 declare function CertGetNameString alias "CertGetNameStringW"(byval pCertContext as PCCERT_CONTEXT, byval dwType as DWORD, byval dwFlags as DWORD, byval pvTypePara as any ptr, byval pszNameString as LPWSTR, byval cchNameString as DWORD) as DWORD 4595 #endif 4596 4597 const CERT_NAME_EMAIL_TYPE = 1 4598 const CERT_NAME_RDN_TYPE = 2 4599 const CERT_NAME_ATTR_TYPE = 3 4600 const CERT_NAME_SIMPLE_DISPLAY_TYPE = 4 4601 const CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5 4602 const CERT_NAME_DNS_TYPE = 6 4603 const CERT_NAME_URL_TYPE = 7 4604 const CERT_NAME_UPN_TYPE = 8 4605 const CERT_NAME_ISSUER_FLAG = &h1 4606 const CERT_NAME_DISABLE_IE4_UTF8_FLAG = &h10000 4607 const CERT_NAME_SEARCH_ALL_NAMES_FLAG = &h2 4608 type PFN_CRYPT_GET_SIGNER_CERTIFICATE as function(byval pvGetArg as any ptr, byval dwCertEncodingType as DWORD, byval pSignerId as PCERT_INFO, byval hMsgCertStore as HCERTSTORE) as PCCERT_CONTEXT 4609 4610 type _CRYPT_SIGN_MESSAGE_PARA 4611 cbSize as DWORD 4612 dwMsgEncodingType as DWORD 4613 pSigningCert as PCCERT_CONTEXT 4614 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 4615 pvHashAuxInfo as any ptr 4616 cMsgCert as DWORD 4617 rgpMsgCert as PCCERT_CONTEXT ptr 4618 cMsgCrl as DWORD 4619 rgpMsgCrl as PCCRL_CONTEXT ptr 4620 cAuthAttr as DWORD 4621 rgAuthAttr as PCRYPT_ATTRIBUTE 4622 cUnauthAttr as DWORD 4623 rgUnauthAttr as PCRYPT_ATTRIBUTE 4624 dwFlags as DWORD 4625 dwInnerContentType as DWORD 4626 end type 4627 4628 type CRYPT_SIGN_MESSAGE_PARA as _CRYPT_SIGN_MESSAGE_PARA 4629 type PCRYPT_SIGN_MESSAGE_PARA as _CRYPT_SIGN_MESSAGE_PARA ptr 4630 const CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG = &h1 4631 const CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG = &h2 4632 const CRYPT_MESSAGE_KEYID_SIGNER_FLAG = &h4 4633 const CRYPT_MESSAGE_SILENT_KEYSET_FLAG = &h40 4634 4635 type _CRYPT_VERIFY_MESSAGE_PARA 4636 cbSize as DWORD 4637 dwMsgAndCertEncodingType as DWORD 4638 hCryptProv as HCRYPTPROV_LEGACY 4639 pfnGetSignerCertificate as PFN_CRYPT_GET_SIGNER_CERTIFICATE 4640 pvGetArg as any ptr 4641 end type 4642 4643 type CRYPT_VERIFY_MESSAGE_PARA as _CRYPT_VERIFY_MESSAGE_PARA 4644 type PCRYPT_VERIFY_MESSAGE_PARA as _CRYPT_VERIFY_MESSAGE_PARA ptr 4645 4646 type _CRYPT_ENCRYPT_MESSAGE_PARA 4647 cbSize as DWORD 4648 dwMsgEncodingType as DWORD 4649 hCryptProv as HCRYPTPROV_LEGACY 4650 ContentEncryptionAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 4651 pvEncryptionAuxInfo as any ptr 4652 dwFlags as DWORD 4653 dwInnerContentType as DWORD 4654 end type 4655 4656 type CRYPT_ENCRYPT_MESSAGE_PARA as _CRYPT_ENCRYPT_MESSAGE_PARA 4657 type PCRYPT_ENCRYPT_MESSAGE_PARA as _CRYPT_ENCRYPT_MESSAGE_PARA ptr 4658 const CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG = &h4 4659 4660 type _CRYPT_DECRYPT_MESSAGE_PARA 4661 cbSize as DWORD 4662 dwMsgAndCertEncodingType as DWORD 4663 cCertStore as DWORD 4664 rghCertStore as HCERTSTORE ptr 4665 end type 4666 4667 type CRYPT_DECRYPT_MESSAGE_PARA as _CRYPT_DECRYPT_MESSAGE_PARA 4668 type PCRYPT_DECRYPT_MESSAGE_PARA as _CRYPT_DECRYPT_MESSAGE_PARA ptr 4669 4670 type _CRYPT_HASH_MESSAGE_PARA 4671 cbSize as DWORD 4672 dwMsgEncodingType as DWORD 4673 hCryptProv as HCRYPTPROV_LEGACY 4674 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 4675 pvHashAuxInfo as any ptr 4676 end type 4677 4678 type CRYPT_HASH_MESSAGE_PARA as _CRYPT_HASH_MESSAGE_PARA 4679 type PCRYPT_HASH_MESSAGE_PARA as _CRYPT_HASH_MESSAGE_PARA ptr 4680 4681 type _CRYPT_KEY_SIGN_MESSAGE_PARA 4682 cbSize as DWORD 4683 dwMsgAndCertEncodingType as DWORD 4684 4685 union 4686 hCryptProv as HCRYPTPROV 4687 hNCryptKey as NCRYPT_KEY_HANDLE 4688 end union 4689 4690 dwKeySpec as DWORD 4691 HashAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 4692 pvHashAuxInfo as any ptr 4693 PubKeyAlgorithm as CRYPT_ALGORITHM_IDENTIFIER 4694 end type 4695 4696 type CRYPT_KEY_SIGN_MESSAGE_PARA as _CRYPT_KEY_SIGN_MESSAGE_PARA 4697 type PCRYPT_KEY_SIGN_MESSAGE_PARA as _CRYPT_KEY_SIGN_MESSAGE_PARA ptr 4698 4699 type _CRYPT_KEY_VERIFY_MESSAGE_PARA 4700 cbSize as DWORD 4701 dwMsgEncodingType as DWORD 4702 hCryptProv as HCRYPTPROV_LEGACY 4703 end type 4704 4705 type CRYPT_KEY_VERIFY_MESSAGE_PARA as _CRYPT_KEY_VERIFY_MESSAGE_PARA 4706 type PCRYPT_KEY_VERIFY_MESSAGE_PARA as _CRYPT_KEY_VERIFY_MESSAGE_PARA ptr 4707 4708 type _CERT_CHAIN 4709 cCerts as DWORD 4710 certs as PCERT_BLOB 4711 keyLocatorInfo as CRYPT_KEY_PROV_INFO 4712 end type 4713 4714 type CERT_CHAIN as _CERT_CHAIN 4715 type PCERT_CHAIN as _CERT_CHAIN ptr 4716 declare function CryptSignMessage(byval pSignPara as PCRYPT_SIGN_MESSAGE_PARA, byval fDetachedSignature as WINBOOL, byval cToBeSigned as DWORD, byval rgpbToBeSigned as const UBYTE ptr ptr, byval rgcbToBeSigned as DWORD ptr, byval pbSignedBlob as UBYTE ptr, byval pcbSignedBlob as DWORD ptr) as WINBOOL 4717 declare function CryptVerifyMessageSignature(byval pVerifyPara as PCRYPT_VERIFY_MESSAGE_PARA, byval dwSignerIndex as DWORD, byval pbSignedBlob as const UBYTE ptr, byval cbSignedBlob as DWORD, byval pbDecoded as UBYTE ptr, byval pcbDecoded as DWORD ptr, byval ppSignerCert as PCCERT_CONTEXT ptr) as WINBOOL 4718 declare function CryptGetMessageSignerCount(byval dwMsgEncodingType as DWORD, byval pbSignedBlob as const UBYTE ptr, byval cbSignedBlob as DWORD) as LONG 4719 declare function CryptGetMessageCertificates(byval dwMsgAndCertEncodingType as DWORD, byval hCryptProv as HCRYPTPROV_LEGACY, byval dwFlags as DWORD, byval pbSignedBlob as const UBYTE ptr, byval cbSignedBlob as DWORD) as HCERTSTORE 4720 declare function CryptVerifyDetachedMessageSignature(byval pVerifyPara as PCRYPT_VERIFY_MESSAGE_PARA, byval dwSignerIndex as DWORD, byval pbDetachedSignBlob as const UBYTE ptr, byval cbDetachedSignBlob as DWORD, byval cToBeSigned as DWORD, byval rgpbToBeSigned as const UBYTE ptr ptr, byval rgcbToBeSigned as DWORD ptr, byval ppSignerCert as PCCERT_CONTEXT ptr) as WINBOOL 4721 declare function CryptEncryptMessage(byval pEncryptPara as PCRYPT_ENCRYPT_MESSAGE_PARA, byval cRecipientCert as DWORD, byval rgpRecipientCert as PCCERT_CONTEXT ptr, byval pbToBeEncrypted as const UBYTE ptr, byval cbToBeEncrypted as DWORD, byval pbEncryptedBlob as UBYTE ptr, byval pcbEncryptedBlob as DWORD ptr) as WINBOOL 4722 declare function CryptDecryptMessage(byval pDecryptPara as PCRYPT_DECRYPT_MESSAGE_PARA, byval pbEncryptedBlob as const UBYTE ptr, byval cbEncryptedBlob as DWORD, byval pbDecrypted as UBYTE ptr, byval pcbDecrypted as DWORD ptr, byval ppXchgCert as PCCERT_CONTEXT ptr) as WINBOOL 4723 declare function CryptSignAndEncryptMessage(byval pSignPara as PCRYPT_SIGN_MESSAGE_PARA, byval pEncryptPara as PCRYPT_ENCRYPT_MESSAGE_PARA, byval cRecipientCert as DWORD, byval rgpRecipientCert as PCCERT_CONTEXT ptr, byval pbToBeSignedAndEncrypted as const UBYTE ptr, byval cbToBeSignedAndEncrypted as DWORD, byval pbSignedAndEncryptedBlob as UBYTE ptr, byval pcbSignedAndEncryptedBlob as DWORD ptr) as WINBOOL 4724 declare function CryptDecryptAndVerifyMessageSignature(byval pDecryptPara as PCRYPT_DECRYPT_MESSAGE_PARA, byval pVerifyPara as PCRYPT_VERIFY_MESSAGE_PARA, byval dwSignerIndex as DWORD, byval pbEncryptedBlob as const UBYTE ptr, byval cbEncryptedBlob as DWORD, byval pbDecrypted as UBYTE ptr, byval pcbDecrypted as DWORD ptr, byval ppXchgCert as PCCERT_CONTEXT ptr, byval ppSignerCert as PCCERT_CONTEXT ptr) as WINBOOL 4725 declare function CryptDecodeMessage(byval dwMsgTypeFlags as DWORD, byval pDecryptPara as PCRYPT_DECRYPT_MESSAGE_PARA, byval pVerifyPara as PCRYPT_VERIFY_MESSAGE_PARA, byval dwSignerIndex as DWORD, byval pbEncodedBlob as const UBYTE ptr, byval cbEncodedBlob as DWORD, byval dwPrevInnerContentType as DWORD, byval pdwMsgType as DWORD ptr, byval pdwInnerContentType as DWORD ptr, byval pbDecoded as UBYTE ptr, byval pcbDecoded as DWORD ptr, byval ppXchgCert as PCCERT_CONTEXT ptr, byval ppSignerCert as PCCERT_CONTEXT ptr) as WINBOOL 4726 declare function CryptHashMessage(byval pHashPara as PCRYPT_HASH_MESSAGE_PARA, byval fDetachedHash as WINBOOL, byval cToBeHashed as DWORD, byval rgpbToBeHashed as const UBYTE ptr ptr, byval rgcbToBeHashed as DWORD ptr, byval pbHashedBlob as UBYTE ptr, byval pcbHashedBlob as DWORD ptr, byval pbComputedHash as UBYTE ptr, byval pcbComputedHash as DWORD ptr) as WINBOOL 4727 declare function CryptVerifyMessageHash(byval pHashPara as PCRYPT_HASH_MESSAGE_PARA, byval pbHashedBlob as UBYTE ptr, byval cbHashedBlob as DWORD, byval pbToBeHashed as UBYTE ptr, byval pcbToBeHashed as DWORD ptr, byval pbComputedHash as UBYTE ptr, byval pcbComputedHash as DWORD ptr) as WINBOOL 4728 declare function CryptVerifyDetachedMessageHash(byval pHashPara as PCRYPT_HASH_MESSAGE_PARA, byval pbDetachedHashBlob as UBYTE ptr, byval cbDetachedHashBlob as DWORD, byval cToBeHashed as DWORD, byval rgpbToBeHashed as const UBYTE ptr ptr, byval rgcbToBeHashed as DWORD ptr, byval pbComputedHash as UBYTE ptr, byval pcbComputedHash as DWORD ptr) as WINBOOL 4729 declare function CryptSignMessageWithKey(byval pSignPara as PCRYPT_KEY_SIGN_MESSAGE_PARA, byval pbToBeSigned as const UBYTE ptr, byval cbToBeSigned as DWORD, byval pbSignedBlob as UBYTE ptr, byval pcbSignedBlob as DWORD ptr) as WINBOOL 4730 declare function CryptVerifyMessageSignatureWithKey(byval pVerifyPara as PCRYPT_KEY_VERIFY_MESSAGE_PARA, byval pPublicKeyInfo as PCERT_PUBLIC_KEY_INFO, byval pbSignedBlob as const UBYTE ptr, byval cbSignedBlob as DWORD, byval pbDecoded as UBYTE ptr, byval pcbDecoded as DWORD ptr) as WINBOOL 4731 declare function CertOpenSystemStoreA(byval hProv as HCRYPTPROV_LEGACY, byval szSubsystemProtocol as LPCSTR) as HCERTSTORE 4732 4733 #ifndef UNICODE 4734 declare function CertOpenSystemStore alias "CertOpenSystemStoreA"(byval hProv as HCRYPTPROV_LEGACY, byval szSubsystemProtocol as LPCSTR) as HCERTSTORE 4735 #endif 4736 4737 declare function CertOpenSystemStoreW(byval hProv as HCRYPTPROV_LEGACY, byval szSubsystemProtocol as LPCWSTR) as HCERTSTORE 4738 4739 #ifdef UNICODE 4740 declare function CertOpenSystemStore alias "CertOpenSystemStoreW"(byval hProv as HCRYPTPROV_LEGACY, byval szSubsystemProtocol as LPCWSTR) as HCERTSTORE 4741 #endif 4742 4743 declare function CertAddEncodedCertificateToSystemStoreA(byval szCertStoreName as LPCSTR, byval pbCertEncoded as const UBYTE ptr, byval cbCertEncoded as DWORD) as WINBOOL 4744 4745 #ifndef UNICODE 4746 declare function CertAddEncodedCertificateToSystemStore alias "CertAddEncodedCertificateToSystemStoreA"(byval szCertStoreName as LPCSTR, byval pbCertEncoded as const UBYTE ptr, byval cbCertEncoded as DWORD) as WINBOOL 4747 #endif 4748 4749 declare function CertAddEncodedCertificateToSystemStoreW(byval szCertStoreName as LPCWSTR, byval pbCertEncoded as const UBYTE ptr, byval cbCertEncoded as DWORD) as WINBOOL 4750 4751 #ifdef UNICODE 4752 declare function CertAddEncodedCertificateToSystemStore alias "CertAddEncodedCertificateToSystemStoreW"(byval szCertStoreName as LPCWSTR, byval pbCertEncoded as const UBYTE ptr, byval cbCertEncoded as DWORD) as WINBOOL 4753 #endif 4754 4755 declare function FindCertsByIssuer(byval pCertChains as PCERT_CHAIN, byval pcbCertChains as DWORD ptr, byval pcCertChains as DWORD ptr, byval pbEncodedIssuerName as UBYTE ptr, byval cbEncodedIssuerName as DWORD, byval pwszPurpose as LPCWSTR, byval dwKeySpec as DWORD) as HRESULT 4756 declare function CryptQueryObject(byval dwObjectType as DWORD, byval pvObject as const any ptr, byval dwExpectedContentTypeFlags as DWORD, byval dwExpectedFormatTypeFlags as DWORD, byval dwFlags as DWORD, byval pdwMsgAndCertEncodingType as DWORD ptr, byval pdwContentType as DWORD ptr, byval pdwFormatType as DWORD ptr, byval phCertStore as HCERTSTORE ptr, byval phMsg as HCRYPTMSG ptr, byval ppvContext as const any ptr ptr) as WINBOOL 4757 const CERT_QUERY_OBJECT_FILE = &h1 4758 const CERT_QUERY_OBJECT_BLOB = &h2 4759 const CERT_QUERY_CONTENT_CERT = 1 4760 const CERT_QUERY_CONTENT_CTL = 2 4761 const CERT_QUERY_CONTENT_CRL = 3 4762 const CERT_QUERY_CONTENT_SERIALIZED_STORE = 4 4763 const CERT_QUERY_CONTENT_SERIALIZED_CERT = 5 4764 const CERT_QUERY_CONTENT_SERIALIZED_CTL = 6 4765 const CERT_QUERY_CONTENT_SERIALIZED_CRL = 7 4766 const CERT_QUERY_CONTENT_PKCS7_SIGNED = 8 4767 const CERT_QUERY_CONTENT_PKCS7_UNSIGNED = 9 4768 const CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED = 10 4769 const CERT_QUERY_CONTENT_PKCS10 = 11 4770 const CERT_QUERY_CONTENT_PFX = 12 4771 const CERT_QUERY_CONTENT_CERT_PAIR = 13 4772 const CERT_QUERY_CONTENT_PFX_AND_LOAD = 14 4773 const CERT_QUERY_CONTENT_FLAG_CERT = 1 shl CERT_QUERY_CONTENT_CERT 4774 const CERT_QUERY_CONTENT_FLAG_CTL = 1 shl CERT_QUERY_CONTENT_CTL 4775 const CERT_QUERY_CONTENT_FLAG_CRL = 1 shl CERT_QUERY_CONTENT_CRL 4776 const CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE = 1 shl CERT_QUERY_CONTENT_SERIALIZED_STORE 4777 const CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT = 1 shl CERT_QUERY_CONTENT_SERIALIZED_CERT 4778 const CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL = 1 shl CERT_QUERY_CONTENT_SERIALIZED_CTL 4779 const CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL = 1 shl CERT_QUERY_CONTENT_SERIALIZED_CRL 4780 const CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED = 1 shl CERT_QUERY_CONTENT_PKCS7_SIGNED 4781 const CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED = 1 shl CERT_QUERY_CONTENT_PKCS7_UNSIGNED 4782 const CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = 1 shl CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 4783 const CERT_QUERY_CONTENT_FLAG_PKCS10 = 1 shl CERT_QUERY_CONTENT_PKCS10 4784 const CERT_QUERY_CONTENT_FLAG_PFX = 1 shl CERT_QUERY_CONTENT_PFX 4785 const CERT_QUERY_CONTENT_FLAG_CERT_PAIR = 1 shl CERT_QUERY_CONTENT_CERT_PAIR 4786 const CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD = 1 shl CERT_QUERY_CONTENT_PFX_AND_LOAD 4787 const CERT_QUERY_CONTENT_FLAG_ALL = (((((((((((CERT_QUERY_CONTENT_FLAG_CERT or CERT_QUERY_CONTENT_FLAG_CTL) or CERT_QUERY_CONTENT_FLAG_CRL) or CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE) or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT) or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL) or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL) or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED) or CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED) or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED) or CERT_QUERY_CONTENT_FLAG_PKCS10) or CERT_QUERY_CONTENT_FLAG_PFX) or CERT_QUERY_CONTENT_FLAG_CERT_PAIR 4788 const CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT = (((CERT_QUERY_CONTENT_FLAG_CERT or CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE) or CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT) or CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED) or CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED 4789 const CERT_QUERY_FORMAT_BINARY = 1 4790 const CERT_QUERY_FORMAT_BASE64_ENCODED = 2 4791 const CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED = 3 4792 const CERT_QUERY_FORMAT_FLAG_BINARY = 1 shl CERT_QUERY_FORMAT_BINARY 4793 const CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED = 1 shl CERT_QUERY_FORMAT_BASE64_ENCODED 4794 const CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = 1 shl CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 4795 const CERT_QUERY_FORMAT_FLAG_ALL = (CERT_QUERY_FORMAT_FLAG_BINARY or CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED) or CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED 4796 4797 type HCRYPTASYNC as HANDLE 4798 type PHCRYPTASYNC as HANDLE ptr 4799 type PFN_CRYPT_ASYNC_PARAM_FREE_FUNC as sub(byval pszParamOid as LPSTR, byval pvParam as LPVOID) 4800 4801 declare function CryptMemAlloc(byval cbSize as ULONG) as LPVOID 4802 declare function CryptMemRealloc(byval pv as LPVOID, byval cbSize as ULONG) as LPVOID 4803 declare sub CryptMemFree(byval pv as LPVOID) 4804 declare function CryptCreateAsyncHandle(byval dwFlags as DWORD, byval phAsync as PHCRYPTASYNC) as WINBOOL 4805 declare function CryptSetAsyncParam(byval hAsync as HCRYPTASYNC, byval pszParamOid as LPSTR, byval pvParam as LPVOID, byval pfnFree as PFN_CRYPT_ASYNC_PARAM_FREE_FUNC) as WINBOOL 4806 declare function CryptGetAsyncParam(byval hAsync as HCRYPTASYNC, byval pszParamOid as LPSTR, byval ppvParam as LPVOID ptr, byval ppfnFree as PFN_CRYPT_ASYNC_PARAM_FREE_FUNC ptr) as WINBOOL 4807 declare function CryptCloseAsyncHandle(byval hAsync as HCRYPTASYNC) as WINBOOL 4808 4809 type _CRYPT_BLOB_ARRAY 4810 cBlob as DWORD 4811 rgBlob as PCRYPT_DATA_BLOB 4812 end type 4813 4814 type CRYPT_BLOB_ARRAY as _CRYPT_BLOB_ARRAY 4815 type PCRYPT_BLOB_ARRAY as _CRYPT_BLOB_ARRAY ptr 4816 4817 type _CRYPT_CREDENTIALS 4818 cbSize as DWORD 4819 pszCredentialsOid as LPCSTR 4820 pvCredentials as LPVOID 4821 end type 4822 4823 type CRYPT_CREDENTIALS as _CRYPT_CREDENTIALS 4824 type PCRYPT_CREDENTIALS as _CRYPT_CREDENTIALS ptr 4825 const CREDENTIAL_OID_PASSWORD_CREDENTIALS_A = cast(LPCSTR, 1) 4826 const CREDENTIAL_OID_PASSWORD_CREDENTIALS_W = cast(LPCSTR, 2) 4827 4828 #ifdef UNICODE 4829 const CREDENTIAL_OID_PASSWORD_CREDENTIALS = CREDENTIAL_OID_PASSWORD_CREDENTIALS_W 4830 #else 4831 const CREDENTIAL_OID_PASSWORD_CREDENTIALS = CREDENTIAL_OID_PASSWORD_CREDENTIALS_A 4832 #endif 4833 4834 type _CRYPT_PASSWORD_CREDENTIALSA 4835 cbSize as DWORD 4836 pszUsername as LPSTR 4837 pszPassword as LPSTR 4838 end type 4839 4840 type CRYPT_PASSWORD_CREDENTIALSA as _CRYPT_PASSWORD_CREDENTIALSA 4841 type PCRYPT_PASSWORD_CREDENTIALSA as _CRYPT_PASSWORD_CREDENTIALSA ptr 4842 4843 type _CRYPT_PASSWORD_CREDENTIALSW 4844 cbSize as DWORD 4845 pszUsername as LPWSTR 4846 pszPassword as LPWSTR 4847 end type 4848 4849 type CRYPT_PASSWORD_CREDENTIALSW as _CRYPT_PASSWORD_CREDENTIALSW 4850 type PCRYPT_PASSWORD_CREDENTIALSW as _CRYPT_PASSWORD_CREDENTIALSW ptr 4851 4852 #ifdef UNICODE 4853 type CRYPT_PASSWORD_CREDENTIALS as CRYPT_PASSWORD_CREDENTIALSW 4854 type PCRYPT_PASSWORD_CREDENTIALS as PCRYPT_PASSWORD_CREDENTIALSW 4855 #else 4856 type CRYPT_PASSWORD_CREDENTIALS as CRYPT_PASSWORD_CREDENTIALSA 4857 type PCRYPT_PASSWORD_CREDENTIALS as PCRYPT_PASSWORD_CREDENTIALSA 4858 #endif 4859 4860 #define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC "SchemeDllRetrieveEncodedObject" 4861 #define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC "SchemeDllRetrieveEncodedObjectW" 4862 #define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC "ContextDllCreateObjectContext" 4863 type PFN_FREE_ENCODED_OBJECT_FUNC as sub(byval pszObjectOid as LPCSTR, byval pObject as PCRYPT_BLOB_ARRAY, byval pvFreeContext as LPVOID) 4864 const CONTEXT_OID_CERTIFICATE = cast(LPCSTR, 1) 4865 const CONTEXT_OID_CRL = cast(LPCSTR, 2) 4866 const CONTEXT_OID_CTL = cast(LPCSTR, 3) 4867 const CONTEXT_OID_PKCS7 = cast(LPCSTR, 4) 4868 const CONTEXT_OID_CAPI2_ANY = cast(LPCSTR, 5) 4869 const CONTEXT_OID_OCSP_RESP = cast(LPCSTR, 6) 4870 const CRYPT_RETRIEVE_MULTIPLE_OBJECTS = &h1 4871 const CRYPT_CACHE_ONLY_RETRIEVAL = &h2 4872 const CRYPT_WIRE_ONLY_RETRIEVAL = &h4 4873 const CRYPT_DONT_CACHE_RESULT = &h8 4874 const CRYPT_ASYNC_RETRIEVAL = &h10 4875 const CRYPT_VERIFY_CONTEXT_SIGNATURE = &h20 4876 const CRYPT_VERIFY_DATA_HASH = &h40 4877 const CRYPT_KEEP_TIME_VALID = &h80 4878 const CRYPT_DONT_VERIFY_SIGNATURE = &h100 4879 const CRYPT_DONT_CHECK_TIME_VALIDITY = &h200 4880 const CRYPT_CHECK_FRESHNESS_TIME_VALIDITY = &h400 4881 const CRYPT_ACCUMULATIVE_TIMEOUT = &h800 4882 const CRYPT_STICKY_CACHE_RETRIEVAL = &h1000 4883 const CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL = &h2000 4884 const CRYPT_OFFLINE_CHECK_RETRIEVAL = &h4000 4885 const CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE = &h8000 4886 const CRYPT_LDAP_SIGN_RETRIEVAL = &h10000 4887 const CRYPT_NO_AUTH_RETRIEVAL = &h20000 4888 const CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL = &h40000 4889 const CRYPT_AIA_RETRIEVAL = &h80000 4890 const CRYPT_HTTP_POST_RETRIEVAL = &h100000 4891 const CRYPT_PROXY_CACHE_RETRIEVAL = &h200000 4892 const CRYPT_NOT_MODIFIED_RETRIEVAL = &h400000 4893 const CRYPT_ENABLE_SSL_REVOCATION_RETRIEVAL = &h800000 4894 const CRYPT_OCSP_ONLY_RETRIEVAL = &h1000000 4895 const CRYPT_NO_OCSP_FAILOVER_TO_CRL_RETRIEVAL = &h2000000 4896 const CRYPT_RANDOM_QUERY_STRING_RETRIEVAL = &h4000000 4897 4898 type _CRYPTNET_URL_CACHE_PRE_FETCH_INFO 4899 cbSize as DWORD 4900 dwObjectType as DWORD 4901 dwError as DWORD 4902 dwReserved as DWORD 4903 ThisUpdateTime as FILETIME 4904 NextUpdateTime as FILETIME 4905 PublishTime as FILETIME 4906 end type 4907 4908 type CRYPTNET_URL_CACHE_PRE_FETCH_INFO as _CRYPTNET_URL_CACHE_PRE_FETCH_INFO 4909 type PCRYPTNET_URL_CACHE_PRE_FETCH_INFO as _CRYPTNET_URL_CACHE_PRE_FETCH_INFO ptr 4910 const CRYPTNET_URL_CACHE_PRE_FETCH_NONE = 0 4911 const CRYPTNET_URL_CACHE_PRE_FETCH_BLOB = 1 4912 const CRYPTNET_URL_CACHE_PRE_FETCH_CRL = 2 4913 const CRYPTNET_URL_CACHE_PRE_FETCH_OCSP = 3 4914 const CRYPTNET_URL_CACHE_PRE_FETCH_AUTOROOT_CAB = 5 4915 const CRYPTNET_URL_CACHE_PRE_FETCH_DISALLOWED_CERT_CAB = 6 4916 4917 type _CRYPTNET_URL_CACHE_FLUSH_INFO 4918 cbSize as DWORD 4919 dwExemptSeconds as DWORD 4920 ExpireTime as FILETIME 4921 end type 4922 4923 type CRYPTNET_URL_CACHE_FLUSH_INFO as _CRYPTNET_URL_CACHE_FLUSH_INFO 4924 type PCRYPTNET_URL_CACHE_FLUSH_INFO as _CRYPTNET_URL_CACHE_FLUSH_INFO ptr 4925 const CRYPTNET_URL_CACHE_DEFAULT_FLUSH = 0 4926 const CRYPTNET_URL_CACHE_DISABLE_FLUSH = &hffffffff 4927 4928 type _CRYPTNET_URL_CACHE_RESPONSE_INFO 4929 cbSize as DWORD 4930 wResponseType as WORD 4931 wResponseFlags as WORD 4932 LastModifiedTime as FILETIME 4933 dwMaxAge as DWORD 4934 pwszETag as LPCWSTR 4935 dwProxyId as DWORD 4936 end type 4937 4938 type CRYPTNET_URL_CACHE_RESPONSE_INFO as _CRYPTNET_URL_CACHE_RESPONSE_INFO 4939 type PCRYPTNET_URL_CACHE_RESPONSE_INFO as _CRYPTNET_URL_CACHE_RESPONSE_INFO ptr 4940 const CRYPTNET_URL_CACHE_RESPONSE_NONE = 0 4941 const CRYPTNET_URL_CACHE_RESPONSE_HTTP = 1 4942 const CRYPTNET_URL_CACHE_RESPONSE_VALIDATED = &h8000 4943 4944 type _CRYPT_RETRIEVE_AUX_INFO 4945 cbSize as DWORD 4946 pLastSyncTime as FILETIME ptr 4947 dwMaxUrlRetrievalByteCount as DWORD 4948 pPreFetchInfo as PCRYPTNET_URL_CACHE_PRE_FETCH_INFO 4949 pFlushInfo as PCRYPTNET_URL_CACHE_FLUSH_INFO 4950 ppResponseInfo as PCRYPTNET_URL_CACHE_RESPONSE_INFO ptr 4951 pwszCacheFileNamePrefix as LPWSTR 4952 pftCacheResync as LPFILETIME 4953 fProxyCacheRetrieval as WINBOOL 4954 dwHttpStatusCode as DWORD 4955 end type 4956 4957 type CRYPT_RETRIEVE_AUX_INFO as _CRYPT_RETRIEVE_AUX_INFO 4958 type PCRYPT_RETRIEVE_AUX_INFO as _CRYPT_RETRIEVE_AUX_INFO ptr 4959 declare function CryptRetrieveObjectByUrlA(byval pszUrl as LPCSTR, byval pszObjectOid as LPCSTR, byval dwRetrievalFlags as DWORD, byval dwTimeout as DWORD, byval ppvObject as LPVOID ptr, byval hAsyncRetrieve as HCRYPTASYNC, byval pCredentials as PCRYPT_CREDENTIALS, byval pvVerify as LPVOID, byval pAuxInfo as PCRYPT_RETRIEVE_AUX_INFO) as WINBOOL 4960 declare function CryptRetrieveObjectByUrlW(byval pszUrl as LPCWSTR, byval pszObjectOid as LPCSTR, byval dwRetrievalFlags as DWORD, byval dwTimeout as DWORD, byval ppvObject as LPVOID ptr, byval hAsyncRetrieve as HCRYPTASYNC, byval pCredentials as PCRYPT_CREDENTIALS, byval pvVerify as LPVOID, byval pAuxInfo as PCRYPT_RETRIEVE_AUX_INFO) as WINBOOL 4961 4962 #ifdef UNICODE 4963 declare function CryptRetrieveObjectByUrl alias "CryptRetrieveObjectByUrlW"(byval pszUrl as LPCWSTR, byval pszObjectOid as LPCSTR, byval dwRetrievalFlags as DWORD, byval dwTimeout as DWORD, byval ppvObject as LPVOID ptr, byval hAsyncRetrieve as HCRYPTASYNC, byval pCredentials as PCRYPT_CREDENTIALS, byval pvVerify as LPVOID, byval pAuxInfo as PCRYPT_RETRIEVE_AUX_INFO) as WINBOOL 4964 #else 4965 declare function CryptRetrieveObjectByUrl alias "CryptRetrieveObjectByUrlA"(byval pszUrl as LPCSTR, byval pszObjectOid as LPCSTR, byval dwRetrievalFlags as DWORD, byval dwTimeout as DWORD, byval ppvObject as LPVOID ptr, byval hAsyncRetrieve as HCRYPTASYNC, byval pCredentials as PCRYPT_CREDENTIALS, byval pvVerify as LPVOID, byval pAuxInfo as PCRYPT_RETRIEVE_AUX_INFO) as WINBOOL 4966 #endif 4967 4968 type PFN_CRYPT_CANCEL_RETRIEVAL as function(byval dwFlags as DWORD, byval pvArg as any ptr) as WINBOOL 4969 declare function CryptInstallCancelRetrieval(byval pfnCancel as PFN_CRYPT_CANCEL_RETRIEVAL, byval pvArg as const any ptr, byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 4970 declare function CryptUninstallCancelRetrieval(byval dwFlags as DWORD, byval pvReserved as any ptr) as WINBOOL 4971 declare function CryptCancelAsyncRetrieval(byval hAsyncRetrieval as HCRYPTASYNC) as WINBOOL 4972 const CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION = cast(LPCSTR, 1) 4973 type PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC as sub(byval pvCompletion as LPVOID, byval dwCompletionCode as DWORD, byval pszUrl as LPCSTR, byval pszObjectOid as LPSTR, byval pvObject as LPVOID) 4974 4975 type _CRYPT_ASYNC_RETRIEVAL_COMPLETION 4976 pfnCompletion as PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC 4977 pvCompletion as LPVOID 4978 end type 4979 4980 type CRYPT_ASYNC_RETRIEVAL_COMPLETION as _CRYPT_ASYNC_RETRIEVAL_COMPLETION 4981 type PCRYPT_ASYNC_RETRIEVAL_COMPLETION as _CRYPT_ASYNC_RETRIEVAL_COMPLETION ptr 4982 const CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL = cast(LPCSTR, 2) 4983 type PFN_CANCEL_ASYNC_RETRIEVAL_FUNC as function(byval hAsyncRetrieve as HCRYPTASYNC) as WINBOOL 4984 const CRYPT_GET_URL_FROM_PROPERTY = &h1 4985 const CRYPT_GET_URL_FROM_EXTENSION = &h2 4986 const CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE = &h4 4987 const CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE = &h8 4988 4989 type _CRYPT_URL_ARRAY 4990 cUrl as DWORD 4991 rgwszUrl as LPWSTR ptr 4992 end type 4993 4994 type CRYPT_URL_ARRAY as _CRYPT_URL_ARRAY 4995 type PCRYPT_URL_ARRAY as _CRYPT_URL_ARRAY ptr 4996 4997 type _CRYPT_URL_INFO 4998 cbSize as DWORD 4999 dwSyncDeltaTime as DWORD 5000 cGroup as DWORD 5001 rgcGroupEntry as DWORD ptr 5002 end type 5003 5004 type CRYPT_URL_INFO as _CRYPT_URL_INFO 5005 type PCRYPT_URL_INFO as _CRYPT_URL_INFO ptr 5006 declare function CryptGetObjectUrl(byval pszUrlOid as LPCSTR, byval pvPara as LPVOID, byval dwFlags as DWORD, byval pUrlArray as PCRYPT_URL_ARRAY, byval pcbUrlArray as DWORD ptr, byval pUrlInfo as PCRYPT_URL_INFO, byval pcbUrlInfo as DWORD ptr, byval pvReserved as LPVOID) as WINBOOL 5007 #define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl" 5008 const URL_OID_CERTIFICATE_ISSUER = cast(LPCSTR, 1) 5009 const URL_OID_CERTIFICATE_CRL_DIST_POINT = cast(LPCSTR, 2) 5010 const URL_OID_CTL_ISSUER = cast(LPCSTR, 3) 5011 const URL_OID_CTL_NEXT_UPDATE = cast(LPCSTR, 4) 5012 const URL_OID_CRL_ISSUER = cast(LPCSTR, 5) 5013 const URL_OID_CERTIFICATE_FRESHEST_CRL = cast(LPCSTR, 6) 5014 const URL_OID_CRL_FRESHEST_CRL = cast(LPCSTR, 7) 5015 const URL_OID_CROSS_CERT_DIST_POINT = cast(LPCSTR, 8) 5016 const URL_OID_CERTIFICATE_OCSP = cast(LPCSTR, 9) 5017 const URL_OID_CERTIFICATE_OCSP_AND_CRL_DIST_POINT = cast(LPCSTR, 10) 5018 const URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP = cast(LPCSTR, 11) 5019 const URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS = cast(LPCSTR, 12) 5020 const URL_OID_CERTIFICATE_ONLY_OCSP = cast(LPCSTR, 13) 5021 5022 type _CERT_CRL_CONTEXT_PAIR 5023 pCertContext as PCCERT_CONTEXT 5024 pCrlContext as PCCRL_CONTEXT 5025 end type 5026 5027 type CERT_CRL_CONTEXT_PAIR as _CERT_CRL_CONTEXT_PAIR 5028 type PCERT_CRL_CONTEXT_PAIR as _CERT_CRL_CONTEXT_PAIR ptr 5029 type PCCERT_CRL_CONTEXT_PAIR as const CERT_CRL_CONTEXT_PAIR ptr 5030 5031 type _CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO 5032 cbSize as DWORD 5033 iDeltaCrlIndicator as long 5034 pftCacheResync as LPFILETIME 5035 pLastSyncTime as LPFILETIME 5036 pMaxAgeTime as LPFILETIME 5037 pChainPara as PCERT_REVOCATION_CHAIN_PARA 5038 pDeltaCrlIndicator as PCRYPT_INTEGER_BLOB 5039 end type 5040 5041 type CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO as _CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO 5042 type PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO as _CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO ptr 5043 type PFN_CRYPT_ENUM_KEYID_PROP as function(byval pKeyIdentifier as const CRYPT_HASH_BLOB ptr, byval dwFlags as DWORD, byval pvReserved as any ptr, byval pvArg as any ptr, byval cProp as DWORD, byval rgdwPropId as DWORD ptr, byval rgpvData as any ptr ptr, byval rgcbData as DWORD ptr) as WINBOOL 5044 5045 #define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject" 5046 #define CERT_CHAIN_CONFIG_REGPATH wstr(!"Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config") 5047 const TIME_VALID_OID_GET_CTL = cast(LPCSTR, 1) 5048 const TIME_VALID_OID_GET_CRL = cast(LPCSTR, 2) 5049 const TIME_VALID_OID_GET_CRL_FROM_CERT = cast(LPCSTR, 3) 5050 const TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT = cast(LPCSTR, 4) 5051 const TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL = cast(LPCSTR, 5) 5052 #define TIME_VALID_OID_FLUSH_OBJECT_FUNC "TimeValidDllFlushObject" 5053 const TIME_VALID_OID_FLUSH_CTL = cast(LPCSTR, 1) 5054 const TIME_VALID_OID_FLUSH_CRL = cast(LPCSTR, 2) 5055 const TIME_VALID_OID_FLUSH_CRL_FROM_CERT = cast(LPCSTR, 3) 5056 const TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT = cast(LPCSTR, 4) 5057 const TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL = cast(LPCSTR, 5) 5058 const CERT_CREATE_SELFSIGN_NO_SIGN = 1 5059 const CERT_CREATE_SELFSIGN_NO_KEY_INFO = 2 5060 const CRYPT_KEYID_DELETE_FLAG = &h10 5061 const CRYPT_KEYID_MACHINE_FLAG = &h20 5062 const CRYPT_KEYID_SET_NEW_FLAG = &h2000 5063 const CRYPT_KEYID_ALLOC_FLAG = &h8000 5064 5065 declare function CryptGetTimeValidObject(byval pszTimeValidOid as LPCSTR, byval pvPara as LPVOID, byval pIssuer as PCCERT_CONTEXT, byval pftValidFor as LPFILETIME, byval dwFlags as DWORD, byval dwTimeout as DWORD, byval ppvObject as LPVOID ptr, byval pCredentials as PCRYPT_CREDENTIALS, byval pExtraInfo as PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO) as WINBOOL 5066 declare function CryptFlushTimeValidObject(byval pszFlushTimeValidOid as LPCSTR, byval pvPara as LPVOID, byval pIssuer as PCCERT_CONTEXT, byval dwFlags as DWORD, byval pvReserved as LPVOID) as WINBOOL 5067 declare function CertCreateSelfSignCertificate(byval hCryptProvOrNCryptKey as HCRYPTPROV_OR_NCRYPT_KEY_HANDLE, byval pSubjectIssuerBlob as PCERT_NAME_BLOB, byval dwFlags as DWORD, byval pKeyProvInfo as PCRYPT_KEY_PROV_INFO, byval pSignatureAlgorithm as PCRYPT_ALGORITHM_IDENTIFIER, byval pStartTime as PSYSTEMTIME, byval pEndTime as PSYSTEMTIME, byval pExtensions as PCERT_EXTENSIONS) as PCCERT_CONTEXT 5068 declare function CryptGetKeyIdentifierProperty(byval pKeyIdentifier as const CRYPT_HASH_BLOB ptr, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pwszComputerName as LPCWSTR, byval pvReserved as any ptr, byval pvData as any ptr, byval pcbData as DWORD ptr) as WINBOOL 5069 declare function CryptSetKeyIdentifierProperty(byval pKeyIdentifier as const CRYPT_HASH_BLOB ptr, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pwszComputerName as LPCWSTR, byval pvReserved as any ptr, byval pvData as const any ptr) as WINBOOL 5070 declare function CryptEnumKeyIdentifierProperties(byval pKeyIdentifier as const CRYPT_HASH_BLOB ptr, byval dwPropId as DWORD, byval dwFlags as DWORD, byval pwszComputerName as LPCWSTR, byval pvReserved as any ptr, byval pvArg as any ptr, byval pfnEnum as PFN_CRYPT_ENUM_KEYID_PROP) as WINBOOL 5071 declare function CryptCreateKeyIdentifierFromCSP(byval dwCertEncodingType as DWORD, byval pszPubKeyOID as LPCSTR, byval pPubKeyStruc as const PUBLICKEYSTRUC ptr, byval cbPubKeyStruc as DWORD, byval dwFlags as DWORD, byval pvReserved as any ptr, byval pbHash as UBYTE ptr, byval pcbHash as DWORD ptr) as WINBOOL 5072 5073 #define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME wstr("MaxUrlRetrievalByteCount") 5074 const CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT = (100 * 1024) * 1024 5075 #define CERT_CHAIN_CACHE_RESYNC_FILETIME_VALUE_NAME wstr("ChainCacheResyncFiletime") 5076 #define CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME wstr("DisableMandatoryBasicConstraints") 5077 #define CERT_CHAIN_DISABLE_CA_NAME_CONSTRAINTS_VALUE_NAME wstr("DisableCANameConstraints") 5078 #define CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME wstr("DisableUnsupportedCriticalExtensions") 5079 #define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME wstr("MaxAIAUrlCountInCert") 5080 const CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_DEFAULT = 5 5081 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME wstr("MaxAIAUrlRetrievalCountPerChain") 5082 const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_DEFAULT = 3 5083 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME wstr("MaxAIAUrlRetrievalByteCount") 5084 const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_DEFAULT = 100000 5085 #define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME wstr("MaxAIAUrlRetrievalCertCount") 5086 const CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT = 10 5087 #define CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME wstr("OcspValiditySeconds") 5088 const CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT = (12 * 60) * 60 5089 #define CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME wstr("EnableWeakSignatureFlags") 5090 const CERT_CHAIN_ENABLE_MD2_MD4_FLAG = &h1 5091 const CERT_CHAIN_ENABLE_WEAK_RSA_ROOT_FLAG = &h2 5092 const CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG = &h4 5093 const CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG = &h8 5094 #define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME wstr("MinRsaPubKeyBitLength") 5095 const CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DEFAULT = 1023 5096 const CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DISABLE = &hffffffff 5097 #define CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_VALUE_NAME wstr("WeakRsaPubKeyTime") 5098 const CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_DEFAULT = &h01ca8a755c6e0000ull 5099 #define CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME wstr("WeakSignatureLogDir") 5100 #define CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME wstr("SrvOcspRespMinValiditySeconds") 5101 const CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_DEFAULT = 10 * 60 5102 #define CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME wstr("SrvOcspRespUrlRetrievalTimeoutMilliseconds") 5103 const CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT = 15 * 1000 5104 #define CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME wstr("SrvOcspRespMaxBeforeNextUpdateSeconds") 5105 const CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT = (4 * 60) * 60 5106 #define CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME wstr("SrvOcspRespMinBeforeNextUpdateSeconds") 5107 const CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT = 2 * 60 5108 #define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME wstr("SrvOcspRespMinAfterNextUpdateSeconds") 5109 const CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT = 1 * 60 5110 #define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME wstr("CryptnetMaxCachedOcspPerCrlCount") 5111 const CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT = 500 5112 const CRYPTNET_OCSP_AFTER_CRL_DISABLE = &hffffffff 5113 #define CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME wstr("CryptnetDefaultFlushExemptSeconds") 5114 const CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_DEFAULT = ((28 * 24) * 60) * 60 5115 #define CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME wstr("CryptnetPreFetchMinMaxAgeSeconds") 5116 const CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_DEFAULT = (1 * 60) * 60 5117 #define CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME wstr("CryptnetPreFetchMaxMaxAgeSeconds") 5118 const CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_DEFAULT = ((14 * 24) * 60) * 60 5119 #define CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME wstr("CryptnetPreFetchMinOcspValidityPeriodSeconds") 5120 const CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_DEFAULT = ((14 * 24) * 60) * 60 5121 #define CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME wstr("CryptnetPreFetchAfterPublishPreFetchDivisor") 5122 const CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_DEFAULT = 10 5123 #define CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME wstr("CryptnetPreFetchBeforeNextUpdatePreFetchDivisor") 5124 const CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT = 20 5125 #define CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME wstr("CryptnetPreFetchMinBeforeNextUpdatePreFetchSeconds") 5126 const CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT = (1 * 60) * 60 5127 #define CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME wstr("CryptnetPreFetchValidityPeriodAfterNextUpdatePreFetchDivisor") 5128 const CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT = 10 5129 #define CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME wstr("CryptnetPreFetchMaxAfterNextUpdatePreFetchPeriodSeconds") 5130 const CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT = (4 * 60) * 60 5131 #define CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME wstr("CryptnetPreFetchMinAfterNextUpdatePreFetchPeriodSeconds") 5132 const CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT = 30 * 60 5133 #define CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME wstr("CryptnetPreFetchAfterCurrentTimePreFetchPeriodSeconds") 5134 const CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_DEFAULT = 30 * 60 5135 #define CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME wstr("CryptnetPreFetchTriggerPeriodSeconds") 5136 const CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_DEFAULT = 10 * 60 5137 const CRYPTNET_PRE_FETCH_TRIGGER_DISABLE = &hffffffff 5138 #define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME wstr("CryptnetPreFetchScanAfterTriggerDelaySeconds") 5139 const CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT = 30 5140 #define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME wstr("CryptnetPreFetchRetrievalTimeoutSeconds") 5141 const CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT = 5 * 60 5142 #define CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH wstr(!"\\ChainEngine\\Config") 5143 #define CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME wstr("ChainUrlRetrievalTimeoutMilliseconds") 5144 const CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT = 15 * 1000 5145 #define CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME wstr("ChainRevAccumulativeUrlRetrievalTimeoutMilliseconds") 5146 const CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT = 20 * 1000 5147 #define CERT_RETR_BEHAVIOR_INET_AUTH_VALUE_NAME wstr("EnableInetUnknownAuth") 5148 #define CERT_RETR_BEHAVIOR_INET_STATUS_VALUE_NAME wstr("EnableInetLocal") 5149 #define CERT_RETR_BEHAVIOR_FILE_VALUE_NAME wstr("AllowFileUrlScheme") 5150 #define CERT_RETR_BEHAVIOR_LDAP_VALUE_NAME wstr("DisableLDAPSignAndEncrypt") 5151 #define CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME wstr("CryptnetCachedOcspSwitchToCrlCount") 5152 const CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_DEFAULT = 50 5153 const CRYPTNET_CRL_BEFORE_OCSP_ENABLE = &hffffffff 5154 #define CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME wstr("DisableAIAUrlRetrieval") 5155 #define CERT_CHAIN_OPTIONS_VALUE_NAME wstr("Options") 5156 const CERT_CHAIN_OPTION_DISABLE_AIA_URL_RETRIEVAL = &h2 5157 const CERT_CHAIN_OPTION_ENABLE_SIA_URL_RETRIEVAL = &h4 5158 #define CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME wstr("CrossCertDownloadIntervalHours") 5159 const CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_DEFAULT = 24 * 7 5160 #define CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_VALUE_NAME wstr("CRLValidityExtensionPeriod") 5161 const CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_DEFAULT = 12 5162 #define HCCE_CURRENT_USER cast(HCERTCHAINENGINE, NULL) 5163 #define HCCE_LOCAL_MACHINE cast(HCERTCHAINENGINE, &h1) 5164 const CERT_CHAIN_CACHE_END_CERT = &h1 5165 const CERT_CHAIN_THREAD_STORE_SYNC = &h2 5166 const CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL = &h4 5167 const CERT_CHAIN_USE_LOCAL_MACHINE_STORE = &h8 5168 const CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE = &h10 5169 const CERT_CHAIN_ENABLE_SHARE_STORE = &h20 5170 type HCERTCHAINENGINE as HANDLE 5171 5172 type _CERT_CHAIN_ENGINE_CONFIG 5173 cbSize as DWORD 5174 hRestrictedRoot as HCERTSTORE 5175 hRestrictedTrust as HCERTSTORE 5176 hRestrictedOther as HCERTSTORE 5177 cAdditionalStore as DWORD 5178 rghAdditionalStore as HCERTSTORE ptr 5179 dwFlags as DWORD 5180 dwUrlRetrievalTimeout as DWORD 5181 MaximumCachedCertificates as DWORD 5182 CycleDetectionModulus as DWORD 5183 5184 #if _WIN32_WINNT >= &h0601 5185 hExclusiveRoot as HCERTSTORE 5186 hExclusiveTrustedPeople as HCERTSTORE 5187 #endif 5188 5189 #if _WIN32_WINNT = &h0602 5190 dwExclusiveFlags as DWORD 5191 #endif 5192 end type 5193 5194 type CERT_CHAIN_ENGINE_CONFIG as _CERT_CHAIN_ENGINE_CONFIG 5195 type PCERT_CHAIN_ENGINE_CONFIG as _CERT_CHAIN_ENGINE_CONFIG ptr 5196 5197 #if _WIN32_WINNT = &h0602 5198 const CERT_CHAIN_EXCLUSIVE_ENABLE_CA_FLAG = &h1 5199 #endif 5200 5201 declare function CertCreateCertificateChainEngine(byval pConfig as PCERT_CHAIN_ENGINE_CONFIG, byval phChainEngine as HCERTCHAINENGINE ptr) as WINBOOL 5202 declare sub CertFreeCertificateChainEngine(byval hChainEngine as HCERTCHAINENGINE) 5203 declare function CertResyncCertificateChainEngine(byval hChainEngine as HCERTCHAINENGINE) as WINBOOL 5204 5205 type _CERT_TRUST_STATUS 5206 dwErrorStatus as DWORD 5207 <