0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20 ********\.*
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0060: 20 20 20 20 20 20 20 20 20 20 77 69 6e 63 72 79 wincry
0070: 70 74 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 pt.d
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 *.*
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 *.*
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50 Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20 I header module
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 *.*
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 *.*
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66 Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77 rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20 s headers
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20 *.*
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01d0: 20 20 20 20 20 20 20 20 62 79 20 53 74 65 77 61 by Stewa
01e0: 72 74 20 47 6f 72 64 6f 6e 20 20 20 20 20 20 20 rt Gordon
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 *.*
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69 Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32 **/.module win32
02f0: 2e 77 69 6e 63 72 79 70 74 3b 0a 0a 70 72 69 76 .wincrypt;..priv
0300: 61 74 65 20 69 6d 70 6f 72 74 20 77 69 6e 33 32 ate import win32
0310: 2e 77 33 32 61 70 69 2c 20 77 69 6e 33 32 2e 77 .w32api, win32.w
0320: 69 6e 62 61 73 65 2c 20 77 69 6e 33 32 2e 77 69 inbase, win32.wi
0330: 6e 64 65 66 3b 0a 0a 2f 2a 20 46 49 58 4d 45 3a ndef;../* FIXME:
0340: 0a 20 2a 09 54 79 70 65 73 20 6f 66 20 73 6f 6d . *.Types of som
0350: 65 20 63 6f 6e 73 74 61 6e 74 73 0a 20 2a 09 54 e constants. *.T
0360: 79 70 65 73 20 6f 66 20 6d 61 63 72 6f 73 0a 20 ypes of macros.
0370: 2a 09 49 6e 69 74 73 20 6f 66 20 76 61 72 69 6f *.Inits of vario
0380: 75 73 20 22 73 69 7a 65 22 20 61 6e 64 20 22 76 us "size" and "v
0390: 65 72 73 69 6f 6e 22 20 6d 65 6d 62 65 72 73 0a ersion" members.
03a0: 20 2a 09 57 68 79 20 61 72 65 20 73 6f 6d 65 20 *.Why are some
03b0: 23 69 66 64 65 66 73 20 63 6f 6d 6d 65 6e 74 65 #ifdefs commente
03c0: 64 20 6f 75 74 3f 0a 20 2a 2f 0a 0a 63 6f 6e 73 d out?. */..cons
03d0: 74 20 54 43 48 41 52 5b 5d 0a 09 4d 53 5f 44 45 t TCHAR[]..MS_DE
03e0: 46 5f 50 52 4f 56 20 3d 20 22 4d 69 63 72 6f 73 F_PROV = "Micros
03f0: 6f 66 74 20 42 61 73 65 20 43 72 79 70 74 6f 67 oft Base Cryptog
0400: 72 61 70 68 69 63 20 50 72 6f 76 69 64 65 72 20 raphic Provider
0410: 76 31 2e 30 22 2c 0a 09 4d 53 5f 45 4e 48 41 4e v1.0",..MS_ENHAN
0420: 43 45 44 5f 50 52 4f 56 20 3d 20 22 4d 69 63 72 CED_PROV = "Micr
0430: 6f 73 6f 66 74 20 45 6e 68 61 6e 63 65 64 20 43 osoft Enhanced C
0440: 72 79 70 74 6f 67 72 61 70 68 69 63 20 50 72 6f ryptographic Pro
0450: 76 69 64 65 72 20 76 31 2e 30 22 2c 0a 09 4d 53 vider v1.0",..MS
0460: 5f 53 54 52 4f 4e 47 5f 50 52 4f 56 20 3d 20 22 _STRONG_PROV = "
0470: 4d 69 63 72 6f 73 6f 66 74 20 53 74 72 6f 6e 67 Microsoft Strong
0480: 20 43 72 79 70 74 6f 67 72 61 70 68 69 63 20 50 Cryptographic P
0490: 72 6f 76 69 64 65 72 22 2c 0a 09 4d 53 5f 44 45 rovider",..MS_DE
04a0: 46 5f 52 53 41 5f 53 49 47 5f 50 52 4f 56 20 3d F_RSA_SIG_PROV =
04b0: 20 22 4d 69 63 72 6f 73 6f 66 74 20 52 53 41 20 "Microsoft RSA
04c0: 53 69 67 6e 61 74 75 72 65 20 43 72 79 70 74 6f Signature Crypto
04d0: 67 72 61 70 68 69 63 20 50 72 6f 76 69 64 65 72 graphic Provider
04e0: 22 2c 0a 09 4d 53 5f 44 45 46 5f 52 53 41 5f 53 ",..MS_DEF_RSA_S
04f0: 43 48 41 4e 4e 45 4c 5f 50 52 4f 56 20 3d 20 22 CHANNEL_PROV = "
0500: 4d 69 63 72 6f 73 6f 66 74 20 52 53 41 20 53 43 Microsoft RSA SC
0510: 68 61 6e 6e 65 6c 20 43 72 79 70 74 6f 67 72 61 hannel Cryptogra
0520: 70 68 69 63 20 50 72 6f 76 69 64 65 72 22 2c 0a phic Provider",.
0530: 09 4d 53 5f 44 45 46 5f 44 53 53 5f 50 52 4f 56 .MS_DEF_DSS_PROV
0540: 20 3d 20 22 4d 69 63 72 6f 73 6f 66 74 20 42 61 = "Microsoft Ba
0550: 73 65 20 44 53 53 20 43 72 79 70 74 6f 67 72 61 se DSS Cryptogra
0560: 70 68 69 63 20 50 72 6f 76 69 64 65 72 22 2c 0a phic Provider",.
0570: 09 4d 53 5f 44 45 46 5f 44 53 53 5f 44 48 5f 50 .MS_DEF_DSS_DH_P
0580: 52 4f 56 0a 09 20 20 3d 20 22 4d 69 63 72 6f 73 ROV.. = "Micros
0590: 6f 66 74 20 42 61 73 65 20 44 53 53 20 61 6e 64 oft Base DSS and
05a0: 20 44 69 66 66 69 65 2d 48 65 6c 6c 6d 61 6e 20 Diffie-Hellman
05b0: 43 72 79 70 74 6f 67 72 61 70 68 69 63 20 50 72 Cryptographic Pr
05c0: 6f 76 69 64 65 72 22 2c 0a 09 4d 53 5f 45 4e 48 ovider",..MS_ENH
05d0: 5f 44 53 53 5f 44 48 5f 50 52 4f 56 0a 09 20 20 _DSS_DH_PROV..
05e0: 3d 20 22 4d 69 63 72 6f 73 6f 66 74 20 45 6e 68 = "Microsoft Enh
05f0: 61 6e 63 65 64 20 44 53 53 20 61 6e 64 20 44 69 anced DSS and Di
0600: 66 66 69 65 2d 48 65 6c 6c 6d 61 6e 20 43 72 79 ffie-Hellman Cry
0610: 70 74 6f 67 72 61 70 68 69 63 20 50 72 6f 76 69 ptographic Provi
0620: 64 65 72 22 2c 0a 09 4d 53 5f 44 45 46 5f 44 48 der",..MS_DEF_DH
0630: 5f 53 43 48 41 4e 4e 45 4c 5f 50 52 4f 56 20 3d _SCHANNEL_PROV =
0640: 20 22 4d 69 63 72 6f 73 6f 66 74 20 44 48 20 53 "Microsoft DH S
0650: 43 68 61 6e 6e 65 6c 20 43 72 79 70 74 6f 67 72 Channel Cryptogr
0660: 61 70 68 69 63 20 50 72 6f 76 69 64 65 72 22 2c aphic Provider",
0670: 0a 09 4d 53 5f 53 43 41 52 44 5f 50 52 4f 56 20 ..MS_SCARD_PROV
0680: 3d 20 22 4d 69 63 72 6f 73 6f 66 74 20 42 61 73 = "Microsoft Bas
0690: 65 20 53 6d 61 72 74 20 43 61 72 64 20 43 72 79 e Smart Card Cry
06a0: 70 74 6f 20 50 72 6f 76 69 64 65 72 22 3b 0a 0a pto Provider";..
06b0: 73 74 61 74 69 63 20 69 66 20 28 57 49 4e 56 45 static if (WINVE
06c0: 52 20 3e 20 30 78 35 30 31 29 20 7b 0a 09 63 6f R > 0x501) {..co
06d0: 6e 73 74 20 54 43 48 41 52 5b 5d 20 4d 53 5f 45 nst TCHAR[] MS_E
06e0: 4e 48 5f 52 53 41 5f 41 45 53 5f 50 52 4f 56 0a NH_RSA_AES_PROV.
06f0: 09 20 20 3d 20 22 4d 69 63 72 6f 73 6f 66 74 20 . = "Microsoft
0700: 45 6e 68 61 6e 63 65 64 20 52 53 41 20 61 6e 64 Enhanced RSA and
0710: 20 41 45 53 20 43 72 79 70 74 6f 67 72 61 70 68 AES Cryptograph
0720: 69 63 20 50 72 6f 76 69 64 65 72 22 3b 0a 7d 20 ic Provider";.}
0730: 65 6c 73 65 20 73 74 61 74 69 63 20 69 66 20 28 else static if (
0740: 57 49 4e 56 45 52 20 3d 3d 20 30 78 35 30 31 29 WINVER == 0x501)
0750: 20 7b 0a 09 63 6f 6e 73 74 20 54 43 48 41 52 5b {..const TCHAR[
0760: 5d 20 4d 53 5f 45 4e 48 5f 52 53 41 5f 41 45 53 ] MS_ENH_RSA_AES
0770: 5f 50 52 4f 56 0a 09 20 20 3d 20 22 4d 69 63 72 _PROV.. = "Micr
0780: 6f 73 6f 66 74 20 45 6e 68 61 6e 63 65 64 20 52 osoft Enhanced R
0790: 53 41 20 61 6e 64 20 41 45 53 20 43 72 79 70 74 SA and AES Crypt
07a0: 6f 67 72 61 70 68 69 63 20 50 72 6f 76 69 64 65 ographic Provide
07b0: 72 20 28 50 72 6f 74 6f 74 79 70 65 29 22 3b 0a r (Prototype)";.
07c0: 7d 0a 0a 41 4c 47 5f 49 44 20 47 45 54 5f 41 4c }..ALG_ID GET_AL
07d0: 47 5f 43 4c 41 53 53 28 41 4c 47 5f 49 44 20 78 G_CLASS(ALG_ID x
07e0: 29 20 7b 20 72 65 74 75 72 6e 20 78 20 26 20 30 ) { return x & 0
07f0: 78 45 30 30 30 3b 20 7d 0a 41 4c 47 5f 49 44 20 xE000; }.ALG_ID
0800: 47 45 54 5f 41 4c 47 5f 54 59 50 45 20 28 41 4c GET_ALG_TYPE (AL
0810: 47 5f 49 44 20 78 29 20 7b 20 72 65 74 75 72 6e G_ID x) { return
0820: 20 78 20 26 20 30 78 31 45 30 30 3b 20 7d 0a 41 x & 0x1E00; }.A
0830: 4c 47 5f 49 44 20 47 45 54 5f 41 4c 47 5f 53 49 LG_ID GET_ALG_SI
0840: 44 20 20 28 41 4c 47 5f 49 44 20 78 29 20 7b 20 D (ALG_ID x) {
0850: 72 65 74 75 72 6e 20 78 20 26 20 30 78 30 31 46 return x & 0x01F
0860: 46 3b 20 7d 0a 0a 65 6e 75 6d 20 3a 20 41 4c 47 F; }..enum : ALG
0870: 5f 49 44 20 7b 0a 09 41 4c 47 5f 43 4c 41 53 53 _ID {..ALG_CLASS
0880: 5f 41 4e 59 20 20 20 20 20 20 20 20 20 20 20 3d _ANY =
0890: 20 30 2c 0a 09 41 4c 47 5f 43 4c 41 53 53 5f 53 0,..ALG_CLASS_S
08a0: 49 47 4e 41 54 55 52 45 20 20 20 20 20 3d 20 30 IGNATURE = 0
08b0: 78 32 30 30 30 2c 0a 09 41 4c 47 5f 43 4c 41 53 x2000,..ALG_CLAS
08c0: 53 5f 4d 53 47 5f 45 4e 43 52 59 50 54 20 20 20 S_MSG_ENCRYPT
08d0: 3d 20 30 78 34 30 30 30 2c 0a 09 41 4c 47 5f 43 = 0x4000,..ALG_C
08e0: 4c 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 LASS_DATA_ENCRYP
08f0: 54 20 20 3d 20 30 78 36 30 30 30 2c 0a 09 41 4c T = 0x6000,..AL
0900: 47 5f 43 4c 41 53 53 5f 48 41 53 48 20 20 20 20 G_CLASS_HASH
0910: 20 20 20 20 20 20 3d 20 30 78 38 30 30 30 2c 0a = 0x8000,.
0920: 09 41 4c 47 5f 43 4c 41 53 53 5f 4b 45 59 5f 45 .ALG_CLASS_KEY_E
0930: 58 43 48 41 4e 47 45 20 20 3d 20 30 78 41 30 30 XCHANGE = 0xA00
0940: 30 2c 0a 09 41 4c 47 5f 43 4c 41 53 53 5f 41 4c 0,..ALG_CLASS_AL
0950: 4c 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 L = 0x
0960: 45 30 30 30 0a 7d 0a 0a 65 6e 75 6d 20 3a 20 41 E000.}..enum : A
0970: 4c 47 5f 49 44 20 7b 0a 09 41 4c 47 5f 54 59 50 LG_ID {..ALG_TYP
0980: 45 5f 41 4e 59 20 20 20 20 20 20 20 20 20 20 20 E_ANY
0990: 3d 20 30 2c 0a 09 41 4c 47 5f 54 59 50 45 5f 44 = 0,..ALG_TYPE_D
09a0: 53 53 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 SS = 0
09b0: 78 30 32 30 30 2c 0a 09 41 4c 47 5f 54 59 50 45 x0200,..ALG_TYPE
09c0: 5f 52 53 41 20 20 20 20 20 20 20 20 20 20 20 3d _RSA =
09d0: 20 30 78 30 34 30 30 2c 0a 09 41 4c 47 5f 54 59 0x0400,..ALG_TY
09e0: 50 45 5f 42 4c 4f 43 4b 20 20 20 20 20 20 20 20 PE_BLOCK
09f0: 20 3d 20 30 78 30 36 30 30 2c 0a 09 41 4c 47 5f = 0x0600,..ALG_
0a00: 54 59 50 45 5f 53 54 52 45 41 4d 20 20 20 20 20 TYPE_STREAM
0a10: 20 20 20 3d 20 30 78 30 38 30 30 2c 0a 09 41 4c = 0x0800,..AL
0a20: 47 5f 54 59 50 45 5f 44 48 20 20 20 20 20 20 20 G_TYPE_DH
0a30: 20 20 20 20 20 3d 20 30 78 30 41 30 30 2c 0a 09 = 0x0A00,..
0a40: 41 4c 47 5f 54 59 50 45 5f 53 45 43 55 52 45 43 ALG_TYPE_SECUREC
0a50: 48 41 4e 4e 45 4c 20 3d 20 30 78 30 43 30 30 0a HANNEL = 0x0C00.
0a60: 7d 0a 0a 65 6e 75 6d 20 3a 20 41 4c 47 5f 49 44 }..enum : ALG_ID
0a70: 20 7b 0a 09 41 4c 47 5f 53 49 44 5f 41 4e 59 20 {..ALG_SID_ANY
0a80: 20 20 20 20 20 20 20 20 20 3d 20 20 30 2c 0a 09 = 0,..
0a90: 41 4c 47 5f 53 49 44 5f 52 53 41 5f 41 4e 59 20 ALG_SID_RSA_ANY
0aa0: 20 20 20 20 20 3d 20 20 30 2c 0a 09 41 4c 47 5f = 0,..ALG_
0ab0: 53 49 44 5f 52 53 41 5f 50 4b 43 53 2c 0a 09 41 SID_RSA_PKCS,..A
0ac0: 4c 47 5f 53 49 44 5f 52 53 41 5f 4d 53 41 54 57 LG_SID_RSA_MSATW
0ad0: 4f 52 4b 2c 0a 09 41 4c 47 5f 53 49 44 5f 52 53 ORK,..ALG_SID_RS
0ae0: 41 5f 45 4e 54 52 55 53 54 2c 0a 09 41 4c 47 5f A_ENTRUST,..ALG_
0af0: 53 49 44 5f 52 53 41 5f 50 47 50 2c 20 20 2f 2f SID_RSA_PGP, //
0b00: 20 3d 20 20 34 0a 09 41 4c 47 5f 53 49 44 5f 44 = 4..ALG_SID_D
0b10: 53 53 5f 41 4e 59 20 20 20 20 20 20 3d 20 20 30 SS_ANY = 0
0b20: 2c 0a 09 41 4c 47 5f 53 49 44 5f 44 53 53 5f 50 ,..ALG_SID_DSS_P
0b30: 4b 43 53 2c 0a 09 41 4c 47 5f 53 49 44 5f 44 53 KCS,..ALG_SID_DS
0b40: 53 5f 44 4d 53 2c 20 20 2f 2f 20 3d 20 20 32 0a S_DMS, // = 2.
0b50: 09 41 4c 47 5f 53 49 44 5f 44 45 53 20 20 20 20 .ALG_SID_DES
0b60: 20 20 20 20 20 20 3d 20 20 31 2c 0a 09 41 4c 47 = 1,..ALG
0b70: 5f 53 49 44 5f 33 44 45 53 20 20 20 20 20 20 20 _SID_3DES
0b80: 20 20 3d 20 20 33 2c 0a 09 41 4c 47 5f 53 49 44 = 3,..ALG_SID
0b90: 5f 44 45 53 58 2c 0a 09 41 4c 47 5f 53 49 44 5f _DESX,..ALG_SID_
0ba0: 49 44 45 41 2c 0a 09 41 4c 47 5f 53 49 44 5f 43 IDEA,..ALG_SID_C
0bb0: 41 53 54 2c 0a 09 41 4c 47 5f 53 49 44 5f 53 41 AST,..ALG_SID_SA
0bc0: 46 45 52 53 4b 36 34 2c 0a 09 41 4c 47 5f 53 49 FERSK64,..ALG_SI
0bd0: 44 5f 53 41 46 45 52 53 4b 31 32 38 2c 0a 09 41 D_SAFERSK128,..A
0be0: 4c 47 5f 53 49 44 5f 33 44 45 53 5f 31 31 32 2c LG_SID_3DES_112,
0bf0: 0a 09 41 4c 47 5f 53 49 44 5f 53 4b 49 50 4a 41 ..ALG_SID_SKIPJA
0c00: 43 4b 2c 0a 09 41 4c 47 5f 53 49 44 5f 54 45 4b CK,..ALG_SID_TEK
0c10: 2c 0a 09 41 4c 47 5f 53 49 44 5f 43 59 4c 49 4e ,..ALG_SID_CYLIN
0c20: 4b 5f 4d 45 4b 2c 0a 09 41 4c 47 5f 53 49 44 5f K_MEK,..ALG_SID_
0c30: 52 43 35 2c 20 20 20 20 20 20 2f 2f 20 3d 20 31 RC5, // = 1
0c40: 33 0a 09 41 4c 47 5f 53 49 44 5f 52 43 32 20 20 3..ALG_SID_RC2
0c50: 20 20 20 20 20 20 20 20 3d 20 20 32 2c 0a 09 41 = 2,..A
0c60: 4c 47 5f 53 49 44 5f 52 43 34 20 20 20 20 20 20 LG_SID_RC4
0c70: 20 20 20 20 3d 20 20 31 2c 0a 09 41 4c 47 5f 53 = 1,..ALG_S
0c80: 49 44 5f 53 45 41 4c 20 20 20 20 20 20 20 20 20 ID_SEAL
0c90: 3d 20 20 32 2c 0a 09 41 4c 47 5f 53 49 44 5f 4d = 2,..ALG_SID_M
0ca0: 44 32 20 20 20 20 20 20 20 20 20 20 3d 20 20 31 D2 = 1
0cb0: 2c 0a 09 41 4c 47 5f 53 49 44 5f 4d 44 34 2c 0a ,..ALG_SID_MD4,.
0cc0: 09 41 4c 47 5f 53 49 44 5f 4d 44 35 2c 0a 09 41 .ALG_SID_MD5,..A
0cd0: 4c 47 5f 53 49 44 5f 53 48 41 2c 0a 09 41 4c 47 LG_SID_SHA,..ALG
0ce0: 5f 53 49 44 5f 4d 41 43 2c 0a 09 41 4c 47 5f 53 _SID_MAC,..ALG_S
0cf0: 49 44 5f 52 49 50 45 4d 44 2c 0a 09 41 4c 47 5f ID_RIPEMD,..ALG_
0d00: 53 49 44 5f 52 49 50 45 4d 44 31 36 30 2c 0a 09 SID_RIPEMD160,..
0d10: 41 4c 47 5f 53 49 44 5f 53 53 4c 33 53 48 41 4d ALG_SID_SSL3SHAM
0d20: 44 35 2c 0a 09 41 4c 47 5f 53 49 44 5f 48 4d 41 D5,..ALG_SID_HMA
0d30: 43 2c 0a 09 41 4c 47 5f 53 49 44 5f 54 4c 53 31 C,..ALG_SID_TLS1
0d40: 50 52 46 2c 20 20 2f 2f 20 3d 20 31 30 0a 09 41 PRF, // = 10..A
0d50: 4c 47 5f 53 49 44 5f 41 45 53 5f 31 32 38 20 20 LG_SID_AES_128
0d60: 20 20 20 20 3d 20 31 34 2c 0a 09 41 4c 47 5f 53 = 14,..ALG_S
0d70: 49 44 5f 41 45 53 5f 31 39 32 2c 0a 09 41 4c 47 ID_AES_192,..ALG
0d80: 5f 53 49 44 5f 41 45 53 5f 32 35 36 2c 0a 09 41 _SID_AES_256,..A
0d90: 4c 47 5f 53 49 44 5f 41 45 53 2c 20 20 20 20 20 LG_SID_AES,
0da0: 20 2f 2f 20 3d 20 31 37 0a 09 41 4c 47 5f 53 49 // = 17..ALG_SI
0db0: 44 5f 45 58 41 4d 50 4c 45 20 20 20 20 20 20 3d D_EXAMPLE =
0dc0: 20 38 30 0a 7d 0a 0a 65 6e 75 6d 20 3a 20 41 4c 80.}..enum : AL
0dd0: 47 5f 49 44 20 7b 0a 09 43 41 4c 47 5f 4d 44 32 G_ID {..CALG_MD2
0de0: 20 20 20 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c = ALG_CL
0df0: 41 53 53 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 ASS_HASH | ALG_T
0e00: 59 50 45 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 YPE_ANY | ALG_SI
0e10: 44 5f 4d 44 32 2c 0a 09 43 41 4c 47 5f 4d 44 34 D_MD2,..CALG_MD4
0e20: 20 20 20 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c = ALG_CL
0e30: 41 53 53 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 ASS_HASH | ALG_T
0e40: 59 50 45 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 YPE_ANY | ALG_SI
0e50: 44 5f 4d 44 34 2c 0a 09 43 41 4c 47 5f 4d 44 35 D_MD4,..CALG_MD5
0e60: 20 20 20 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c = ALG_CL
0e70: 41 53 53 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 ASS_HASH | ALG_T
0e80: 59 50 45 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 YPE_ANY | ALG_SI
0e90: 44 5f 4d 44 35 2c 0a 09 43 41 4c 47 5f 53 48 41 D_MD5,..CALG_SHA
0ea0: 20 20 20 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c = ALG_CL
0eb0: 41 53 53 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 ASS_HASH | ALG_T
0ec0: 59 50 45 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 YPE_ANY | ALG_SI
0ed0: 44 5f 53 48 41 2c 0a 09 43 41 4c 47 5f 53 48 41 D_SHA,..CALG_SHA
0ee0: 31 20 20 20 20 20 20 20 3d 20 43 41 4c 47 5f 53 1 = CALG_S
0ef0: 48 41 2c 0a 09 43 41 4c 47 5f 4d 41 43 20 20 20 HA,..CALG_MAC
0f00: 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 = ALG_CLASS
0f10: 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 59 50 45 _HASH | ALG_TYPE
0f20: 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 44 5f 4d _ANY | ALG_SID_M
0f30: 41 43 2c 0a 09 43 41 4c 47 5f 33 44 45 53 20 20 AC,..CALG_3DES
0f40: 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 = ALG_CLASS
0f50: 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c 20 _DATA_ENCRYPT |
0f60: 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 7c ALG_TYPE_BLOCK |
0f70: 20 33 2c 0a 09 43 41 4c 47 5f 43 59 4c 49 4e 4b 3,..CALG_CYLINK
0f80: 5f 4d 45 4b 20 3d 20 41 4c 47 5f 43 4c 41 53 53 _MEK = ALG_CLASS
0f90: 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c 20 _DATA_ENCRYPT |
0fa0: 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 7c ALG_TYPE_BLOCK |
0fb0: 20 31 32 2c 0a 09 43 41 4c 47 5f 53 4b 49 50 4a 12,..CALG_SKIPJ
0fc0: 41 43 4b 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 ACK = ALG_CLAS
0fd0: 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c S_DATA_ENCRYPT |
0fe0: 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 ALG_TYPE_BLOCK
0ff0: 7c 20 31 30 2c 0a 09 43 41 4c 47 5f 4b 45 41 5f | 10,..CALG_KEA_
1000: 4b 45 59 58 20 20 20 3d 20 41 4c 47 5f 43 4c 41 KEYX = ALG_CLA
1010: 53 53 5f 4b 45 59 5f 45 58 43 48 41 4e 47 45 20 SS_KEY_EXCHANGE
1020: 7c 20 41 4c 47 5f 54 59 50 45 5f 53 54 52 45 41 | ALG_TYPE_STREA
1030: 4d 20 7c 20 41 4c 47 5f 54 59 50 45 5f 44 53 53 M | ALG_TYPE_DSS
1040: 20 7c 20 34 2c 0a 09 43 41 4c 47 5f 52 53 41 5f | 4,..CALG_RSA_
1050: 53 49 47 4e 20 20 20 3d 20 41 4c 47 5f 43 4c 41 SIGN = ALG_CLA
1060: 53 53 5f 53 49 47 4e 41 54 55 52 45 20 7c 20 41 SS_SIGNATURE | A
1070: 4c 47 5f 54 59 50 45 5f 52 53 41 20 7c 20 41 4c LG_TYPE_RSA | AL
1080: 47 5f 53 49 44 5f 52 53 41 5f 41 4e 59 2c 0a 09 G_SID_RSA_ANY,..
1090: 43 41 4c 47 5f 44 53 53 5f 53 49 47 4e 20 20 20 CALG_DSS_SIGN
10a0: 3d 20 41 4c 47 5f 43 4c 41 53 53 5f 53 49 47 4e = ALG_CLASS_SIGN
10b0: 41 54 55 52 45 20 7c 20 41 4c 47 5f 54 59 50 45 ATURE | ALG_TYPE
10c0: 5f 44 53 53 20 7c 20 41 4c 47 5f 53 49 44 5f 44 _DSS | ALG_SID_D
10d0: 53 53 5f 41 4e 59 2c 0a 09 43 41 4c 47 5f 52 53 SS_ANY,..CALG_RS
10e0: 41 5f 4b 45 59 58 20 20 20 3d 20 41 4c 47 5f 43 A_KEYX = ALG_C
10f0: 4c 41 53 53 5f 4b 45 59 5f 45 58 43 48 41 4e 47 LASS_KEY_EXCHANG
1100: 45 20 7c 20 41 4c 47 5f 54 59 50 45 5f 52 53 41 E | ALG_TYPE_RSA
1110: 20 7c 20 41 4c 47 5f 53 49 44 5f 52 53 41 5f 41 | ALG_SID_RSA_A
1120: 4e 59 2c 0a 09 43 41 4c 47 5f 44 45 53 20 20 20 NY,..CALG_DES
1130: 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 = ALG_CLASS
1140: 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c 20 _DATA_ENCRYPT |
1150: 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 7c ALG_TYPE_BLOCK |
1160: 20 41 4c 47 5f 53 49 44 5f 44 45 53 2c 0a 09 43 ALG_SID_DES,..C
1170: 41 4c 47 5f 52 43 32 20 20 20 20 20 20 20 20 3d ALG_RC2 =
1180: 20 41 4c 47 5f 43 4c 41 53 53 5f 44 41 54 41 5f ALG_CLASS_DATA_
1190: 45 4e 43 52 59 50 54 20 7c 20 41 4c 47 5f 54 59 ENCRYPT | ALG_TY
11a0: 50 45 5f 42 4c 4f 43 4b 20 7c 20 41 4c 47 5f 53 PE_BLOCK | ALG_S
11b0: 49 44 5f 52 43 32 2c 0a 09 43 41 4c 47 5f 52 43 ID_RC2,..CALG_RC
11c0: 34 20 20 20 20 20 20 20 20 3d 20 41 4c 47 5f 43 4 = ALG_C
11d0: 4c 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 LASS_DATA_ENCRYP
11e0: 54 20 7c 20 41 4c 47 5f 54 59 50 45 5f 53 54 52 T | ALG_TYPE_STR
11f0: 45 41 4d 20 7c 20 41 4c 47 5f 53 49 44 5f 52 43 EAM | ALG_SID_RC
1200: 34 2c 0a 09 43 41 4c 47 5f 53 45 41 4c 20 20 20 4,..CALG_SEAL
1210: 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f = ALG_CLASS_
1220: 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c 20 41 DATA_ENCRYPT | A
1230: 4c 47 5f 54 59 50 45 5f 53 54 52 45 41 4d 20 7c LG_TYPE_STREAM |
1240: 20 41 4c 47 5f 53 49 44 5f 53 45 41 4c 2c 0a 09 ALG_SID_SEAL,..
1250: 43 41 4c 47 5f 44 48 5f 45 50 48 45 4d 20 20 20 CALG_DH_EPHEM
1260: 3d 20 41 4c 47 5f 43 4c 41 53 53 5f 4b 45 59 5f = ALG_CLASS_KEY_
1270: 45 58 43 48 41 4e 47 45 20 7c 20 41 4c 47 5f 54 EXCHANGE | ALG_T
1280: 59 50 45 5f 53 54 52 45 41 4d 20 7c 20 41 4c 47 YPE_STREAM | ALG
1290: 5f 54 59 50 45 5f 44 53 53 0a 09 20 20 20 20 20 _TYPE_DSS..
12a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 41 | A
12b0: 4c 47 5f 53 49 44 5f 44 53 53 5f 44 4d 53 2c 0a LG_SID_DSS_DMS,.
12c0: 09 43 41 4c 47 5f 44 45 53 58 20 20 20 20 20 20 .CALG_DESX
12d0: 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f 44 41 54 = ALG_CLASS_DAT
12e0: 41 5f 45 4e 43 52 59 50 54 20 7c 20 41 4c 47 5f A_ENCRYPT | ALG_
12f0: 54 59 50 45 5f 42 4c 4f 43 4b 20 7c 20 41 4c 47 TYPE_BLOCK | ALG
1300: 5f 53 49 44 5f 44 45 53 58 2c 0a 2f 2f 20 69 73 _SID_DESX,.// is
1310: 20 75 6e 64 65 66 69 6e 65 64 20 41 4c 47 5f 43 undefined ALG_C
1320: 4c 41 53 53 5f 44 48 41 53 48 20 69 6e 20 4d 69 LASS_DHASH in Mi
1330: 6e 47 57 20 2d 20 70 72 65 73 75 6d 69 6e 67 20 nGW - presuming
1340: 74 79 70 6f 0a 09 43 41 4c 47 5f 54 4c 53 31 50 typo..CALG_TLS1P
1350: 52 46 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 RF = ALG_CLAS
1360: 53 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 59 50 S_HASH | ALG_TYP
1370: 45 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 44 5f E_ANY | ALG_SID_
1380: 54 4c 53 31 50 52 46 2c 0a 09 43 41 4c 47 5f 41 TLS1PRF,..CALG_A
1390: 45 53 5f 31 32 38 20 20 20 20 3d 20 41 4c 47 5f ES_128 = ALG_
13a0: 43 4c 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 CLASS_DATA_ENCRY
13b0: 50 54 20 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c PT | ALG_TYPE_BL
13c0: 4f 43 4b 20 7c 20 41 4c 47 5f 53 49 44 5f 41 45 OCK | ALG_SID_AE
13d0: 53 5f 31 32 38 2c 0a 09 43 41 4c 47 5f 41 45 53 S_128,..CALG_AES
13e0: 5f 31 39 32 20 20 20 20 3d 20 41 4c 47 5f 43 4c _192 = ALG_CL
13f0: 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 ASS_DATA_ENCRYPT
1400: 20 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 | ALG_TYPE_BLOC
1410: 4b 20 7c 20 41 4c 47 5f 53 49 44 5f 41 45 53 5f K | ALG_SID_AES_
1420: 31 39 32 2c 0a 09 43 41 4c 47 5f 41 45 53 5f 32 192,..CALG_AES_2
1430: 35 36 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 56 = ALG_CLAS
1440: 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c S_DATA_ENCRYPT |
1450: 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 ALG_TYPE_BLOCK
1460: 7c 20 41 4c 47 5f 53 49 44 5f 41 45 53 5f 32 35 | ALG_SID_AES_25
1470: 36 2c 0a 09 43 41 4c 47 5f 41 45 53 20 20 20 20 6,..CALG_AES
1480: 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f = ALG_CLASS_
1490: 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c 20 41 DATA_ENCRYPT | A
14a0: 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 7c 20 LG_TYPE_BLOCK |
14b0: 41 4c 47 5f 53 49 44 5f 41 45 53 2c 0a 7d 0a 0a ALG_SID_AES,.}..
14c0: 2f 2b 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 /+.#define CRYPT
14d0: 5f 56 45 52 49 46 59 43 4f 4e 54 45 58 54 20 30 _VERIFYCONTEXT 0
14e0: 78 46 30 30 30 30 30 30 30 0a 23 64 65 66 69 6e xF0000000.#defin
14f0: 65 20 43 52 59 50 54 5f 4e 45 57 4b 45 59 53 45 e CRYPT_NEWKEYSE
1500: 54 20 38 0a 23 64 65 66 69 6e 65 20 43 52 59 50 T 8.#define CRYP
1510: 54 5f 44 45 4c 45 54 45 4b 45 59 53 45 54 20 31 T_DELETEKEYSET 1
1520: 36 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 6.#define CRYPT_
1530: 4d 41 43 48 49 4e 45 5f 4b 45 59 53 45 54 20 33 MACHINE_KEYSET 3
1540: 32 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 2.#define CRYPT_
1550: 53 49 4c 45 4e 54 20 36 34 0a 23 64 65 66 69 6e SILENT 64.#defin
1560: 65 20 43 52 59 50 54 5f 45 58 50 4f 52 54 41 42 e CRYPT_EXPORTAB
1570: 4c 45 20 31 0a 23 64 65 66 69 6e 65 20 43 52 59 LE 1.#define CRY
1580: 50 54 5f 55 53 45 52 5f 50 52 4f 54 45 43 54 45 PT_USER_PROTECTE
1590: 44 20 32 0a 23 64 65 66 69 6e 65 20 43 52 59 50 D 2.#define CRYP
15a0: 54 5f 43 52 45 41 54 45 5f 53 41 4c 54 20 34 0a T_CREATE_SALT 4.
15b0: 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 55 50 #define CRYPT_UP
15c0: 44 41 54 45 5f 4b 45 59 20 38 0a 23 64 65 66 69 DATE_KEY 8.#defi
15d0: 6e 65 20 53 49 4d 50 4c 45 42 4c 4f 42 20 31 0a ne SIMPLEBLOB 1.
15e0: 23 64 65 66 69 6e 65 20 50 55 42 4c 49 43 4b 45 #define PUBLICKE
15f0: 59 42 4c 4f 42 20 36 0a 23 64 65 66 69 6e 65 20 YBLOB 6.#define
1600: 50 52 49 56 41 54 45 4b 45 59 42 4c 4f 42 20 37 PRIVATEKEYBLOB 7
1610: 0a 23 64 65 66 69 6e 65 20 50 4c 41 49 4e 54 45 .#define PLAINTE
1620: 58 54 4b 45 59 42 4c 4f 42 20 38 0a 23 64 65 66 XTKEYBLOB 8.#def
1630: 69 6e 65 20 4f 50 41 51 55 45 4b 45 59 42 4c 4f ine OPAQUEKEYBLO
1640: 42 20 39 0a 23 64 65 66 69 6e 65 20 50 55 42 4c B 9.#define PUBL
1650: 49 43 4b 45 59 42 4c 4f 42 45 58 20 31 30 0a 23 ICKEYBLOBEX 10.#
1660: 64 65 66 69 6e 65 20 53 59 4d 4d 45 54 52 49 43 define SYMMETRIC
1670: 57 52 41 50 4b 45 59 42 4c 4f 42 20 31 31 0a 23 WRAPKEYBLOB 11.#
1680: 64 65 66 69 6e 65 20 41 54 5f 4b 45 59 45 58 43 define AT_KEYEXC
1690: 48 41 4e 47 45 20 31 0a 23 64 65 66 69 6e 65 20 HANGE 1.#define
16a0: 41 54 5f 53 49 47 4e 41 54 55 52 45 20 32 0a 23 AT_SIGNATURE 2.#
16b0: 64 65 66 69 6e 65 20 43 52 59 50 54 5f 55 53 45 define CRYPT_USE
16c0: 52 44 41 54 41 20 31 0a 23 64 65 66 69 6e 65 20 RDATA 1.#define
16d0: 50 4b 43 53 35 5f 50 41 44 44 49 4e 47 20 31 0a PKCS5_PADDING 1.
16e0: 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 4d 4f #define CRYPT_MO
16f0: 44 45 5f 43 42 43 20 31 0a 23 64 65 66 69 6e 65 DE_CBC 1.#define
1700: 20 43 52 59 50 54 5f 4d 4f 44 45 5f 45 43 42 20 CRYPT_MODE_ECB
1710: 32 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 2.#define CRYPT_
1720: 4d 4f 44 45 5f 4f 46 42 20 33 0a 23 64 65 66 69 MODE_OFB 3.#defi
1730: 6e 65 20 43 52 59 50 54 5f 4d 4f 44 45 5f 43 46 ne CRYPT_MODE_CF
1740: 42 20 34 0a 23 64 65 66 69 6e 65 20 43 52 59 50 B 4.#define CRYP
1750: 54 5f 4d 4f 44 45 5f 43 54 53 20 35 0a 23 64 65 T_MODE_CTS 5.#de
1760: 66 69 6e 65 20 43 52 59 50 54 5f 4d 4f 44 45 5f fine CRYPT_MODE_
1770: 43 42 43 49 20 36 0a 23 64 65 66 69 6e 65 20 43 CBCI 6.#define C
1780: 52 59 50 54 5f 4d 4f 44 45 5f 43 46 42 50 20 37 RYPT_MODE_CFBP 7
1790: 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 4d .#define CRYPT_M
17a0: 4f 44 45 5f 4f 46 42 50 20 38 0a 23 64 65 66 69 ODE_OFBP 8.#defi
17b0: 6e 65 20 43 52 59 50 54 5f 4d 4f 44 45 5f 43 42 ne CRYPT_MODE_CB
17c0: 43 4f 46 4d 20 39 0a 23 64 65 66 69 6e 65 20 43 COFM 9.#define C
17d0: 52 59 50 54 5f 4d 4f 44 45 5f 43 42 43 4f 46 4d RYPT_MODE_CBCOFM
17e0: 49 20 31 30 0a 23 64 65 66 69 6e 65 20 43 52 59 I 10.#define CRY
17f0: 50 54 5f 45 4e 43 52 59 50 54 20 31 0a 23 64 65 PT_ENCRYPT 1.#de
1800: 66 69 6e 65 20 43 52 59 50 54 5f 44 45 43 52 59 fine CRYPT_DECRY
1810: 50 54 20 32 0a 23 64 65 66 69 6e 65 20 43 52 59 PT 2.#define CRY
1820: 50 54 5f 45 58 50 4f 52 54 20 34 0a 23 64 65 66 PT_EXPORT 4.#def
1830: 69 6e 65 20 43 52 59 50 54 5f 52 45 41 44 20 38 ine CRYPT_READ 8
1840: 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 57 .#define CRYPT_W
1850: 52 49 54 45 20 31 36 0a 23 64 65 66 69 6e 65 20 RITE 16.#define
1860: 43 52 59 50 54 5f 4d 41 43 20 33 32 0a 23 64 65 CRYPT_MAC 32.#de
1870: 66 69 6e 65 20 48 50 5f 41 4c 47 49 44 20 31 0a fine HP_ALGID 1.
1880: 23 64 65 66 69 6e 65 20 48 50 5f 48 41 53 48 56 #define HP_HASHV
1890: 41 4c 20 32 0a 23 64 65 66 69 6e 65 20 48 50 5f AL 2.#define HP_
18a0: 48 41 53 48 53 49 5a 45 20 34 0a 23 64 65 66 69 HASHSIZE 4.#defi
18b0: 6e 65 20 48 50 5f 48 4d 41 43 5f 49 4e 46 4f 20 ne HP_HMAC_INFO
18c0: 35 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 5.#define CRYPT_
18d0: 46 41 49 4c 45 44 20 46 41 4c 53 45 0a 23 64 65 FAILED FALSE.#de
18e0: 66 69 6e 65 20 43 52 59 50 54 5f 53 55 43 43 45 fine CRYPT_SUCCE
18f0: 45 44 20 54 52 55 45 0a 23 64 65 66 69 6e 65 20 ED TRUE.#define
1900: 52 43 52 59 50 54 5f 53 55 43 43 45 45 44 45 44 RCRYPT_SUCCEEDED
1910: 28 72 29 20 28 28 72 29 3d 3d 43 52 59 50 54 5f (r) ((r)==CRYPT_
1920: 53 55 43 43 45 45 44 29 0a 23 64 65 66 69 6e 65 SUCCEED).#define
1930: 20 52 43 52 59 50 54 5f 46 41 49 4c 45 44 28 72 RCRYPT_FAILED(r
1940: 29 20 28 28 72 29 3d 3d 43 52 59 50 54 5f 46 41 ) ((r)==CRYPT_FA
1950: 49 4c 45 44 29 0a 23 64 65 66 69 6e 65 20 50 50 ILED).#define PP
1960: 5f 45 4e 55 4d 41 4c 47 53 20 31 0a 23 64 65 66 _ENUMALGS 1.#def
1970: 69 6e 65 20 50 50 5f 45 4e 55 4d 43 4f 4e 54 41 ine PP_ENUMCONTA
1980: 49 4e 45 52 53 20 32 0a 23 64 65 66 69 6e 65 20 INERS 2.#define
1990: 50 50 5f 49 4d 50 54 59 50 45 20 33 0a 23 64 65 PP_IMPTYPE 3.#de
19a0: 66 69 6e 65 20 50 50 5f 4e 41 4d 45 20 34 0a 23 fine PP_NAME 4.#
19b0: 64 65 66 69 6e 65 20 50 50 5f 56 45 52 53 49 4f define PP_VERSIO
19c0: 4e 20 35 0a 23 64 65 66 69 6e 65 20 50 50 5f 43 N 5.#define PP_C
19d0: 4f 4e 54 41 49 4e 45 52 20 36 0a 23 64 65 66 69 ONTAINER 6.#defi
19e0: 6e 65 20 50 50 5f 43 48 41 4e 47 45 5f 50 41 53 ne PP_CHANGE_PAS
19f0: 53 57 4f 52 44 09 37 0a 23 64 65 66 69 6e 65 20 SWORD.7.#define
1a00: 50 50 5f 4b 45 59 53 45 54 5f 53 45 43 5f 44 45 PP_KEYSET_SEC_DE
1a10: 53 43 52 09 38 0a 23 64 65 66 69 6e 65 20 50 50 SCR.8.#define PP
1a20: 5f 43 45 52 54 43 48 41 49 4e 09 39 0a 23 64 65 _CERTCHAIN.9.#de
1a30: 66 69 6e 65 20 50 50 5f 4b 45 59 5f 54 59 50 45 fine PP_KEY_TYPE
1a40: 5f 53 55 42 54 59 50 45 09 31 30 0a 23 64 65 66 _SUBTYPE.10.#def
1a50: 69 6e 65 20 50 50 5f 50 52 4f 56 54 59 50 45 09 ine PP_PROVTYPE.
1a60: 31 36 0a 23 64 65 66 69 6e 65 20 50 50 5f 4b 45 16.#define PP_KE
1a70: 59 53 54 4f 52 41 47 45 09 31 37 0a 23 64 65 66 YSTORAGE.17.#def
1a80: 69 6e 65 20 50 50 5f 41 50 50 4c 49 5f 43 45 52 ine PP_APPLI_CER
1a90: 54 09 31 38 0a 23 64 65 66 69 6e 65 20 50 50 5f T.18.#define PP_
1aa0: 53 59 4d 5f 4b 45 59 53 49 5a 45 09 31 39 0a 23 SYM_KEYSIZE.19.#
1ab0: 64 65 66 69 6e 65 20 50 50 5f 53 45 53 53 49 4f define PP_SESSIO
1ac0: 4e 5f 4b 45 59 53 49 5a 45 09 32 30 0a 23 64 65 N_KEYSIZE.20.#de
1ad0: 66 69 6e 65 20 50 50 5f 55 49 5f 50 52 4f 4d 50 fine PP_UI_PROMP
1ae0: 54 09 32 31 0a 23 64 65 66 69 6e 65 20 50 50 5f T.21.#define PP_
1af0: 45 4e 55 4d 41 4c 47 53 5f 45 58 09 32 32 0a 23 ENUMALGS_EX.22.#
1b00: 64 65 66 69 6e 65 20 50 50 5f 45 4e 55 4d 4d 41 define PP_ENUMMA
1b10: 4e 44 52 4f 4f 54 53 20 32 35 0a 23 64 65 66 69 NDROOTS 25.#defi
1b20: 6e 65 20 50 50 5f 45 4e 55 4d 45 4c 45 43 54 52 ne PP_ENUMELECTR
1b30: 4f 4f 54 53 20 32 36 0a 23 64 65 66 69 6e 65 20 OOTS 26.#define
1b40: 50 50 5f 4b 45 59 53 45 54 5f 54 59 50 45 20 32 PP_KEYSET_TYPE 2
1b50: 37 0a 23 64 65 66 69 6e 65 20 50 50 5f 41 44 4d 7.#define PP_ADM
1b60: 49 4e 5f 50 49 4e 20 33 31 0a 23 64 65 66 69 6e IN_PIN 31.#defin
1b70: 65 20 50 50 5f 4b 45 59 45 58 43 48 41 4e 47 45 e PP_KEYEXCHANGE
1b80: 5f 50 49 4e 20 33 32 0a 23 64 65 66 69 6e 65 20 _PIN 32.#define
1b90: 50 50 5f 53 49 47 4e 41 54 55 52 45 5f 50 49 4e PP_SIGNATURE_PIN
1ba0: 20 33 33 0a 23 64 65 66 69 6e 65 20 50 50 5f 53 33.#define PP_S
1bb0: 49 47 5f 4b 45 59 53 49 5a 45 5f 49 4e 43 20 33 IG_KEYSIZE_INC 3
1bc0: 34 0a 23 64 65 66 69 6e 65 20 50 50 5f 4b 45 59 4.#define PP_KEY
1bd0: 58 5f 4b 45 59 53 49 5a 45 5f 49 4e 43 20 33 35 X_KEYSIZE_INC 35
1be0: 0a 23 64 65 66 69 6e 65 20 50 50 5f 55 4e 49 51 .#define PP_UNIQ
1bf0: 55 45 5f 43 4f 4e 54 41 49 4e 45 52 20 33 36 0a UE_CONTAINER 36.
1c00: 23 64 65 66 69 6e 65 20 50 50 5f 53 47 43 5f 49 #define PP_SGC_I
1c10: 4e 46 4f 20 33 37 0a 23 64 65 66 69 6e 65 20 50 NFO 37.#define P
1c20: 50 5f 55 53 45 5f 48 41 52 44 57 41 52 45 5f 52 P_USE_HARDWARE_R
1c30: 4e 47 20 33 38 0a 23 64 65 66 69 6e 65 20 50 50 NG 38.#define PP
1c40: 5f 4b 45 59 53 50 45 43 20 33 39 0a 23 64 65 66 _KEYSPEC 39.#def
1c50: 69 6e 65 20 50 50 5f 45 4e 55 4d 45 58 5f 53 49 ine PP_ENUMEX_SI
1c60: 47 4e 49 4e 47 5f 50 52 4f 54 20 34 30 0a 23 64 GNING_PROT 40.#d
1c70: 65 66 69 6e 65 20 43 52 59 50 54 5f 46 49 52 53 efine CRYPT_FIRS
1c80: 54 20 31 0a 23 64 65 66 69 6e 65 20 43 52 59 50 T 1.#define CRYP
1c90: 54 5f 4e 45 58 54 20 32 0a 23 64 65 66 69 6e 65 T_NEXT 2.#define
1ca0: 20 43 52 59 50 54 5f 49 4d 50 4c 5f 48 41 52 44 CRYPT_IMPL_HARD
1cb0: 57 41 52 45 20 31 0a 23 64 65 66 69 6e 65 20 43 WARE 1.#define C
1cc0: 52 59 50 54 5f 49 4d 50 4c 5f 53 4f 46 54 57 41 RYPT_IMPL_SOFTWA
1cd0: 52 45 20 32 0a 23 64 65 66 69 6e 65 20 43 52 59 RE 2.#define CRY
1ce0: 50 54 5f 49 4d 50 4c 5f 4d 49 58 45 44 20 33 0a PT_IMPL_MIXED 3.
1cf0: 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 49 4d #define CRYPT_IM
1d00: 50 4c 5f 55 4e 4b 4e 4f 57 4e 20 34 0a 23 64 65 PL_UNKNOWN 4.#de
1d10: 66 69 6e 65 20 50 52 4f 56 5f 52 53 41 5f 46 55 fine PROV_RSA_FU
1d20: 4c 4c 20 31 0a 23 64 65 66 69 6e 65 20 50 52 4f LL 1.#define PRO
1d30: 56 5f 52 53 41 5f 53 49 47 20 32 0a 23 64 65 66 V_RSA_SIG 2.#def
1d40: 69 6e 65 20 50 52 4f 56 5f 44 53 53 20 33 0a 23 ine PROV_DSS 3.#
1d50: 64 65 66 69 6e 65 20 50 52 4f 56 5f 46 4f 52 54 define PROV_FORT
1d60: 45 5a 5a 41 20 34 0a 23 64 65 66 69 6e 65 20 50 EZZA 4.#define P
1d70: 52 4f 56 5f 4d 53 5f 4d 41 49 4c 20 35 0a 23 64 ROV_MS_MAIL 5.#d
1d80: 65 66 69 6e 65 20 50 52 4f 56 5f 53 53 4c 20 36 efine PROV_SSL 6
1d90: 0a 23 64 65 66 69 6e 65 20 50 52 4f 56 5f 53 54 .#define PROV_ST
1da0: 54 5f 4d 45 52 20 37 0a 23 64 65 66 69 6e 65 20 T_MER 7.#define
1db0: 50 52 4f 56 5f 53 54 54 5f 41 43 51 20 38 0a 23 PROV_STT_ACQ 8.#
1dc0: 64 65 66 69 6e 65 20 50 52 4f 56 5f 53 54 54 5f define PROV_STT_
1dd0: 42 52 4e 44 20 39 0a 23 64 65 66 69 6e 65 20 50 BRND 9.#define P
1de0: 52 4f 56 5f 53 54 54 5f 52 4f 4f 54 20 31 30 0a ROV_STT_ROOT 10.
1df0: 23 64 65 66 69 6e 65 20 50 52 4f 56 5f 53 54 54 #define PROV_STT
1e00: 5f 49 53 53 20 31 31 0a 23 64 65 66 69 6e 65 20 _ISS 11.#define
1e10: 50 52 4f 56 5f 52 53 41 5f 53 43 48 41 4e 4e 45 PROV_RSA_SCHANNE
1e20: 4c 20 31 32 0a 23 64 65 66 69 6e 65 20 50 52 4f L 12.#define PRO
1e30: 56 5f 44 53 53 5f 44 48 20 31 33 0a 23 64 65 66 V_DSS_DH 13.#def
1e40: 69 6e 65 20 50 52 4f 56 5f 45 43 5f 45 43 44 53 ine PROV_EC_ECDS
1e50: 41 5f 53 49 47 20 31 34 0a 23 64 65 66 69 6e 65 A_SIG 14.#define
1e60: 20 50 52 4f 56 5f 45 43 5f 45 43 4e 52 41 5f 53 PROV_EC_ECNRA_S
1e70: 49 47 20 31 35 0a 23 64 65 66 69 6e 65 20 50 52 IG 15.#define PR
1e80: 4f 56 5f 45 43 5f 45 43 44 53 41 5f 46 55 4c 4c OV_EC_ECDSA_FULL
1e90: 20 31 36 0a 23 64 65 66 69 6e 65 20 50 52 4f 56 16.#define PROV
1ea0: 5f 45 43 5f 45 43 4e 52 41 5f 46 55 4c 4c 20 31 _EC_ECNRA_FULL 1
1eb0: 37 0a 23 64 65 66 69 6e 65 20 50 52 4f 56 5f 44 7.#define PROV_D
1ec0: 48 5f 53 43 48 41 4e 4e 45 4c 20 31 38 0a 23 64 H_SCHANNEL 18.#d
1ed0: 65 66 69 6e 65 20 50 52 4f 56 5f 53 50 59 52 55 efine PROV_SPYRU
1ee0: 53 5f 4c 59 4e 4b 53 20 32 30 0a 23 64 65 66 69 S_LYNKS 20.#defi
1ef0: 6e 65 20 50 52 4f 56 5f 52 4e 47 20 32 31 0a 23 ne PROV_RNG 21.#
1f00: 64 65 66 69 6e 65 20 50 52 4f 56 5f 49 4e 54 45 define PROV_INTE
1f10: 4c 5f 53 45 43 20 32 32 0a 23 64 65 66 69 6e 65 L_SEC 22.#define
1f20: 20 50 52 4f 56 5f 52 53 41 5f 41 45 53 20 32 34 PROV_RSA_AES 24
1f30: 0a 23 64 65 66 69 6e 65 20 4d 41 58 55 49 44 4c .#define MAXUIDL
1f40: 45 4e 20 36 34 0a 23 64 65 66 69 6e 65 20 43 55 EN 64.#define CU
1f50: 52 5f 42 4c 4f 42 5f 56 45 52 53 49 4f 4e 20 32 R_BLOB_VERSION 2
1f60: 0a 23 64 65 66 69 6e 65 20 58 35 30 39 5f 41 53 .#define X509_AS
1f70: 4e 5f 45 4e 43 4f 44 49 4e 47 20 31 0a 23 64 65 N_ENCODING 1.#de
1f80: 66 69 6e 65 20 50 4b 43 53 5f 37 5f 41 53 4e 5f fine PKCS_7_ASN_
1f90: 45 4e 43 4f 44 49 4e 47 20 20 36 35 35 33 36 0a ENCODING 65536.
1fa0: 23 64 65 66 69 6e 65 20 43 45 52 54 5f 56 31 20 #define CERT_V1
1fb0: 30 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 56 0.#define CERT_V
1fc0: 32 20 31 0a 23 64 65 66 69 6e 65 20 43 45 52 54 2 1.#define CERT
1fd0: 5f 56 33 20 32 0a 23 64 65 66 69 6e 65 20 43 45 _V3 2.#define CE
1fe0: 52 54 5f 45 5f 43 48 41 49 4e 49 4e 47 20 28 2d RT_E_CHAINING (-
1ff0: 32 31 34 36 37 36 32 34 38 36 29 0a 23 64 65 66 2146762486).#def
2000: 69 6e 65 20 43 45 52 54 5f 45 5f 43 4e 5f 4e 4f ine CERT_E_CN_NO
2010: 5f 4d 41 54 43 48 20 28 2d 32 31 34 36 37 36 32 _MATCH (-2146762
2020: 34 38 31 29 0a 23 64 65 66 69 6e 65 20 43 45 52 481).#define CER
2030: 54 5f 45 5f 45 58 50 49 52 45 44 20 28 2d 32 31 T_E_EXPIRED (-21
2040: 34 36 37 36 32 34 39 35 29 0a 23 64 65 66 69 6e 46762495).#defin
2050: 65 20 43 45 52 54 5f 45 5f 50 55 52 50 4f 53 45 e CERT_E_PURPOSE
2060: 20 28 2d 32 31 34 36 37 36 32 34 39 30 29 0a 23 (-2146762490).#
2070: 64 65 66 69 6e 65 20 43 45 52 54 5f 45 5f 52 45 define CERT_E_RE
2080: 56 4f 43 41 54 49 4f 4e 5f 46 41 49 4c 55 52 45 VOCATION_FAILURE
2090: 20 28 2d 32 31 34 36 37 36 32 34 38 32 29 0a 23 (-2146762482).#
20a0: 64 65 66 69 6e 65 20 43 45 52 54 5f 45 5f 52 45 define CERT_E_RE
20b0: 56 4f 4b 45 44 20 28 2d 32 31 34 36 37 36 32 34 VOKED (-21467624
20c0: 38 34 29 0a 23 64 65 66 69 6e 65 20 43 45 52 54 84).#define CERT
20d0: 5f 45 5f 52 4f 4c 45 20 28 2d 32 31 34 36 37 36 _E_ROLE (-214676
20e0: 32 34 39 33 29 0a 23 64 65 66 69 6e 65 20 43 45 2493).#define CE
20f0: 52 54 5f 45 5f 55 4e 54 52 55 53 54 45 44 52 4f RT_E_UNTRUSTEDRO
2100: 4f 54 20 28 2d 32 31 34 36 37 36 32 34 38 37 29 OT (-2146762487)
2110: 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 45 5f .#define CERT_E_
2120: 55 4e 54 52 55 53 54 45 44 54 45 53 54 52 4f 4f UNTRUSTEDTESTROO
2130: 54 20 28 2d 32 31 34 36 37 36 32 34 38 33 29 0a T (-2146762483).
2140: 23 64 65 66 69 6e 65 20 43 45 52 54 5f 45 5f 56 #define CERT_E_V
2150: 41 4c 49 44 49 54 59 50 45 52 49 4f 44 4e 45 53 ALIDITYPERIODNES
2160: 54 49 4e 47 20 28 2d 32 31 34 36 37 36 32 34 39 TING (-214676249
2170: 34 29 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 4).#define CERT_
2180: 45 5f 57 52 4f 4e 47 5f 55 53 41 47 45 20 28 2d E_WRONG_USAGE (-
2190: 32 31 34 36 37 36 32 34 38 30 29 0a 23 64 65 66 2146762480).#def
21a0: 69 6e 65 20 43 45 52 54 5f 45 5f 50 41 54 48 4c ine CERT_E_PATHL
21b0: 45 4e 43 4f 4e 53 54 20 28 2d 32 31 34 36 37 36 ENCONST (-214676
21c0: 32 34 39 32 29 0a 23 64 65 66 69 6e 65 20 43 45 2492).#define CE
21d0: 52 54 5f 45 5f 43 52 49 54 49 43 41 4c 20 28 2d RT_E_CRITICAL (-
21e0: 32 31 34 36 37 36 32 34 39 31 29 0a 23 64 65 66 2146762491).#def
21f0: 69 6e 65 20 43 45 52 54 5f 45 5f 49 53 53 55 45 ine CERT_E_ISSUE
2200: 52 43 48 41 49 4e 49 4e 47 20 28 2d 32 31 34 36 RCHAINING (-2146
2210: 37 36 32 34 38 39 29 0a 23 64 65 66 69 6e 65 20 762489).#define
2220: 43 45 52 54 5f 45 5f 4d 41 4c 46 4f 52 4d 45 44 CERT_E_MALFORMED
2230: 20 28 2d 32 31 34 36 37 36 32 34 38 38 29 0a 23 (-2146762488).#
2240: 64 65 66 69 6e 65 20 43 52 59 50 54 5f 45 5f 52 define CRYPT_E_R
2250: 45 56 4f 43 41 54 49 4f 4e 5f 4f 46 46 4c 49 4e EVOCATION_OFFLIN
2260: 45 20 28 2d 32 31 34 36 38 38 35 36 31 33 29 0a E (-2146885613).
2270: 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 45 5f #define CRYPT_E_
2280: 52 45 56 4f 4b 45 44 20 28 2d 32 31 34 36 38 38 REVOKED (-214688
2290: 35 36 31 36 29 0a 23 64 65 66 69 6e 65 20 54 52 5616).#define TR
22a0: 55 53 54 5f 45 5f 42 41 53 49 43 5f 43 4f 4e 53 UST_E_BASIC_CONS
22b0: 54 52 41 49 4e 54 53 20 28 2d 32 31 34 36 38 36 TRAINTS (-214686
22c0: 39 32 32 33 29 0a 23 64 65 66 69 6e 65 20 54 52 9223).#define TR
22d0: 55 53 54 5f 45 5f 43 45 52 54 5f 53 49 47 4e 41 UST_E_CERT_SIGNA
22e0: 54 55 52 45 20 28 2d 32 31 34 36 38 36 39 32 34 TURE (-214686924
22f0: 34 29 0a 23 64 65 66 69 6e 65 20 54 52 55 53 54 4).#define TRUST
2300: 5f 45 5f 46 41 49 4c 20 28 2d 32 31 34 36 37 36 _E_FAIL (-214676
2310: 32 34 38 35 29 0a 23 64 65 66 69 6e 65 20 43 45 2485).#define CE
2320: 52 54 5f 54 52 55 53 54 5f 4e 4f 5f 45 52 52 4f RT_TRUST_NO_ERRO
2330: 52 20 30 0a 23 64 65 66 69 6e 65 20 43 45 52 54 R 0.#define CERT
2340: 5f 54 52 55 53 54 5f 49 53 5f 4e 4f 54 5f 54 49 _TRUST_IS_NOT_TI
2350: 4d 45 5f 56 41 4c 49 44 20 31 0a 23 64 65 66 69 ME_VALID 1.#defi
2360: 6e 65 20 43 45 52 54 5f 54 52 55 53 54 5f 49 53 ne CERT_TRUST_IS
2370: 5f 4e 4f 54 5f 54 49 4d 45 5f 4e 45 53 54 45 44 _NOT_TIME_NESTED
2380: 20 32 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 2.#define CERT_
2390: 54 52 55 53 54 5f 49 53 5f 52 45 56 4f 4b 45 44 TRUST_IS_REVOKED
23a0: 20 34 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 4.#define CERT_
23b0: 54 52 55 53 54 5f 49 53 5f 4e 4f 54 5f 53 49 47 TRUST_IS_NOT_SIG
23c0: 4e 41 54 55 52 45 5f 56 41 4c 49 44 20 38 0a 23 NATURE_VALID 8.#
23d0: 64 65 66 69 6e 65 20 43 45 52 54 5f 54 52 55 53 define CERT_TRUS
23e0: 54 5f 49 53 5f 4e 4f 54 5f 56 41 4c 49 44 5f 46 T_IS_NOT_VALID_F
23f0: 4f 52 5f 55 53 41 47 45 20 31 36 0a 23 64 65 66 OR_USAGE 16.#def
2400: 69 6e 65 20 43 45 52 54 5f 54 52 55 53 54 5f 49 ine CERT_TRUST_I
2410: 53 5f 55 4e 54 52 55 53 54 45 44 5f 52 4f 4f 54 S_UNTRUSTED_ROOT
2420: 20 33 32 0a 23 64 65 66 69 6e 65 20 43 45 52 54 32.#define CERT
2430: 5f 54 52 55 53 54 5f 52 45 56 4f 43 41 54 49 4f _TRUST_REVOCATIO
2440: 4e 5f 53 54 41 54 55 53 5f 55 4e 4b 4e 4f 57 4e N_STATUS_UNKNOWN
2450: 20 36 34 0a 23 64 65 66 69 6e 65 20 43 45 52 54 64.#define CERT
2460: 5f 54 52 55 53 54 5f 49 53 5f 43 59 43 4c 49 43 _TRUST_IS_CYCLIC
2470: 20 31 32 38 0a 23 64 65 66 69 6e 65 20 43 45 52 128.#define CER
2480: 54 5f 54 52 55 53 54 5f 49 53 5f 50 41 52 54 49 T_TRUST_IS_PARTI
2490: 41 4c 5f 43 48 41 49 4e 20 36 35 35 33 36 0a 23 AL_CHAIN 65536.#
24a0: 64 65 66 69 6e 65 20 43 45 52 54 5f 54 52 55 53 define CERT_TRUS
24b0: 54 5f 43 54 4c 5f 49 53 5f 4e 4f 54 5f 54 49 4d T_CTL_IS_NOT_TIM
24c0: 45 5f 56 41 4c 49 44 20 31 33 31 30 37 32 0a 23 E_VALID 131072.#
24d0: 64 65 66 69 6e 65 20 43 45 52 54 5f 54 52 55 53 define CERT_TRUS
24e0: 54 5f 43 54 4c 5f 49 53 5f 4e 4f 54 5f 53 49 47 T_CTL_IS_NOT_SIG
24f0: 4e 41 54 55 52 45 5f 56 41 4c 49 44 20 32 36 32 NATURE_VALID 262
2500: 31 34 34 0a 23 64 65 66 69 6e 65 20 43 45 52 54 144.#define CERT
2510: 5f 54 52 55 53 54 5f 43 54 4c 5f 49 53 5f 4e 4f _TRUST_CTL_IS_NO
2520: 54 5f 56 41 4c 49 44 5f 46 4f 52 5f 55 53 41 47 T_VALID_FOR_USAG
2530: 45 20 35 32 34 32 38 38 0a 23 64 65 66 69 6e 65 E 524288.#define
2540: 20 43 45 52 54 5f 54 52 55 53 54 5f 48 41 53 5f CERT_TRUST_HAS_
2550: 45 58 41 43 54 5f 4d 41 54 43 48 5f 49 53 53 55 EXACT_MATCH_ISSU
2560: 45 52 20 31 0a 23 64 65 66 69 6e 65 20 43 45 52 ER 1.#define CER
2570: 54 5f 54 52 55 53 54 5f 48 41 53 5f 4b 45 59 5f T_TRUST_HAS_KEY_
2580: 4d 41 54 43 48 5f 49 53 53 55 45 52 20 32 0a 23 MATCH_ISSUER 2.#
2590: 64 65 66 69 6e 65 20 43 45 52 54 5f 54 52 55 53 define CERT_TRUS
25a0: 54 5f 48 41 53 5f 4e 41 4d 45 5f 4d 41 54 43 48 T_HAS_NAME_MATCH
25b0: 5f 49 53 53 55 45 52 20 34 0a 23 64 65 66 69 6e _ISSUER 4.#defin
25c0: 65 20 43 45 52 54 5f 54 52 55 53 54 5f 49 53 5f e CERT_TRUST_IS_
25d0: 53 45 4c 46 5f 53 49 47 4e 45 44 20 38 0a 23 64 SELF_SIGNED 8.#d
25e0: 65 66 69 6e 65 20 43 45 52 54 5f 54 52 55 53 54 efine CERT_TRUST
25f0: 5f 49 53 5f 43 4f 4d 50 4c 45 58 5f 43 48 41 49 _IS_COMPLEX_CHAI
2600: 4e 20 36 35 35 33 36 0a 23 64 65 66 69 6e 65 20 N 65536.#define
2610: 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 CERT_CHAIN_POLIC
2620: 59 5f 42 41 53 45 20 28 28 4c 50 43 53 54 52 29 Y_BASE ((LPCSTR)
2630: 20 31 29 0a 23 64 65 66 69 6e 65 20 43 45 52 54 1).#define CERT
2640: 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 41 55 _CHAIN_POLICY_AU
2650: 54 48 45 4e 54 49 43 4f 44 45 20 20 28 28 4c 50 THENTICODE ((LP
2660: 43 53 54 52 29 20 32 29 0a 23 64 65 66 69 6e 65 CSTR) 2).#define
2670: 20 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 CERT_CHAIN_POLI
2680: 43 59 5f 41 55 54 48 45 4e 54 49 43 4f 44 45 5f CY_AUTHENTICODE_
2690: 54 53 20 20 28 28 4c 50 43 53 54 52 29 20 33 29 TS ((LPCSTR) 3)
26a0: 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 43 48 .#define CERT_CH
26b0: 41 49 4e 5f 50 4f 4c 49 43 59 5f 53 53 4c 20 20 AIN_POLICY_SSL
26c0: 28 28 4c 50 43 53 54 52 29 20 34 29 0a 23 64 65 ((LPCSTR) 4).#de
26d0: 66 69 6e 65 20 43 45 52 54 5f 43 48 41 49 4e 5f fine CERT_CHAIN_
26e0: 50 4f 4c 49 43 59 5f 42 41 53 49 43 5f 43 4f 4e POLICY_BASIC_CON
26f0: 53 54 52 41 49 4e 54 53 20 28 28 4c 50 43 53 54 STRAINTS ((LPCST
2700: 52 29 20 35 29 0a 23 64 65 66 69 6e 65 20 43 45 R) 5).#define CE
2710: 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f RT_CHAIN_POLICY_
2720: 4e 54 5f 41 55 54 48 20 28 28 4c 50 43 53 54 52 NT_AUTH ((LPCSTR
2730: 29 20 36 29 0a 23 64 65 66 69 6e 65 20 55 53 41 ) 6).#define USA
2740: 47 45 5f 4d 41 54 43 48 5f 54 59 50 45 5f 41 4e GE_MATCH_TYPE_AN
2750: 44 20 30 0a 23 64 65 66 69 6e 65 20 55 53 41 47 D 0.#define USAG
2760: 45 5f 4d 41 54 43 48 5f 54 59 50 45 5f 4f 52 20 E_MATCH_TYPE_OR
2770: 31 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 53 1.#define CERT_S
2780: 49 4d 50 4c 45 5f 4e 41 4d 45 5f 53 54 52 20 31 IMPLE_NAME_STR 1
2790: 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 4f 49 .#define CERT_OI
27a0: 44 5f 4e 41 4d 45 5f 53 54 52 20 32 0a 23 64 65 D_NAME_STR 2.#de
27b0: 66 69 6e 65 20 43 45 52 54 5f 58 35 30 30 5f 4e fine CERT_X500_N
27c0: 41 4d 45 5f 53 54 52 20 33 0a 23 64 65 66 69 6e AME_STR 3.#defin
27d0: 65 20 43 45 52 54 5f 4e 41 4d 45 5f 53 54 52 5f e CERT_NAME_STR_
27e0: 53 45 4d 49 43 4f 4c 4f 4e 5f 46 4c 41 47 20 31 SEMICOLON_FLAG 1
27f0: 30 37 33 37 34 31 38 32 34 0a 23 64 65 66 69 6e 073741824.#defin
2800: 65 20 43 45 52 54 5f 4e 41 4d 45 5f 53 54 52 5f e CERT_NAME_STR_
2810: 43 52 4c 46 5f 46 4c 41 47 20 31 33 34 32 31 37 CRLF_FLAG 134217
2820: 37 32 38 0a 23 64 65 66 69 6e 65 20 43 45 52 54 728.#define CERT
2830: 5f 4e 41 4d 45 5f 53 54 52 5f 4e 4f 5f 50 4c 55 _NAME_STR_NO_PLU
2840: 53 5f 46 4c 41 47 20 35 33 36 38 37 30 39 31 32 S_FLAG 536870912
2850: 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 4e 41 .#define CERT_NA
2860: 4d 45 5f 53 54 52 5f 4e 4f 5f 51 55 4f 54 49 4e ME_STR_NO_QUOTIN
2870: 47 5f 46 4c 41 47 20 32 36 38 34 33 35 34 35 36 G_FLAG 268435456
2880: 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 4e 41 .#define CERT_NA
2890: 4d 45 5f 53 54 52 5f 52 45 56 45 52 53 45 5f 46 ME_STR_REVERSE_F
28a0: 4c 41 47 20 33 33 35 35 34 34 33 32 0a 23 64 65 LAG 33554432.#de
28b0: 66 69 6e 65 20 43 45 52 54 5f 4e 41 4d 45 5f 53 fine CERT_NAME_S
28c0: 54 52 5f 45 4e 41 42 4c 45 5f 54 36 31 5f 55 4e TR_ENABLE_T61_UN
28d0: 49 43 4f 44 45 5f 46 4c 41 47 20 31 33 31 30 37 ICODE_FLAG 13107
28e0: 32 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 46 2.#define CERT_F
28f0: 49 4e 44 5f 41 4e 59 20 30 0a 23 64 65 66 69 6e IND_ANY 0.#defin
2900: 65 20 43 45 52 54 5f 46 49 4e 44 5f 43 45 52 54 e CERT_FIND_CERT
2910: 5f 49 44 20 31 30 34 38 35 37 36 0a 23 64 65 66 _ID 1048576.#def
2920: 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f 43 54 ine CERT_FIND_CT
2930: 4c 5f 55 53 41 47 45 20 36 35 35 33 36 30 0a 23 L_USAGE 655360.#
2940: 64 65 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 define CERT_FIND
2950: 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 20 36 35 _ENHKEY_USAGE 65
2960: 35 33 36 30 0a 23 64 65 66 69 6e 65 20 43 45 52 5360.#define CER
2970: 54 5f 46 49 4e 44 5f 45 58 49 53 54 49 4e 47 20 T_FIND_EXISTING
2980: 38 35 31 39 36 38 0a 23 64 65 66 69 6e 65 20 43 851968.#define C
2990: 45 52 54 5f 46 49 4e 44 5f 48 41 53 48 20 36 35 ERT_FIND_HASH 65
29a0: 35 33 36 0a 23 64 65 66 69 6e 65 20 43 45 52 54 536.#define CERT
29b0: 5f 46 49 4e 44 5f 49 53 53 55 45 52 5f 41 54 54 _FIND_ISSUER_ATT
29c0: 52 20 31 39 36 36 31 32 0a 23 64 65 66 69 6e 65 R 196612.#define
29d0: 20 43 45 52 54 5f 46 49 4e 44 5f 49 53 53 55 45 CERT_FIND_ISSUE
29e0: 52 5f 4e 41 4d 45 20 31 33 31 30 37 36 0a 23 64 R_NAME 131076.#d
29f0: 65 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f efine CERT_FIND_
2a00: 49 53 53 55 45 52 5f 4f 46 20 37 38 36 34 33 32 ISSUER_OF 786432
2a10: 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 46 49 .#define CERT_FI
2a20: 4e 44 5f 4b 45 59 5f 49 44 45 4e 54 49 46 49 45 ND_KEY_IDENTIFIE
2a30: 52 20 39 38 33 30 34 30 0a 23 64 65 66 69 6e 65 R 983040.#define
2a40: 20 43 45 52 54 5f 46 49 4e 44 5f 4b 45 59 5f 53 CERT_FIND_KEY_S
2a50: 50 45 43 20 35 38 39 38 32 34 0a 23 64 65 66 69 PEC 589824.#defi
2a60: 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f 4d 44 35 ne CERT_FIND_MD5
2a70: 5f 48 41 53 48 20 32 36 32 31 34 34 0a 23 64 65 _HASH 262144.#de
2a80: 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f 50 fine CERT_FIND_P
2a90: 52 4f 50 45 52 54 59 20 33 32 37 36 38 30 0a 23 ROPERTY 327680.#
2aa0: 64 65 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 define CERT_FIND
2ab0: 5f 50 55 42 4c 49 43 5f 4b 45 59 20 33 39 33 32 _PUBLIC_KEY 3932
2ac0: 31 36 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 16.#define CERT_
2ad0: 46 49 4e 44 5f 53 48 41 31 5f 48 41 53 48 20 36 FIND_SHA1_HASH 6
2ae0: 35 35 33 36 0a 23 64 65 66 69 6e 65 20 43 45 52 5536.#define CER
2af0: 54 5f 46 49 4e 44 5f 53 49 47 4e 41 54 55 52 45 T_FIND_SIGNATURE
2b00: 5f 48 41 53 48 20 39 31 37 35 30 34 0a 23 64 65 _HASH 917504.#de
2b10: 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f 53 fine CERT_FIND_S
2b20: 55 42 4a 45 43 54 5f 41 54 54 52 20 31 39 36 36 UBJECT_ATTR 1966
2b30: 31 35 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 15.#define CERT_
2b40: 46 49 4e 44 5f 53 55 42 4a 45 43 54 5f 43 45 52 FIND_SUBJECT_CER
2b50: 54 20 37 32 30 38 39 36 0a 23 64 65 66 69 6e 65 T 720896.#define
2b60: 20 43 45 52 54 5f 46 49 4e 44 5f 53 55 42 4a 45 CERT_FIND_SUBJE
2b70: 43 54 5f 4e 41 4d 45 20 31 33 31 30 37 39 0a 23 CT_NAME 131079.#
2b80: 64 65 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 define CERT_FIND
2b90: 5f 53 55 42 4a 45 43 54 5f 53 54 52 5f 41 20 34 _SUBJECT_STR_A 4
2ba0: 35 38 37 35 39 0a 23 64 65 66 69 6e 65 20 43 45 58759.#define CE
2bb0: 52 54 5f 46 49 4e 44 5f 53 55 42 4a 45 43 54 5f RT_FIND_SUBJECT_
2bc0: 53 54 52 5f 57 20 35 32 34 32 39 35 0a 23 64 65 STR_W 524295.#de
2bd0: 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f 49 fine CERT_FIND_I
2be0: 53 53 55 45 52 5f 53 54 52 5f 41 20 34 35 38 37 SSUER_STR_A 4587
2bf0: 35 36 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 56.#define CERT_
2c00: 46 49 4e 44 5f 49 53 53 55 45 52 5f 53 54 52 5f FIND_ISSUER_STR_
2c10: 57 20 35 32 34 32 39 32 0a 23 64 65 66 69 6e 65 W 524292.#define
2c20: 20 43 45 52 54 5f 46 49 4e 44 5f 4f 52 5f 45 4e CERT_FIND_OR_EN
2c30: 48 4b 45 59 5f 55 53 41 47 45 5f 46 4c 41 47 20 HKEY_USAGE_FLAG
2c40: 31 36 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 16.#define CERT_
2c50: 46 49 4e 44 5f 4f 50 54 49 4f 4e 41 4c 5f 45 4e FIND_OPTIONAL_EN
2c60: 48 4b 45 59 5f 55 53 41 47 45 5f 46 4c 41 47 20 HKEY_USAGE_FLAG
2c70: 20 31 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 1.#define CERT_
2c80: 46 49 4e 44 5f 4e 4f 5f 45 4e 48 4b 45 59 5f 55 FIND_NO_ENHKEY_U
2c90: 53 41 47 45 5f 46 4c 41 47 20 20 38 0a 23 64 65 SAGE_FLAG 8.#de
2ca0: 66 69 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f 56 fine CERT_FIND_V
2cb0: 41 4c 49 44 5f 45 4e 48 4b 45 59 5f 55 53 41 47 ALID_ENHKEY_USAG
2cc0: 45 5f 46 4c 41 47 20 20 33 32 0a 23 64 65 66 69 E_FLAG 32.#defi
2cd0: 6e 65 20 43 45 52 54 5f 46 49 4e 44 5f 45 58 54 ne CERT_FIND_EXT
2ce0: 5f 4f 4e 4c 59 5f 45 4e 48 4b 45 59 5f 55 53 41 _ONLY_ENHKEY_USA
2cf0: 47 45 5f 46 4c 41 47 20 20 32 0a 23 64 65 66 69 GE_FLAG 2.#defi
2d00: 6e 65 20 43 45 52 54 5f 43 41 53 45 5f 49 4e 53 ne CERT_CASE_INS
2d10: 45 4e 53 49 54 49 56 45 5f 49 53 5f 52 44 4e 5f ENSITIVE_IS_RDN_
2d20: 41 54 54 52 53 5f 46 4c 41 47 20 20 32 0a 23 64 ATTRS_FLAG 2.#d
2d30: 65 66 69 6e 65 20 43 45 52 54 5f 55 4e 49 43 4f efine CERT_UNICO
2d40: 44 45 5f 49 53 5f 52 44 4e 5f 41 54 54 52 53 5f DE_IS_RDN_ATTRS_
2d50: 46 4c 41 47 20 31 0a 23 64 65 66 69 6e 65 20 43 FLAG 1.#define C
2d60: 45 52 54 5f 43 48 41 49 4e 5f 46 49 4e 44 5f 42 ERT_CHAIN_FIND_B
2d70: 59 5f 49 53 53 55 45 52 20 31 0a 23 64 65 66 69 Y_ISSUER 1.#defi
2d80: 6e 65 20 43 45 52 54 5f 43 48 41 49 4e 5f 46 49 ne CERT_CHAIN_FI
2d90: 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f 43 4f 4d ND_BY_ISSUER_COM
2da0: 50 41 52 45 5f 4b 45 59 5f 46 4c 41 47 20 31 0a PARE_KEY_FLAG 1.
2db0: 23 64 65 66 69 6e 65 20 43 45 52 54 5f 43 48 41 #define CERT_CHA
2dc0: 49 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 IN_FIND_BY_ISSUE
2dd0: 52 5f 43 4f 4d 50 4c 45 58 5f 43 48 41 49 4e 5f R_COMPLEX_CHAIN_
2de0: 46 4c 41 47 20 32 0a 23 64 65 66 69 6e 65 20 43 FLAG 2.#define C
2df0: 45 52 54 5f 43 48 41 49 4e 5f 46 49 4e 44 5f 42 ERT_CHAIN_FIND_B
2e00: 59 5f 49 53 53 55 45 52 5f 43 41 43 48 45 5f 4f Y_ISSUER_CACHE_O
2e10: 4e 4c 59 5f 46 4c 41 47 20 33 32 37 36 38 0a 23 NLY_FLAG 32768.#
2e20: 64 65 66 69 6e 65 20 43 45 52 54 5f 43 48 41 49 define CERT_CHAI
2e30: 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 N_FIND_BY_ISSUER
2e40: 5f 43 41 43 48 45 5f 4f 4e 4c 59 5f 55 52 4c 5f _CACHE_ONLY_URL_
2e50: 46 4c 41 47 20 34 0a 23 64 65 66 69 6e 65 20 43 FLAG 4.#define C
2e60: 45 52 54 5f 43 48 41 49 4e 5f 46 49 4e 44 5f 42 ERT_CHAIN_FIND_B
2e70: 59 5f 49 53 53 55 45 52 5f 4c 4f 43 41 4c 5f 4d Y_ISSUER_LOCAL_M
2e80: 41 43 48 49 4e 45 5f 46 4c 41 47 20 38 0a 23 64 ACHINE_FLAG 8.#d
2e90: 65 66 69 6e 65 20 43 45 52 54 5f 43 48 41 49 4e efine CERT_CHAIN
2ea0: 5f 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f _FIND_BY_ISSUER_
2eb0: 4e 4f 5f 4b 45 59 5f 46 4c 41 47 20 31 36 33 38 NO_KEY_FLAG 1638
2ec0: 34 0a 23 64 65 66 69 6e 65 20 43 45 52 54 5f 53 4.#define CERT_S
2ed0: 54 4f 52 45 5f 50 52 4f 56 5f 53 59 53 54 45 4d TORE_PROV_SYSTEM
2ee0: 20 31 30 0a 23 64 65 66 69 6e 65 20 43 45 52 54 10.#define CERT
2ef0: 5f 53 59 53 54 45 4d 5f 53 54 4f 52 45 5f 4c 4f _SYSTEM_STORE_LO
2f00: 43 41 4c 5f 4d 41 43 48 49 4e 45 20 31 33 31 30 CAL_MACHINE 1310
2f10: 37 32 0a 23 64 65 66 69 6e 65 20 73 7a 4f 49 44 72.#define szOID
2f20: 5f 50 4b 49 58 5f 4b 50 5f 53 45 52 56 45 52 5f _PKIX_KP_SERVER_
2f30: 41 55 54 48 20 22 34 32 33 35 36 30 30 22 0a 23 AUTH "4235600".#
2f40: 64 65 66 69 6e 65 20 73 7a 4f 49 44 5f 53 45 52 define szOID_SER
2f50: 56 45 52 5f 47 41 54 45 44 5f 43 52 59 50 54 4f VER_GATED_CRYPTO
2f60: 20 22 34 32 33 35 36 35 38 22 0a 23 64 65 66 69 "4235658".#defi
2f70: 6e 65 20 73 7a 4f 49 44 5f 53 47 43 5f 4e 45 54 ne szOID_SGC_NET
2f80: 53 43 41 50 45 20 22 32 2e 31 36 2e 38 34 30 2e SCAPE "2.16.840.
2f90: 31 2e 31 31 33 37 33 30 2e 34 2e 31 22 0a 23 64 1.113730.4.1".#d
2fa0: 65 66 69 6e 65 20 73 7a 4f 49 44 5f 50 4b 49 58 efine szOID_PKIX
2fb0: 5f 4b 50 5f 43 4c 49 45 4e 54 5f 41 55 54 48 20 _KP_CLIENT_AUTH
2fc0: 22 31 2e 33 2e 36 2e 31 2e 35 2e 35 2e 37 2e 33 "1.3.6.1.5.5.7.3
2fd0: 2e 32 22 0a 23 64 65 66 69 6e 65 20 43 52 59 50 .2".#define CRYP
2fe0: 54 5f 4e 4f 48 41 53 48 4f 49 44 20 30 78 30 30 T_NOHASHOID 0x00
2ff0: 30 30 30 30 30 31 0a 23 64 65 66 69 6e 65 20 43 000001.#define C
3000: 52 59 50 54 5f 4e 4f 5f 53 41 4c 54 20 30 78 31 RYPT_NO_SALT 0x1
3010: 30 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 0.#define CRYPT_
3020: 50 52 45 47 45 4e 20 30 78 34 30 0a 23 64 65 66 PREGEN 0x40.#def
3030: 69 6e 65 20 43 52 59 50 54 5f 52 45 43 49 50 49 ine CRYPT_RECIPI
3040: 45 4e 54 20 30 78 31 30 0a 23 64 65 66 69 6e 65 ENT 0x10.#define
3050: 20 43 52 59 50 54 5f 49 4e 49 54 49 41 54 4f 52 CRYPT_INITIATOR
3060: 20 30 78 34 30 0a 23 64 65 66 69 6e 65 20 43 52 0x40.#define CR
3070: 59 50 54 5f 4f 4e 4c 49 4e 45 20 30 78 38 30 0a YPT_ONLINE 0x80.
3080: 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 53 46 #define CRYPT_SF
3090: 20 30 78 31 30 30 0a 23 64 65 66 69 6e 65 20 43 0x100.#define C
30a0: 52 59 50 54 5f 43 52 45 41 54 45 5f 49 56 20 30 RYPT_CREATE_IV 0
30b0: 78 32 30 30 0a 23 64 65 66 69 6e 65 20 43 52 59 x200.#define CRY
30c0: 50 54 5f 4b 45 4b 20 30 78 34 30 30 0a 23 64 65 PT_KEK 0x400.#de
30d0: 66 69 6e 65 20 43 52 59 50 54 5f 44 41 54 41 5f fine CRYPT_DATA_
30e0: 4b 45 59 20 30 78 38 30 30 0a 23 64 65 66 69 6e KEY 0x800.#defin
30f0: 65 20 43 52 59 50 54 5f 56 4f 4c 41 54 49 4c 45 e CRYPT_VOLATILE
3100: 20 30 78 31 30 30 30 0a 23 64 65 66 69 6e 65 20 0x1000.#define
3110: 43 52 59 50 54 5f 53 47 43 4b 45 59 20 30 78 32 CRYPT_SGCKEY 0x2
3120: 30 30 30 0a 23 64 65 66 69 6e 65 20 4b 50 5f 49 000.#define KP_I
3130: 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 V
3140: 30 78 30 30 30 30 30 30 30 31 0a 23 64 65 66 69 0x00000001.#defi
3150: 6e 65 20 4b 50 5f 53 41 4c 54 20 20 20 20 20 20 ne KP_SALT
3160: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 30 0x0000000
3170: 32 0a 23 64 65 66 69 6e 65 20 4b 50 5f 50 41 44 2.#define KP_PAD
3180: 44 49 4e 47 20 20 20 20 20 20 20 20 20 20 30 78 DING 0x
3190: 30 30 30 30 30 30 30 33 0a 23 64 65 66 69 6e 65 00000003.#define
31a0: 20 4b 50 5f 4d 4f 44 45 20 20 20 20 20 20 20 20 KP_MODE
31b0: 20 20 20 20 20 30 78 30 30 30 30 30 30 30 34 0a 0x00000004.
31c0: 23 64 65 66 69 6e 65 20 4b 50 5f 4d 4f 44 45 5f #define KP_MODE_
31d0: 42 49 54 53 20 20 20 20 20 20 20 20 30 78 30 30 BITS 0x00
31e0: 30 30 30 30 30 35 0a 23 64 65 66 69 6e 65 20 4b 000005.#define K
31f0: 50 5f 50 45 52 4d 49 53 53 49 4f 4e 53 20 20 20 P_PERMISSIONS
3200: 20 20 20 30 78 30 30 30 30 30 30 30 36 0a 23 64 0x00000006.#d
3210: 65 66 69 6e 65 20 4b 50 5f 41 4c 47 49 44 20 20 efine KP_ALGID
3220: 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 0x0000
3230: 30 30 30 37 0a 23 64 65 66 69 6e 65 20 4b 50 5f 0007.#define KP_
3240: 42 4c 4f 43 4b 4c 45 4e 20 20 20 20 20 20 20 20 BLOCKLEN
3250: 20 30 78 30 30 30 30 30 30 30 38 0a 23 64 65 66 0x00000008.#def
3260: 69 6e 65 20 4b 50 5f 4b 45 59 4c 45 4e 20 20 20 ine KP_KEYLEN
3270: 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 0x000000
3280: 30 39 0a 23 64 65 66 69 6e 65 20 4b 50 5f 53 41 09.#define KP_SA
3290: 4c 54 5f 45 58 20 20 20 20 20 20 20 20 20 20 30 LT_EX 0
32a0: 78 30 30 30 30 30 30 30 61 0a 23 64 65 66 69 6e x0000000a.#defin
32b0: 65 20 4b 50 5f 50 20 20 20 20 20 20 20 20 20 20 e KP_P
32c0: 20 20 20 20 20 20 30 78 30 30 30 30 30 30 30 62 0x0000000b
32d0: 0a 23 64 65 66 69 6e 65 20 4b 50 5f 47 20 20 20 .#define KP_G
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 78 30 0x0
32f0: 30 30 30 30 30 30 63 0a 23 64 65 66 69 6e 65 20 000000c.#define
3300: 4b 50 5f 51 20 20 20 20 20 20 20 20 20 20 20 20 KP_Q
3310: 20 20 20 20 30 78 30 30 30 30 30 30 30 64 0a 23 0x0000000d.#
3320: 64 65 66 69 6e 65 20 4b 50 5f 58 20 20 20 20 20 define KP_X
3330: 20 20 20 20 20 20 20 20 20 20 20 30 78 30 30 30 0x000
3340: 30 30 30 30 65 0a 23 64 65 66 69 6e 65 20 4b 50 0000e.#define KP
3350: 5f 59 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _Y
3360: 20 20 30 78 30 30 30 30 30 30 30 66 0a 23 64 65 0x0000000f.#de
3370: 66 69 6e 65 20 4b 50 5f 52 41 20 20 20 20 20 20 fine KP_RA
3380: 20 20 20 20 20 20 20 20 20 30 78 30 30 30 30 30 0x00000
3390: 30 31 30 0a 23 64 65 66 69 6e 65 20 4b 50 5f 52 010.#define KP_R
33a0: 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 B
33b0: 30 78 30 30 30 30 30 30 31 31 0a 23 64 65 66 69 0x00000011.#defi
33c0: 6e 65 20 4b 50 5f 49 4e 46 4f 20 20 20 20 20 20 ne KP_INFO
33d0: 20 20 20 20 20 20 20 30 78 30 30 30 30 30 30 31 0x0000001
33e0: 32 0a 23 64 65 66 69 6e 65 20 4b 50 5f 45 46 46 2.#define KP_EFF
33f0: 45 43 54 49 56 45 5f 4b 45 59 4c 45 4e 20 30 78 ECTIVE_KEYLEN 0x
3400: 30 30 30 30 30 30 31 33 0a 23 64 65 66 69 6e 65 00000013.#define
3410: 20 4b 50 5f 53 43 48 41 4e 4e 45 4c 5f 41 4c 47 KP_SCHANNEL_ALG
3420: 20 20 20 20 20 30 78 30 30 30 30 30 30 31 34 0a 0x00000014.
3430: 23 64 65 66 69 6e 65 20 4b 50 5f 50 55 42 5f 50 #define KP_PUB_P
3440: 41 52 41 4d 53 20 20 20 20 20 20 20 30 78 30 30 ARAMS 0x00
3450: 30 30 30 30 32 37 0a 23 64 65 66 69 6e 65 20 43 000027.#define C
3460: 52 59 50 54 5f 46 4c 41 47 5f 50 43 54 31 20 20 RYPT_FLAG_PCT1
3470: 20 20 30 78 30 30 30 31 0a 23 64 65 66 69 6e 65 0x0001.#define
3480: 20 43 52 59 50 54 5f 46 4c 41 47 5f 53 53 4c 32 CRYPT_FLAG_SSL2
3490: 20 20 20 20 30 78 30 30 30 32 0a 23 64 65 66 69 0x0002.#defi
34a0: 6e 65 20 43 52 59 50 54 5f 46 4c 41 47 5f 53 53 ne CRYPT_FLAG_SS
34b0: 4c 33 20 20 20 20 30 78 30 30 30 34 0a 23 64 65 L3 0x0004.#de
34c0: 66 69 6e 65 20 43 52 59 50 54 5f 46 4c 41 47 5f fine CRYPT_FLAG_
34d0: 54 4c 53 31 20 20 20 20 30 78 30 30 30 38 0a 23 TLS1 0x0008.#
34e0: 64 65 66 69 6e 65 20 43 52 59 50 54 5f 46 4c 41 define CRYPT_FLA
34f0: 47 5f 49 50 53 45 43 20 20 20 30 78 30 30 31 30 G_IPSEC 0x0010
3500: 0a 23 64 65 66 69 6e 65 20 43 52 59 50 54 5f 46 .#define CRYPT_F
3510: 4c 41 47 5f 53 49 47 4e 49 4e 47 20 30 78 30 30 LAG_SIGNING 0x00
3520: 32 30 0a 23 64 65 66 69 6e 65 20 53 43 48 41 4e 20.#define SCHAN
3530: 4e 45 4c 5f 4d 41 43 5f 4b 45 59 20 20 20 20 30 NEL_MAC_KEY 0
3540: 78 30 30 30 30 30 30 30 30 0a 23 64 65 66 69 6e x00000000.#defin
3550: 65 20 53 43 48 41 4e 4e 45 4c 5f 45 4e 43 5f 4b e SCHANNEL_ENC_K
3560: 45 59 20 20 20 20 30 78 30 30 30 30 30 30 30 31 EY 0x00000001
3570: 0a 23 64 65 66 69 6e 65 20 49 4e 54 45 52 4e 41 .#define INTERNA
3580: 54 49 4f 4e 41 4c 5f 55 53 41 47 45 20 30 78 30 TIONAL_USAGE 0x0
3590: 30 30 30 30 30 30 31 0a 2b 2f 0a 0a 61 6c 69 61 0000001.+/..alia
35a0: 73 20 55 49 4e 54 20 41 4c 47 5f 49 44 3b 0a 61 s UINT ALG_ID;.a
35b0: 6c 69 61 73 20 55 4c 4f 4e 47 20 48 43 52 59 50 lias ULONG HCRYP
35c0: 54 50 52 4f 56 2c 20 48 43 52 59 50 54 4b 45 59 TPROV, HCRYPTKEY
35d0: 2c 20 48 43 52 59 50 54 48 41 53 48 3b 0a 61 6c , HCRYPTHASH;.al
35e0: 69 61 73 20 50 56 4f 49 44 20 48 43 45 52 54 53 ias PVOID HCERTS
35f0: 54 4f 52 45 2c 20 48 43 52 59 50 54 4d 53 47 2c TORE, HCRYPTMSG,
3600: 20 48 43 45 52 54 43 48 41 49 4e 45 4e 47 49 4e HCERTCHAINENGIN
3610: 45 3b 0a 0a 73 74 72 75 63 74 20 56 54 61 62 6c E;..struct VTabl
3620: 65 50 72 6f 76 53 74 72 75 63 20 7b 0a 09 46 41 eProvStruc {..FA
3630: 52 50 52 4f 43 20 46 75 6e 63 56 65 72 69 66 79 RPROC FuncVerify
3640: 49 6d 61 67 65 3b 0a 7d 0a 61 6c 69 61 73 20 56 Image;.}.alias V
3650: 54 61 62 6c 65 50 72 6f 76 53 74 72 75 63 2a 20 TableProvStruc*
3660: 50 56 54 61 62 6c 65 50 72 6f 76 53 74 72 75 63 PVTableProvStruc
3670: 3b 0a 0a 73 74 72 75 63 74 20 5f 43 52 59 50 54 ;..struct _CRYPT
3680: 4f 41 50 49 5f 42 4c 4f 42 20 7b 0a 09 44 57 4f OAPI_BLOB {..DWO
3690: 52 44 20 63 62 44 61 74 61 3b 0a 09 42 59 54 45 RD cbData;..BYTE
36a0: 2a 20 70 62 44 61 74 61 3b 0a 7d 0a 61 6c 69 61 * pbData;.}.alia
36b0: 73 20 5f 43 52 59 50 54 4f 41 50 49 5f 42 4c 4f s _CRYPTOAPI_BLO
36c0: 42 20 43 52 59 50 54 5f 49 4e 54 45 47 45 52 5f B CRYPT_INTEGER_
36d0: 42 4c 4f 42 2c 20 43 52 59 50 54 5f 55 49 4e 54 BLOB, CRYPT_UINT
36e0: 5f 42 4c 4f 42 2c 0a 20 20 43 52 59 50 54 5f 4f _BLOB,. CRYPT_O
36f0: 42 4a 49 44 5f 42 4c 4f 42 2c 20 43 45 52 54 5f BJID_BLOB, CERT_
3700: 4e 41 4d 45 5f 42 4c 4f 42 2c 20 43 45 52 54 5f NAME_BLOB, CERT_
3710: 52 44 4e 5f 56 41 4c 55 45 5f 42 4c 4f 42 2c 20 RDN_VALUE_BLOB,
3720: 43 45 52 54 5f 42 4c 4f 42 2c 0a 20 20 43 52 4c CERT_BLOB,. CRL
3730: 5f 42 4c 4f 42 2c 20 44 41 54 41 5f 42 4c 4f 42 _BLOB, DATA_BLOB
3740: 2c 20 43 52 59 50 54 5f 44 41 54 41 5f 42 4c 4f , CRYPT_DATA_BLO
3750: 42 2c 20 43 52 59 50 54 5f 48 41 53 48 5f 42 4c B, CRYPT_HASH_BL
3760: 4f 42 2c 0a 20 20 43 52 59 50 54 5f 44 49 47 45 OB,. CRYPT_DIGE
3770: 53 54 5f 42 4c 4f 42 2c 20 43 52 59 50 54 5f 44 ST_BLOB, CRYPT_D
3780: 45 52 5f 42 4c 4f 42 2c 20 43 52 59 50 54 5f 41 ER_BLOB, CRYPT_A
3790: 54 54 52 5f 42 4c 4f 42 3b 0a 61 6c 69 61 73 20 TTR_BLOB;.alias
37a0: 5f 43 52 59 50 54 4f 41 50 49 5f 42 4c 4f 42 2a _CRYPTOAPI_BLOB*
37b0: 20 50 43 52 59 50 54 5f 49 4e 54 45 47 45 52 5f PCRYPT_INTEGER_
37c0: 42 4c 4f 42 2c 20 50 43 52 59 50 54 5f 55 49 4e BLOB, PCRYPT_UIN
37d0: 54 5f 42 4c 4f 42 2c 0a 20 20 50 43 52 59 50 54 T_BLOB,. PCRYPT
37e0: 5f 4f 42 4a 49 44 5f 42 4c 4f 42 2c 20 50 43 45 _OBJID_BLOB, PCE
37f0: 52 54 5f 4e 41 4d 45 5f 42 4c 4f 42 2c 20 50 43 RT_NAME_BLOB, PC
3800: 45 52 54 5f 52 44 4e 5f 56 41 4c 55 45 5f 42 4c ERT_RDN_VALUE_BL
3810: 4f 42 2c 20 50 43 45 52 54 5f 42 4c 4f 42 2c 0a OB, PCERT_BLOB,.
3820: 20 20 50 43 52 4c 5f 42 4c 4f 42 2c 20 50 44 41 PCRL_BLOB, PDA
3830: 54 41 5f 42 4c 4f 42 2c 20 50 43 52 59 50 54 5f TA_BLOB, PCRYPT_
3840: 44 41 54 41 5f 42 4c 4f 42 2c 20 50 43 52 59 50 DATA_BLOB, PCRYP
3850: 54 5f 48 41 53 48 5f 42 4c 4f 42 2c 0a 20 20 50 T_HASH_BLOB,. P
3860: 43 52 59 50 54 5f 44 49 47 45 53 54 5f 42 4c 4f CRYPT_DIGEST_BLO
3870: 42 2c 20 50 43 52 59 50 54 5f 44 45 52 5f 42 4c B, PCRYPT_DER_BL
3880: 4f 42 2c 20 50 43 52 59 50 54 5f 41 54 54 52 5f OB, PCRYPT_ATTR_
3890: 42 4c 4f 42 3b 0a 0a 2f 2f 20 6e 6f 74 20 64 65 BLOB;..// not de
38a0: 73 63 72 69 62 65 64 20 69 6e 20 53 44 4b 3b 20 scribed in SDK;
38b0: 68 61 73 20 74 68 65 20 73 61 6d 65 20 6c 61 79 has the same lay
38c0: 6f 75 74 20 61 73 20 48 54 54 50 53 50 6f 6c 69 out as HTTPSPoli
38d0: 63 79 43 61 6c 6c 62 61 63 6b 44 61 74 61 0a 73 cyCallbackData.s
38e0: 74 72 75 63 74 20 53 53 4c 5f 45 58 54 52 41 5f truct SSL_EXTRA_
38f0: 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 CERT_CHAIN_POLIC
3900: 59 5f 50 41 52 41 20 7b 0a 09 44 57 4f 52 44 20 Y_PARA {..DWORD
3910: 20 63 62 53 74 72 75 63 74 3b 0a 09 44 57 4f 52 cbStruct;..DWOR
3920: 44 20 20 64 77 41 75 74 68 54 79 70 65 3b 0a 09 D dwAuthType;..
3930: 44 57 4f 52 44 20 20 66 64 77 43 68 65 63 6b 73 DWORD fdwChecks
3940: 3b 0a 09 4c 50 57 53 54 52 20 70 77 73 7a 53 65 ;..LPWSTR pwszSe
3950: 72 76 65 72 4e 61 6d 65 3b 0a 7d 0a 61 6c 69 61 rverName;.}.alia
3960: 73 20 53 53 4c 5f 45 58 54 52 41 5f 43 45 52 54 s SSL_EXTRA_CERT
3970: 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 50 41 _CHAIN_POLICY_PA
3980: 52 41 20 48 54 54 50 53 50 6f 6c 69 63 79 43 61 RA HTTPSPolicyCa
3990: 6c 6c 62 61 63 6b 44 61 74 61 3b 0a 61 6c 69 61 llbackData;.alia
39a0: 73 20 53 53 4c 5f 45 58 54 52 41 5f 43 45 52 54 s SSL_EXTRA_CERT
39b0: 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 50 41 _CHAIN_POLICY_PA
39c0: 52 41 2a 20 50 53 53 4c 5f 45 58 54 52 41 5f 43 RA* PSSL_EXTRA_C
39d0: 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 ERT_CHAIN_POLICY
39e0: 5f 50 41 52 41 2c 0a 20 20 50 48 54 54 50 53 50 _PARA,. PHTTPSP
39f0: 6f 6c 69 63 79 43 61 6c 6c 62 61 63 6b 44 61 74 olicyCallbackDat
3a00: 61 3b 0a 0a 2f 2a 20 23 69 66 20 28 5f 57 49 4e a;../* #if (_WIN
3a10: 33 32 5f 57 49 4e 4e 54 3e 3d 30 78 35 30 30 29 32_WINNT>=0x500)
3a20: 20 2a 2f 0a 73 74 72 75 63 74 20 43 45 52 54 5f */.struct CERT_
3a30: 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 50 41 52 CHAIN_POLICY_PAR
3a40: 41 20 7b 0a 09 44 57 4f 52 44 20 63 62 53 69 7a A {..DWORD cbSiz
3a50: 65 20 3d 20 43 45 52 54 5f 43 48 41 49 4e 5f 50 e = CERT_CHAIN_P
3a60: 4f 4c 49 43 59 5f 50 41 52 41 2e 73 69 7a 65 6f OLICY_PARA.sizeo
3a70: 66 3b 0a 09 44 57 4f 52 44 20 64 77 46 6c 61 67 f;..DWORD dwFlag
3a80: 73 3b 0a 09 76 6f 69 64 2a 20 70 76 45 78 74 72 s;..void* pvExtr
3a90: 61 50 6f 6c 69 63 79 50 61 72 61 3b 0a 7d 0a 61 aPolicyPara;.}.a
3aa0: 6c 69 61 73 20 43 45 52 54 5f 43 48 41 49 4e 5f lias CERT_CHAIN_
3ab0: 50 4f 4c 49 43 59 5f 50 41 52 41 2a 20 50 43 45 POLICY_PARA* PCE
3ac0: 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f RT_CHAIN_POLICY_
3ad0: 50 41 52 41 3b 0a 0a 73 74 72 75 63 74 20 43 45 PARA;..struct CE
3ae0: 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f RT_CHAIN_POLICY_
3af0: 53 54 41 54 55 53 20 7b 0a 09 44 57 4f 52 44 20 STATUS {..DWORD
3b00: 63 62 53 69 7a 65 20 3d 20 43 45 52 54 5f 43 48 cbSize = CERT_CH
3b10: 41 49 4e 5f 50 4f 4c 49 43 59 5f 53 54 41 54 55 AIN_POLICY_STATU
3b20: 53 2e 73 69 7a 65 6f 66 3b 0a 09 44 57 4f 52 44 S.sizeof;..DWORD
3b30: 20 64 77 45 72 72 6f 72 3b 0a 09 4c 4f 4e 47 20 dwError;..LONG
3b40: 20 6c 43 68 61 69 6e 49 6e 64 65 78 3b 0a 09 4c lChainIndex;..L
3b50: 4f 4e 47 20 20 6c 45 6c 65 6d 65 6e 74 49 6e 64 ONG lElementInd
3b60: 65 78 3b 0a 09 76 6f 69 64 2a 20 70 76 45 78 74 ex;..void* pvExt
3b70: 72 61 50 6f 6c 69 63 79 53 74 61 74 75 73 3b 0a raPolicyStatus;.
3b80: 7d 0a 61 6c 69 61 73 20 43 45 52 54 5f 43 48 41 }.alias CERT_CHA
3b90: 49 4e 5f 50 4f 4c 49 43 59 5f 53 54 41 54 55 53 IN_POLICY_STATUS
3ba0: 2a 20 50 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f * PCERT_CHAIN_PO
3bb0: 4c 49 43 59 5f 53 54 41 54 55 53 3b 0a 2f 2a 20 LICY_STATUS;./*
3bc0: 23 65 6e 64 69 66 20 2a 2f 0a 0a 73 74 72 75 63 #endif */..struc
3bd0: 74 20 43 52 59 50 54 5f 41 4c 47 4f 52 49 54 48 t CRYPT_ALGORITH
3be0: 4d 5f 49 44 45 4e 54 49 46 49 45 52 20 7b 0a 09 M_IDENTIFIER {..
3bf0: 4c 50 53 54 52 20 70 73 7a 4f 62 6a 49 64 3b 0a LPSTR pszObjId;.
3c00: 09 43 52 59 50 54 5f 4f 42 4a 49 44 5f 42 4c 4f .CRYPT_OBJID_BLO
3c10: 42 20 50 61 72 61 6d 65 74 65 72 73 3b 0a 7d 0a B Parameters;.}.
3c20: 61 6c 69 61 73 20 43 52 59 50 54 5f 41 4c 47 4f alias CRYPT_ALGO
3c30: 52 49 54 48 4d 5f 49 44 45 4e 54 49 46 49 45 52 RITHM_IDENTIFIER
3c40: 2a 20 50 43 52 59 50 54 5f 41 4c 47 4f 52 49 54 * PCRYPT_ALGORIT
3c50: 48 4d 5f 49 44 45 4e 54 49 46 49 45 52 3b 0a 0a HM_IDENTIFIER;..
3c60: 73 74 72 75 63 74 20 43 52 59 50 54 5f 42 49 54 struct CRYPT_BIT
3c70: 5f 42 4c 4f 42 20 7b 0a 09 44 57 4f 52 44 20 63 _BLOB {..DWORD c
3c80: 62 44 61 74 61 3b 0a 09 42 59 54 45 2a 20 70 62 bData;..BYTE* pb
3c90: 44 61 74 61 3b 0a 09 44 57 4f 52 44 20 63 55 6e Data;..DWORD cUn
3ca0: 75 73 65 64 42 69 74 73 3b 0a 7d 0a 61 6c 69 61 usedBits;.}.alia
3cb0: 73 20 43 52 59 50 54 5f 42 49 54 5f 42 4c 4f 42 s CRYPT_BIT_BLOB
3cc0: 2a 20 50 43 52 59 50 54 5f 42 49 54 5f 42 4c 4f * PCRYPT_BIT_BLO
3cd0: 42 3b 0a 0a 73 74 72 75 63 74 20 43 45 52 54 5f B;..struct CERT_
3ce0: 50 55 42 4c 49 43 5f 4b 45 59 5f 49 4e 46 4f 20 PUBLIC_KEY_INFO
3cf0: 7b 0a 09 43 52 59 50 54 5f 41 4c 47 4f 52 49 54 {..CRYPT_ALGORIT
3d00: 48 4d 5f 49 44 45 4e 54 49 46 49 45 52 20 41 6c HM_IDENTIFIER Al
3d10: 67 6f 72 69 74 68 6d 3b 0a 09 43 52 59 50 54 5f gorithm;..CRYPT_
3d20: 42 49 54 5f 42 4c 4f 42 20 20 20 20 20 20 20 20 BIT_BLOB
3d30: 20 20 20 20 20 50 75 62 6c 69 63 4b 65 79 3b 0a PublicKey;.
3d40: 7d 0a 61 6c 69 61 73 20 43 45 52 54 5f 50 55 42 }.alias CERT_PUB
3d50: 4c 49 43 5f 4b 45 59 5f 49 4e 46 4f 2a 20 50 43 LIC_KEY_INFO* PC
3d60: 45 52 54 5f 50 55 42 4c 49 43 5f 4b 45 59 5f 49 ERT_PUBLIC_KEY_I
3d70: 4e 46 4f 3b 0a 0a 73 74 72 75 63 74 20 43 45 52 NFO;..struct CER
3d80: 54 5f 45 58 54 45 4e 53 49 4f 4e 20 7b 0a 09 4c T_EXTENSION {..L
3d90: 50 53 54 52 20 20 20 20 20 20 20 20 20 20 20 20 PSTR
3da0: 70 73 7a 4f 62 6a 49 64 3b 0a 09 42 4f 4f 4c 20 pszObjId;..BOOL
3db0: 20 20 20 20 20 20 20 20 20 20 20 20 66 43 72 69 fCri
3dc0: 74 69 63 61 6c 3b 0a 09 43 52 59 50 54 5f 4f 42 tical;..CRYPT_OB
3dd0: 4a 49 44 5f 42 4c 4f 42 20 56 61 6c 75 65 3b 0a JID_BLOB Value;.
3de0: 7d 0a 61 6c 69 61 73 20 43 45 52 54 5f 45 58 54 }.alias CERT_EXT
3df0: 45 4e 53 49 4f 4e 2a 20 50 43 45 52 54 5f 45 58 ENSION* PCERT_EX
3e00: 54 45 4e 53 49 4f 4e 3b 0a 0a 73 74 72 75 63 74 TENSION;..struct
3e10: 20 43 45 52 54 5f 49 4e 46 4f 20 7b 0a 09 44 57 CERT_INFO {..DW
3e20: 4f 52 44 20 64 77 56 65 72 73 69 6f 6e 3b 0a 09 ORD dwVersion;..
3e30: 43 52 59 50 54 5f 49 4e 54 45 47 45 52 5f 42 4c CRYPT_INTEGER_BL
3e40: 4f 42 20 53 65 72 69 61 6c 4e 75 6d 62 65 72 3b OB SerialNumber;
3e50: 0a 09 43 52 59 50 54 5f 41 4c 47 4f 52 49 54 48 ..CRYPT_ALGORITH
3e60: 4d 5f 49 44 45 4e 54 49 46 49 45 52 20 53 69 67 M_IDENTIFIER Sig
3e70: 6e 61 74 75 72 65 41 6c 67 6f 72 69 74 68 6d 3b natureAlgorithm;
3e80: 0a 09 43 45 52 54 5f 4e 41 4d 45 5f 42 4c 4f 42 ..CERT_NAME_BLOB
3e90: 20 49 73 73 75 65 72 3b 0a 09 46 49 4c 45 54 49 Issuer;..FILETI
3ea0: 4d 45 20 4e 6f 74 42 65 66 6f 72 65 3b 0a 09 46 ME NotBefore;..F
3eb0: 49 4c 45 54 49 4d 45 20 4e 6f 74 41 66 74 65 72 ILETIME NotAfter
3ec0: 3b 0a 09 43 45 52 54 5f 4e 41 4d 45 5f 42 4c 4f ;..CERT_NAME_BLO
3ed0: 42 20 53 75 62 6a 65 63 74 3b 0a 09 43 45 52 54 B Subject;..CERT
3ee0: 5f 50 55 42 4c 49 43 5f 4b 45 59 5f 49 4e 46 4f _PUBLIC_KEY_INFO
3ef0: 20 53 75 62 6a 65 63 74 50 75 62 6c 69 63 4b 65 SubjectPublicKe
3f00: 79 49 6e 66 6f 3b 0a 09 43 52 59 50 54 5f 42 49 yInfo;..CRYPT_BI
3f10: 54 5f 42 4c 4f 42 20 49 73 73 75 65 72 55 6e 69 T_BLOB IssuerUni
3f20: 71 75 65 49 64 3b 0a 09 43 52 59 50 54 5f 42 49 queId;..CRYPT_BI
3f30: 54 5f 42 4c 4f 42 20 53 75 62 6a 65 63 74 55 6e T_BLOB SubjectUn
3f40: 69 71 75 65 49 64 3b 0a 09 44 57 4f 52 44 20 63 iqueId;..DWORD c
3f50: 45 78 74 65 6e 73 69 6f 6e 3b 0a 09 50 43 45 52 Extension;..PCER
3f60: 54 5f 45 58 54 45 4e 53 49 4f 4e 20 72 67 45 78 T_EXTENSION rgEx
3f70: 74 65 6e 73 69 6f 6e 3b 0a 7d 0a 61 6c 69 61 73 tension;.}.alias
3f80: 20 43 45 52 54 5f 49 4e 46 4f 2a 20 50 43 45 52 CERT_INFO* PCER
3f90: 54 5f 49 4e 46 4f 3b 0a 0a 73 74 72 75 63 74 20 T_INFO;..struct
3fa0: 43 45 52 54 5f 43 4f 4e 54 45 58 54 20 7b 0a 09 CERT_CONTEXT {..
3fb0: 44 57 4f 52 44 20 20 20 20 20 20 64 77 43 65 72 DWORD dwCer
3fc0: 74 45 6e 63 6f 64 69 6e 67 54 79 70 65 3b 0a 09 tEncodingType;..
3fd0: 42 59 54 45 2a 20 20 20 20 20 20 70 62 43 65 72 BYTE* pbCer
3fe0: 74 45 6e 63 6f 64 65 64 3b 0a 09 44 57 4f 52 44 tEncoded;..DWORD
3ff0: 20 20 20 20 20 20 63 62 43 65 72 74 45 6e 63 6f cbCertEnco
4000: 64 65 64 3b 0a 09 50 43 45 52 54 5f 49 4e 46 4f ded;..PCERT_INFO
4010: 20 70 43 65 72 74 49 6e 66 6f 3b 0a 09 48 43 45 pCertInfo;..HCE
4020: 52 54 53 54 4f 52 45 20 68 43 65 72 74 53 74 6f RTSTORE hCertSto
4030: 72 65 3b 0a 7d 0a 61 6c 69 61 73 20 43 45 52 54 re;.}.alias CERT
4040: 5f 43 4f 4e 54 45 58 54 2a 20 20 20 20 20 20 20 _CONTEXT*
4050: 50 43 45 52 54 5f 43 4f 4e 54 45 58 54 3b 0a 61 PCERT_CONTEXT;.a
4060: 6c 69 61 73 20 43 50 74 72 21 28 43 45 52 54 5f lias CPtr!(CERT_
4070: 43 4f 4e 54 45 58 54 29 20 50 43 43 45 52 54 5f CONTEXT) PCCERT_
4080: 43 4f 4e 54 45 58 54 3b 0a 0a 73 74 72 75 63 74 CONTEXT;..struct
4090: 20 43 54 4c 5f 55 53 41 47 45 20 7b 0a 09 44 57 CTL_USAGE {..DW
40a0: 4f 52 44 20 20 63 55 73 61 67 65 49 64 65 6e 74 ORD cUsageIdent
40b0: 69 66 69 65 72 3b 0a 09 4c 50 53 54 52 2a 20 72 ifier;..LPSTR* r
40c0: 67 70 73 7a 55 73 61 67 65 49 64 65 6e 74 69 66 gpszUsageIdentif
40d0: 69 65 72 3b 0a 7d 0a 61 6c 69 61 73 20 43 54 4c ier;.}.alias CTL
40e0: 5f 55 53 41 47 45 20 43 45 52 54 5f 45 4e 48 4b _USAGE CERT_ENHK
40f0: 45 59 5f 55 53 41 47 45 3b 0a 61 6c 69 61 73 20 EY_USAGE;.alias
4100: 43 54 4c 5f 55 53 41 47 45 2a 20 50 43 54 52 4c CTL_USAGE* PCTRL
4110: 5f 55 53 41 47 45 2c 20 50 43 45 52 54 5f 45 4e _USAGE, PCERT_EN
4120: 48 4b 45 59 5f 55 53 41 47 45 3b 0a 0a 73 74 72 HKEY_USAGE;..str
4130: 75 63 74 20 43 45 52 54 5f 55 53 41 47 45 5f 4d uct CERT_USAGE_M
4140: 41 54 43 48 20 7b 0a 09 44 57 4f 52 44 20 20 20 ATCH {..DWORD
4150: 20 20 20 20 20 20 20 20 20 20 64 77 54 79 70 65 dwType
4160: 3b 0a 09 43 45 52 54 5f 45 4e 48 4b 45 59 5f 55 ;..CERT_ENHKEY_U
4170: 53 41 47 45 20 55 73 61 67 65 3b 0a 7d 0a 61 6c SAGE Usage;.}.al
4180: 69 61 73 20 43 45 52 54 5f 55 53 41 47 45 5f 4d ias CERT_USAGE_M
4190: 41 54 43 48 2a 20 50 43 45 52 54 5f 55 53 41 47 ATCH* PCERT_USAG
41a0: 45 5f 4d 41 54 43 48 3b 0a 2f 2a 20 23 69 66 20 E_MATCH;./* #if
41b0: 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 3e 3d 30 (_WIN32_WINNT>=0
41c0: 78 35 30 30 29 20 2a 2f 0a 0a 73 74 72 75 63 74 x500) */..struct
41d0: 20 43 45 52 54 5f 43 48 41 49 4e 5f 50 41 52 41 CERT_CHAIN_PARA
41e0: 20 7b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 {..DWORD
41f0: 20 20 20 20 20 63 62 53 69 7a 65 20 3d 20 43 45 cbSize = CE
4200: 52 54 5f 43 48 41 49 4e 5f 50 41 52 41 2e 73 69 RT_CHAIN_PARA.si
4210: 7a 65 6f 66 3b 0a 09 43 45 52 54 5f 55 53 41 47 zeof;..CERT_USAG
4220: 45 5f 4d 41 54 43 48 20 52 65 71 75 65 73 74 65 E_MATCH Requeste
4230: 64 55 73 61 67 65 3b 0a 2f 2f 23 69 66 20 43 45 dUsage;.//#if CE
4240: 52 54 5f 43 48 41 49 4e 5f 50 41 52 41 5f 48 41 RT_CHAIN_PARA_HA
4250: 53 5f 45 58 54 52 41 5f 46 49 45 4c 44 53 0a 09 S_EXTRA_FIELDS..
4260: 43 45 52 54 5f 55 53 41 47 45 5f 4d 41 54 43 48 CERT_USAGE_MATCH
4270: 20 52 65 71 75 65 73 74 65 64 49 73 73 75 61 6e RequestedIssuan
4280: 63 65 50 6f 6c 69 63 79 3b 0a 09 44 57 4f 52 44 cePolicy;..DWORD
4290: 20 20 20 20 20 20 20 20 20 20 20 20 64 77 55 72 dwUr
42a0: 6c 52 65 74 72 69 65 76 61 6c 54 69 6d 65 6f 75 lRetrievalTimeou
42b0: 74 3b 0a 09 42 4f 4f 4c 20 20 20 20 20 20 20 20 t;..BOOL
42c0: 20 20 20 20 20 66 43 68 65 63 6b 52 65 76 6f 63 fCheckRevoc
42d0: 61 74 69 6f 6e 46 72 65 73 68 6e 65 73 73 54 69 ationFreshnessTi
42e0: 6d 65 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 me;..DWORD
42f0: 20 20 20 20 20 20 64 77 52 65 76 6f 63 61 74 69 dwRevocati
4300: 6f 6e 46 72 65 73 68 6e 65 73 73 54 69 6d 65 3b onFreshnessTime;
4310: 0a 2f 2f 23 65 6e 64 69 66 0a 7d 0a 61 6c 69 61 .//#endif.}.alia
4320: 73 20 43 45 52 54 5f 43 48 41 49 4e 5f 50 41 52 s CERT_CHAIN_PAR
4330: 41 2a 20 50 43 45 52 54 5f 43 48 41 49 4e 5f 50 A* PCERT_CHAIN_P
4340: 41 52 41 3b 0a 0a 65 78 74 65 72 6e 20 28 57 69 ARA;..extern (Wi
4350: 6e 64 6f 77 73 29 20 61 6c 69 61 73 20 42 4f 4f ndows) alias BOO
4360: 4c 20 66 75 6e 63 74 69 6f 6e 28 50 43 43 45 52 L function(PCCER
4370: 54 5f 43 4f 4e 54 45 58 54 2c 20 76 6f 69 64 2a T_CONTEXT, void*
4380: 29 0a 20 20 50 46 4e 5f 43 45 52 54 5f 43 48 41 ). PFN_CERT_CHA
4390: 49 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 IN_FIND_BY_ISSUE
43a0: 52 5f 43 41 4c 4c 42 41 43 4b 3b 0a 0a 73 74 72 R_CALLBACK;..str
43b0: 75 63 74 20 43 45 52 54 5f 43 48 41 49 4e 5f 46 uct CERT_CHAIN_F
43c0: 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f 50 41 IND_BY_ISSUER_PA
43d0: 52 41 20 7b 0a 09 44 57 4f 52 44 20 20 63 62 53 RA {..DWORD cbS
43e0: 69 7a 65 20 3d 20 43 45 52 54 5f 43 48 41 49 4e ize = CERT_CHAIN
43f0: 5f 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f _FIND_BY_ISSUER_
4400: 50 41 52 41 2e 73 69 7a 65 6f 66 3b 0a 09 4c 50 PARA.sizeof;..LP
4410: 43 53 54 52 20 70 73 7a 55 73 61 67 65 49 64 65 CSTR pszUsageIde
4420: 6e 74 69 66 69 65 72 3b 0a 09 44 57 4f 52 44 20 ntifier;..DWORD
4430: 20 64 77 4b 65 79 53 70 65 63 3b 0a 09 44 57 4f dwKeySpec;..DWO
4440: 52 44 20 20 64 77 41 63 71 75 69 72 65 50 72 69 RD dwAcquirePri
4450: 76 61 74 65 4b 65 79 46 6c 61 67 73 3b 0a 09 44 vateKeyFlags;..D
4460: 57 4f 52 44 20 20 63 49 73 73 75 65 72 3b 0a 09 WORD cIssuer;..
4470: 43 45 52 54 5f 4e 41 4d 45 5f 42 4c 4f 42 2a 20 CERT_NAME_BLOB*
4480: 72 67 49 73 73 75 65 72 3b 0a 09 50 46 4e 5f 43 rgIssuer;..PFN_C
4490: 45 52 54 5f 43 48 41 49 4e 5f 46 49 4e 44 5f 42 ERT_CHAIN_FIND_B
44a0: 59 5f 49 53 53 55 45 52 5f 43 41 4c 4c 42 41 43 Y_ISSUER_CALLBAC
44b0: 4b 20 70 66 6e 46 49 6e 64 43 61 6c 6c 62 61 63 K pfnFIndCallbac
44c0: 6b 3b 0a 09 76 6f 69 64 2a 20 20 70 76 46 69 6e k;..void* pvFin
44d0: 64 41 72 67 3b 0a 09 44 57 4f 52 44 2a 20 70 64 dArg;..DWORD* pd
44e0: 77 49 73 73 75 65 72 43 68 61 69 6e 49 6e 64 65 wIssuerChainInde
44f0: 78 3b 0a 09 44 57 4f 52 44 2a 20 70 64 77 49 73 x;..DWORD* pdwIs
4500: 73 75 65 72 45 6c 65 6d 65 6e 74 49 6e 64 65 78 suerElementIndex
4510: 3b 0a 7d 0a 61 6c 69 61 73 20 43 45 52 54 5f 43 ;.}.alias CERT_C
4520: 48 41 49 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 53 HAIN_FIND_BY_ISS
4530: 55 45 52 5f 50 41 52 41 2a 20 50 43 45 52 54 5f UER_PARA* PCERT_
4540: 43 48 41 49 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 CHAIN_FIND_BY_IS
4550: 53 55 45 52 5f 50 41 52 41 3b 0a 2f 2a 20 23 65 SUER_PARA;./* #e
4560: 6e 64 69 66 20 2a 2f 0a 0a 73 74 72 75 63 74 20 ndif */..struct
4570: 43 45 52 54 5f 54 52 55 53 54 5f 53 54 41 54 55 CERT_TRUST_STATU
4580: 53 20 7b 0a 09 44 57 4f 52 44 20 64 77 45 72 72 S {..DWORD dwErr
4590: 6f 72 53 74 61 74 75 73 3b 0a 09 44 57 4f 52 44 orStatus;..DWORD
45a0: 20 64 77 49 6e 66 6f 53 74 61 74 75 73 3b 0a 7d dwInfoStatus;.}
45b0: 0a 61 6c 69 61 73 20 43 45 52 54 5f 54 52 55 53 .alias CERT_TRUS
45c0: 54 5f 53 54 41 54 55 53 2a 20 50 43 45 52 54 5f T_STATUS* PCERT_
45d0: 54 52 55 53 54 5f 53 54 41 54 55 53 3b 0a 0a 73 TRUST_STATUS;..s
45e0: 74 72 75 63 74 20 43 52 4c 5f 45 4e 54 52 59 20 truct CRL_ENTRY
45f0: 7b 0a 09 43 52 59 50 54 5f 49 4e 54 45 47 45 52 {..CRYPT_INTEGER
4600: 5f 42 4c 4f 42 20 53 65 72 69 61 6c 4e 75 6d 62 _BLOB SerialNumb
4610: 65 72 3b 0a 09 46 49 4c 45 54 49 4d 45 20 20 20 er;..FILETIME
4620: 20 20 20 20 20 20 20 20 52 65 76 6f 63 61 74 69 Revocati
4630: 6f 6e 44 61 74 65 3b 0a 09 44 57 4f 52 44 20 20 onDate;..DWORD
4640: 20 20 20 20 20 20 20 20 20 20 20 20 63 45 78 74 cExt
4650: 65 6e 73 69 6f 6e 3b 0a 09 50 43 45 52 54 5f 45 ension;..PCERT_E
4660: 58 54 45 4e 53 49 4f 4e 20 20 20 20 72 67 45 78 XTENSION rgEx
4670: 74 65 6e 73 69 6f 6e 3b 0a 7d 0a 61 6c 69 61 73 tension;.}.alias
4680: 20 43 52 4c 5f 45 4e 54 52 59 2a 20 50 43 52 4c CRL_ENTRY* PCRL
4690: 5f 45 4e 54 52 59 3b 0a 0a 73 74 72 75 63 74 20 _ENTRY;..struct
46a0: 43 52 4c 5f 49 4e 46 4f 20 7b 0a 09 44 57 4f 52 CRL_INFO {..DWOR
46b0: 44 20 20 20 20 20 20 20 20 20 20 20 64 77 56 65 D dwVe
46c0: 72 73 69 6f 6e 3b 0a 09 43 52 59 50 54 5f 41 4c rsion;..CRYPT_AL
46d0: 47 4f 52 49 54 48 4d 5f 49 44 45 4e 54 49 46 49 GORITHM_IDENTIFI
46e0: 45 52 20 53 69 67 6e 61 74 75 72 65 41 6c 67 6f ER SignatureAlgo
46f0: 72 69 74 68 6d 3b 0a 09 43 45 52 54 5f 4e 41 4d rithm;..CERT_NAM
4700: 45 5f 42 4c 4f 42 20 20 49 73 73 75 65 72 3b 0a E_BLOB Issuer;.
4710: 09 46 49 4c 45 54 49 4d 45 20 20 20 20 20 20 20 .FILETIME
4720: 20 54 68 69 73 55 70 64 61 74 65 3b 0a 09 46 49 ThisUpdate;..FI
4730: 4c 45 54 49 4d 45 20 20 20 20 20 20 20 20 4e 65 LETIME Ne
4740: 78 74 55 70 64 61 74 65 3b 0a 09 44 57 4f 52 44 xtUpdate;..DWORD
4750: 20 20 20 20 20 20 20 20 20 20 20 63 43 52 4c 45 cCRLE
4760: 6e 74 72 79 3b 0a 09 50 43 52 4c 5f 45 4e 54 52 ntry;..PCRL_ENTR
4770: 59 20 20 20 20 20 20 72 67 43 52 4c 45 6e 74 72 Y rgCRLEntr
4780: 79 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 y;..DWORD
4790: 20 20 20 20 63 45 78 74 65 6e 73 69 6f 6e 3b 0a cExtension;.
47a0: 09 50 43 45 52 54 5f 45 58 54 45 4e 53 49 4f 4e .PCERT_EXTENSION
47b0: 20 72 67 45 78 74 65 6e 73 69 6f 6e 3b 0a 7d 0a rgExtension;.}.
47c0: 61 6c 69 61 73 20 43 52 4c 5f 49 4e 46 4f 2a 20 alias CRL_INFO*
47d0: 50 43 52 4c 5f 49 4e 46 4f 3b 0a 0a 73 74 72 75 PCRL_INFO;..stru
47e0: 63 74 20 43 52 4c 5f 43 4f 4e 54 45 58 54 20 7b ct CRL_CONTEXT {
47f0: 0a 09 44 57 4f 52 44 20 20 20 20 20 20 64 77 43 ..DWORD dwC
4800: 65 72 74 45 6e 63 6f 64 69 6e 67 54 79 70 65 3b ertEncodingType;
4810: 0a 09 42 59 54 45 2a 20 20 20 20 20 20 70 62 43 ..BYTE* pbC
4820: 72 6c 45 6e 63 6f 64 65 64 3b 0a 09 44 57 4f 52 rlEncoded;..DWOR
4830: 44 20 20 20 20 20 20 63 62 43 72 6c 45 6e 63 6f D cbCrlEnco
4840: 64 65 64 3b 0a 09 50 43 52 4c 5f 49 4e 46 4f 20 ded;..PCRL_INFO
4850: 20 70 43 72 6c 49 6e 66 6f 3b 0a 09 48 43 45 52 pCrlInfo;..HCER
4860: 54 53 54 4f 52 45 20 68 43 65 72 74 53 74 6f 72 TSTORE hCertStor
4870: 65 3b 0a 7d 0a 61 6c 69 61 73 20 43 52 4c 5f 43 e;.}.alias CRL_C
4880: 4f 4e 54 45 58 54 2a 20 20 20 20 20 20 20 50 43 ONTEXT* PC
4890: 52 4c 5f 43 4f 4e 54 45 58 54 3b 0a 61 6c 69 61 RL_CONTEXT;.alia
48a0: 73 20 43 50 74 72 21 28 43 52 4c 5f 43 4f 4e 54 s CPtr!(CRL_CONT
48b0: 45 58 54 29 20 50 43 43 52 4c 5f 43 4f 4e 54 45 EXT) PCCRL_CONTE
48c0: 58 54 3b 0a 0a 73 74 72 75 63 74 20 43 45 52 54 XT;..struct CERT
48d0: 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 43 52 4c 5f _REVOCATION_CRL_
48e0: 49 4e 46 4f 20 7b 0a 09 44 57 4f 52 44 20 20 20 INFO {..DWORD
48f0: 20 20 20 20 20 20 63 62 53 69 7a 65 20 3d 20 43 cbSize = C
4900: 45 52 54 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 43 ERT_REVOCATION_C
4910: 52 4c 5f 49 4e 46 4f 2e 73 69 7a 65 6f 66 3b 0a RL_INFO.sizeof;.
4920: 09 50 43 43 52 4c 5f 43 4f 4e 54 45 58 54 20 70 .PCCRL_CONTEXT p
4930: 42 61 73 65 43 52 4c 43 6f 6e 74 65 78 74 3b 0a BaseCRLContext;.
4940: 09 50 43 43 52 4c 5f 43 4f 4e 54 45 58 54 20 70 .PCCRL_CONTEXT p
4950: 44 65 6c 74 61 43 52 4c 43 6f 6e 74 65 78 74 3b DeltaCRLContext;
4960: 0a 09 50 43 52 4c 5f 45 4e 54 52 59 20 20 20 20 ..PCRL_ENTRY
4970: 70 43 72 6c 45 6e 74 72 79 3b 0a 09 42 4f 4f 4c pCrlEntry;..BOOL
4980: 20 20 20 20 20 20 20 20 20 20 66 44 65 6c 74 61 fDelta
4990: 43 72 6c 45 6e 74 72 79 3b 0a 7d 0a 61 6c 69 61 CrlEntry;.}.alia
49a0: 73 20 43 45 52 54 5f 52 45 56 4f 43 41 54 49 4f s CERT_REVOCATIO
49b0: 4e 5f 43 52 4c 5f 49 4e 46 4f 2a 20 50 43 45 52 N_CRL_INFO* PCER
49c0: 54 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 43 52 4c T_REVOCATION_CRL
49d0: 5f 49 4e 46 4f 3b 0a 0a 73 74 72 75 63 74 20 43 _INFO;..struct C
49e0: 45 52 54 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 49 ERT_REVOCATION_I
49f0: 4e 46 4f 20 7b 0a 09 44 57 4f 52 44 20 20 63 62 NFO {..DWORD cb
4a00: 53 69 7a 65 20 3d 20 43 45 52 54 5f 52 45 56 4f Size = CERT_REVO
4a10: 43 41 54 49 4f 4e 5f 49 4e 46 4f 2e 73 69 7a 65 CATION_INFO.size
4a20: 6f 66 3b 0a 09 44 57 4f 52 44 20 20 64 77 52 65 of;..DWORD dwRe
4a30: 76 6f 63 61 74 69 6f 6e 52 65 73 75 6c 74 3b 0a vocationResult;.
4a40: 09 4c 50 43 53 54 52 20 70 73 7a 52 65 76 6f 63 .LPCSTR pszRevoc
4a50: 61 74 69 6f 6e 4f 69 64 3b 0a 09 4c 50 56 4f 49 ationOid;..LPVOI
4a60: 44 20 70 76 4f 69 64 53 70 65 63 69 66 69 63 49 D pvOidSpecificI
4a70: 6e 66 6f 3b 0a 09 42 4f 4f 4c 20 20 20 66 48 61 nfo;..BOOL fHa
4a80: 73 46 72 65 73 68 6e 65 73 73 54 69 6d 65 3b 0a sFreshnessTime;.
4a90: 09 44 57 4f 52 44 20 20 64 77 46 72 65 73 68 6e .DWORD dwFreshn
4aa0: 65 73 73 54 69 6d 65 3b 0a 09 50 43 45 52 54 5f essTime;..PCERT_
4ab0: 52 45 56 4f 43 41 54 49 4f 4e 5f 43 52 4c 5f 49 REVOCATION_CRL_I
4ac0: 4e 46 4f 20 70 43 72 6c 49 6e 66 6f 3b 0a 7d 0a NFO pCrlInfo;.}.
4ad0: 61 6c 69 61 73 20 43 45 52 54 5f 52 45 56 4f 43 alias CERT_REVOC
4ae0: 41 54 49 4f 4e 5f 49 4e 46 4f 2a 20 50 43 45 52 ATION_INFO* PCER
4af0: 54 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 49 4e 46 T_REVOCATION_INF
4b00: 4f 3b 0a 0a 2f 2a 20 23 69 66 20 28 5f 57 49 4e O;../* #if (_WIN
4b10: 33 32 5f 57 49 4e 4e 54 3e 3d 30 78 35 30 30 29 32_WINNT>=0x500)
4b20: 20 2a 2f 0a 73 74 72 75 63 74 20 43 45 52 54 5f */.struct CERT_
4b30: 43 48 41 49 4e 5f 45 4c 45 4d 45 4e 54 20 7b 0a CHAIN_ELEMENT {.
4b40: 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 .DWORD
4b50: 20 20 20 20 20 20 20 63 62 53 69 7a 65 20 3d 20 cbSize =
4b60: 43 45 52 54 5f 43 48 41 49 4e 5f 45 4c 45 4d 45 CERT_CHAIN_ELEME
4b70: 4e 54 2e 73 69 7a 65 6f 66 3b 0a 09 50 43 43 45 NT.sizeof;..PCCE
4b80: 52 54 5f 43 4f 4e 54 45 58 54 20 20 20 20 20 20 RT_CONTEXT
4b90: 20 20 70 43 65 72 74 43 6f 6e 74 65 78 74 3b 0a pCertContext;.
4ba0: 09 43 45 52 54 5f 54 52 55 53 54 5f 53 54 41 54 .CERT_TRUST_STAT
4bb0: 55 53 20 20 20 20 20 54 72 75 73 74 53 74 61 74 US TrustStat
4bc0: 75 73 3b 0a 09 50 43 45 52 54 5f 52 45 56 4f 43 us;..PCERT_REVOC
4bd0: 41 54 49 4f 4e 5f 49 4e 46 4f 20 70 52 65 76 6f ATION_INFO pRevo
4be0: 63 61 74 69 6f 6e 49 6e 66 6f 3b 0a 09 50 43 45 cationInfo;..PCE
4bf0: 52 54 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 20 RT_ENHKEY_USAGE
4c00: 20 20 20 70 49 73 73 75 61 6e 63 65 55 73 61 67 pIssuanceUsag
4c10: 65 3b 0a 09 50 43 45 52 54 5f 45 4e 48 4b 45 59 e;..PCERT_ENHKEY
4c20: 5f 55 53 41 47 45 20 20 20 20 70 41 70 70 6c 69 _USAGE pAppli
4c30: 63 61 74 69 6f 6e 55 73 61 67 65 3b 0a 7d 0a 61 cationUsage;.}.a
4c40: 6c 69 61 73 20 43 45 52 54 5f 43 48 41 49 4e 5f lias CERT_CHAIN_
4c50: 45 4c 45 4d 45 4e 54 2a 20 50 43 45 52 54 5f 43 ELEMENT* PCERT_C
4c60: 48 41 49 4e 5f 45 4c 45 4d 45 4e 54 3b 0a 2f 2a HAIN_ELEMENT;./*
4c70: 20 23 65 6e 64 69 66 20 2a 2f 0a 0a 73 74 72 75 #endif */..stru
4c80: 63 74 20 43 52 59 50 54 5f 41 54 54 52 49 42 55 ct CRYPT_ATTRIBU
4c90: 54 45 20 7b 0a 09 4c 50 53 54 52 20 20 20 20 20 TE {..LPSTR
4ca0: 20 20 20 20 20 20 20 70 73 7a 4f 62 6a 49 64 3b pszObjId;
4cb0: 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 ..DWORD
4cc0: 20 20 20 63 56 61 6c 75 65 3b 0a 09 50 43 52 59 cValue;..PCRY
4cd0: 50 54 5f 41 54 54 52 5f 42 4c 4f 42 20 72 67 56 PT_ATTR_BLOB rgV
4ce0: 61 6c 75 65 3b 0a 7d 0a 61 6c 69 61 73 20 43 52 alue;.}.alias CR
4cf0: 59 50 54 5f 41 54 54 52 49 42 55 54 45 2a 20 50 YPT_ATTRIBUTE* P
4d00: 43 52 59 50 54 5f 41 54 54 52 49 42 55 54 45 3b CRYPT_ATTRIBUTE;
4d10: 0a 0a 73 74 72 75 63 74 20 43 54 4c 5f 45 4e 54 ..struct CTL_ENT
4d20: 52 59 20 7b 0a 09 43 52 59 50 54 5f 44 41 54 41 RY {..CRYPT_DATA
4d30: 5f 42 4c 4f 42 20 20 53 75 62 6a 65 63 74 49 64 _BLOB SubjectId
4d40: 65 6e 74 69 66 69 65 72 3b 0a 09 44 57 4f 52 44 entifier;..DWORD
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 63 41 74 74 cAtt
4d60: 72 69 62 75 74 65 3b 0a 09 50 43 52 59 50 54 5f ribute;..PCRYPT_
4d70: 41 54 54 52 49 42 55 54 45 20 72 67 41 74 74 72 ATTRIBUTE rgAttr
4d80: 69 62 75 74 65 3b 0a 7d 0a 61 6c 69 61 73 20 43 ibute;.}.alias C
4d90: 54 4c 5f 45 4e 54 52 59 2a 20 50 43 54 4c 5f 45 TL_ENTRY* PCTL_E
4da0: 4e 54 52 59 3b 0a 0a 73 74 72 75 63 74 20 43 54 NTRY;..struct CT
4db0: 4c 5f 49 4e 46 4f 20 7b 0a 09 44 57 4f 52 44 20 L_INFO {..DWORD
4dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 77 56 dwV
4dd0: 65 72 73 69 6f 6e 3b 0a 09 43 54 4c 5f 55 53 41 ersion;..CTL_USA
4de0: 47 45 20 20 20 20 20 20 20 20 20 20 53 75 62 6a GE Subj
4df0: 65 63 74 55 73 61 67 65 3b 0a 09 43 52 59 50 54 ectUsage;..CRYPT
4e00: 5f 44 41 54 41 5f 42 4c 4f 42 20 20 20 20 4c 69 _DATA_BLOB Li
4e10: 73 74 49 64 65 6e 74 69 66 69 65 72 3b 0a 09 43 stIdentifier;..C
4e20: 52 59 50 54 5f 49 4e 54 45 47 45 52 5f 42 4c 4f RYPT_INTEGER_BLO
4e30: 42 20 53 65 71 75 65 6e 63 65 4e 75 6d 62 65 72 B SequenceNumber
4e40: 3b 0a 09 46 49 4c 45 54 49 4d 45 20 20 20 20 20 ;..FILETIME
4e50: 20 20 20 20 20 20 54 68 69 73 55 70 64 61 74 65 ThisUpdate
4e60: 3b 0a 09 46 49 4c 45 54 49 4d 45 20 20 20 20 20 ;..FILETIME
4e70: 20 20 20 20 20 20 4e 65 78 74 55 70 64 61 74 65 NextUpdate
4e80: 3b 0a 09 43 52 59 50 54 5f 41 4c 47 4f 52 49 54 ;..CRYPT_ALGORIT
4e90: 48 4d 5f 49 44 45 4e 54 49 46 49 45 52 20 53 75 HM_IDENTIFIER Su
4ea0: 62 6a 65 63 74 41 6c 67 6f 72 69 74 68 6d 3b 0a bjectAlgorithm;.
4eb0: 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 .DWORD
4ec0: 20 20 20 20 63 43 54 4c 45 6e 74 72 79 3b 0a 09 cCTLEntry;..
4ed0: 50 43 54 4c 5f 45 4e 54 52 59 20 20 20 20 20 20 PCTL_ENTRY
4ee0: 20 20 20 72 67 43 54 4c 45 6e 74 72 79 3b 0a 09 rgCTLEntry;..
4ef0: 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 20 DWORD
4f00: 20 20 20 63 45 78 74 65 6e 73 69 6f 6e 3b 0a 09 cExtension;..
4f10: 50 43 45 52 54 5f 45 58 54 45 4e 53 49 4f 4e 20 PCERT_EXTENSION
4f20: 20 20 20 72 67 45 78 74 65 6e 73 69 6f 6e 3b 0a rgExtension;.
4f30: 7d 0a 61 6c 69 61 73 20 43 54 4c 5f 49 4e 46 4f }.alias CTL_INFO
4f40: 2a 20 50 43 54 4c 5f 49 4e 46 4f 3b 0a 0a 73 74 * PCTL_INFO;..st
4f50: 72 75 63 74 20 43 54 4c 5f 43 4f 4e 54 45 58 54 ruct CTL_CONTEXT
4f60: 20 7b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 64 {..DWORD d
4f70: 77 4d 73 67 41 6e 64 43 65 72 74 45 6e 63 6f 64 wMsgAndCertEncod
4f80: 69 6e 67 54 79 70 65 3b 0a 09 42 59 54 45 2a 20 ingType;..BYTE*
4f90: 20 20 20 20 20 70 62 43 74 6c 45 6e 63 6f 64 65 pbCtlEncode
4fa0: 64 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 63 d;..DWORD c
4fb0: 62 43 74 6c 45 6e 63 6f 64 65 64 3b 0a 09 50 43 bCtlEncoded;..PC
4fc0: 54 4c 5f 49 4e 46 4f 20 20 70 43 74 6c 49 6e 66 TL_INFO pCtlInf
4fd0: 6f 3b 0a 09 48 43 45 52 54 53 54 4f 52 45 20 68 o;..HCERTSTORE h
4fe0: 43 65 72 74 53 74 6f 72 65 3b 0a 09 48 43 52 59 CertStore;..HCRY
4ff0: 50 54 4d 53 47 20 20 68 43 72 79 70 74 4d 73 67 PTMSG hCryptMsg
5000: 3b 0a 09 42 59 54 45 2a 20 20 20 20 20 20 70 62 ;..BYTE* pb
5010: 43 74 6c 43 6f 6e 74 65 6e 74 3b 0a 09 44 57 4f CtlContent;..DWO
5020: 52 44 20 20 20 20 20 20 63 62 43 74 6c 43 6f 6e RD cbCtlCon
5030: 74 65 6e 74 3b 0a 7d 0a 61 6c 69 61 73 20 43 54 tent;.}.alias CT
5040: 4c 5f 43 4f 4e 54 45 58 54 2a 20 20 20 20 20 20 L_CONTEXT*
5050: 20 50 43 54 4c 5f 43 4f 4e 54 45 58 54 3b 0a 61 PCTL_CONTEXT;.a
5060: 6c 69 61 73 20 43 50 74 72 21 28 43 54 4c 5f 43 lias CPtr!(CTL_C
5070: 4f 4e 54 45 58 54 29 20 50 43 43 54 4c 5f 43 4f ONTEXT) PCCTL_CO
5080: 4e 54 45 58 54 3b 0a 0a 73 74 72 75 63 74 20 43 NTEXT;..struct C
5090: 45 52 54 5f 54 52 55 53 54 5f 4c 49 53 54 5f 49 ERT_TRUST_LIST_I
50a0: 4e 46 4f 20 7b 0a 09 44 57 4f 52 44 20 20 20 20 NFO {..DWORD
50b0: 20 20 20 20 20 63 62 53 69 7a 65 20 3d 20 43 45 cbSize = CE
50c0: 52 54 5f 54 52 55 53 54 5f 4c 49 53 54 5f 49 4e RT_TRUST_LIST_IN
50d0: 46 4f 2e 73 69 7a 65 6f 66 3b 0a 09 50 43 54 4c FO.sizeof;..PCTL
50e0: 5f 45 4e 54 52 59 20 20 20 20 70 43 74 6c 45 6e _ENTRY pCtlEn
50f0: 74 72 79 3b 0a 09 50 43 43 54 4c 5f 43 4f 4e 54 try;..PCCTL_CONT
5100: 45 58 54 20 70 43 74 6c 43 6f 6e 74 65 78 74 3b EXT pCtlContext;
5110: 0a 7d 0a 61 6c 69 61 73 20 43 45 52 54 5f 54 52 .}.alias CERT_TR
5120: 55 53 54 5f 4c 49 53 54 5f 49 4e 46 4f 2a 20 50 UST_LIST_INFO* P
5130: 43 45 52 54 5f 54 52 55 53 54 5f 4c 49 53 54 5f CERT_TRUST_LIST_
5140: 49 4e 46 4f 3b 0a 0a 73 74 72 75 63 74 20 43 45 INFO;..struct CE
5150: 52 54 5f 53 49 4d 50 4c 45 5f 43 48 41 49 4e 20 RT_SIMPLE_CHAIN
5160: 7b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 {..DWORD
5170: 20 20 20 20 20 20 20 20 20 63 62 53 69 7a 65 20 cbSize
5180: 3d 20 43 45 52 54 5f 53 49 4d 50 4c 45 5f 43 48 = CERT_SIMPLE_CH
5190: 41 49 4e 2e 73 69 7a 65 6f 66 3b 0a 09 43 45 52 AIN.sizeof;..CER
51a0: 54 5f 54 52 55 53 54 5f 53 54 41 54 55 53 20 20 T_TRUST_STATUS
51b0: 20 20 20 54 72 75 73 74 53 74 61 74 75 73 3b 0a TrustStatus;.
51c0: 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 .DWORD
51d0: 20 20 20 20 20 20 20 63 45 6c 65 6d 65 6e 74 3b cElement;
51e0: 0a 09 50 43 45 52 54 5f 43 48 41 49 4e 5f 45 4c ..PCERT_CHAIN_EL
51f0: 45 4d 45 4e 54 2a 20 20 72 67 70 45 6c 65 6d 65 EMENT* rgpEleme
5200: 6e 74 3b 0a 09 50 43 45 52 54 5f 54 52 55 53 54 nt;..PCERT_TRUST
5210: 5f 4c 49 53 54 5f 49 4e 46 4f 20 70 54 72 75 73 _LIST_INFO pTrus
5220: 74 4c 69 73 74 49 6e 66 6f 3b 0a 09 42 4f 4f 4c tListInfo;..BOOL
5230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5240: 20 20 66 48 61 73 52 65 76 6f 63 61 74 69 6f 6e fHasRevocation
5250: 46 72 65 73 68 6e 65 73 73 54 69 6d 65 3b 0a 09 FreshnessTime;..
5260: 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 20 DWORD
5270: 20 20 20 20 20 20 64 77 52 65 76 6f 63 61 74 69 dwRevocati
5280: 6f 6e 46 72 65 73 68 6e 65 73 73 54 69 6d 65 3b onFreshnessTime;
5290: 0a 7d 0a 61 6c 69 61 73 20 43 45 52 54 5f 53 49 .}.alias CERT_SI
52a0: 4d 50 4c 45 5f 43 48 41 49 4e 2a 20 50 43 45 52 MPLE_CHAIN* PCER
52b0: 54 5f 53 49 4d 50 4c 45 5f 43 48 41 49 4e 3b 0a T_SIMPLE_CHAIN;.
52c0: 0a 2f 2a 20 23 69 66 20 28 5f 57 49 4e 33 32 5f ./* #if (_WIN32_
52d0: 57 49 4e 4e 54 3e 3d 30 78 35 30 30 29 20 2a 2f WINNT>=0x500) */
52e0: 0a 61 6c 69 61 73 20 43 50 74 72 21 28 43 45 52 .alias CPtr!(CER
52f0: 54 5f 43 48 41 49 4e 5f 43 4f 4e 54 45 58 54 29 T_CHAIN_CONTEXT)
5300: 20 50 43 43 45 52 54 5f 43 48 41 49 4e 5f 43 4f PCCERT_CHAIN_CO
5310: 4e 54 45 58 54 3b 0a 73 74 72 75 63 74 20 43 45 NTEXT;.struct CE
5320: 52 54 5f 43 48 41 49 4e 5f 43 4f 4e 54 45 58 54 RT_CHAIN_CONTEXT
5330: 20 7b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 {..DWORD
5340: 20 20 20 20 20 20 20 20 20 20 63 62 53 69 7a 65 cbSize
5350: 20 3d 20 43 45 52 54 5f 43 48 41 49 4e 5f 43 4f = CERT_CHAIN_CO
5360: 4e 54 45 58 54 2e 73 69 7a 65 6f 66 3b 0a 09 43 NTEXT.sizeof;..C
5370: 45 52 54 5f 54 52 55 53 54 5f 53 54 41 54 55 53 ERT_TRUST_STATUS
5380: 20 20 20 20 20 54 72 75 73 74 53 74 61 74 75 73 TrustStatus
5390: 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 ;..DWORD
53a0: 20 20 20 20 20 20 20 20 20 63 43 68 61 69 6e 3b cChain;
53b0: 0a 09 50 43 45 52 54 5f 53 49 4d 50 4c 45 5f 43 ..PCERT_SIMPLE_C
53c0: 48 41 49 4e 2a 20 20 20 72 67 70 43 68 61 69 6e HAIN* rgpChain
53d0: 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 ;..DWORD
53e0: 20 20 20 20 20 20 20 20 20 63 4c 6f 77 65 72 51 cLowerQ
53f0: 75 61 6c 69 74 79 43 68 61 69 6e 43 6f 6e 74 65 ualityChainConte
5400: 78 74 3b 0a 09 50 43 43 45 52 54 5f 43 48 41 49 xt;..PCCERT_CHAI
5410: 4e 5f 43 4f 4e 54 45 58 54 2a 20 72 67 70 4c 6f N_CONTEXT* rgpLo
5420: 77 65 72 51 75 61 6c 69 74 79 43 68 61 69 6e 43 werQualityChainC
5430: 6f 6e 74 65 78 74 3b 0a 09 42 4f 4f 4c 20 20 20 ontext;..BOOL
5440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 f
5450: 48 61 73 52 65 76 6f 63 61 74 69 6f 6e 46 72 65 HasRevocationFre
5460: 73 68 6e 65 73 73 54 69 6d 65 3b 0a 09 44 57 4f shnessTime;..DWO
5470: 52 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RD
5480: 20 20 20 64 77 52 65 76 6f 63 61 74 69 6f 6e 46 dwRevocationF
5490: 72 65 73 68 6e 65 73 73 54 69 6d 65 3b 0a 7d 0a reshnessTime;.}.
54a0: 61 6c 69 61 73 20 43 45 52 54 5f 43 48 41 49 4e alias CERT_CHAIN
54b0: 5f 43 4f 4e 54 45 58 54 2a 20 50 43 45 52 54 5f _CONTEXT* PCERT_
54c0: 43 48 41 49 4e 5f 43 4f 4e 54 45 58 54 3b 0a 2f CHAIN_CONTEXT;./
54d0: 2a 20 23 65 6e 64 69 66 20 2a 2f 0a 0a 73 74 72 * #endif */..str
54e0: 75 63 74 20 50 52 4f 56 5f 45 4e 55 4d 41 4c 47 uct PROV_ENUMALG
54f0: 53 20 7b 0a 09 41 4c 47 5f 49 44 20 20 20 61 69 S {..ALG_ID ai
5500: 41 6c 67 69 64 3b 0a 09 44 57 4f 52 44 20 20 20 Algid;..DWORD
5510: 20 64 77 42 69 74 4c 65 6e 3b 0a 09 44 57 4f 52 dwBitLen;..DWOR
5520: 44 20 20 20 20 64 77 4e 61 6d 65 4c 65 6e 3b 0a D dwNameLen;.
5530: 09 43 48 41 52 5b 32 30 5d 20 73 7a 4e 61 6d 65 .CHAR[20] szName
5540: 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 50 55 42 4c ;.}..struct PUBL
5550: 49 43 4b 45 59 53 54 52 55 43 20 7b 0a 09 42 59 ICKEYSTRUC {..BY
5560: 54 45 20 20 20 62 54 79 70 65 3b 0a 09 42 59 54 TE bType;..BYT
5570: 45 20 20 20 62 56 65 72 73 69 6f 6e 3b 0a 09 57 E bVersion;..W
5580: 4f 52 44 20 20 20 72 65 73 65 72 76 65 64 3b 0a ORD reserved;.
5590: 09 41 4c 47 5f 49 44 20 61 69 4b 65 79 41 6c 67 .ALG_ID aiKeyAlg
55a0: 3b 0a 7d 0a 61 6c 69 61 73 20 50 55 42 4c 49 43 ;.}.alias PUBLIC
55b0: 4b 45 59 53 54 52 55 43 20 42 4c 4f 42 48 45 41 KEYSTRUC BLOBHEA
55c0: 44 45 52 3b 0a 0a 73 74 72 75 63 74 20 52 53 41 DER;..struct RSA
55d0: 50 55 42 4b 45 59 20 7b 0a 09 44 57 4f 52 44 20 PUBKEY {..DWORD
55e0: 6d 61 67 69 63 3b 0a 09 44 57 4f 52 44 20 62 69 magic;..DWORD bi
55f0: 74 6c 65 6e 3b 0a 09 44 57 4f 52 44 20 70 75 62 tlen;..DWORD pub
5600: 65 78 70 3b 0a 7d 0a 0a 73 74 72 75 63 74 20 48 exp;.}..struct H
5610: 4d 41 43 5f 49 4e 46 4f 20 7b 0a 09 41 4c 47 5f MAC_INFO {..ALG_
5620: 49 44 20 48 61 73 68 41 6c 67 69 64 3b 0a 09 42 ID HashAlgid;..B
5630: 59 54 45 2a 20 20 70 62 49 6e 6e 65 72 53 74 72 YTE* pbInnerStr
5640: 69 6e 67 3b 0a 09 44 57 4f 52 44 20 20 63 62 49 ing;..DWORD cbI
5650: 6e 6e 65 72 53 74 72 69 6e 67 3b 0a 09 42 59 54 nnerString;..BYT
5660: 45 2a 20 20 70 62 4f 75 74 65 72 53 74 72 69 6e E* pbOuterStrin
5670: 67 3b 0a 09 44 57 4f 52 44 20 20 63 62 4f 75 74 g;..DWORD cbOut
5680: 65 72 53 74 72 69 6e 67 3b 0a 7d 0a 61 6c 69 61 erString;.}.alia
5690: 73 20 48 4d 41 43 5f 49 4e 46 4f 2a 20 50 48 4d s HMAC_INFO* PHM
56a0: 41 43 5f 49 4e 46 4f 3b 0a 0a 65 78 74 65 72 6e AC_INFO;..extern
56b0: 20 28 57 69 6e 64 6f 77 73 29 20 7b 0a 09 42 4f (Windows) {..BO
56c0: 4f 4c 20 43 65 72 74 43 6c 6f 73 65 53 74 6f 72 OL CertCloseStor
56d0: 65 28 48 43 45 52 54 53 54 4f 52 45 2c 20 44 57 e(HCERTSTORE, DW
56e0: 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 43 65 72 74 ORD);..BOOL Cert
56f0: 47 65 74 43 65 72 74 69 66 69 63 61 74 65 43 68 GetCertificateCh
5700: 61 69 6e 28 48 43 45 52 54 43 48 41 49 4e 45 4e ain(HCERTCHAINEN
5710: 47 49 4e 45 2c 20 50 43 43 45 52 54 5f 43 4f 4e GINE, PCCERT_CON
5720: 54 45 58 54 2c 20 4c 50 46 49 4c 45 54 49 4d 45 TEXT, LPFILETIME
5730: 2c 0a 09 20 20 48 43 45 52 54 53 54 4f 52 45 2c ,.. HCERTSTORE,
5740: 20 50 43 45 52 54 5f 43 48 41 49 4e 5f 50 41 52 PCERT_CHAIN_PAR
5750: 41 2c 20 44 57 4f 52 44 2c 20 4c 50 56 4f 49 44 A, DWORD, LPVOID
5760: 2c 20 50 43 43 45 52 54 5f 43 48 41 49 4e 5f 43 , PCCERT_CHAIN_C
5770: 4f 4e 54 45 58 54 2a 29 3b 0a 09 42 4f 4f 4c 20 ONTEXT*);..BOOL
5780: 43 65 72 74 56 65 72 69 66 79 43 65 72 74 69 66 CertVerifyCertif
5790: 69 63 61 74 65 43 68 61 69 6e 50 6f 6c 69 63 79 icateChainPolicy
57a0: 28 4c 50 43 53 54 52 2c 20 50 43 43 45 52 54 5f (LPCSTR, PCCERT_
57b0: 43 48 41 49 4e 5f 43 4f 4e 54 45 58 54 2c 0a 09 CHAIN_CONTEXT,..
57c0: 20 20 50 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f PCERT_CHAIN_PO
57d0: 4c 49 43 59 5f 50 41 52 41 2c 20 50 43 45 52 54 LICY_PARA, PCERT
57e0: 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 53 54 _CHAIN_POLICY_ST
57f0: 41 54 55 53 29 3b 0a 09 76 6f 69 64 20 43 65 72 ATUS);..void Cer
5800: 74 46 72 65 65 43 65 72 74 69 66 69 63 61 74 65 tFreeCertificate
5810: 43 68 61 69 6e 28 50 43 43 45 52 54 5f 43 48 41 Chain(PCCERT_CHA
5820: 49 4e 5f 43 4f 4e 54 45 58 54 29 3b 0a 09 44 57 IN_CONTEXT);..DW
5830: 4f 52 44 20 43 65 72 74 4e 61 6d 65 54 6f 53 74 ORD CertNameToSt
5840: 72 41 28 44 57 4f 52 44 2c 20 50 43 45 52 54 5f rA(DWORD, PCERT_
5850: 4e 41 4d 45 5f 42 4c 4f 42 2c 20 44 57 4f 52 44 NAME_BLOB, DWORD
5860: 2c 20 4c 50 53 54 52 2c 20 44 57 4f 52 44 29 3b , LPSTR, DWORD);
5870: 0a 09 44 57 4f 52 44 20 43 65 72 74 4e 61 6d 65 ..DWORD CertName
5880: 54 6f 53 74 72 57 28 44 57 4f 52 44 2c 20 50 43 ToStrW(DWORD, PC
5890: 45 52 54 5f 4e 41 4d 45 5f 42 4c 4f 42 2c 20 44 ERT_NAME_BLOB, D
58a0: 57 4f 52 44 2c 20 4c 50 57 53 54 52 2c 20 44 57 WORD, LPWSTR, DW
58b0: 4f 52 44 29 3b 0a 09 48 43 45 52 54 53 54 4f 52 ORD);..HCERTSTOR
58c0: 45 20 43 65 72 74 4f 70 65 6e 53 79 73 74 65 6d E CertOpenSystem
58d0: 53 74 6f 72 65 41 28 48 43 52 59 50 54 50 52 4f StoreA(HCRYPTPRO
58e0: 56 2c 20 4c 50 43 53 54 52 29 3b 0a 09 48 43 45 V, LPCSTR);..HCE
58f0: 52 54 53 54 4f 52 45 20 43 65 72 74 4f 70 65 6e RTSTORE CertOpen
5900: 53 79 73 74 65 6d 53 74 6f 72 65 57 28 48 43 52 SystemStoreW(HCR
5910: 59 50 54 50 52 4f 56 2c 20 4c 50 43 57 53 54 52 YPTPROV, LPCWSTR
5920: 29 3b 0a 09 48 43 45 52 54 53 54 4f 52 45 20 43 );..HCERTSTORE C
5930: 65 72 74 4f 70 65 6e 53 74 6f 72 65 28 4c 50 43 ertOpenStore(LPC
5940: 53 54 52 2c 20 44 57 4f 52 44 2c 20 48 43 52 59 STR, DWORD, HCRY
5950: 50 54 50 52 4f 56 2c 20 44 57 4f 52 44 2c 20 43 PTPROV, DWORD, C
5960: 50 74 72 21 28 76 6f 69 64 29 29 3b 0a 09 50 43 Ptr!(void));..PC
5970: 43 45 52 54 5f 43 4f 4e 54 45 58 54 20 43 65 72 CERT_CONTEXT Cer
5980: 74 46 69 6e 64 43 65 72 74 69 66 69 63 61 74 65 tFindCertificate
5990: 49 6e 53 74 6f 72 65 28 48 43 45 52 54 53 54 4f InStore(HCERTSTO
59a0: 52 45 2c 20 44 57 4f 52 44 2c 20 44 57 4f 52 44 RE, DWORD, DWORD
59b0: 2c 20 44 57 4f 52 44 2c 0a 09 20 20 43 50 74 72 , DWORD,.. CPtr
59c0: 21 28 76 6f 69 64 29 2c 20 50 43 43 45 52 54 5f !(void), PCCERT_
59d0: 43 4f 4e 54 45 58 54 29 3b 0a 09 42 4f 4f 4c 20 CONTEXT);..BOOL
59e0: 43 65 72 74 46 72 65 65 43 65 72 74 69 66 69 63 CertFreeCertific
59f0: 61 74 65 43 6f 6e 74 65 78 74 28 50 43 43 45 52 ateContext(PCCER
5a00: 54 5f 43 4f 4e 54 45 58 54 29 3b 0a 09 50 43 43 T_CONTEXT);..PCC
5a10: 45 52 54 5f 43 4f 4e 54 45 58 54 20 43 65 72 74 ERT_CONTEXT Cert
5a20: 47 65 74 49 73 73 75 65 72 43 65 72 74 69 66 69 GetIssuerCertifi
5a30: 63 61 74 65 46 72 6f 6d 53 74 6f 72 65 28 48 43 cateFromStore(HC
5a40: 45 52 54 53 54 4f 52 45 2c 0a 09 20 20 50 43 43 ERTSTORE,.. PCC
5a50: 45 52 54 5f 43 4f 4e 54 45 58 54 2c 20 50 43 43 ERT_CONTEXT, PCC
5a60: 45 52 54 5f 43 4f 4e 54 45 58 54 2c 20 44 57 4f ERT_CONTEXT, DWO
5a70: 52 44 2a 29 3b 0a 09 50 43 43 45 52 54 5f 43 48 RD*);..PCCERT_CH
5a80: 41 49 4e 5f 43 4f 4e 54 45 58 54 20 43 65 72 74 AIN_CONTEXT Cert
5a90: 46 69 6e 64 43 68 61 69 6e 49 6e 53 74 6f 72 65 FindChainInStore
5aa0: 28 48 43 45 52 54 53 54 4f 52 45 2c 20 44 57 4f (HCERTSTORE, DWO
5ab0: 52 44 2c 20 44 57 4f 52 44 2c 20 44 57 4f 52 44 RD, DWORD, DWORD
5ac0: 2c 0a 09 20 20 43 50 74 72 21 28 76 6f 69 64 29 ,.. CPtr!(void)
5ad0: 2c 20 50 43 43 45 52 54 5f 43 48 41 49 4e 5f 43 , PCCERT_CHAIN_C
5ae0: 4f 4e 54 45 58 54 29 3b 0a 0a 09 42 4f 4f 4c 20 ONTEXT);...BOOL
5af0: 43 72 79 70 74 41 63 71 75 69 72 65 43 6f 6e 74 CryptAcquireCont
5b00: 65 78 74 41 28 48 43 52 59 50 54 50 52 4f 56 2a extA(HCRYPTPROV*
5b10: 2c 20 4c 50 43 53 54 52 2c 20 4c 50 43 53 54 52 , LPCSTR, LPCSTR
5b20: 2c 20 44 57 4f 52 44 2c 20 44 57 4f 52 44 29 3b , DWORD, DWORD);
5b30: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 41 63 71 75 ..BOOL CryptAcqu
5b40: 69 72 65 43 6f 6e 74 65 78 74 57 28 48 43 52 59 ireContextW(HCRY
5b50: 50 54 50 52 4f 56 2a 2c 20 4c 50 43 57 53 54 52 PTPROV*, LPCWSTR
5b60: 2c 20 4c 50 43 57 53 54 52 2c 20 44 57 4f 52 44 , LPCWSTR, DWORD
5b70: 2c 20 44 57 4f 52 44 29 3b 0a 09 20 42 4f 4f 4c , DWORD);.. BOOL
5b80: 20 43 72 79 70 74 43 6f 6e 74 65 78 74 41 64 64 CryptContextAdd
5b90: 52 65 66 28 48 43 52 59 50 54 50 52 4f 56 2c 20 Ref(HCRYPTPROV,
5ba0: 44 57 4f 52 44 2a 2c 20 44 57 4f 52 44 29 3b 0a DWORD*, DWORD);.
5bb0: 09 42 4f 4f 4c 20 43 72 79 70 74 52 65 6c 65 61 .BOOL CryptRelea
5bc0: 73 65 43 6f 6e 74 65 78 74 28 48 43 52 59 50 54 seContext(HCRYPT
5bd0: 50 52 4f 56 2c 20 44 57 4f 52 44 29 3b 0a 09 42 PROV, DWORD);..B
5be0: 4f 4f 4c 20 43 72 79 70 74 47 65 6e 4b 65 79 28 OOL CryptGenKey(
5bf0: 48 43 52 59 50 54 50 52 4f 56 2c 20 41 4c 47 5f HCRYPTPROV, ALG_
5c00: 49 44 2c 20 44 57 4f 52 44 2c 20 48 43 52 59 50 ID, DWORD, HCRYP
5c10: 54 4b 45 59 2a 29 3b 0a 09 42 4f 4f 4c 20 43 72 TKEY*);..BOOL Cr
5c20: 79 70 74 44 65 72 69 76 65 4b 65 79 28 48 43 52 yptDeriveKey(HCR
5c30: 59 50 54 50 52 4f 56 2c 20 41 4c 47 5f 49 44 2c YPTPROV, ALG_ID,
5c40: 20 48 43 52 59 50 54 48 41 53 48 2c 20 44 57 4f HCRYPTHASH, DWO
5c50: 52 44 2c 20 48 43 52 59 50 54 4b 45 59 2a 29 3b RD, HCRYPTKEY*);
5c60: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 44 65 73 74 ..BOOL CryptDest
5c70: 72 6f 79 4b 65 79 28 48 43 52 59 50 54 4b 45 59 royKey(HCRYPTKEY
5c80: 29 3b 0a 09 73 74 61 74 69 63 20 69 66 20 28 57 );..static if (W
5c90: 49 4e 56 45 52 20 3e 3d 20 30 78 30 35 30 30 29 INVER >= 0x0500)
5ca0: 20 7b 0a 09 09 42 4f 4f 4c 20 43 72 79 70 74 44 {...BOOL CryptD
5cb0: 75 70 6c 69 63 61 74 65 48 61 73 68 28 48 43 52 uplicateHash(HCR
5cc0: 59 50 54 48 41 53 48 2c 20 44 57 4f 52 44 2a 2c YPTHASH, DWORD*,
5cd0: 20 44 57 4f 52 44 2c 20 48 43 52 59 50 54 48 41 DWORD, HCRYPTHA
5ce0: 53 48 2a 29 3b 0a 09 09 42 4f 4f 4c 20 43 72 79 SH*);...BOOL Cry
5cf0: 70 74 44 75 70 6c 69 63 61 74 65 4b 65 79 28 48 ptDuplicateKey(H
5d00: 43 52 59 50 54 4b 45 59 2c 20 44 57 4f 52 44 2a CRYPTKEY, DWORD*
5d10: 2c 20 44 57 4f 52 44 2c 20 48 43 52 59 50 54 4b , DWORD, HCRYPTK
5d20: 45 59 2a 29 3b 0a 09 7d 0a 09 42 4f 4f 4c 20 43 EY*);..}..BOOL C
5d30: 72 79 70 74 53 65 74 4b 65 79 50 61 72 61 6d 28 ryptSetKeyParam(
5d40: 48 43 52 59 50 54 4b 45 59 2c 20 44 57 4f 52 44 HCRYPTKEY, DWORD
5d50: 2c 20 50 42 59 54 45 2c 20 44 57 4f 52 44 29 3b , PBYTE, DWORD);
5d60: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 47 65 74 4b ..BOOL CryptGetK
5d70: 65 79 50 61 72 61 6d 28 48 43 52 59 50 54 4b 45 eyParam(HCRYPTKE
5d80: 59 2c 20 44 57 4f 52 44 2c 20 50 42 59 54 45 2c Y, DWORD, PBYTE,
5d90: 20 50 44 57 4f 52 44 2c 20 44 57 4f 52 44 29 3b PDWORD, DWORD);
5da0: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 53 65 74 48 ..BOOL CryptSetH
5db0: 61 73 68 50 61 72 61 6d 28 48 43 52 59 50 54 48 ashParam(HCRYPTH
5dc0: 41 53 48 2c 20 44 57 4f 52 44 2c 20 50 42 59 54 ASH, DWORD, PBYT
5dd0: 45 2c 20 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c E, DWORD);..BOOL
5de0: 20 43 72 79 70 74 47 65 74 48 61 73 68 50 61 72 CryptGetHashPar
5df0: 61 6d 28 48 43 52 59 50 54 48 41 53 48 2c 20 44 am(HCRYPTHASH, D
5e00: 57 4f 52 44 2c 20 50 42 59 54 45 2c 20 50 44 57 WORD, PBYTE, PDW
5e10: 4f 52 44 2c 20 44 57 4f 52 44 29 3b 0a 09 42 4f ORD, DWORD);..BO
5e20: 4f 4c 20 43 72 79 70 74 53 65 74 50 72 6f 76 50 OL CryptSetProvP
5e30: 61 72 61 6d 28 48 43 52 59 50 54 50 52 4f 56 2c aram(HCRYPTPROV,
5e40: 20 44 57 4f 52 44 2c 20 50 42 59 54 45 2c 20 44 DWORD, PBYTE, D
5e50: 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 43 72 79 WORD);..BOOL Cry
5e60: 70 74 47 65 74 50 72 6f 76 50 61 72 61 6d 28 48 ptGetProvParam(H
5e70: 43 52 59 50 54 50 52 4f 56 2c 20 44 57 4f 52 44 CRYPTPROV, DWORD
5e80: 2c 20 50 42 59 54 45 2c 20 50 44 57 4f 52 44 2c , PBYTE, PDWORD,
5e90: 20 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 43 DWORD);..BOOL C
5ea0: 72 79 70 74 47 65 6e 52 61 6e 64 6f 6d 28 48 43 ryptGenRandom(HC
5eb0: 52 59 50 54 50 52 4f 56 2c 20 44 57 4f 52 44 2c RYPTPROV, DWORD,
5ec0: 20 50 42 59 54 45 29 3b 0a 09 42 4f 4f 4c 20 43 PBYTE);..BOOL C
5ed0: 72 79 70 74 47 65 74 55 73 65 72 4b 65 79 28 48 ryptGetUserKey(H
5ee0: 43 52 59 50 54 50 52 4f 56 2c 20 44 57 4f 52 44 CRYPTPROV, DWORD
5ef0: 2c 20 48 43 52 59 50 54 4b 45 59 2a 29 3b 0a 09 , HCRYPTKEY*);..
5f00: 42 4f 4f 4c 20 43 72 79 70 74 45 78 70 6f 72 74 BOOL CryptExport
5f10: 4b 65 79 28 48 43 52 59 50 54 4b 45 59 2c 20 48 Key(HCRYPTKEY, H
5f20: 43 52 59 50 54 4b 45 59 2c 20 44 57 4f 52 44 2c CRYPTKEY, DWORD,
5f30: 20 44 57 4f 52 44 2c 20 50 42 59 54 45 2c 20 50 DWORD, PBYTE, P
5f40: 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 43 72 DWORD);..BOOL Cr
5f50: 79 70 74 49 6d 70 6f 72 74 4b 65 79 28 48 43 52 yptImportKey(HCR
5f60: 59 50 54 50 52 4f 56 2c 20 50 42 59 54 45 2c 20 YPTPROV, PBYTE,
5f70: 44 57 4f 52 44 2c 20 48 43 52 59 50 54 4b 45 59 DWORD, HCRYPTKEY
5f80: 2c 20 44 57 4f 52 44 2c 0a 09 20 20 48 43 52 59 , DWORD,.. HCRY
5f90: 50 54 4b 45 59 2a 29 3b 0a 09 42 4f 4f 4c 20 43 PTKEY*);..BOOL C
5fa0: 72 79 70 74 45 6e 63 72 79 70 74 28 48 43 52 59 ryptEncrypt(HCRY
5fb0: 50 54 4b 45 59 2c 20 48 43 52 59 50 54 48 41 53 PTKEY, HCRYPTHAS
5fc0: 48 2c 20 42 4f 4f 4c 2c 20 44 57 4f 52 44 2c 20 H, BOOL, DWORD,
5fd0: 50 42 59 54 45 2c 20 50 44 57 4f 52 44 2c 0a 09 PBYTE, PDWORD,..
5fe0: 20 20 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 DWORD);..BOOL
5ff0: 43 72 79 70 74 44 65 63 72 79 70 74 28 48 43 52 CryptDecrypt(HCR
6000: 59 50 54 4b 45 59 2c 20 48 43 52 59 50 54 48 41 YPTKEY, HCRYPTHA
6010: 53 48 2c 20 42 4f 4f 4c 2c 20 44 57 4f 52 44 2c SH, BOOL, DWORD,
6020: 20 50 42 59 54 45 2c 20 50 44 57 4f 52 44 29 3b PBYTE, PDWORD);
6030: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 43 72 65 61 ..BOOL CryptCrea
6040: 74 65 48 61 73 68 28 48 43 52 59 50 54 50 52 4f teHash(HCRYPTPRO
6050: 56 2c 20 41 4c 47 5f 49 44 2c 20 48 43 52 59 50 V, ALG_ID, HCRYP
6060: 54 4b 45 59 2c 20 44 57 4f 52 44 2c 20 48 43 52 TKEY, DWORD, HCR
6070: 59 50 54 48 41 53 48 2a 29 3b 0a 09 42 4f 4f 4c YPTHASH*);..BOOL
6080: 20 43 72 79 70 74 48 61 73 68 44 61 74 61 28 48 CryptHashData(H
6090: 43 52 59 50 54 48 41 53 48 2c 20 50 42 59 54 45 CRYPTHASH, PBYTE
60a0: 2c 20 44 57 4f 52 44 2c 20 44 57 4f 52 44 29 3b , DWORD, DWORD);
60b0: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 48 61 73 68 ..BOOL CryptHash
60c0: 53 65 73 73 69 6f 6e 4b 65 79 28 48 43 52 59 50 SessionKey(HCRYP
60d0: 54 48 41 53 48 2c 20 48 43 52 59 50 54 4b 45 59 THASH, HCRYPTKEY
60e0: 2c 20 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 , DWORD);..BOOL
60f0: 43 72 79 70 74 47 65 74 48 61 73 68 56 61 6c 75 CryptGetHashValu
6100: 65 28 48 43 52 59 50 54 48 41 53 48 2c 20 44 57 e(HCRYPTHASH, DW
6110: 4f 52 44 2c 20 50 42 59 54 45 2c 20 50 44 57 4f ORD, PBYTE, PDWO
6120: 52 44 29 3b 0a 09 42 4f 4f 4c 20 43 72 79 70 74 RD);..BOOL Crypt
6130: 44 65 73 74 72 6f 79 48 61 73 68 28 48 43 52 59 DestroyHash(HCRY
6140: 50 54 48 41 53 48 29 3b 0a 09 42 4f 4f 4c 20 43 PTHASH);..BOOL C
6150: 72 79 70 74 53 69 67 6e 48 61 73 68 41 28 48 43 ryptSignHashA(HC
6160: 52 59 50 54 48 41 53 48 2c 20 44 57 4f 52 44 2c RYPTHASH, DWORD,
6170: 20 4c 50 43 53 54 52 2c 20 44 57 4f 52 44 2c 20 LPCSTR, DWORD,
6180: 50 42 59 54 45 2c 20 50 44 57 4f 52 44 29 3b 0a PBYTE, PDWORD);.
6190: 09 42 4f 4f 4c 20 43 72 79 70 74 53 69 67 6e 48 .BOOL CryptSignH
61a0: 61 73 68 57 28 48 43 52 59 50 54 48 41 53 48 2c ashW(HCRYPTHASH,
61b0: 20 44 57 4f 52 44 2c 20 4c 50 43 57 53 54 52 2c DWORD, LPCWSTR,
61c0: 20 44 57 4f 52 44 2c 20 50 42 59 54 45 2c 20 50 DWORD, PBYTE, P
61d0: 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 43 72 DWORD);..BOOL Cr
61e0: 79 70 74 56 65 72 69 66 79 53 69 67 6e 61 74 75 yptVerifySignatu
61f0: 72 65 41 28 48 43 52 59 50 54 48 41 53 48 2c 20 reA(HCRYPTHASH,
6200: 50 42 59 54 45 2c 20 44 57 4f 52 44 2c 20 48 43 PBYTE, DWORD, HC
6210: 52 59 50 54 4b 45 59 2c 20 4c 50 43 53 54 52 2c RYPTKEY, LPCSTR,
6220: 0a 09 20 20 44 57 4f 52 44 29 3b 0a 09 42 4f 4f .. DWORD);..BOO
6230: 4c 20 43 72 79 70 74 56 65 72 69 66 79 53 69 67 L CryptVerifySig
6240: 6e 61 74 75 72 65 57 28 48 43 52 59 50 54 48 41 natureW(HCRYPTHA
6250: 53 48 2c 20 50 42 59 54 45 2c 20 44 57 4f 52 44 SH, PBYTE, DWORD
6260: 2c 20 48 43 52 59 50 54 4b 45 59 2c 20 4c 50 43 , HCRYPTKEY, LPC
6270: 57 53 54 52 2c 0a 09 20 20 44 57 4f 52 44 29 3b WSTR,.. DWORD);
6280: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 53 65 74 50 ..BOOL CryptSetP
6290: 72 6f 76 69 64 65 72 41 28 4c 50 43 53 54 52 2c roviderA(LPCSTR,
62a0: 20 44 57 4f 52 44 29 3b 0a 09 42 4f 4f 4c 20 43 DWORD);..BOOL C
62b0: 72 79 70 74 53 65 74 50 72 6f 76 69 64 65 72 57 ryptSetProviderW
62c0: 28 4c 50 43 57 53 54 52 2c 20 44 57 4f 52 44 29 (LPCWSTR, DWORD)
62d0: 3b 0a 7d 0a 0a 76 65 72 73 69 6f 6e 20 28 55 6e ;.}..version (Un
62e0: 69 63 6f 64 65 29 20 7b 0a 09 61 6c 69 61 73 20 icode) {..alias
62f0: 43 65 72 74 4e 61 6d 65 54 6f 53 74 72 57 20 43 CertNameToStrW C
6300: 65 72 74 4e 61 6d 65 54 6f 53 74 72 3b 0a 09 61 ertNameToStr;..a
6310: 6c 69 61 73 20 43 72 79 70 74 41 63 71 75 69 72 lias CryptAcquir
6320: 65 43 6f 6e 74 65 78 74 57 20 43 72 79 70 74 41 eContextW CryptA
6330: 63 71 75 69 72 65 43 6f 6e 74 65 78 74 3b 0a 09 cquireContext;..
6340: 61 6c 69 61 73 20 43 72 79 70 74 53 69 67 6e 48 alias CryptSignH
6350: 61 73 68 57 20 43 72 79 70 74 53 69 67 6e 48 61 ashW CryptSignHa
6360: 73 68 3b 0a 09 61 6c 69 61 73 20 43 72 79 70 74 sh;..alias Crypt
6370: 56 65 72 69 66 79 53 69 67 6e 61 74 75 72 65 57 VerifySignatureW
6380: 20 43 72 79 70 74 56 65 72 69 66 79 53 69 67 6e CryptVerifySign
6390: 61 74 75 72 65 3b 0a 09 61 6c 69 61 73 20 43 72 ature;..alias Cr
63a0: 79 70 74 53 65 74 50 72 6f 76 69 64 65 72 57 20 yptSetProviderW
63b0: 43 72 79 70 74 53 65 74 50 72 6f 76 69 64 65 72 CryptSetProvider
63c0: 3b 0a 09 61 6c 69 61 73 20 43 65 72 74 4f 70 65 ;..alias CertOpe
63d0: 6e 53 79 73 74 65 6d 53 74 6f 72 65 57 20 43 65 nSystemStoreW Ce
63e0: 72 74 4f 70 65 6e 53 79 73 74 65 6d 53 74 6f 72 rtOpenSystemStor
63f0: 65 3b 0a 09 2f 2b 61 6c 69 61 73 20 43 45 52 54 e;../+alias CERT
6400: 5f 46 49 4e 44 5f 53 55 42 4a 45 43 54 5f 53 54 _FIND_SUBJECT_ST
6410: 52 5f 57 20 43 45 52 54 5f 46 49 4e 44 5f 53 55 R_W CERT_FIND_SU
6420: 42 4a 45 43 54 5f 53 54 52 3b 0a 09 61 6c 69 61 BJECT_STR;..alia
6430: 73 20 43 45 52 54 5f 46 49 4e 44 5f 49 53 53 55 s CERT_FIND_ISSU
6440: 45 52 5f 53 54 52 5f 57 20 43 45 52 54 5f 46 49 ER_STR_W CERT_FI
6450: 4e 44 5f 49 53 53 55 45 52 5f 53 54 52 3b 2b 2f ND_ISSUER_STR;+/
6460: 0a 7d 20 65 6c 73 65 20 7b 0a 09 61 6c 69 61 73 .} else {..alias
6470: 20 43 65 72 74 4e 61 6d 65 54 6f 53 74 72 41 20 CertNameToStrA
6480: 43 65 72 74 4e 61 6d 65 54 6f 53 74 72 3b 0a 09 CertNameToStr;..
6490: 61 6c 69 61 73 20 43 72 79 70 74 41 63 71 75 69 alias CryptAcqui
64a0: 72 65 43 6f 6e 74 65 78 74 41 20 43 72 79 70 74 reContextA Crypt
64b0: 41 63 71 75 69 72 65 43 6f 6e 74 65 78 74 3b 0a AcquireContext;.
64c0: 09 61 6c 69 61 73 20 43 72 79 70 74 53 69 67 6e .alias CryptSign
64d0: 48 61 73 68 41 20 43 72 79 70 74 53 69 67 6e 48 HashA CryptSignH
64e0: 61 73 68 3b 0a 09 61 6c 69 61 73 20 43 72 79 70 ash;..alias Cryp
64f0: 74 56 65 72 69 66 79 53 69 67 6e 61 74 75 72 65 tVerifySignature
6500: 41 20 43 72 79 70 74 56 65 72 69 66 79 53 69 67 A CryptVerifySig
6510: 6e 61 74 75 72 65 3b 0a 09 61 6c 69 61 73 20 43 nature;..alias C
6520: 72 79 70 74 53 65 74 50 72 6f 76 69 64 65 72 41 ryptSetProviderA
6530: 20 43 72 79 70 74 53 65 74 50 72 6f 76 69 64 65 CryptSetProvide
6540: 72 3b 0a 09 61 6c 69 61 73 20 43 65 72 74 4f 70 r;..alias CertOp
6550: 65 6e 53 79 73 74 65 6d 53 74 6f 72 65 41 20 43 enSystemStoreA C
6560: 65 72 74 4f 70 65 6e 53 79 73 74 65 6d 53 74 6f ertOpenSystemSto
6570: 72 65 3b 0a 09 2f 2b 61 6c 69 61 73 20 43 45 52 re;../+alias CER
6580: 54 5f 46 49 4e 44 5f 53 55 42 4a 45 43 54 5f 53 T_FIND_SUBJECT_S
6590: 54 52 5f 41 20 43 45 52 54 5f 46 49 4e 44 5f 53 TR_A CERT_FIND_S
65a0: 55 42 4a 45 43 54 5f 53 54 52 3b 0a 09 61 6c 69 UBJECT_STR;..ali
65b0: 61 73 20 43 45 52 54 5f 46 49 4e 44 5f 49 53 53 as CERT_FIND_ISS
65c0: 55 45 52 5f 53 54 52 5f 41 20 43 45 52 54 5f 46 UER_STR_A CERT_F
65d0: 49 4e 44 5f 49 53 53 55 45 52 5f 53 54 52 3b 2b IND_ISSUER_STR;+
65e0: 2f 0a 7d 0a /.}.