File Annotation

Not logged in
4e2933c620 2015-04-21        kinaba: /***********************************************************************\
4e2933c620 2015-04-21        kinaba: *                               wincrypt.d                              *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                       Windows API header module                       *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                 Translated from MinGW Windows headers                 *
4e2933c620 2015-04-21        kinaba: *                           by Stewart Gordon                           *
4e2933c620 2015-04-21        kinaba: *                                                                       *
4e2933c620 2015-04-21        kinaba: *                       Placed into public domain                       *
4e2933c620 2015-04-21        kinaba: \***********************************************************************/
4e2933c620 2015-04-21        kinaba: module win32.wincrypt;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: private import win32.w32api, win32.winbase, win32.windef;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* FIXME:
4e2933c620 2015-04-21        kinaba:  *	Types of some constants
4e2933c620 2015-04-21        kinaba:  *	Types of macros
4e2933c620 2015-04-21        kinaba:  *	Inits of various "size" and "version" members
4e2933c620 2015-04-21        kinaba:  *	Why are some #ifdefs commented out?
4e2933c620 2015-04-21        kinaba:  */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: const TCHAR[]
4e2933c620 2015-04-21        kinaba: 	MS_DEF_PROV = "Microsoft Base Cryptographic Provider v1.0",
4e2933c620 2015-04-21        kinaba: 	MS_ENHANCED_PROV = "Microsoft Enhanced Cryptographic Provider v1.0",
4e2933c620 2015-04-21        kinaba: 	MS_STRONG_PROV = "Microsoft Strong Cryptographic Provider",
4e2933c620 2015-04-21        kinaba: 	MS_DEF_RSA_SIG_PROV = "Microsoft RSA Signature Cryptographic Provider",
4e2933c620 2015-04-21        kinaba: 	MS_DEF_RSA_SCHANNEL_PROV = "Microsoft RSA SChannel Cryptographic Provider",
4e2933c620 2015-04-21        kinaba: 	MS_DEF_DSS_PROV = "Microsoft Base DSS Cryptographic Provider",
4e2933c620 2015-04-21        kinaba: 	MS_DEF_DSS_DH_PROV
4e2933c620 2015-04-21        kinaba: 	  = "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider",
4e2933c620 2015-04-21        kinaba: 	MS_ENH_DSS_DH_PROV
4e2933c620 2015-04-21        kinaba: 	  = "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider",
4e2933c620 2015-04-21        kinaba: 	MS_DEF_DH_SCHANNEL_PROV = "Microsoft DH SChannel Cryptographic Provider",
4e2933c620 2015-04-21        kinaba: 	MS_SCARD_PROV = "Microsoft Base Smart Card Crypto Provider";
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: static if (WINVER > 0x501) {
4e2933c620 2015-04-21        kinaba: 	const TCHAR[] MS_ENH_RSA_AES_PROV
4e2933c620 2015-04-21        kinaba: 	  = "Microsoft Enhanced RSA and AES Cryptographic Provider";
4e2933c620 2015-04-21        kinaba: } else static if (WINVER == 0x501) {
4e2933c620 2015-04-21        kinaba: 	const TCHAR[] MS_ENH_RSA_AES_PROV
4e2933c620 2015-04-21        kinaba: 	  = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: ALG_ID GET_ALG_CLASS(ALG_ID x) { return x & 0xE000; }
4e2933c620 2015-04-21        kinaba: ALG_ID GET_ALG_TYPE (ALG_ID x) { return x & 0x1E00; }
4e2933c620 2015-04-21        kinaba: ALG_ID GET_ALG_SID  (ALG_ID x) { return x & 0x01FF; }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : ALG_ID {
4e2933c620 2015-04-21        kinaba: 	ALG_CLASS_ANY           = 0,
4e2933c620 2015-04-21        kinaba: 	ALG_CLASS_SIGNATURE     = 0x2000,
4e2933c620 2015-04-21        kinaba: 	ALG_CLASS_MSG_ENCRYPT   = 0x4000,
4e2933c620 2015-04-21        kinaba: 	ALG_CLASS_DATA_ENCRYPT  = 0x6000,
4e2933c620 2015-04-21        kinaba: 	ALG_CLASS_HASH          = 0x8000,
4e2933c620 2015-04-21        kinaba: 	ALG_CLASS_KEY_EXCHANGE  = 0xA000,
4e2933c620 2015-04-21        kinaba: 	ALG_CLASS_ALL           = 0xE000
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : ALG_ID {
4e2933c620 2015-04-21        kinaba: 	ALG_TYPE_ANY           = 0,
4e2933c620 2015-04-21        kinaba: 	ALG_TYPE_DSS           = 0x0200,
4e2933c620 2015-04-21        kinaba: 	ALG_TYPE_RSA           = 0x0400,
4e2933c620 2015-04-21        kinaba: 	ALG_TYPE_BLOCK         = 0x0600,
4e2933c620 2015-04-21        kinaba: 	ALG_TYPE_STREAM        = 0x0800,
4e2933c620 2015-04-21        kinaba: 	ALG_TYPE_DH            = 0x0A00,
4e2933c620 2015-04-21        kinaba: 	ALG_TYPE_SECURECHANNEL = 0x0C00
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : ALG_ID {
4e2933c620 2015-04-21        kinaba: 	ALG_SID_ANY          =  0,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RSA_ANY      =  0,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RSA_PKCS,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RSA_MSATWORK,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RSA_ENTRUST,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RSA_PGP,  // =  4
4e2933c620 2015-04-21        kinaba: 	ALG_SID_DSS_ANY      =  0,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_DSS_PKCS,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_DSS_DMS,  // =  2
4e2933c620 2015-04-21        kinaba: 	ALG_SID_DES          =  1,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_3DES         =  3,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_DESX,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_IDEA,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_CAST,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_SAFERSK64,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_SAFERSK128,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_3DES_112,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_SKIPJACK,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_TEK,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_CYLINK_MEK,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RC5,      // = 13
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RC2          =  2,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RC4          =  1,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_SEAL         =  2,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_MD2          =  1,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_MD4,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_MD5,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_SHA,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_MAC,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RIPEMD,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_RIPEMD160,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_SSL3SHAMD5,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_HMAC,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_TLS1PRF,  // = 10
4e2933c620 2015-04-21        kinaba: 	ALG_SID_AES_128      = 14,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_AES_192,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_AES_256,
4e2933c620 2015-04-21        kinaba: 	ALG_SID_AES,      // = 17
4e2933c620 2015-04-21        kinaba: 	ALG_SID_EXAMPLE      = 80
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: enum : ALG_ID {
4e2933c620 2015-04-21        kinaba: 	CALG_MD2        = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2,
4e2933c620 2015-04-21        kinaba: 	CALG_MD4        = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4,
4e2933c620 2015-04-21        kinaba: 	CALG_MD5        = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5,
4e2933c620 2015-04-21        kinaba: 	CALG_SHA        = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA,
4e2933c620 2015-04-21        kinaba: 	CALG_SHA1       = CALG_SHA,
4e2933c620 2015-04-21        kinaba: 	CALG_MAC        = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC,
4e2933c620 2015-04-21        kinaba: 	CALG_3DES       = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 3,
4e2933c620 2015-04-21        kinaba: 	CALG_CYLINK_MEK = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 12,
4e2933c620 2015-04-21        kinaba: 	CALG_SKIPJACK   = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | 10,
4e2933c620 2015-04-21        kinaba: 	CALG_KEA_KEYX   = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS | 4,
4e2933c620 2015-04-21        kinaba: 	CALG_RSA_SIGN   = ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY,
4e2933c620 2015-04-21        kinaba: 	CALG_DSS_SIGN   = ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY,
4e2933c620 2015-04-21        kinaba: 	CALG_RSA_KEYX   = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY,
4e2933c620 2015-04-21        kinaba: 	CALG_DES        = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES,
4e2933c620 2015-04-21        kinaba: 	CALG_RC2        = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2,
4e2933c620 2015-04-21        kinaba: 	CALG_RC4        = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_RC4,
4e2933c620 2015-04-21        kinaba: 	CALG_SEAL       = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_STREAM | ALG_SID_SEAL,
4e2933c620 2015-04-21        kinaba: 	CALG_DH_EPHEM   = ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_STREAM | ALG_TYPE_DSS
4e2933c620 2015-04-21        kinaba: 	                  | ALG_SID_DSS_DMS,
4e2933c620 2015-04-21        kinaba: 	CALG_DESX       = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DESX,
4e2933c620 2015-04-21        kinaba: // is undefined ALG_CLASS_DHASH in MinGW - presuming typo
4e2933c620 2015-04-21        kinaba: 	CALG_TLS1PRF    = ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF,
4e2933c620 2015-04-21        kinaba: 	CALG_AES_128    = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_128,
4e2933c620 2015-04-21        kinaba: 	CALG_AES_192    = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_192,
4e2933c620 2015-04-21        kinaba: 	CALG_AES_256    = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES_256,
4e2933c620 2015-04-21        kinaba: 	CALG_AES        = ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_AES,
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /+
4e2933c620 2015-04-21        kinaba: #define CRYPT_VERIFYCONTEXT 0xF0000000
4e2933c620 2015-04-21        kinaba: #define CRYPT_NEWKEYSET 8
4e2933c620 2015-04-21        kinaba: #define CRYPT_DELETEKEYSET 16
4e2933c620 2015-04-21        kinaba: #define CRYPT_MACHINE_KEYSET 32
4e2933c620 2015-04-21        kinaba: #define CRYPT_SILENT 64
4e2933c620 2015-04-21        kinaba: #define CRYPT_EXPORTABLE 1
4e2933c620 2015-04-21        kinaba: #define CRYPT_USER_PROTECTED 2
4e2933c620 2015-04-21        kinaba: #define CRYPT_CREATE_SALT 4
4e2933c620 2015-04-21        kinaba: #define CRYPT_UPDATE_KEY 8
4e2933c620 2015-04-21        kinaba: #define SIMPLEBLOB 1
4e2933c620 2015-04-21        kinaba: #define PUBLICKEYBLOB 6
4e2933c620 2015-04-21        kinaba: #define PRIVATEKEYBLOB 7
4e2933c620 2015-04-21        kinaba: #define PLAINTEXTKEYBLOB 8
4e2933c620 2015-04-21        kinaba: #define OPAQUEKEYBLOB 9
4e2933c620 2015-04-21        kinaba: #define PUBLICKEYBLOBEX 10
4e2933c620 2015-04-21        kinaba: #define SYMMETRICWRAPKEYBLOB 11
4e2933c620 2015-04-21        kinaba: #define AT_KEYEXCHANGE 1
4e2933c620 2015-04-21        kinaba: #define AT_SIGNATURE 2
4e2933c620 2015-04-21        kinaba: #define CRYPT_USERDATA 1
4e2933c620 2015-04-21        kinaba: #define PKCS5_PADDING 1
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_CBC 1
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_ECB 2
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_OFB 3
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_CFB 4
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_CTS 5
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_CBCI 6
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_CFBP 7
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_OFBP 8
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_CBCOFM 9
4e2933c620 2015-04-21        kinaba: #define CRYPT_MODE_CBCOFMI 10
4e2933c620 2015-04-21        kinaba: #define CRYPT_ENCRYPT 1
4e2933c620 2015-04-21        kinaba: #define CRYPT_DECRYPT 2
4e2933c620 2015-04-21        kinaba: #define CRYPT_EXPORT 4
4e2933c620 2015-04-21        kinaba: #define CRYPT_READ 8
4e2933c620 2015-04-21        kinaba: #define CRYPT_WRITE 16
4e2933c620 2015-04-21        kinaba: #define CRYPT_MAC 32
4e2933c620 2015-04-21        kinaba: #define HP_ALGID 1
4e2933c620 2015-04-21        kinaba: #define HP_HASHVAL 2
4e2933c620 2015-04-21        kinaba: #define HP_HASHSIZE 4
4e2933c620 2015-04-21        kinaba: #define HP_HMAC_INFO 5
4e2933c620 2015-04-21        kinaba: #define CRYPT_FAILED FALSE
4e2933c620 2015-04-21        kinaba: #define CRYPT_SUCCEED TRUE
4e2933c620 2015-04-21        kinaba: #define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED)
4e2933c620 2015-04-21        kinaba: #define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED)
4e2933c620 2015-04-21        kinaba: #define PP_ENUMALGS 1
4e2933c620 2015-04-21        kinaba: #define PP_ENUMCONTAINERS 2
4e2933c620 2015-04-21        kinaba: #define PP_IMPTYPE 3
4e2933c620 2015-04-21        kinaba: #define PP_NAME 4
4e2933c620 2015-04-21        kinaba: #define PP_VERSION 5
4e2933c620 2015-04-21        kinaba: #define PP_CONTAINER 6
4e2933c620 2015-04-21        kinaba: #define PP_CHANGE_PASSWORD	7
4e2933c620 2015-04-21        kinaba: #define PP_KEYSET_SEC_DESCR	8
4e2933c620 2015-04-21        kinaba: #define PP_CERTCHAIN	9
4e2933c620 2015-04-21        kinaba: #define PP_KEY_TYPE_SUBTYPE	10
4e2933c620 2015-04-21        kinaba: #define PP_PROVTYPE	16
4e2933c620 2015-04-21        kinaba: #define PP_KEYSTORAGE	17
4e2933c620 2015-04-21        kinaba: #define PP_APPLI_CERT	18
4e2933c620 2015-04-21        kinaba: #define PP_SYM_KEYSIZE	19
4e2933c620 2015-04-21        kinaba: #define PP_SESSION_KEYSIZE	20
4e2933c620 2015-04-21        kinaba: #define PP_UI_PROMPT	21
4e2933c620 2015-04-21        kinaba: #define PP_ENUMALGS_EX	22
4e2933c620 2015-04-21        kinaba: #define PP_ENUMMANDROOTS 25
4e2933c620 2015-04-21        kinaba: #define PP_ENUMELECTROOTS 26
4e2933c620 2015-04-21        kinaba: #define PP_KEYSET_TYPE 27
4e2933c620 2015-04-21        kinaba: #define PP_ADMIN_PIN 31
4e2933c620 2015-04-21        kinaba: #define PP_KEYEXCHANGE_PIN 32
4e2933c620 2015-04-21        kinaba: #define PP_SIGNATURE_PIN 33
4e2933c620 2015-04-21        kinaba: #define PP_SIG_KEYSIZE_INC 34
4e2933c620 2015-04-21        kinaba: #define PP_KEYX_KEYSIZE_INC 35
4e2933c620 2015-04-21        kinaba: #define PP_UNIQUE_CONTAINER 36
4e2933c620 2015-04-21        kinaba: #define PP_SGC_INFO 37
4e2933c620 2015-04-21        kinaba: #define PP_USE_HARDWARE_RNG 38
4e2933c620 2015-04-21        kinaba: #define PP_KEYSPEC 39
4e2933c620 2015-04-21        kinaba: #define PP_ENUMEX_SIGNING_PROT 40
4e2933c620 2015-04-21        kinaba: #define CRYPT_FIRST 1
4e2933c620 2015-04-21        kinaba: #define CRYPT_NEXT 2
4e2933c620 2015-04-21        kinaba: #define CRYPT_IMPL_HARDWARE 1
4e2933c620 2015-04-21        kinaba: #define CRYPT_IMPL_SOFTWARE 2
4e2933c620 2015-04-21        kinaba: #define CRYPT_IMPL_MIXED 3
4e2933c620 2015-04-21        kinaba: #define CRYPT_IMPL_UNKNOWN 4
4e2933c620 2015-04-21        kinaba: #define PROV_RSA_FULL 1
4e2933c620 2015-04-21        kinaba: #define PROV_RSA_SIG 2
4e2933c620 2015-04-21        kinaba: #define PROV_DSS 3
4e2933c620 2015-04-21        kinaba: #define PROV_FORTEZZA 4
4e2933c620 2015-04-21        kinaba: #define PROV_MS_MAIL 5
4e2933c620 2015-04-21        kinaba: #define PROV_SSL 6
4e2933c620 2015-04-21        kinaba: #define PROV_STT_MER 7
4e2933c620 2015-04-21        kinaba: #define PROV_STT_ACQ 8
4e2933c620 2015-04-21        kinaba: #define PROV_STT_BRND 9
4e2933c620 2015-04-21        kinaba: #define PROV_STT_ROOT 10
4e2933c620 2015-04-21        kinaba: #define PROV_STT_ISS 11
4e2933c620 2015-04-21        kinaba: #define PROV_RSA_SCHANNEL 12
4e2933c620 2015-04-21        kinaba: #define PROV_DSS_DH 13
4e2933c620 2015-04-21        kinaba: #define PROV_EC_ECDSA_SIG 14
4e2933c620 2015-04-21        kinaba: #define PROV_EC_ECNRA_SIG 15
4e2933c620 2015-04-21        kinaba: #define PROV_EC_ECDSA_FULL 16
4e2933c620 2015-04-21        kinaba: #define PROV_EC_ECNRA_FULL 17
4e2933c620 2015-04-21        kinaba: #define PROV_DH_SCHANNEL 18
4e2933c620 2015-04-21        kinaba: #define PROV_SPYRUS_LYNKS 20
4e2933c620 2015-04-21        kinaba: #define PROV_RNG 21
4e2933c620 2015-04-21        kinaba: #define PROV_INTEL_SEC 22
4e2933c620 2015-04-21        kinaba: #define PROV_RSA_AES 24
4e2933c620 2015-04-21        kinaba: #define MAXUIDLEN 64
4e2933c620 2015-04-21        kinaba: #define CUR_BLOB_VERSION 2
4e2933c620 2015-04-21        kinaba: #define X509_ASN_ENCODING 1
4e2933c620 2015-04-21        kinaba: #define PKCS_7_ASN_ENCODING  65536
4e2933c620 2015-04-21        kinaba: #define CERT_V1 0
4e2933c620 2015-04-21        kinaba: #define CERT_V2 1
4e2933c620 2015-04-21        kinaba: #define CERT_V3 2
4e2933c620 2015-04-21        kinaba: #define CERT_E_CHAINING (-2146762486)
4e2933c620 2015-04-21        kinaba: #define CERT_E_CN_NO_MATCH (-2146762481)
4e2933c620 2015-04-21        kinaba: #define CERT_E_EXPIRED (-2146762495)
4e2933c620 2015-04-21        kinaba: #define CERT_E_PURPOSE (-2146762490)
4e2933c620 2015-04-21        kinaba: #define CERT_E_REVOCATION_FAILURE (-2146762482)
4e2933c620 2015-04-21        kinaba: #define CERT_E_REVOKED (-2146762484)
4e2933c620 2015-04-21        kinaba: #define CERT_E_ROLE (-2146762493)
4e2933c620 2015-04-21        kinaba: #define CERT_E_UNTRUSTEDROOT (-2146762487)
4e2933c620 2015-04-21        kinaba: #define CERT_E_UNTRUSTEDTESTROOT (-2146762483)
4e2933c620 2015-04-21        kinaba: #define CERT_E_VALIDITYPERIODNESTING (-2146762494)
4e2933c620 2015-04-21        kinaba: #define CERT_E_WRONG_USAGE (-2146762480)
4e2933c620 2015-04-21        kinaba: #define CERT_E_PATHLENCONST (-2146762492)
4e2933c620 2015-04-21        kinaba: #define CERT_E_CRITICAL (-2146762491)
4e2933c620 2015-04-21        kinaba: #define CERT_E_ISSUERCHAINING (-2146762489)
4e2933c620 2015-04-21        kinaba: #define CERT_E_MALFORMED (-2146762488)
4e2933c620 2015-04-21        kinaba: #define CRYPT_E_REVOCATION_OFFLINE (-2146885613)
4e2933c620 2015-04-21        kinaba: #define CRYPT_E_REVOKED (-2146885616)
4e2933c620 2015-04-21        kinaba: #define TRUST_E_BASIC_CONSTRAINTS (-2146869223)
4e2933c620 2015-04-21        kinaba: #define TRUST_E_CERT_SIGNATURE (-2146869244)
4e2933c620 2015-04-21        kinaba: #define TRUST_E_FAIL (-2146762485)
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_NO_ERROR 0
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_NOT_TIME_VALID 1
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_NOT_TIME_NESTED 2
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_REVOKED 4
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_NOT_SIGNATURE_VALID 8
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 16
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_UNTRUSTED_ROOT 32
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 64
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_CYCLIC 128
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_PARTIAL_CHAIN 65536
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_CTL_IS_NOT_TIME_VALID 131072
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 262144
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 524288
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 1
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_HAS_KEY_MATCH_ISSUER 2
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_HAS_NAME_MATCH_ISSUER 4
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_SELF_SIGNED 8
4e2933c620 2015-04-21        kinaba: #define CERT_TRUST_IS_COMPLEX_CHAIN 65536
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1)
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_POLICY_AUTHENTICODE  ((LPCSTR) 2)
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_POLICY_AUTHENTICODE_TS  ((LPCSTR) 3)
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_POLICY_SSL  ((LPCSTR) 4)
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5)
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6)
4e2933c620 2015-04-21        kinaba: #define USAGE_MATCH_TYPE_AND 0
4e2933c620 2015-04-21        kinaba: #define USAGE_MATCH_TYPE_OR 1
4e2933c620 2015-04-21        kinaba: #define CERT_SIMPLE_NAME_STR 1
4e2933c620 2015-04-21        kinaba: #define CERT_OID_NAME_STR 2
4e2933c620 2015-04-21        kinaba: #define CERT_X500_NAME_STR 3
4e2933c620 2015-04-21        kinaba: #define CERT_NAME_STR_SEMICOLON_FLAG 1073741824
4e2933c620 2015-04-21        kinaba: #define CERT_NAME_STR_CRLF_FLAG 134217728
4e2933c620 2015-04-21        kinaba: #define CERT_NAME_STR_NO_PLUS_FLAG 536870912
4e2933c620 2015-04-21        kinaba: #define CERT_NAME_STR_NO_QUOTING_FLAG 268435456
4e2933c620 2015-04-21        kinaba: #define CERT_NAME_STR_REVERSE_FLAG 33554432
4e2933c620 2015-04-21        kinaba: #define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 131072
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_ANY 0
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_CERT_ID 1048576
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_CTL_USAGE 655360
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_ENHKEY_USAGE 655360
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_EXISTING 851968
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_HASH 65536
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_ISSUER_ATTR 196612
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_ISSUER_NAME 131076
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_ISSUER_OF 786432
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_KEY_IDENTIFIER 983040
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_KEY_SPEC 589824
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_MD5_HASH 262144
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_PROPERTY 327680
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_PUBLIC_KEY 393216
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_SHA1_HASH 65536
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_SIGNATURE_HASH 917504
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_SUBJECT_ATTR 196615
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_SUBJECT_CERT 720896
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_SUBJECT_NAME 131079
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_SUBJECT_STR_A 458759
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_SUBJECT_STR_W 524295
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_ISSUER_STR_A 458756
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_ISSUER_STR_W 524292
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_OR_ENHKEY_USAGE_FLAG 16
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  1
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_NO_ENHKEY_USAGE_FLAG  8
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_VALID_ENHKEY_USAGE_FLAG  32
4e2933c620 2015-04-21        kinaba: #define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  2
4e2933c620 2015-04-21        kinaba: #define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG  2
4e2933c620 2015-04-21        kinaba: #define CERT_UNICODE_IS_RDN_ATTRS_FLAG 1
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_FIND_BY_ISSUER 1
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 1
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 2
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 32768
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 4
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 8
4e2933c620 2015-04-21        kinaba: #define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 16384
4e2933c620 2015-04-21        kinaba: #define CERT_STORE_PROV_SYSTEM 10
4e2933c620 2015-04-21        kinaba: #define CERT_SYSTEM_STORE_LOCAL_MACHINE 131072
4e2933c620 2015-04-21        kinaba: #define szOID_PKIX_KP_SERVER_AUTH "4235600"
4e2933c620 2015-04-21        kinaba: #define szOID_SERVER_GATED_CRYPTO "4235658"
4e2933c620 2015-04-21        kinaba: #define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1"
4e2933c620 2015-04-21        kinaba: #define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2"
4e2933c620 2015-04-21        kinaba: #define CRYPT_NOHASHOID 0x00000001
4e2933c620 2015-04-21        kinaba: #define CRYPT_NO_SALT 0x10
4e2933c620 2015-04-21        kinaba: #define CRYPT_PREGEN 0x40
4e2933c620 2015-04-21        kinaba: #define CRYPT_RECIPIENT 0x10
4e2933c620 2015-04-21        kinaba: #define CRYPT_INITIATOR 0x40
4e2933c620 2015-04-21        kinaba: #define CRYPT_ONLINE 0x80
4e2933c620 2015-04-21        kinaba: #define CRYPT_SF 0x100
4e2933c620 2015-04-21        kinaba: #define CRYPT_CREATE_IV 0x200
4e2933c620 2015-04-21        kinaba: #define CRYPT_KEK 0x400
4e2933c620 2015-04-21        kinaba: #define CRYPT_DATA_KEY 0x800
4e2933c620 2015-04-21        kinaba: #define CRYPT_VOLATILE 0x1000
4e2933c620 2015-04-21        kinaba: #define CRYPT_SGCKEY 0x2000
4e2933c620 2015-04-21        kinaba: #define KP_IV               0x00000001
4e2933c620 2015-04-21        kinaba: #define KP_SALT             0x00000002
4e2933c620 2015-04-21        kinaba: #define KP_PADDING          0x00000003
4e2933c620 2015-04-21        kinaba: #define KP_MODE             0x00000004
4e2933c620 2015-04-21        kinaba: #define KP_MODE_BITS        0x00000005
4e2933c620 2015-04-21        kinaba: #define KP_PERMISSIONS      0x00000006
4e2933c620 2015-04-21        kinaba: #define KP_ALGID            0x00000007
4e2933c620 2015-04-21        kinaba: #define KP_BLOCKLEN         0x00000008
4e2933c620 2015-04-21        kinaba: #define KP_KEYLEN           0x00000009
4e2933c620 2015-04-21        kinaba: #define KP_SALT_EX          0x0000000a
4e2933c620 2015-04-21        kinaba: #define KP_P                0x0000000b
4e2933c620 2015-04-21        kinaba: #define KP_G                0x0000000c
4e2933c620 2015-04-21        kinaba: #define KP_Q                0x0000000d
4e2933c620 2015-04-21        kinaba: #define KP_X                0x0000000e
4e2933c620 2015-04-21        kinaba: #define KP_Y                0x0000000f
4e2933c620 2015-04-21        kinaba: #define KP_RA               0x00000010
4e2933c620 2015-04-21        kinaba: #define KP_RB               0x00000011
4e2933c620 2015-04-21        kinaba: #define KP_INFO             0x00000012
4e2933c620 2015-04-21        kinaba: #define KP_EFFECTIVE_KEYLEN 0x00000013
4e2933c620 2015-04-21        kinaba: #define KP_SCHANNEL_ALG     0x00000014
4e2933c620 2015-04-21        kinaba: #define KP_PUB_PARAMS       0x00000027
4e2933c620 2015-04-21        kinaba: #define CRYPT_FLAG_PCT1    0x0001
4e2933c620 2015-04-21        kinaba: #define CRYPT_FLAG_SSL2    0x0002
4e2933c620 2015-04-21        kinaba: #define CRYPT_FLAG_SSL3    0x0004
4e2933c620 2015-04-21        kinaba: #define CRYPT_FLAG_TLS1    0x0008
4e2933c620 2015-04-21        kinaba: #define CRYPT_FLAG_IPSEC   0x0010
4e2933c620 2015-04-21        kinaba: #define CRYPT_FLAG_SIGNING 0x0020
4e2933c620 2015-04-21        kinaba: #define SCHANNEL_MAC_KEY    0x00000000
4e2933c620 2015-04-21        kinaba: #define SCHANNEL_ENC_KEY    0x00000001
4e2933c620 2015-04-21        kinaba: #define INTERNATIONAL_USAGE 0x00000001
4e2933c620 2015-04-21        kinaba: +/
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: alias UINT ALG_ID;
4e2933c620 2015-04-21        kinaba: alias ULONG HCRYPTPROV, HCRYPTKEY, HCRYPTHASH;
4e2933c620 2015-04-21        kinaba: alias PVOID HCERTSTORE, HCRYPTMSG, HCERTCHAINENGINE;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct VTableProvStruc {
4e2933c620 2015-04-21        kinaba: 	FARPROC FuncVerifyImage;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias VTableProvStruc* PVTableProvStruc;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct _CRYPTOAPI_BLOB {
4e2933c620 2015-04-21        kinaba: 	DWORD cbData;
4e2933c620 2015-04-21        kinaba: 	BYTE* pbData;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias _CRYPTOAPI_BLOB CRYPT_INTEGER_BLOB, CRYPT_UINT_BLOB,
4e2933c620 2015-04-21        kinaba:   CRYPT_OBJID_BLOB, CERT_NAME_BLOB, CERT_RDN_VALUE_BLOB, CERT_BLOB,
4e2933c620 2015-04-21        kinaba:   CRL_BLOB, DATA_BLOB, CRYPT_DATA_BLOB, CRYPT_HASH_BLOB,
4e2933c620 2015-04-21        kinaba:   CRYPT_DIGEST_BLOB, CRYPT_DER_BLOB, CRYPT_ATTR_BLOB;
4e2933c620 2015-04-21        kinaba: alias _CRYPTOAPI_BLOB* PCRYPT_INTEGER_BLOB, PCRYPT_UINT_BLOB,
4e2933c620 2015-04-21        kinaba:   PCRYPT_OBJID_BLOB, PCERT_NAME_BLOB, PCERT_RDN_VALUE_BLOB, PCERT_BLOB,
4e2933c620 2015-04-21        kinaba:   PCRL_BLOB, PDATA_BLOB, PCRYPT_DATA_BLOB, PCRYPT_HASH_BLOB,
4e2933c620 2015-04-21        kinaba:   PCRYPT_DIGEST_BLOB, PCRYPT_DER_BLOB, PCRYPT_ATTR_BLOB;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: // not described in SDK; has the same layout as HTTPSPolicyCallbackData
4e2933c620 2015-04-21        kinaba: struct SSL_EXTRA_CERT_CHAIN_POLICY_PARA {
4e2933c620 2015-04-21        kinaba: 	DWORD  cbStruct;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwAuthType;
4e2933c620 2015-04-21        kinaba: 	DWORD  fdwChecks;
4e2933c620 2015-04-21        kinaba: 	LPWSTR pwszServerName;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA HTTPSPolicyCallbackData;
4e2933c620 2015-04-21        kinaba: alias SSL_EXTRA_CERT_CHAIN_POLICY_PARA* PSSL_EXTRA_CERT_CHAIN_POLICY_PARA,
4e2933c620 2015-04-21        kinaba:   PHTTPSPolicyCallbackData;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* #if (_WIN32_WINNT>=0x500) */
4e2933c620 2015-04-21        kinaba: struct CERT_CHAIN_POLICY_PARA {
4e2933c620 2015-04-21        kinaba: 	DWORD cbSize = CERT_CHAIN_POLICY_PARA.sizeof;
4e2933c620 2015-04-21        kinaba: 	DWORD dwFlags;
4e2933c620 2015-04-21        kinaba: 	void* pvExtraPolicyPara;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_CHAIN_POLICY_PARA* PCERT_CHAIN_POLICY_PARA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_CHAIN_POLICY_STATUS {
4e2933c620 2015-04-21        kinaba: 	DWORD cbSize = CERT_CHAIN_POLICY_STATUS.sizeof;
4e2933c620 2015-04-21        kinaba: 	DWORD dwError;
4e2933c620 2015-04-21        kinaba: 	LONG  lChainIndex;
4e2933c620 2015-04-21        kinaba: 	LONG  lElementIndex;
4e2933c620 2015-04-21        kinaba: 	void* pvExtraPolicyStatus;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_CHAIN_POLICY_STATUS* PCERT_CHAIN_POLICY_STATUS;
4e2933c620 2015-04-21        kinaba: /* #endif */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CRYPT_ALGORITHM_IDENTIFIER {
4e2933c620 2015-04-21        kinaba: 	LPSTR pszObjId;
4e2933c620 2015-04-21        kinaba: 	CRYPT_OBJID_BLOB Parameters;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CRYPT_ALGORITHM_IDENTIFIER* PCRYPT_ALGORITHM_IDENTIFIER;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CRYPT_BIT_BLOB {
4e2933c620 2015-04-21        kinaba: 	DWORD cbData;
4e2933c620 2015-04-21        kinaba: 	BYTE* pbData;
4e2933c620 2015-04-21        kinaba: 	DWORD cUnusedBits;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CRYPT_BIT_BLOB* PCRYPT_BIT_BLOB;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_PUBLIC_KEY_INFO {
4e2933c620 2015-04-21        kinaba: 	CRYPT_ALGORITHM_IDENTIFIER Algorithm;
4e2933c620 2015-04-21        kinaba: 	CRYPT_BIT_BLOB             PublicKey;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_PUBLIC_KEY_INFO* PCERT_PUBLIC_KEY_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_EXTENSION {
4e2933c620 2015-04-21        kinaba: 	LPSTR            pszObjId;
4e2933c620 2015-04-21        kinaba: 	BOOL             fCritical;
4e2933c620 2015-04-21        kinaba: 	CRYPT_OBJID_BLOB Value;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_EXTENSION* PCERT_EXTENSION;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_INFO {
4e2933c620 2015-04-21        kinaba: 	DWORD dwVersion;
4e2933c620 2015-04-21        kinaba: 	CRYPT_INTEGER_BLOB SerialNumber;
4e2933c620 2015-04-21        kinaba: 	CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
4e2933c620 2015-04-21        kinaba: 	CERT_NAME_BLOB Issuer;
4e2933c620 2015-04-21        kinaba: 	FILETIME NotBefore;
4e2933c620 2015-04-21        kinaba: 	FILETIME NotAfter;
4e2933c620 2015-04-21        kinaba: 	CERT_NAME_BLOB Subject;
4e2933c620 2015-04-21        kinaba: 	CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
4e2933c620 2015-04-21        kinaba: 	CRYPT_BIT_BLOB IssuerUniqueId;
4e2933c620 2015-04-21        kinaba: 	CRYPT_BIT_BLOB SubjectUniqueId;
4e2933c620 2015-04-21        kinaba: 	DWORD cExtension;
4e2933c620 2015-04-21        kinaba: 	PCERT_EXTENSION rgExtension;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_INFO* PCERT_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_CONTEXT {
4e2933c620 2015-04-21        kinaba: 	DWORD      dwCertEncodingType;
4e2933c620 2015-04-21        kinaba: 	BYTE*      pbCertEncoded;
4e2933c620 2015-04-21        kinaba: 	DWORD      cbCertEncoded;
4e2933c620 2015-04-21        kinaba: 	PCERT_INFO pCertInfo;
4e2933c620 2015-04-21        kinaba: 	HCERTSTORE hCertStore;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_CONTEXT*       PCERT_CONTEXT;
4e2933c620 2015-04-21        kinaba: alias CPtr!(CERT_CONTEXT) PCCERT_CONTEXT;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CTL_USAGE {
4e2933c620 2015-04-21        kinaba: 	DWORD  cUsageIdentifier;
4e2933c620 2015-04-21        kinaba: 	LPSTR* rgpszUsageIdentifier;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CTL_USAGE CERT_ENHKEY_USAGE;
4e2933c620 2015-04-21        kinaba: alias CTL_USAGE* PCTRL_USAGE, PCERT_ENHKEY_USAGE;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_USAGE_MATCH {
4e2933c620 2015-04-21        kinaba: 	DWORD             dwType;
4e2933c620 2015-04-21        kinaba: 	CERT_ENHKEY_USAGE Usage;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_USAGE_MATCH* PCERT_USAGE_MATCH;
4e2933c620 2015-04-21        kinaba: /* #if (_WIN32_WINNT>=0x500) */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_CHAIN_PARA {
4e2933c620 2015-04-21        kinaba: 	DWORD            cbSize = CERT_CHAIN_PARA.sizeof;
4e2933c620 2015-04-21        kinaba: 	CERT_USAGE_MATCH RequestedUsage;
4e2933c620 2015-04-21        kinaba: //#if CERT_CHAIN_PARA_HAS_EXTRA_FIELDS
4e2933c620 2015-04-21        kinaba: 	CERT_USAGE_MATCH RequestedIssuancePolicy;
4e2933c620 2015-04-21        kinaba: 	DWORD            dwUrlRetrievalTimeout;
4e2933c620 2015-04-21        kinaba: 	BOOL             fCheckRevocationFreshnessTime;
4e2933c620 2015-04-21        kinaba: 	DWORD            dwRevocationFreshnessTime;
4e2933c620 2015-04-21        kinaba: //#endif
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_CHAIN_PARA* PCERT_CHAIN_PARA;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern (Windows) alias BOOL function(PCCERT_CONTEXT, void*)
4e2933c620 2015-04-21        kinaba:   PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_CHAIN_FIND_BY_ISSUER_PARA {
4e2933c620 2015-04-21        kinaba: 	DWORD  cbSize = CERT_CHAIN_FIND_BY_ISSUER_PARA.sizeof;
4e2933c620 2015-04-21        kinaba: 	LPCSTR pszUsageIdentifier;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwKeySpec;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwAcquirePrivateKeyFlags;
4e2933c620 2015-04-21        kinaba: 	DWORD  cIssuer;
4e2933c620 2015-04-21        kinaba: 	CERT_NAME_BLOB* rgIssuer;
4e2933c620 2015-04-21        kinaba: 	PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFIndCallback;
4e2933c620 2015-04-21        kinaba: 	void*  pvFindArg;
4e2933c620 2015-04-21        kinaba: 	DWORD* pdwIssuerChainIndex;
4e2933c620 2015-04-21        kinaba: 	DWORD* pdwIssuerElementIndex;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_CHAIN_FIND_BY_ISSUER_PARA* PCERT_CHAIN_FIND_BY_ISSUER_PARA;
4e2933c620 2015-04-21        kinaba: /* #endif */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_TRUST_STATUS {
4e2933c620 2015-04-21        kinaba: 	DWORD dwErrorStatus;
4e2933c620 2015-04-21        kinaba: 	DWORD dwInfoStatus;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_TRUST_STATUS* PCERT_TRUST_STATUS;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CRL_ENTRY {
4e2933c620 2015-04-21        kinaba: 	CRYPT_INTEGER_BLOB SerialNumber;
4e2933c620 2015-04-21        kinaba: 	FILETIME           RevocationDate;
4e2933c620 2015-04-21        kinaba: 	DWORD              cExtension;
4e2933c620 2015-04-21        kinaba: 	PCERT_EXTENSION    rgExtension;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CRL_ENTRY* PCRL_ENTRY;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CRL_INFO {
4e2933c620 2015-04-21        kinaba: 	DWORD           dwVersion;
4e2933c620 2015-04-21        kinaba: 	CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
4e2933c620 2015-04-21        kinaba: 	CERT_NAME_BLOB  Issuer;
4e2933c620 2015-04-21        kinaba: 	FILETIME        ThisUpdate;
4e2933c620 2015-04-21        kinaba: 	FILETIME        NextUpdate;
4e2933c620 2015-04-21        kinaba: 	DWORD           cCRLEntry;
4e2933c620 2015-04-21        kinaba: 	PCRL_ENTRY      rgCRLEntry;
4e2933c620 2015-04-21        kinaba: 	DWORD           cExtension;
4e2933c620 2015-04-21        kinaba: 	PCERT_EXTENSION rgExtension;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CRL_INFO* PCRL_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CRL_CONTEXT {
4e2933c620 2015-04-21        kinaba: 	DWORD      dwCertEncodingType;
4e2933c620 2015-04-21        kinaba: 	BYTE*      pbCrlEncoded;
4e2933c620 2015-04-21        kinaba: 	DWORD      cbCrlEncoded;
4e2933c620 2015-04-21        kinaba: 	PCRL_INFO  pCrlInfo;
4e2933c620 2015-04-21        kinaba: 	HCERTSTORE hCertStore;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CRL_CONTEXT*       PCRL_CONTEXT;
4e2933c620 2015-04-21        kinaba: alias CPtr!(CRL_CONTEXT) PCCRL_CONTEXT;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_REVOCATION_CRL_INFO {
4e2933c620 2015-04-21        kinaba: 	DWORD         cbSize = CERT_REVOCATION_CRL_INFO.sizeof;
4e2933c620 2015-04-21        kinaba: 	PCCRL_CONTEXT pBaseCRLContext;
4e2933c620 2015-04-21        kinaba: 	PCCRL_CONTEXT pDeltaCRLContext;
4e2933c620 2015-04-21        kinaba: 	PCRL_ENTRY    pCrlEntry;
4e2933c620 2015-04-21        kinaba: 	BOOL          fDeltaCrlEntry;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_REVOCATION_CRL_INFO* PCERT_REVOCATION_CRL_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_REVOCATION_INFO {
4e2933c620 2015-04-21        kinaba: 	DWORD  cbSize = CERT_REVOCATION_INFO.sizeof;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwRevocationResult;
4e2933c620 2015-04-21        kinaba: 	LPCSTR pszRevocationOid;
4e2933c620 2015-04-21        kinaba: 	LPVOID pvOidSpecificInfo;
4e2933c620 2015-04-21        kinaba: 	BOOL   fHasFreshnessTime;
4e2933c620 2015-04-21        kinaba: 	DWORD  dwFreshnessTime;
4e2933c620 2015-04-21        kinaba: 	PCERT_REVOCATION_CRL_INFO pCrlInfo;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_REVOCATION_INFO* PCERT_REVOCATION_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* #if (_WIN32_WINNT>=0x500) */
4e2933c620 2015-04-21        kinaba: struct CERT_CHAIN_ELEMENT {
4e2933c620 2015-04-21        kinaba: 	DWORD                 cbSize = CERT_CHAIN_ELEMENT.sizeof;
4e2933c620 2015-04-21        kinaba: 	PCCERT_CONTEXT        pCertContext;
4e2933c620 2015-04-21        kinaba: 	CERT_TRUST_STATUS     TrustStatus;
4e2933c620 2015-04-21        kinaba: 	PCERT_REVOCATION_INFO pRevocationInfo;
4e2933c620 2015-04-21        kinaba: 	PCERT_ENHKEY_USAGE    pIssuanceUsage;
4e2933c620 2015-04-21        kinaba: 	PCERT_ENHKEY_USAGE    pApplicationUsage;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_CHAIN_ELEMENT* PCERT_CHAIN_ELEMENT;
4e2933c620 2015-04-21        kinaba: /* #endif */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CRYPT_ATTRIBUTE {
4e2933c620 2015-04-21        kinaba: 	LPSTR            pszObjId;
4e2933c620 2015-04-21        kinaba: 	DWORD            cValue;
4e2933c620 2015-04-21        kinaba: 	PCRYPT_ATTR_BLOB rgValue;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CRYPT_ATTRIBUTE* PCRYPT_ATTRIBUTE;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CTL_ENTRY {
4e2933c620 2015-04-21        kinaba: 	CRYPT_DATA_BLOB  SubjectIdentifier;
4e2933c620 2015-04-21        kinaba: 	DWORD            cAttribute;
4e2933c620 2015-04-21        kinaba: 	PCRYPT_ATTRIBUTE rgAttribute;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CTL_ENTRY* PCTL_ENTRY;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CTL_INFO {
4e2933c620 2015-04-21        kinaba: 	DWORD              dwVersion;
4e2933c620 2015-04-21        kinaba: 	CTL_USAGE          SubjectUsage;
4e2933c620 2015-04-21        kinaba: 	CRYPT_DATA_BLOB    ListIdentifier;
4e2933c620 2015-04-21        kinaba: 	CRYPT_INTEGER_BLOB SequenceNumber;
4e2933c620 2015-04-21        kinaba: 	FILETIME           ThisUpdate;
4e2933c620 2015-04-21        kinaba: 	FILETIME           NextUpdate;
4e2933c620 2015-04-21        kinaba: 	CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm;
4e2933c620 2015-04-21        kinaba: 	DWORD              cCTLEntry;
4e2933c620 2015-04-21        kinaba: 	PCTL_ENTRY         rgCTLEntry;
4e2933c620 2015-04-21        kinaba: 	DWORD              cExtension;
4e2933c620 2015-04-21        kinaba: 	PCERT_EXTENSION    rgExtension;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CTL_INFO* PCTL_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CTL_CONTEXT {
4e2933c620 2015-04-21        kinaba: 	DWORD      dwMsgAndCertEncodingType;
4e2933c620 2015-04-21        kinaba: 	BYTE*      pbCtlEncoded;
4e2933c620 2015-04-21        kinaba: 	DWORD      cbCtlEncoded;
4e2933c620 2015-04-21        kinaba: 	PCTL_INFO  pCtlInfo;
4e2933c620 2015-04-21        kinaba: 	HCERTSTORE hCertStore;
4e2933c620 2015-04-21        kinaba: 	HCRYPTMSG  hCryptMsg;
4e2933c620 2015-04-21        kinaba: 	BYTE*      pbCtlContent;
4e2933c620 2015-04-21        kinaba: 	DWORD      cbCtlContent;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CTL_CONTEXT*       PCTL_CONTEXT;
4e2933c620 2015-04-21        kinaba: alias CPtr!(CTL_CONTEXT) PCCTL_CONTEXT;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_TRUST_LIST_INFO {
4e2933c620 2015-04-21        kinaba: 	DWORD         cbSize = CERT_TRUST_LIST_INFO.sizeof;
4e2933c620 2015-04-21        kinaba: 	PCTL_ENTRY    pCtlEntry;
4e2933c620 2015-04-21        kinaba: 	PCCTL_CONTEXT pCtlContext;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_TRUST_LIST_INFO* PCERT_TRUST_LIST_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct CERT_SIMPLE_CHAIN {
4e2933c620 2015-04-21        kinaba: 	DWORD                 cbSize = CERT_SIMPLE_CHAIN.sizeof;
4e2933c620 2015-04-21        kinaba: 	CERT_TRUST_STATUS     TrustStatus;
4e2933c620 2015-04-21        kinaba: 	DWORD                 cElement;
4e2933c620 2015-04-21        kinaba: 	PCERT_CHAIN_ELEMENT*  rgpElement;
4e2933c620 2015-04-21        kinaba: 	PCERT_TRUST_LIST_INFO pTrustListInfo;
4e2933c620 2015-04-21        kinaba: 	BOOL                  fHasRevocationFreshnessTime;
4e2933c620 2015-04-21        kinaba: 	DWORD                 dwRevocationFreshnessTime;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_SIMPLE_CHAIN* PCERT_SIMPLE_CHAIN;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: /* #if (_WIN32_WINNT>=0x500) */
4e2933c620 2015-04-21        kinaba: alias CPtr!(CERT_CHAIN_CONTEXT) PCCERT_CHAIN_CONTEXT;
4e2933c620 2015-04-21        kinaba: struct CERT_CHAIN_CONTEXT {
4e2933c620 2015-04-21        kinaba: 	DWORD                 cbSize = CERT_CHAIN_CONTEXT.sizeof;
4e2933c620 2015-04-21        kinaba: 	CERT_TRUST_STATUS     TrustStatus;
4e2933c620 2015-04-21        kinaba: 	DWORD                 cChain;
4e2933c620 2015-04-21        kinaba: 	PCERT_SIMPLE_CHAIN*   rgpChain;
4e2933c620 2015-04-21        kinaba: 	DWORD                 cLowerQualityChainContext;
4e2933c620 2015-04-21        kinaba: 	PCCERT_CHAIN_CONTEXT* rgpLowerQualityChainContext;
4e2933c620 2015-04-21        kinaba: 	BOOL                  fHasRevocationFreshnessTime;
4e2933c620 2015-04-21        kinaba: 	DWORD                 dwRevocationFreshnessTime;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias CERT_CHAIN_CONTEXT* PCERT_CHAIN_CONTEXT;
4e2933c620 2015-04-21        kinaba: /* #endif */
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct PROV_ENUMALGS {
4e2933c620 2015-04-21        kinaba: 	ALG_ID   aiAlgid;
4e2933c620 2015-04-21        kinaba: 	DWORD    dwBitLen;
4e2933c620 2015-04-21        kinaba: 	DWORD    dwNameLen;
4e2933c620 2015-04-21        kinaba: 	CHAR[20] szName;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct PUBLICKEYSTRUC {
4e2933c620 2015-04-21        kinaba: 	BYTE   bType;
4e2933c620 2015-04-21        kinaba: 	BYTE   bVersion;
4e2933c620 2015-04-21        kinaba: 	WORD   reserved;
4e2933c620 2015-04-21        kinaba: 	ALG_ID aiKeyAlg;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias PUBLICKEYSTRUC BLOBHEADER;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct RSAPUBKEY {
4e2933c620 2015-04-21        kinaba: 	DWORD magic;
4e2933c620 2015-04-21        kinaba: 	DWORD bitlen;
4e2933c620 2015-04-21        kinaba: 	DWORD pubexp;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: struct HMAC_INFO {
4e2933c620 2015-04-21        kinaba: 	ALG_ID HashAlgid;
4e2933c620 2015-04-21        kinaba: 	BYTE*  pbInnerString;
4e2933c620 2015-04-21        kinaba: 	DWORD  cbInnerString;
4e2933c620 2015-04-21        kinaba: 	BYTE*  pbOuterString;
4e2933c620 2015-04-21        kinaba: 	DWORD  cbOuterString;
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: alias HMAC_INFO* PHMAC_INFO;
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: extern (Windows) {
4e2933c620 2015-04-21        kinaba: 	BOOL CertCloseStore(HCERTSTORE, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CertGetCertificateChain(HCERTCHAINENGINE, PCCERT_CONTEXT, LPFILETIME,
4e2933c620 2015-04-21        kinaba: 	  HCERTSTORE, PCERT_CHAIN_PARA, DWORD, LPVOID, PCCERT_CHAIN_CONTEXT*);
4e2933c620 2015-04-21        kinaba: 	BOOL CertVerifyCertificateChainPolicy(LPCSTR, PCCERT_CHAIN_CONTEXT,
4e2933c620 2015-04-21        kinaba: 	  PCERT_CHAIN_POLICY_PARA, PCERT_CHAIN_POLICY_STATUS);
4e2933c620 2015-04-21        kinaba: 	void CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT);
4e2933c620 2015-04-21        kinaba: 	DWORD CertNameToStrA(DWORD, PCERT_NAME_BLOB, DWORD, LPSTR, DWORD);
4e2933c620 2015-04-21        kinaba: 	DWORD CertNameToStrW(DWORD, PCERT_NAME_BLOB, DWORD, LPWSTR, DWORD);
4e2933c620 2015-04-21        kinaba: 	HCERTSTORE CertOpenSystemStoreA(HCRYPTPROV, LPCSTR);
4e2933c620 2015-04-21        kinaba: 	HCERTSTORE CertOpenSystemStoreW(HCRYPTPROV, LPCWSTR);
4e2933c620 2015-04-21        kinaba: 	HCERTSTORE CertOpenStore(LPCSTR, DWORD, HCRYPTPROV, DWORD, CPtr!(void));
4e2933c620 2015-04-21        kinaba: 	PCCERT_CONTEXT CertFindCertificateInStore(HCERTSTORE, DWORD, DWORD, DWORD,
4e2933c620 2015-04-21        kinaba: 	  CPtr!(void), PCCERT_CONTEXT);
4e2933c620 2015-04-21        kinaba: 	BOOL CertFreeCertificateContext(PCCERT_CONTEXT);
4e2933c620 2015-04-21        kinaba: 	PCCERT_CONTEXT CertGetIssuerCertificateFromStore(HCERTSTORE,
4e2933c620 2015-04-21        kinaba: 	  PCCERT_CONTEXT, PCCERT_CONTEXT, DWORD*);
4e2933c620 2015-04-21        kinaba: 	PCCERT_CHAIN_CONTEXT CertFindChainInStore(HCERTSTORE, DWORD, DWORD, DWORD,
4e2933c620 2015-04-21        kinaba: 	  CPtr!(void), PCCERT_CHAIN_CONTEXT);
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: 	BOOL CryptAcquireContextA(HCRYPTPROV*, LPCSTR, LPCSTR, DWORD, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptAcquireContextW(HCRYPTPROV*, LPCWSTR, LPCWSTR, DWORD, DWORD);
4e2933c620 2015-04-21        kinaba: 	 BOOL CryptContextAddRef(HCRYPTPROV, DWORD*, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptReleaseContext(HCRYPTPROV, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptGenKey(HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY*);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptDeriveKey(HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY*);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptDestroyKey(HCRYPTKEY);
4e2933c620 2015-04-21        kinaba: 	static if (WINVER >= 0x0500) {
4e2933c620 2015-04-21        kinaba: 		BOOL CryptDuplicateHash(HCRYPTHASH, DWORD*, DWORD, HCRYPTHASH*);
4e2933c620 2015-04-21        kinaba: 		BOOL CryptDuplicateKey(HCRYPTKEY, DWORD*, DWORD, HCRYPTKEY*);
4e2933c620 2015-04-21        kinaba: 	}
4e2933c620 2015-04-21        kinaba: 	BOOL CryptSetKeyParam(HCRYPTKEY, DWORD, PBYTE, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptGetKeyParam(HCRYPTKEY, DWORD, PBYTE, PDWORD, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptSetHashParam(HCRYPTHASH, DWORD, PBYTE, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptGetHashParam(HCRYPTHASH, DWORD, PBYTE, PDWORD, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptSetProvParam(HCRYPTPROV, DWORD, PBYTE, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptGetProvParam(HCRYPTPROV, DWORD, PBYTE, PDWORD, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptGenRandom(HCRYPTPROV, DWORD, PBYTE);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptGetUserKey(HCRYPTPROV, DWORD, HCRYPTKEY*);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptExportKey(HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, PBYTE, PDWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptImportKey(HCRYPTPROV, PBYTE, DWORD, HCRYPTKEY, DWORD,
4e2933c620 2015-04-21        kinaba: 	  HCRYPTKEY*);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptEncrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD,
4e2933c620 2015-04-21        kinaba: 	  DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptDecrypt(HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, PBYTE, PDWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptCreateHash(HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH*);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptHashData(HCRYPTHASH, PBYTE, DWORD, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptHashSessionKey(HCRYPTHASH, HCRYPTKEY, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptGetHashValue(HCRYPTHASH, DWORD, PBYTE, PDWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptDestroyHash(HCRYPTHASH);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptSignHashA(HCRYPTHASH, DWORD, LPCSTR, DWORD, PBYTE, PDWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptSignHashW(HCRYPTHASH, DWORD, LPCWSTR, DWORD, PBYTE, PDWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptVerifySignatureA(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCSTR,
4e2933c620 2015-04-21        kinaba: 	  DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptVerifySignatureW(HCRYPTHASH, PBYTE, DWORD, HCRYPTKEY, LPCWSTR,
4e2933c620 2015-04-21        kinaba: 	  DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptSetProviderA(LPCSTR, DWORD);
4e2933c620 2015-04-21        kinaba: 	BOOL CryptSetProviderW(LPCWSTR, DWORD);
4e2933c620 2015-04-21        kinaba: }
4e2933c620 2015-04-21        kinaba: 
4e2933c620 2015-04-21        kinaba: version (Unicode) {
4e2933c620 2015-04-21        kinaba: 	alias CertNameToStrW CertNameToStr;
4e2933c620 2015-04-21        kinaba: 	alias CryptAcquireContextW CryptAcquireContext;
4e2933c620 2015-04-21        kinaba: 	alias CryptSignHashW CryptSignHash;
4e2933c620 2015-04-21        kinaba: 	alias CryptVerifySignatureW CryptVerifySignature;
4e2933c620 2015-04-21        kinaba: 	alias CryptSetProviderW CryptSetProvider;
4e2933c620 2015-04-21        kinaba: 	alias CertOpenSystemStoreW CertOpenSystemStore;
4e2933c620 2015-04-21        kinaba: 	/+alias CERT_FIND_SUBJECT_STR_W CERT_FIND_SUBJECT_STR;
4e2933c620 2015-04-21        kinaba: 	alias CERT_FIND_ISSUER_STR_W CERT_FIND_ISSUER_STR;+/
4e2933c620 2015-04-21        kinaba: } else {
4e2933c620 2015-04-21        kinaba: 	alias CertNameToStrA CertNameToStr;
4e2933c620 2015-04-21        kinaba: 	alias CryptAcquireContextA CryptAcquireContext;
4e2933c620 2015-04-21        kinaba: 	alias CryptSignHashA CryptSignHash;
4e2933c620 2015-04-21        kinaba: 	alias CryptVerifySignatureA CryptVerifySignature;
4e2933c620 2015-04-21        kinaba: 	alias CryptSetProviderA CryptSetProvider;
4e2933c620 2015-04-21        kinaba: 	alias CertOpenSystemStoreA CertOpenSystemStore;
4e2933c620 2015-04-21        kinaba: 	/+alias CERT_FIND_SUBJECT_STR_A CERT_FIND_SUBJECT_STR;
4e2933c620 2015-04-21        kinaba: 	alias CERT_FIND_ISSUER_STR_A CERT_FIND_ISSUER_STR;+/
4e2933c620 2015-04-21        kinaba: }