Artifact 56b59d671f70303711508351508e03b05dff1c2f:
- File
src/win32/wincrypt.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
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 0d 0a 2a 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 20 77 69 6e 63 72 wincr
0070: 79 70 74 2e 64 20 20 20 20 20 20 20 20 20 20 20 ypt.d
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0090: 20 20 20 2a 0d 0a 2a 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 20 20 2a 0d *.
00e0: 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .*
00f0: 20 20 20 20 20 20 20 20 20 57 69 6e 64 6f 77 73 Windows
0100: 20 41 50 49 20 68 65 61 64 65 72 20 6d 6f 64 75 API header modu
0110: 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 le
0120: 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 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: 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 *..*
0180: 20 20 20 20 20 20 20 20 20 54 72 61 6e 73 6c 61 Transla
0190: 74 65 64 20 66 72 6f 6d 20 4d 69 6e 47 57 20 57 ted from MinGW W
01a0: 69 6e 64 6f 77 73 20 68 65 61 64 65 72 73 20 20 indows headers
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a *
01c0: 0d 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..*
01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 79 by
01e0: 20 53 74 65 77 61 72 74 20 47 6f 72 64 6f 6e 20 Stewart Gordon
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0200: 20 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 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 20 20
0250: 20 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 *..*
0260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0270: 50 6c 61 63 65 64 20 69 6e 74 6f 20 70 75 62 6c Placed into publ
0280: 69 63 20 64 6f 6d 61 69 6e 20 20 20 20 20 20 20 ic domain
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02a0: 2a 0d 0a 5c 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 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 6d 6f ***********/..mo
02f0: 64 75 6c 65 20 77 69 6e 33 32 2e 77 69 6e 63 72 dule win32.wincr
0300: 79 70 74 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 20 ypt;....private
0310: 69 6d 70 6f 72 74 20 77 69 6e 33 32 2e 77 33 32 import win32.w32
0320: 61 70 69 2c 20 77 69 6e 33 32 2e 77 69 6e 62 61 api, win32.winba
0330: 73 65 2c 20 77 69 6e 33 32 2e 77 69 6e 64 65 66 se, win32.windef
0340: 3b 0d 0a 0d 0a 2f 2a 20 46 49 58 4d 45 3a 0d 0a ;..../* FIXME:..
0350: 20 2a 09 54 79 70 65 73 20 6f 66 20 73 6f 6d 65 *.Types of some
0360: 20 63 6f 6e 73 74 61 6e 74 73 0d 0a 20 2a 09 54 constants.. *.T
0370: 79 70 65 73 20 6f 66 20 6d 61 63 72 6f 73 0d 0a ypes of macros..
0380: 20 2a 09 49 6e 69 74 73 20 6f 66 20 76 61 72 69 *.Inits of vari
0390: 6f 75 73 20 22 73 69 7a 65 22 20 61 6e 64 20 22 ous "size" and "
03a0: 76 65 72 73 69 6f 6e 22 20 6d 65 6d 62 65 72 73 version" members
03b0: 0d 0a 20 2a 09 57 68 79 20 61 72 65 20 73 6f 6d .. *.Why are som
03c0: 65 20 23 69 66 64 65 66 73 20 63 6f 6d 6d 65 6e e #ifdefs commen
03d0: 74 65 64 20 6f 75 74 3f 0d 0a 20 2a 2f 0d 0a 0d ted out?.. */...
03e0: 0a 63 6f 6e 73 74 20 54 43 48 41 52 5b 5d 0d 0a .const TCHAR[]..
03f0: 09 4d 53 5f 44 45 46 5f 50 52 4f 56 20 3d 20 22 .MS_DEF_PROV = "
0400: 4d 69 63 72 6f 73 6f 66 74 20 42 61 73 65 20 43 Microsoft Base C
0410: 72 79 70 74 6f 67 72 61 70 68 69 63 20 50 72 6f ryptographic Pro
0420: 76 69 64 65 72 20 76 31 2e 30 22 2c 0d 0a 09 4d vider v1.0",...M
0430: 53 5f 45 4e 48 41 4e 43 45 44 5f 50 52 4f 56 20 S_ENHANCED_PROV
0440: 3d 20 22 4d 69 63 72 6f 73 6f 66 74 20 45 6e 68 = "Microsoft Enh
0450: 61 6e 63 65 64 20 43 72 79 70 74 6f 67 72 61 70 anced Cryptograp
0460: 68 69 63 20 50 72 6f 76 69 64 65 72 20 76 31 2e hic Provider v1.
0470: 30 22 2c 0d 0a 09 4d 53 5f 53 54 52 4f 4e 47 5f 0",...MS_STRONG_
0480: 50 52 4f 56 20 3d 20 22 4d 69 63 72 6f 73 6f 66 PROV = "Microsof
0490: 74 20 53 74 72 6f 6e 67 20 43 72 79 70 74 6f 67 t Strong Cryptog
04a0: 72 61 70 68 69 63 20 50 72 6f 76 69 64 65 72 22 raphic Provider"
04b0: 2c 0d 0a 09 4d 53 5f 44 45 46 5f 52 53 41 5f 53 ,...MS_DEF_RSA_S
04c0: 49 47 5f 50 52 4f 56 20 3d 20 22 4d 69 63 72 6f IG_PROV = "Micro
04d0: 73 6f 66 74 20 52 53 41 20 53 69 67 6e 61 74 75 soft RSA Signatu
04e0: 72 65 20 43 72 79 70 74 6f 67 72 61 70 68 69 63 re Cryptographic
04f0: 20 50 72 6f 76 69 64 65 72 22 2c 0d 0a 09 4d 53 Provider",...MS
0500: 5f 44 45 46 5f 52 53 41 5f 53 43 48 41 4e 4e 45 _DEF_RSA_SCHANNE
0510: 4c 5f 50 52 4f 56 20 3d 20 22 4d 69 63 72 6f 73 L_PROV = "Micros
0520: 6f 66 74 20 52 53 41 20 53 43 68 61 6e 6e 65 6c oft RSA SChannel
0530: 20 43 72 79 70 74 6f 67 72 61 70 68 69 63 20 50 Cryptographic P
0540: 72 6f 76 69 64 65 72 22 2c 0d 0a 09 4d 53 5f 44 rovider",...MS_D
0550: 45 46 5f 44 53 53 5f 50 52 4f 56 20 3d 20 22 4d EF_DSS_PROV = "M
0560: 69 63 72 6f 73 6f 66 74 20 42 61 73 65 20 44 53 icrosoft Base DS
0570: 53 20 43 72 79 70 74 6f 67 72 61 70 68 69 63 20 S Cryptographic
0580: 50 72 6f 76 69 64 65 72 22 2c 0d 0a 09 4d 53 5f Provider",...MS_
0590: 44 45 46 5f 44 53 53 5f 44 48 5f 50 52 4f 56 0d DEF_DSS_DH_PROV.
05a0: 0a 09 20 20 3d 20 22 4d 69 63 72 6f 73 6f 66 74 .. = "Microsoft
05b0: 20 42 61 73 65 20 44 53 53 20 61 6e 64 20 44 69 Base DSS and Di
05c0: 66 66 69 65 2d 48 65 6c 6c 6d 61 6e 20 43 72 79 ffie-Hellman Cry
05d0: 70 74 6f 67 72 61 70 68 69 63 20 50 72 6f 76 69 ptographic Provi
05e0: 64 65 72 22 2c 0d 0a 09 4d 53 5f 45 4e 48 5f 44 der",...MS_ENH_D
05f0: 53 53 5f 44 48 5f 50 52 4f 56 0d 0a 09 20 20 3d SS_DH_PROV... =
0600: 20 22 4d 69 63 72 6f 73 6f 66 74 20 45 6e 68 61 "Microsoft Enha
0610: 6e 63 65 64 20 44 53 53 20 61 6e 64 20 44 69 66 nced DSS and Dif
0620: 66 69 65 2d 48 65 6c 6c 6d 61 6e 20 43 72 79 70 fie-Hellman Cryp
0630: 74 6f 67 72 61 70 68 69 63 20 50 72 6f 76 69 64 tographic Provid
0640: 65 72 22 2c 0d 0a 09 4d 53 5f 44 45 46 5f 44 48 er",...MS_DEF_DH
0650: 5f 53 43 48 41 4e 4e 45 4c 5f 50 52 4f 56 20 3d _SCHANNEL_PROV =
0660: 20 22 4d 69 63 72 6f 73 6f 66 74 20 44 48 20 53 "Microsoft DH S
0670: 43 68 61 6e 6e 65 6c 20 43 72 79 70 74 6f 67 72 Channel Cryptogr
0680: 61 70 68 69 63 20 50 72 6f 76 69 64 65 72 22 2c aphic Provider",
0690: 0d 0a 09 4d 53 5f 53 43 41 52 44 5f 50 52 4f 56 ...MS_SCARD_PROV
06a0: 20 3d 20 22 4d 69 63 72 6f 73 6f 66 74 20 42 61 = "Microsoft Ba
06b0: 73 65 20 53 6d 61 72 74 20 43 61 72 64 20 43 72 se Smart Card Cr
06c0: 79 70 74 6f 20 50 72 6f 76 69 64 65 72 22 3b 0d ypto Provider";.
06d0: 0a 0d 0a 73 74 61 74 69 63 20 69 66 20 28 5f 57 ...static if (_W
06e0: 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 20 30 78 35 IN32_WINNT > 0x5
06f0: 30 31 29 20 7b 0d 0a 09 63 6f 6e 73 74 20 54 43 01) {...const TC
0700: 48 41 52 5b 5d 20 4d 53 5f 45 4e 48 5f 52 53 41 HAR[] MS_ENH_RSA
0710: 5f 41 45 53 5f 50 52 4f 56 0d 0a 09 20 20 3d 20 _AES_PROV... =
0720: 22 4d 69 63 72 6f 73 6f 66 74 20 45 6e 68 61 6e "Microsoft Enhan
0730: 63 65 64 20 52 53 41 20 61 6e 64 20 41 45 53 20 ced RSA and AES
0740: 43 72 79 70 74 6f 67 72 61 70 68 69 63 20 50 72 Cryptographic Pr
0750: 6f 76 69 64 65 72 22 3b 0d 0a 7d 20 65 6c 73 65 ovider";..} else
0760: 20 73 74 61 74 69 63 20 69 66 20 28 5f 57 49 4e static if (_WIN
0770: 33 32 5f 57 49 4e 4e 54 20 3d 3d 20 30 78 35 30 32_WINNT == 0x50
0780: 31 29 20 7b 0d 0a 09 63 6f 6e 73 74 20 54 43 48 1) {...const TCH
0790: 41 52 5b 5d 20 4d 53 5f 45 4e 48 5f 52 53 41 5f AR[] MS_ENH_RSA_
07a0: 41 45 53 5f 50 52 4f 56 0d 0a 09 20 20 3d 20 22 AES_PROV... = "
07b0: 4d 69 63 72 6f 73 6f 66 74 20 45 6e 68 61 6e 63 Microsoft Enhanc
07c0: 65 64 20 52 53 41 20 61 6e 64 20 41 45 53 20 43 ed RSA and AES C
07d0: 72 79 70 74 6f 67 72 61 70 68 69 63 20 50 72 6f ryptographic Pro
07e0: 76 69 64 65 72 20 28 50 72 6f 74 6f 74 79 70 65 vider (Prototype
07f0: 29 22 3b 0d 0a 7d 0d 0a 0d 0a 41 4c 47 5f 49 44 )";..}....ALG_ID
0800: 20 47 45 54 5f 41 4c 47 5f 43 4c 41 53 53 28 41 GET_ALG_CLASS(A
0810: 4c 47 5f 49 44 20 78 29 20 7b 20 72 65 74 75 72 LG_ID x) { retur
0820: 6e 20 78 20 26 20 30 78 45 30 30 30 3b 20 7d 0d n x & 0xE000; }.
0830: 0a 41 4c 47 5f 49 44 20 47 45 54 5f 41 4c 47 5f .ALG_ID GET_ALG_
0840: 54 59 50 45 20 28 41 4c 47 5f 49 44 20 78 29 20 TYPE (ALG_ID x)
0850: 7b 20 72 65 74 75 72 6e 20 78 20 26 20 30 78 31 { return x & 0x1
0860: 45 30 30 3b 20 7d 0d 0a 41 4c 47 5f 49 44 20 47 E00; }..ALG_ID G
0870: 45 54 5f 41 4c 47 5f 53 49 44 20 20 28 41 4c 47 ET_ALG_SID (ALG
0880: 5f 49 44 20 78 29 20 7b 20 72 65 74 75 72 6e 20 _ID x) { return
0890: 78 20 26 20 30 78 30 31 46 46 3b 20 7d 0d 0a 0d x & 0x01FF; }...
08a0: 0a 65 6e 75 6d 20 3a 20 41 4c 47 5f 49 44 20 7b .enum : ALG_ID {
08b0: 0d 0a 09 41 4c 47 5f 43 4c 41 53 53 5f 41 4e 59 ...ALG_CLASS_ANY
08c0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 2c 0d = 0,.
08d0: 0a 09 41 4c 47 5f 43 4c 41 53 53 5f 53 49 47 4e ..ALG_CLASS_SIGN
08e0: 41 54 55 52 45 20 20 20 20 20 3d 20 30 78 32 30 ATURE = 0x20
08f0: 30 30 2c 0d 0a 09 41 4c 47 5f 43 4c 41 53 53 5f 00,...ALG_CLASS_
0900: 4d 53 47 5f 45 4e 43 52 59 50 54 20 20 20 3d 20 MSG_ENCRYPT =
0910: 30 78 34 30 30 30 2c 0d 0a 09 41 4c 47 5f 43 4c 0x4000,...ALG_CL
0920: 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 ASS_DATA_ENCRYPT
0930: 20 20 3d 20 30 78 36 30 30 30 2c 0d 0a 09 41 4c = 0x6000,...AL
0940: 47 5f 43 4c 41 53 53 5f 48 41 53 48 20 20 20 20 G_CLASS_HASH
0950: 20 20 20 20 20 20 3d 20 30 78 38 30 30 30 2c 0d = 0x8000,.
0960: 0a 09 41 4c 47 5f 43 4c 41 53 53 5f 4b 45 59 5f ..ALG_CLASS_KEY_
0970: 45 58 43 48 41 4e 47 45 20 20 3d 20 30 78 41 30 EXCHANGE = 0xA0
0980: 30 30 2c 0d 0a 09 41 4c 47 5f 43 4c 41 53 53 5f 00,...ALG_CLASS_
0990: 41 4c 4c 20 20 20 20 20 20 20 20 20 20 20 3d 20 ALL =
09a0: 30 78 45 30 30 30 0d 0a 7d 0d 0a 0d 0a 65 6e 75 0xE000..}....enu
09b0: 6d 20 3a 20 41 4c 47 5f 49 44 20 7b 0d 0a 09 41 m : ALG_ID {...A
09c0: 4c 47 5f 54 59 50 45 5f 41 4e 59 20 20 20 20 20 LG_TYPE_ANY
09d0: 20 20 20 20 20 20 3d 20 30 2c 0d 0a 09 41 4c 47 = 0,...ALG
09e0: 5f 54 59 50 45 5f 44 53 53 20 20 20 20 20 20 20 _TYPE_DSS
09f0: 20 20 20 20 3d 20 30 78 30 32 30 30 2c 0d 0a 09 = 0x0200,...
0a00: 41 4c 47 5f 54 59 50 45 5f 52 53 41 20 20 20 20 ALG_TYPE_RSA
0a10: 20 20 20 20 20 20 20 3d 20 30 78 30 34 30 30 2c = 0x0400,
0a20: 0d 0a 09 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 ...ALG_TYPE_BLOC
0a30: 4b 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 36 K = 0x06
0a40: 30 30 2c 0d 0a 09 41 4c 47 5f 54 59 50 45 5f 53 00,...ALG_TYPE_S
0a50: 54 52 45 41 4d 20 20 20 20 20 20 20 20 3d 20 30 TREAM = 0
0a60: 78 30 38 30 30 2c 0d 0a 09 41 4c 47 5f 54 59 50 x0800,...ALG_TYP
0a70: 45 5f 44 48 20 20 20 20 20 20 20 20 20 20 20 20 E_DH
0a80: 3d 20 30 78 30 41 30 30 2c 0d 0a 09 41 4c 47 5f = 0x0A00,...ALG_
0a90: 54 59 50 45 5f 53 45 43 55 52 45 43 48 41 4e 4e TYPE_SECURECHANN
0aa0: 45 4c 20 3d 20 30 78 30 43 30 30 0d 0a 7d 0d 0a EL = 0x0C00..}..
0ab0: 0d 0a 65 6e 75 6d 20 3a 20 41 4c 47 5f 49 44 20 ..enum : ALG_ID
0ac0: 7b 0d 0a 09 41 4c 47 5f 53 49 44 5f 41 4e 59 20 {...ALG_SID_ANY
0ad0: 20 20 20 20 20 20 20 20 20 3d 20 20 30 2c 0d 0a = 0,..
0ae0: 09 41 4c 47 5f 53 49 44 5f 52 53 41 5f 41 4e 59 .ALG_SID_RSA_ANY
0af0: 20 20 20 20 20 20 3d 20 20 30 2c 0d 0a 09 41 4c = 0,...AL
0b00: 47 5f 53 49 44 5f 52 53 41 5f 50 4b 43 53 2c 0d G_SID_RSA_PKCS,.
0b10: 0a 09 41 4c 47 5f 53 49 44 5f 52 53 41 5f 4d 53 ..ALG_SID_RSA_MS
0b20: 41 54 57 4f 52 4b 2c 0d 0a 09 41 4c 47 5f 53 49 ATWORK,...ALG_SI
0b30: 44 5f 52 53 41 5f 45 4e 54 52 55 53 54 2c 0d 0a D_RSA_ENTRUST,..
0b40: 09 41 4c 47 5f 53 49 44 5f 52 53 41 5f 50 47 50 .ALG_SID_RSA_PGP
0b50: 2c 20 20 2f 2f 20 3d 20 20 34 0d 0a 09 41 4c 47 , // = 4...ALG
0b60: 5f 53 49 44 5f 44 53 53 5f 41 4e 59 20 20 20 20 _SID_DSS_ANY
0b70: 20 20 3d 20 20 30 2c 0d 0a 09 41 4c 47 5f 53 49 = 0,...ALG_SI
0b80: 44 5f 44 53 53 5f 50 4b 43 53 2c 0d 0a 09 41 4c D_DSS_PKCS,...AL
0b90: 47 5f 53 49 44 5f 44 53 53 5f 44 4d 53 2c 20 20 G_SID_DSS_DMS,
0ba0: 2f 2f 20 3d 20 20 32 0d 0a 09 41 4c 47 5f 53 49 // = 2...ALG_SI
0bb0: 44 5f 44 45 53 20 20 20 20 20 20 20 20 20 20 3d D_DES =
0bc0: 20 20 31 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 33 1,...ALG_SID_3
0bd0: 44 45 53 20 20 20 20 20 20 20 20 20 3d 20 20 33 DES = 3
0be0: 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 44 45 53 58 ,...ALG_SID_DESX
0bf0: 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 49 44 45 41 ,...ALG_SID_IDEA
0c00: 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 43 41 53 54 ,...ALG_SID_CAST
0c10: 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 53 41 46 45 ,...ALG_SID_SAFE
0c20: 52 53 4b 36 34 2c 0d 0a 09 41 4c 47 5f 53 49 44 RSK64,...ALG_SID
0c30: 5f 53 41 46 45 52 53 4b 31 32 38 2c 0d 0a 09 41 _SAFERSK128,...A
0c40: 4c 47 5f 53 49 44 5f 33 44 45 53 5f 31 31 32 2c LG_SID_3DES_112,
0c50: 0d 0a 09 41 4c 47 5f 53 49 44 5f 53 4b 49 50 4a ...ALG_SID_SKIPJ
0c60: 41 43 4b 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 54 ACK,...ALG_SID_T
0c70: 45 4b 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 43 59 EK,...ALG_SID_CY
0c80: 4c 49 4e 4b 5f 4d 45 4b 2c 0d 0a 09 41 4c 47 5f LINK_MEK,...ALG_
0c90: 53 49 44 5f 52 43 35 2c 20 20 20 20 20 20 2f 2f SID_RC5, //
0ca0: 20 3d 20 31 33 0d 0a 09 41 4c 47 5f 53 49 44 5f = 13...ALG_SID_
0cb0: 52 43 32 20 20 20 20 20 20 20 20 20 20 3d 20 20 RC2 =
0cc0: 32 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 52 43 34 2,...ALG_SID_RC4
0cd0: 20 20 20 20 20 20 20 20 20 20 3d 20 20 31 2c 0d = 1,.
0ce0: 0a 09 41 4c 47 5f 53 49 44 5f 53 45 41 4c 20 20 ..ALG_SID_SEAL
0cf0: 20 20 20 20 20 20 20 3d 20 20 32 2c 0d 0a 09 41 = 2,...A
0d00: 4c 47 5f 53 49 44 5f 4d 44 32 20 20 20 20 20 20 LG_SID_MD2
0d10: 20 20 20 20 3d 20 20 31 2c 0d 0a 09 41 4c 47 5f = 1,...ALG_
0d20: 53 49 44 5f 4d 44 34 2c 0d 0a 09 41 4c 47 5f 53 SID_MD4,...ALG_S
0d30: 49 44 5f 4d 44 35 2c 0d 0a 09 41 4c 47 5f 53 49 ID_MD5,...ALG_SI
0d40: 44 5f 53 48 41 2c 0d 0a 09 41 4c 47 5f 53 49 44 D_SHA,...ALG_SID
0d50: 5f 4d 41 43 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f _MAC,...ALG_SID_
0d60: 52 49 50 45 4d 44 2c 0d 0a 09 41 4c 47 5f 53 49 RIPEMD,...ALG_SI
0d70: 44 5f 52 49 50 45 4d 44 31 36 30 2c 0d 0a 09 41 D_RIPEMD160,...A
0d80: 4c 47 5f 53 49 44 5f 53 53 4c 33 53 48 41 4d 44 LG_SID_SSL3SHAMD
0d90: 35 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 48 4d 41 5,...ALG_SID_HMA
0da0: 43 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 54 4c 53 C,...ALG_SID_TLS
0db0: 31 50 52 46 2c 20 20 2f 2f 20 3d 20 31 30 0d 0a 1PRF, // = 10..
0dc0: 09 41 4c 47 5f 53 49 44 5f 41 45 53 5f 31 32 38 .ALG_SID_AES_128
0dd0: 20 20 20 20 20 20 3d 20 31 34 2c 0d 0a 09 41 4c = 14,...AL
0de0: 47 5f 53 49 44 5f 41 45 53 5f 31 39 32 2c 0d 0a G_SID_AES_192,..
0df0: 09 41 4c 47 5f 53 49 44 5f 41 45 53 5f 32 35 36 .ALG_SID_AES_256
0e00: 2c 0d 0a 09 41 4c 47 5f 53 49 44 5f 41 45 53 2c ,...ALG_SID_AES,
0e10: 20 20 20 20 20 20 2f 2f 20 3d 20 31 37 0d 0a 09 // = 17...
0e20: 41 4c 47 5f 53 49 44 5f 45 58 41 4d 50 4c 45 20 ALG_SID_EXAMPLE
0e30: 20 20 20 20 20 3d 20 38 30 0d 0a 7d 0d 0a 0d 0a = 80..}....
0e40: 65 6e 75 6d 20 3a 20 41 4c 47 5f 49 44 20 7b 0d enum : ALG_ID {.
0e50: 0a 09 43 41 4c 47 5f 4d 44 32 20 20 20 20 20 20 ..CALG_MD2
0e60: 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f 48 41 = ALG_CLASS_HA
0e70: 53 48 20 7c 20 41 4c 47 5f 54 59 50 45 5f 41 4e SH | ALG_TYPE_AN
0e80: 59 20 7c 20 41 4c 47 5f 53 49 44 5f 4d 44 32 2c Y | ALG_SID_MD2,
0e90: 0d 0a 09 43 41 4c 47 5f 4d 44 34 20 20 20 20 20 ...CALG_MD4
0ea0: 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f 48 = ALG_CLASS_H
0eb0: 41 53 48 20 7c 20 41 4c 47 5f 54 59 50 45 5f 41 ASH | ALG_TYPE_A
0ec0: 4e 59 20 7c 20 41 4c 47 5f 53 49 44 5f 4d 44 34 NY | ALG_SID_MD4
0ed0: 2c 0d 0a 09 43 41 4c 47 5f 4d 44 35 20 20 20 20 ,...CALG_MD5
0ee0: 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f = ALG_CLASS_
0ef0: 48 41 53 48 20 7c 20 41 4c 47 5f 54 59 50 45 5f HASH | ALG_TYPE_
0f00: 41 4e 59 20 7c 20 41 4c 47 5f 53 49 44 5f 4d 44 ANY | ALG_SID_MD
0f10: 35 2c 0d 0a 09 43 41 4c 47 5f 53 48 41 20 20 20 5,...CALG_SHA
0f20: 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 = ALG_CLASS
0f30: 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 59 50 45 _HASH | ALG_TYPE
0f40: 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 44 5f 53 _ANY | ALG_SID_S
0f50: 48 41 2c 0d 0a 09 43 41 4c 47 5f 53 48 41 31 20 HA,...CALG_SHA1
0f60: 20 20 20 20 20 20 3d 20 43 41 4c 47 5f 53 48 41 = CALG_SHA
0f70: 2c 0d 0a 09 43 41 4c 47 5f 4d 41 43 20 20 20 20 ,...CALG_MAC
0f80: 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f = ALG_CLASS_
0f90: 48 41 53 48 20 7c 20 41 4c 47 5f 54 59 50 45 5f HASH | ALG_TYPE_
0fa0: 41 4e 59 20 7c 20 41 4c 47 5f 53 49 44 5f 4d 41 ANY | ALG_SID_MA
0fb0: 43 2c 0d 0a 09 43 41 4c 47 5f 33 44 45 53 20 20 C,...CALG_3DES
0fc0: 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 = ALG_CLASS
0fd0: 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c 20 _DATA_ENCRYPT |
0fe0: 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 7c ALG_TYPE_BLOCK |
0ff0: 20 33 2c 0d 0a 09 43 41 4c 47 5f 43 59 4c 49 4e 3,...CALG_CYLIN
1000: 4b 5f 4d 45 4b 20 3d 20 41 4c 47 5f 43 4c 41 53 K_MEK = ALG_CLAS
1010: 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 7c S_DATA_ENCRYPT |
1020: 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b 20 ALG_TYPE_BLOCK
1030: 7c 20 31 32 2c 0d 0a 09 43 41 4c 47 5f 53 4b 49 | 12,...CALG_SKI
1040: 50 4a 41 43 4b 20 20 20 3d 20 41 4c 47 5f 43 4c PJACK = ALG_CL
1050: 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 ASS_DATA_ENCRYPT
1060: 20 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 | ALG_TYPE_BLOC
1070: 4b 20 7c 20 31 30 2c 0d 0a 09 43 41 4c 47 5f 4b K | 10,...CALG_K
1080: 45 41 5f 4b 45 59 58 20 20 20 3d 20 41 4c 47 5f EA_KEYX = ALG_
1090: 43 4c 41 53 53 5f 4b 45 59 5f 45 58 43 48 41 4e CLASS_KEY_EXCHAN
10a0: 47 45 20 7c 20 41 4c 47 5f 54 59 50 45 5f 53 54 GE | ALG_TYPE_ST
10b0: 52 45 41 4d 20 7c 20 41 4c 47 5f 54 59 50 45 5f REAM | ALG_TYPE_
10c0: 44 53 53 20 7c 20 34 2c 0d 0a 09 43 41 4c 47 5f DSS | 4,...CALG_
10d0: 52 53 41 5f 53 49 47 4e 20 20 20 3d 20 41 4c 47 RSA_SIGN = ALG
10e0: 5f 43 4c 41 53 53 5f 53 49 47 4e 41 54 55 52 45 _CLASS_SIGNATURE
10f0: 20 7c 20 41 4c 47 5f 54 59 50 45 5f 52 53 41 20 | ALG_TYPE_RSA
1100: 7c 20 41 4c 47 5f 53 49 44 5f 52 53 41 5f 41 4e | ALG_SID_RSA_AN
1110: 59 2c 0d 0a 09 43 41 4c 47 5f 44 53 53 5f 53 49 Y,...CALG_DSS_SI
1120: 47 4e 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 GN = ALG_CLASS
1130: 5f 53 49 47 4e 41 54 55 52 45 20 7c 20 41 4c 47 _SIGNATURE | ALG
1140: 5f 54 59 50 45 5f 44 53 53 20 7c 20 41 4c 47 5f _TYPE_DSS | ALG_
1150: 53 49 44 5f 44 53 53 5f 41 4e 59 2c 0d 0a 09 43 SID_DSS_ANY,...C
1160: 41 4c 47 5f 52 53 41 5f 4b 45 59 58 20 20 20 3d ALG_RSA_KEYX =
1170: 20 41 4c 47 5f 43 4c 41 53 53 5f 4b 45 59 5f 45 ALG_CLASS_KEY_E
1180: 58 43 48 41 4e 47 45 20 7c 20 41 4c 47 5f 54 59 XCHANGE | ALG_TY
1190: 50 45 5f 52 53 41 20 7c 20 41 4c 47 5f 53 49 44 PE_RSA | ALG_SID
11a0: 5f 52 53 41 5f 41 4e 59 2c 0d 0a 09 43 41 4c 47 _RSA_ANY,...CALG
11b0: 5f 44 45 53 20 20 20 20 20 20 20 20 3d 20 41 4c _DES = AL
11c0: 47 5f 43 4c 41 53 53 5f 44 41 54 41 5f 45 4e 43 G_CLASS_DATA_ENC
11d0: 52 59 50 54 20 7c 20 41 4c 47 5f 54 59 50 45 5f RYPT | ALG_TYPE_
11e0: 42 4c 4f 43 4b 20 7c 20 41 4c 47 5f 53 49 44 5f BLOCK | ALG_SID_
11f0: 44 45 53 2c 0d 0a 09 43 41 4c 47 5f 52 43 32 20 DES,...CALG_RC2
1200: 20 20 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 = ALG_CLA
1210: 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 SS_DATA_ENCRYPT
1220: 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b | ALG_TYPE_BLOCK
1230: 20 7c 20 41 4c 47 5f 53 49 44 5f 52 43 32 2c 0d | ALG_SID_RC2,.
1240: 0a 09 43 41 4c 47 5f 52 43 34 20 20 20 20 20 20 ..CALG_RC4
1250: 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 5f 44 41 = ALG_CLASS_DA
1260: 54 41 5f 45 4e 43 52 59 50 54 20 7c 20 41 4c 47 TA_ENCRYPT | ALG
1270: 5f 54 59 50 45 5f 53 54 52 45 41 4d 20 7c 20 41 _TYPE_STREAM | A
1280: 4c 47 5f 53 49 44 5f 52 43 34 2c 0d 0a 09 43 41 LG_SID_RC4,...CA
1290: 4c 47 5f 53 45 41 4c 20 20 20 20 20 20 20 3d 20 LG_SEAL =
12a0: 41 4c 47 5f 43 4c 41 53 53 5f 44 41 54 41 5f 45 ALG_CLASS_DATA_E
12b0: 4e 43 52 59 50 54 20 7c 20 41 4c 47 5f 54 59 50 NCRYPT | ALG_TYP
12c0: 45 5f 53 54 52 45 41 4d 20 7c 20 41 4c 47 5f 53 E_STREAM | ALG_S
12d0: 49 44 5f 53 45 41 4c 2c 0d 0a 09 43 41 4c 47 5f ID_SEAL,...CALG_
12e0: 44 48 5f 45 50 48 45 4d 20 20 20 3d 20 41 4c 47 DH_EPHEM = ALG
12f0: 5f 43 4c 41 53 53 5f 4b 45 59 5f 45 58 43 48 41 _CLASS_KEY_EXCHA
1300: 4e 47 45 20 7c 20 41 4c 47 5f 54 59 50 45 5f 53 NGE | ALG_TYPE_S
1310: 54 52 45 41 4d 20 7c 20 41 4c 47 5f 54 59 50 45 TREAM | ALG_TYPE
1320: 5f 44 53 53 0d 0a 09 20 20 20 20 20 20 20 20 20 _DSS...
1330: 20 20 20 20 20 20 20 20 20 7c 20 41 4c 47 5f 53 | ALG_S
1340: 49 44 5f 44 53 53 5f 44 4d 53 2c 0d 0a 09 43 41 ID_DSS_DMS,...CA
1350: 4c 47 5f 44 45 53 58 20 20 20 20 20 20 20 3d 20 LG_DESX =
1360: 41 4c 47 5f 43 4c 41 53 53 5f 44 41 54 41 5f 45 ALG_CLASS_DATA_E
1370: 4e 43 52 59 50 54 20 7c 20 41 4c 47 5f 54 59 50 NCRYPT | ALG_TYP
1380: 45 5f 42 4c 4f 43 4b 20 7c 20 41 4c 47 5f 53 49 E_BLOCK | ALG_SI
1390: 44 5f 44 45 53 58 2c 0d 0a 2f 2f 20 69 73 20 75 D_DESX,..// is u
13a0: 6e 64 65 66 69 6e 65 64 20 41 4c 47 5f 43 4c 41 ndefined ALG_CLA
13b0: 53 53 5f 44 48 41 53 48 20 69 6e 20 4d 69 6e 47 SS_DHASH in MinG
13c0: 57 20 2d 20 70 72 65 73 75 6d 69 6e 67 20 74 79 W - presuming ty
13d0: 70 6f 0d 0a 09 43 41 4c 47 5f 54 4c 53 31 50 52 po...CALG_TLS1PR
13e0: 46 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 53 53 F = ALG_CLASS
13f0: 5f 48 41 53 48 20 7c 20 41 4c 47 5f 54 59 50 45 _HASH | ALG_TYPE
1400: 5f 41 4e 59 20 7c 20 41 4c 47 5f 53 49 44 5f 54 _ANY | ALG_SID_T
1410: 4c 53 31 50 52 46 2c 0d 0a 09 43 41 4c 47 5f 41 LS1PRF,...CALG_A
1420: 45 53 5f 31 32 38 20 20 20 20 3d 20 41 4c 47 5f ES_128 = ALG_
1430: 43 4c 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 CLASS_DATA_ENCRY
1440: 50 54 20 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c PT | ALG_TYPE_BL
1450: 4f 43 4b 20 7c 20 41 4c 47 5f 53 49 44 5f 41 45 OCK | ALG_SID_AE
1460: 53 5f 31 32 38 2c 0d 0a 09 43 41 4c 47 5f 41 45 S_128,...CALG_AE
1470: 53 5f 31 39 32 20 20 20 20 3d 20 41 4c 47 5f 43 S_192 = ALG_C
1480: 4c 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 LASS_DATA_ENCRYP
1490: 54 20 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f T | ALG_TYPE_BLO
14a0: 43 4b 20 7c 20 41 4c 47 5f 53 49 44 5f 41 45 53 CK | ALG_SID_AES
14b0: 5f 31 39 32 2c 0d 0a 09 43 41 4c 47 5f 41 45 53 _192,...CALG_AES
14c0: 5f 32 35 36 20 20 20 20 3d 20 41 4c 47 5f 43 4c _256 = ALG_CL
14d0: 41 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 ASS_DATA_ENCRYPT
14e0: 20 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 | ALG_TYPE_BLOC
14f0: 4b 20 7c 20 41 4c 47 5f 53 49 44 5f 41 45 53 5f K | ALG_SID_AES_
1500: 32 35 36 2c 0d 0a 09 43 41 4c 47 5f 41 45 53 20 256,...CALG_AES
1510: 20 20 20 20 20 20 20 3d 20 41 4c 47 5f 43 4c 41 = ALG_CLA
1520: 53 53 5f 44 41 54 41 5f 45 4e 43 52 59 50 54 20 SS_DATA_ENCRYPT
1530: 7c 20 41 4c 47 5f 54 59 50 45 5f 42 4c 4f 43 4b | ALG_TYPE_BLOCK
1540: 20 7c 20 41 4c 47 5f 53 49 44 5f 41 45 53 2c 0d | ALG_SID_AES,.
1550: 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 .}....enum {...C
1560: 52 59 50 54 5f 56 45 52 49 46 59 43 4f 4e 54 45 RYPT_VERIFYCONTE
1570: 58 54 20 3d 20 30 78 46 30 30 30 30 30 30 30 2c XT = 0xF0000000,
1580: 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 ..}....enum {...
1590: 43 52 59 50 54 5f 4e 45 57 4b 45 59 53 45 54 20 CRYPT_NEWKEYSET
15a0: 3d 20 38 2c 0d 0a 09 43 52 59 50 54 5f 44 45 4c = 8,...CRYPT_DEL
15b0: 45 54 45 4b 45 59 53 45 54 20 3d 20 31 36 2c 0d ETEKEYSET = 16,.
15c0: 0a 09 43 52 59 50 54 5f 4d 41 43 48 49 4e 45 5f ..CRYPT_MACHINE_
15d0: 4b 45 59 53 45 54 20 3d 20 33 32 2c 0d 0a 09 43 KEYSET = 32,...C
15e0: 52 59 50 54 5f 53 49 4c 45 4e 54 20 3d 20 36 34 RYPT_SILENT = 64
15f0: 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a ,..}....enum {..
1600: 09 43 52 59 50 54 5f 45 58 50 4f 52 54 41 42 4c .CRYPT_EXPORTABL
1610: 45 20 3d 20 31 2c 0d 0a 09 43 52 59 50 54 5f 55 E = 1,...CRYPT_U
1620: 53 45 52 5f 50 52 4f 54 45 43 54 45 44 20 3d 20 SER_PROTECTED =
1630: 32 2c 0d 0a 09 43 52 59 50 54 5f 43 52 45 41 54 2,...CRYPT_CREAT
1640: 45 5f 53 41 4c 54 20 3d 20 34 2c 0d 0a 09 43 52 E_SALT = 4,...CR
1650: 59 50 54 5f 55 50 44 41 54 45 5f 4b 45 59 20 3d YPT_UPDATE_KEY =
1660: 20 38 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 8,..}....enum {
1670: 0d 0a 09 53 49 4d 50 4c 45 42 4c 4f 42 20 3d 20 ...SIMPLEBLOB =
1680: 31 2c 0d 0a 09 50 55 42 4c 49 43 4b 45 59 42 4c 1,...PUBLICKEYBL
1690: 4f 42 20 3d 20 36 2c 0d 0a 09 50 52 49 56 41 54 OB = 6,...PRIVAT
16a0: 45 4b 45 59 42 4c 4f 42 20 3d 20 37 2c 0d 0a 09 EKEYBLOB = 7,...
16b0: 50 4c 41 49 4e 54 45 58 54 4b 45 59 42 4c 4f 42 PLAINTEXTKEYBLOB
16c0: 20 3d 20 38 2c 0d 0a 09 4f 50 41 51 55 45 4b 45 = 8,...OPAQUEKE
16d0: 59 42 4c 4f 42 20 3d 20 39 2c 0d 0a 09 50 55 42 YBLOB = 9,...PUB
16e0: 4c 49 43 4b 45 59 42 4c 4f 42 45 58 20 3d 20 31 LICKEYBLOBEX = 1
16f0: 30 2c 0d 0a 09 53 59 4d 4d 45 54 52 49 43 57 52 0,...SYMMETRICWR
1700: 41 50 4b 45 59 42 4c 4f 42 20 3d 20 31 31 2c 0d APKEYBLOB = 11,.
1710: 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 41 .}....enum {...A
1720: 54 5f 4b 45 59 45 58 43 48 41 4e 47 45 20 3d 20 T_KEYEXCHANGE =
1730: 31 2c 0d 0a 09 41 54 5f 53 49 47 4e 41 54 55 52 1,...AT_SIGNATUR
1740: 45 20 3d 20 32 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 E = 2,..}....enu
1750: 6d 20 7b 0d 0a 09 43 52 59 50 54 5f 55 53 45 52 m {...CRYPT_USER
1760: 44 41 54 41 20 3d 20 31 2c 0d 0a 7d 0d 0a 0d 0a DATA = 1,..}....
1770: 65 6e 75 6d 20 7b 0d 0a 09 50 4b 43 53 35 5f 50 enum {...PKCS5_P
1780: 41 44 44 49 4e 47 20 3d 20 31 2c 0d 0a 7d 0d 0a ADDING = 1,..}..
1790: 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 52 59 50 54 ..enum {...CRYPT
17a0: 5f 4d 4f 44 45 5f 43 42 43 20 3d 20 31 2c 0d 0a _MODE_CBC = 1,..
17b0: 09 43 52 59 50 54 5f 4d 4f 44 45 5f 45 43 42 20 .CRYPT_MODE_ECB
17c0: 3d 20 32 2c 0d 0a 09 43 52 59 50 54 5f 4d 4f 44 = 2,...CRYPT_MOD
17d0: 45 5f 4f 46 42 20 3d 20 33 2c 0d 0a 09 43 52 59 E_OFB = 3,...CRY
17e0: 50 54 5f 4d 4f 44 45 5f 43 46 42 20 3d 20 34 2c PT_MODE_CFB = 4,
17f0: 0d 0a 09 43 52 59 50 54 5f 4d 4f 44 45 5f 43 54 ...CRYPT_MODE_CT
1800: 53 20 3d 20 35 2c 0d 0a 09 43 52 59 50 54 5f 4d S = 5,...CRYPT_M
1810: 4f 44 45 5f 43 42 43 49 20 3d 20 36 2c 0d 0a 09 ODE_CBCI = 6,...
1820: 43 52 59 50 54 5f 4d 4f 44 45 5f 43 46 42 50 20 CRYPT_MODE_CFBP
1830: 3d 20 37 2c 0d 0a 09 43 52 59 50 54 5f 4d 4f 44 = 7,...CRYPT_MOD
1840: 45 5f 4f 46 42 50 20 3d 20 38 2c 0d 0a 09 43 52 E_OFBP = 8,...CR
1850: 59 50 54 5f 4d 4f 44 45 5f 43 42 43 4f 46 4d 20 YPT_MODE_CBCOFM
1860: 3d 20 39 2c 0d 0a 09 43 52 59 50 54 5f 4d 4f 44 = 9,...CRYPT_MOD
1870: 45 5f 43 42 43 4f 46 4d 49 20 3d 20 31 30 2c 0d E_CBCOFMI = 10,.
1880: 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 .}....enum {...C
1890: 52 59 50 54 5f 45 4e 43 52 59 50 54 20 3d 20 31 RYPT_ENCRYPT = 1
18a0: 2c 0d 0a 09 43 52 59 50 54 5f 44 45 43 52 59 50 ,...CRYPT_DECRYP
18b0: 54 20 3d 20 32 2c 0d 0a 09 43 52 59 50 54 5f 45 T = 2,...CRYPT_E
18c0: 58 50 4f 52 54 20 3d 20 34 2c 0d 0a 09 43 52 59 XPORT = 4,...CRY
18d0: 50 54 5f 52 45 41 44 20 3d 20 38 2c 0d 0a 09 43 PT_READ = 8,...C
18e0: 52 59 50 54 5f 57 52 49 54 45 20 3d 20 31 36 2c RYPT_WRITE = 16,
18f0: 0d 0a 09 43 52 59 50 54 5f 4d 41 43 20 3d 20 33 ...CRYPT_MAC = 3
1900: 32 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 2,..}....enum {.
1910: 0a 09 48 50 5f 41 4c 47 49 44 20 3d 20 31 2c 0d ..HP_ALGID = 1,.
1920: 0a 09 48 50 5f 48 41 53 48 56 41 4c 20 3d 20 32 ..HP_HASHVAL = 2
1930: 2c 0d 0a 09 48 50 5f 48 41 53 48 53 49 5a 45 20 ,...HP_HASHSIZE
1940: 3d 20 34 2c 0d 0a 09 48 50 5f 48 4d 41 43 5f 49 = 4,...HP_HMAC_I
1950: 4e 46 4f 20 3d 20 35 2c 0d 0a 7d 0d 0a 0d 0a 65 NFO = 5,..}....e
1960: 6e 75 6d 20 7b 0d 0a 09 43 52 59 50 54 5f 46 41 num {...CRYPT_FA
1970: 49 4c 45 44 20 3d 20 46 41 4c 53 45 2c 0d 0a 09 ILED = FALSE,...
1980: 43 52 59 50 54 5f 53 55 43 43 45 45 44 20 3d 20 CRYPT_SUCCEED =
1990: 54 52 55 45 2c 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c TRUE,..}....bool
19a0: 20 52 43 52 59 50 54 5f 53 55 43 43 45 45 44 45 RCRYPT_SUCCEEDE
19b0: 44 28 42 4f 4f 4c 20 72 29 20 7b 20 72 65 74 75 D(BOOL r) { retu
19c0: 72 6e 20 72 3d 3d 43 52 59 50 54 5f 53 55 43 43 rn r==CRYPT_SUCC
19d0: 45 45 44 3b 20 7d 0d 0a 62 6f 6f 6c 20 52 43 52 EED; }..bool RCR
19e0: 59 50 54 5f 46 41 49 4c 45 44 28 42 4f 4f 4c 20 YPT_FAILED(BOOL
19f0: 72 29 20 7b 20 72 65 74 75 72 6e 20 72 3d 3d 43 r) { return r==C
1a00: 52 59 50 54 5f 46 41 49 4c 45 44 3b 20 7d 0d 0a RYPT_FAILED; }..
1a10: 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 50 50 5f 45 4e ..enum {...PP_EN
1a20: 55 4d 41 4c 47 53 20 3d 20 31 2c 0d 0a 09 50 50 UMALGS = 1,...PP
1a30: 5f 45 4e 55 4d 43 4f 4e 54 41 49 4e 45 52 53 20 _ENUMCONTAINERS
1a40: 3d 20 32 2c 0d 0a 09 50 50 5f 49 4d 50 54 59 50 = 2,...PP_IMPTYP
1a50: 45 20 3d 20 33 2c 0d 0a 09 50 50 5f 4e 41 4d 45 E = 3,...PP_NAME
1a60: 20 3d 20 34 2c 0d 0a 09 50 50 5f 56 45 52 53 49 = 4,...PP_VERSI
1a70: 4f 4e 20 3d 20 35 2c 0d 0a 09 50 50 5f 43 4f 4e ON = 5,...PP_CON
1a80: 54 41 49 4e 45 52 20 3d 20 36 2c 0d 0a 09 50 50 TAINER = 6,...PP
1a90: 5f 43 48 41 4e 47 45 5f 50 41 53 53 57 4f 52 44 _CHANGE_PASSWORD
1aa0: 09 3d 20 37 2c 0d 0a 09 50 50 5f 4b 45 59 53 45 .= 7,...PP_KEYSE
1ab0: 54 5f 53 45 43 5f 44 45 53 43 52 09 3d 20 38 2c T_SEC_DESCR.= 8,
1ac0: 0d 0a 09 50 50 5f 43 45 52 54 43 48 41 49 4e 09 ...PP_CERTCHAIN.
1ad0: 3d 20 39 2c 0d 0a 09 50 50 5f 4b 45 59 5f 54 59 = 9,...PP_KEY_TY
1ae0: 50 45 5f 53 55 42 54 59 50 45 09 3d 20 31 30 2c PE_SUBTYPE.= 10,
1af0: 0d 0a 09 50 50 5f 50 52 4f 56 54 59 50 45 09 3d ...PP_PROVTYPE.=
1b00: 20 31 36 2c 0d 0a 09 50 50 5f 4b 45 59 53 54 4f 16,...PP_KEYSTO
1b10: 52 41 47 45 09 3d 20 31 37 2c 0d 0a 09 50 50 5f RAGE.= 17,...PP_
1b20: 41 50 50 4c 49 5f 43 45 52 54 09 3d 20 31 38 2c APPLI_CERT.= 18,
1b30: 0d 0a 09 50 50 5f 53 59 4d 5f 4b 45 59 53 49 5a ...PP_SYM_KEYSIZ
1b40: 45 09 3d 20 31 39 2c 0d 0a 09 50 50 5f 53 45 53 E.= 19,...PP_SES
1b50: 53 49 4f 4e 5f 4b 45 59 53 49 5a 45 09 3d 20 32 SION_KEYSIZE.= 2
1b60: 30 2c 0d 0a 09 50 50 5f 55 49 5f 50 52 4f 4d 50 0,...PP_UI_PROMP
1b70: 54 09 3d 20 32 31 2c 0d 0a 09 50 50 5f 45 4e 55 T.= 21,...PP_ENU
1b80: 4d 41 4c 47 53 5f 45 58 09 3d 20 32 32 2c 0d 0a MALGS_EX.= 22,..
1b90: 09 50 50 5f 45 4e 55 4d 4d 41 4e 44 52 4f 4f 54 .PP_ENUMMANDROOT
1ba0: 53 20 3d 20 32 35 2c 0d 0a 09 50 50 5f 45 4e 55 S = 25,...PP_ENU
1bb0: 4d 45 4c 45 43 54 52 4f 4f 54 53 20 3d 20 32 36 MELECTROOTS = 26
1bc0: 2c 0d 0a 09 50 50 5f 4b 45 59 53 45 54 5f 54 59 ,...PP_KEYSET_TY
1bd0: 50 45 20 3d 20 32 37 2c 0d 0a 09 50 50 5f 41 44 PE = 27,...PP_AD
1be0: 4d 49 4e 5f 50 49 4e 20 3d 20 33 31 2c 0d 0a 09 MIN_PIN = 31,...
1bf0: 50 50 5f 4b 45 59 45 58 43 48 41 4e 47 45 5f 50 PP_KEYEXCHANGE_P
1c00: 49 4e 20 3d 20 33 32 2c 0d 0a 09 50 50 5f 53 49 IN = 32,...PP_SI
1c10: 47 4e 41 54 55 52 45 5f 50 49 4e 20 3d 20 33 33 GNATURE_PIN = 33
1c20: 2c 0d 0a 09 50 50 5f 53 49 47 5f 4b 45 59 53 49 ,...PP_SIG_KEYSI
1c30: 5a 45 5f 49 4e 43 20 3d 20 33 34 2c 0d 0a 09 50 ZE_INC = 34,...P
1c40: 50 5f 4b 45 59 58 5f 4b 45 59 53 49 5a 45 5f 49 P_KEYX_KEYSIZE_I
1c50: 4e 43 20 3d 20 33 35 2c 0d 0a 09 50 50 5f 55 4e NC = 35,...PP_UN
1c60: 49 51 55 45 5f 43 4f 4e 54 41 49 4e 45 52 20 3d IQUE_CONTAINER =
1c70: 20 33 36 2c 0d 0a 09 50 50 5f 53 47 43 5f 49 4e 36,...PP_SGC_IN
1c80: 46 4f 20 3d 20 33 37 2c 0d 0a 09 50 50 5f 55 53 FO = 37,...PP_US
1c90: 45 5f 48 41 52 44 57 41 52 45 5f 52 4e 47 20 3d E_HARDWARE_RNG =
1ca0: 20 33 38 2c 0d 0a 09 50 50 5f 4b 45 59 53 50 45 38,...PP_KEYSPE
1cb0: 43 20 3d 20 33 39 2c 0d 0a 09 50 50 5f 45 4e 55 C = 39,...PP_ENU
1cc0: 4d 45 58 5f 53 49 47 4e 49 4e 47 5f 50 52 4f 54 MEX_SIGNING_PROT
1cd0: 20 3d 20 34 30 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 = 40,..}....enu
1ce0: 6d 20 7b 0d 0a 09 43 52 59 50 54 5f 46 49 52 53 m {...CRYPT_FIRS
1cf0: 54 20 3d 20 31 2c 0d 0a 09 43 52 59 50 54 5f 4e T = 1,...CRYPT_N
1d00: 45 58 54 20 3d 20 32 2c 0d 0a 7d 0d 0a 0d 0a 65 EXT = 2,..}....e
1d10: 6e 75 6d 20 7b 0d 0a 09 43 52 59 50 54 5f 49 4d num {...CRYPT_IM
1d20: 50 4c 5f 48 41 52 44 57 41 52 45 20 3d 20 31 2c PL_HARDWARE = 1,
1d30: 0d 0a 09 43 52 59 50 54 5f 49 4d 50 4c 5f 53 4f ...CRYPT_IMPL_SO
1d40: 46 54 57 41 52 45 20 3d 20 32 2c 0d 0a 09 43 52 FTWARE = 2,...CR
1d50: 59 50 54 5f 49 4d 50 4c 5f 4d 49 58 45 44 20 3d YPT_IMPL_MIXED =
1d60: 20 33 2c 0d 0a 09 43 52 59 50 54 5f 49 4d 50 4c 3,...CRYPT_IMPL
1d70: 5f 55 4e 4b 4e 4f 57 4e 20 3d 20 34 2c 0d 0a 7d _UNKNOWN = 4,..}
1d80: 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 50 52 4f ....enum {...PRO
1d90: 56 5f 52 53 41 5f 46 55 4c 4c 20 3d 20 31 2c 0d V_RSA_FULL = 1,.
1da0: 0a 09 50 52 4f 56 5f 52 53 41 5f 53 49 47 20 3d ..PROV_RSA_SIG =
1db0: 20 32 2c 0d 0a 09 50 52 4f 56 5f 44 53 53 20 3d 2,...PROV_DSS =
1dc0: 20 33 2c 0d 0a 09 50 52 4f 56 5f 46 4f 52 54 45 3,...PROV_FORTE
1dd0: 5a 5a 41 20 3d 20 34 2c 0d 0a 09 50 52 4f 56 5f ZZA = 4,...PROV_
1de0: 4d 53 5f 4d 41 49 4c 20 3d 20 35 2c 0d 0a 09 50 MS_MAIL = 5,...P
1df0: 52 4f 56 5f 53 53 4c 20 3d 20 36 2c 0d 0a 09 50 ROV_SSL = 6,...P
1e00: 52 4f 56 5f 53 54 54 5f 4d 45 52 20 3d 20 37 2c ROV_STT_MER = 7,
1e10: 0d 0a 09 50 52 4f 56 5f 53 54 54 5f 41 43 51 20 ...PROV_STT_ACQ
1e20: 3d 20 38 2c 0d 0a 09 50 52 4f 56 5f 53 54 54 5f = 8,...PROV_STT_
1e30: 42 52 4e 44 20 3d 20 39 2c 0d 0a 09 50 52 4f 56 BRND = 9,...PROV
1e40: 5f 53 54 54 5f 52 4f 4f 54 20 3d 20 31 30 2c 0d _STT_ROOT = 10,.
1e50: 0a 09 50 52 4f 56 5f 53 54 54 5f 49 53 53 20 3d ..PROV_STT_ISS =
1e60: 20 31 31 2c 0d 0a 09 50 52 4f 56 5f 52 53 41 5f 11,...PROV_RSA_
1e70: 53 43 48 41 4e 4e 45 4c 20 3d 20 31 32 2c 0d 0a SCHANNEL = 12,..
1e80: 09 50 52 4f 56 5f 44 53 53 5f 44 48 20 3d 20 31 .PROV_DSS_DH = 1
1e90: 33 2c 0d 0a 09 50 52 4f 56 5f 45 43 5f 45 43 44 3,...PROV_EC_ECD
1ea0: 53 41 5f 53 49 47 20 3d 20 31 34 2c 0d 0a 09 50 SA_SIG = 14,...P
1eb0: 52 4f 56 5f 45 43 5f 45 43 4e 52 41 5f 53 49 47 ROV_EC_ECNRA_SIG
1ec0: 20 3d 20 31 35 2c 0d 0a 09 50 52 4f 56 5f 45 43 = 15,...PROV_EC
1ed0: 5f 45 43 44 53 41 5f 46 55 4c 4c 20 3d 20 31 36 _ECDSA_FULL = 16
1ee0: 2c 0d 0a 09 50 52 4f 56 5f 45 43 5f 45 43 4e 52 ,...PROV_EC_ECNR
1ef0: 41 5f 46 55 4c 4c 20 3d 20 31 37 2c 0d 0a 09 50 A_FULL = 17,...P
1f00: 52 4f 56 5f 44 48 5f 53 43 48 41 4e 4e 45 4c 20 ROV_DH_SCHANNEL
1f10: 3d 20 31 38 2c 0d 0a 09 50 52 4f 56 5f 53 50 59 = 18,...PROV_SPY
1f20: 52 55 53 5f 4c 59 4e 4b 53 20 3d 20 32 30 2c 0d RUS_LYNKS = 20,.
1f30: 0a 09 50 52 4f 56 5f 52 4e 47 20 3d 20 32 31 2c ..PROV_RNG = 21,
1f40: 0d 0a 09 50 52 4f 56 5f 49 4e 54 45 4c 5f 53 45 ...PROV_INTEL_SE
1f50: 43 20 3d 20 32 32 2c 0d 0a 09 50 52 4f 56 5f 52 C = 22,...PROV_R
1f60: 53 41 5f 41 45 53 20 3d 20 32 34 2c 0d 0a 09 4d SA_AES = 24,...M
1f70: 41 58 55 49 44 4c 45 4e 20 3d 20 36 34 2c 0d 0a AXUIDLEN = 64,..
1f80: 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 55 }....enum {...CU
1f90: 52 5f 42 4c 4f 42 5f 56 45 52 53 49 4f 4e 20 3d R_BLOB_VERSION =
1fa0: 20 32 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 2,..}....enum {
1fb0: 0d 0a 09 58 35 30 39 5f 41 53 4e 5f 45 4e 43 4f ...X509_ASN_ENCO
1fc0: 44 49 4e 47 20 3d 20 31 2c 0d 0a 09 50 4b 43 53 DING = 1,...PKCS
1fd0: 5f 37 5f 41 53 4e 5f 45 4e 43 4f 44 49 4e 47 20 _7_ASN_ENCODING
1fe0: 20 3d 20 36 35 35 33 36 2c 0d 0a 7d 0d 0a 0d 0a = 65536,..}....
1ff0: 65 6e 75 6d 20 7b 0d 0a 09 43 45 52 54 5f 56 31 enum {...CERT_V1
2000: 20 3d 20 30 2c 0d 0a 09 43 45 52 54 5f 56 32 20 = 0,...CERT_V2
2010: 3d 20 31 2c 0d 0a 09 43 45 52 54 5f 56 33 20 3d = 1,...CERT_V3 =
2020: 20 32 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 2,..}....enum {
2030: 0d 0a 09 43 45 52 54 5f 45 5f 43 48 41 49 4e 49 ...CERT_E_CHAINI
2040: 4e 47 20 3d 20 28 2d 32 31 34 36 37 36 32 34 38 NG = (-214676248
2050: 36 29 2c 0d 0a 09 43 45 52 54 5f 45 5f 43 4e 5f 6),...CERT_E_CN_
2060: 4e 4f 5f 4d 41 54 43 48 20 3d 20 28 2d 32 31 34 NO_MATCH = (-214
2070: 36 37 36 32 34 38 31 29 2c 0d 0a 09 43 45 52 54 6762481),...CERT
2080: 5f 45 5f 45 58 50 49 52 45 44 20 3d 20 28 2d 32 _E_EXPIRED = (-2
2090: 31 34 36 37 36 32 34 39 35 29 2c 0d 0a 09 43 45 146762495),...CE
20a0: 52 54 5f 45 5f 50 55 52 50 4f 53 45 20 3d 20 28 RT_E_PURPOSE = (
20b0: 2d 32 31 34 36 37 36 32 34 39 30 29 2c 0d 0a 09 -2146762490),...
20c0: 43 45 52 54 5f 45 5f 52 45 56 4f 43 41 54 49 4f CERT_E_REVOCATIO
20d0: 4e 5f 46 41 49 4c 55 52 45 20 3d 20 28 2d 32 31 N_FAILURE = (-21
20e0: 34 36 37 36 32 34 38 32 29 2c 0d 0a 09 43 45 52 46762482),...CER
20f0: 54 5f 45 5f 52 45 56 4f 4b 45 44 20 3d 20 28 2d T_E_REVOKED = (-
2100: 32 31 34 36 37 36 32 34 38 34 29 2c 0d 0a 09 43 2146762484),...C
2110: 45 52 54 5f 45 5f 52 4f 4c 45 20 3d 20 28 2d 32 ERT_E_ROLE = (-2
2120: 31 34 36 37 36 32 34 39 33 29 2c 0d 0a 09 43 45 146762493),...CE
2130: 52 54 5f 45 5f 55 4e 54 52 55 53 54 45 44 52 4f RT_E_UNTRUSTEDRO
2140: 4f 54 20 3d 20 28 2d 32 31 34 36 37 36 32 34 38 OT = (-214676248
2150: 37 29 2c 0d 0a 09 43 45 52 54 5f 45 5f 55 4e 54 7),...CERT_E_UNT
2160: 52 55 53 54 45 44 54 45 53 54 52 4f 4f 54 20 3d RUSTEDTESTROOT =
2170: 20 28 2d 32 31 34 36 37 36 32 34 38 33 29 2c 0d (-2146762483),.
2180: 0a 09 43 45 52 54 5f 45 5f 56 41 4c 49 44 49 54 ..CERT_E_VALIDIT
2190: 59 50 45 52 49 4f 44 4e 45 53 54 49 4e 47 20 3d YPERIODNESTING =
21a0: 20 28 2d 32 31 34 36 37 36 32 34 39 34 29 2c 0d (-2146762494),.
21b0: 0a 09 43 45 52 54 5f 45 5f 57 52 4f 4e 47 5f 55 ..CERT_E_WRONG_U
21c0: 53 41 47 45 20 3d 20 28 2d 32 31 34 36 37 36 32 SAGE = (-2146762
21d0: 34 38 30 29 2c 0d 0a 09 43 45 52 54 5f 45 5f 50 480),...CERT_E_P
21e0: 41 54 48 4c 45 4e 43 4f 4e 53 54 20 3d 20 28 2d ATHLENCONST = (-
21f0: 32 31 34 36 37 36 32 34 39 32 29 2c 0d 0a 09 43 2146762492),...C
2200: 45 52 54 5f 45 5f 43 52 49 54 49 43 41 4c 20 3d ERT_E_CRITICAL =
2210: 20 28 2d 32 31 34 36 37 36 32 34 39 31 29 2c 0d (-2146762491),.
2220: 0a 09 43 45 52 54 5f 45 5f 49 53 53 55 45 52 43 ..CERT_E_ISSUERC
2230: 48 41 49 4e 49 4e 47 20 3d 20 28 2d 32 31 34 36 HAINING = (-2146
2240: 37 36 32 34 38 39 29 2c 0d 0a 09 43 45 52 54 5f 762489),...CERT_
2250: 45 5f 4d 41 4c 46 4f 52 4d 45 44 20 3d 20 28 2d E_MALFORMED = (-
2260: 32 31 34 36 37 36 32 34 38 38 29 2c 0d 0a 09 43 2146762488),...C
2270: 52 59 50 54 5f 45 5f 52 45 56 4f 43 41 54 49 4f RYPT_E_REVOCATIO
2280: 4e 5f 4f 46 46 4c 49 4e 45 20 3d 20 28 2d 32 31 N_OFFLINE = (-21
2290: 34 36 38 38 35 36 31 33 29 2c 0d 0a 09 43 52 59 46885613),...CRY
22a0: 50 54 5f 45 5f 52 45 56 4f 4b 45 44 20 3d 20 28 PT_E_REVOKED = (
22b0: 2d 32 31 34 36 38 38 35 36 31 36 29 2c 0d 0a 09 -2146885616),...
22c0: 54 52 55 53 54 5f 45 5f 42 41 53 49 43 5f 43 4f TRUST_E_BASIC_CO
22d0: 4e 53 54 52 41 49 4e 54 53 20 3d 20 28 2d 32 31 NSTRAINTS = (-21
22e0: 34 36 38 36 39 32 32 33 29 2c 0d 0a 09 54 52 55 46869223),...TRU
22f0: 53 54 5f 45 5f 43 45 52 54 5f 53 49 47 4e 41 54 ST_E_CERT_SIGNAT
2300: 55 52 45 20 3d 20 28 2d 32 31 34 36 38 36 39 32 URE = (-21468692
2310: 34 34 29 2c 0d 0a 09 54 52 55 53 54 5f 45 5f 46 44),...TRUST_E_F
2320: 41 49 4c 20 3d 20 28 2d 32 31 34 36 37 36 32 34 AIL = (-21467624
2330: 38 35 29 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 85),..}....enum
2340: 7b 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 5f 4e {...CERT_TRUST_N
2350: 4f 5f 45 52 52 4f 52 20 3d 20 30 2c 0d 0a 09 43 O_ERROR = 0,...C
2360: 45 52 54 5f 54 52 55 53 54 5f 49 53 5f 4e 4f 54 ERT_TRUST_IS_NOT
2370: 5f 54 49 4d 45 5f 56 41 4c 49 44 20 3d 20 31 2c _TIME_VALID = 1,
2380: 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 5f 49 53 ...CERT_TRUST_IS
2390: 5f 4e 4f 54 5f 54 49 4d 45 5f 4e 45 53 54 45 44 _NOT_TIME_NESTED
23a0: 20 3d 20 32 2c 0d 0a 09 43 45 52 54 5f 54 52 55 = 2,...CERT_TRU
23b0: 53 54 5f 49 53 5f 52 45 56 4f 4b 45 44 20 3d 20 ST_IS_REVOKED =
23c0: 34 2c 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 5f 4,...CERT_TRUST_
23d0: 49 53 5f 4e 4f 54 5f 53 49 47 4e 41 54 55 52 45 IS_NOT_SIGNATURE
23e0: 5f 56 41 4c 49 44 20 3d 20 38 2c 0d 0a 09 43 45 _VALID = 8,...CE
23f0: 52 54 5f 54 52 55 53 54 5f 49 53 5f 4e 4f 54 5f RT_TRUST_IS_NOT_
2400: 56 41 4c 49 44 5f 46 4f 52 5f 55 53 41 47 45 20 VALID_FOR_USAGE
2410: 3d 20 31 36 2c 0d 0a 09 43 45 52 54 5f 54 52 55 = 16,...CERT_TRU
2420: 53 54 5f 49 53 5f 55 4e 54 52 55 53 54 45 44 5f ST_IS_UNTRUSTED_
2430: 52 4f 4f 54 20 3d 20 33 32 2c 0d 0a 09 43 45 52 ROOT = 32,...CER
2440: 54 5f 54 52 55 53 54 5f 52 45 56 4f 43 41 54 49 T_TRUST_REVOCATI
2450: 4f 4e 5f 53 54 41 54 55 53 5f 55 4e 4b 4e 4f 57 ON_STATUS_UNKNOW
2460: 4e 20 3d 20 36 34 2c 0d 0a 09 43 45 52 54 5f 54 N = 64,...CERT_T
2470: 52 55 53 54 5f 49 53 5f 43 59 43 4c 49 43 20 3d RUST_IS_CYCLIC =
2480: 20 31 32 38 2c 0d 0a 09 43 45 52 54 5f 54 52 55 128,...CERT_TRU
2490: 53 54 5f 49 53 5f 50 41 52 54 49 41 4c 5f 43 48 ST_IS_PARTIAL_CH
24a0: 41 49 4e 20 3d 20 36 35 35 33 36 2c 0d 0a 09 43 AIN = 65536,...C
24b0: 45 52 54 5f 54 52 55 53 54 5f 43 54 4c 5f 49 53 ERT_TRUST_CTL_IS
24c0: 5f 4e 4f 54 5f 54 49 4d 45 5f 56 41 4c 49 44 20 _NOT_TIME_VALID
24d0: 3d 20 31 33 31 30 37 32 2c 0d 0a 09 43 45 52 54 = 131072,...CERT
24e0: 5f 54 52 55 53 54 5f 43 54 4c 5f 49 53 5f 4e 4f _TRUST_CTL_IS_NO
24f0: 54 5f 53 49 47 4e 41 54 55 52 45 5f 56 41 4c 49 T_SIGNATURE_VALI
2500: 44 20 3d 20 32 36 32 31 34 34 2c 0d 0a 09 43 45 D = 262144,...CE
2510: 52 54 5f 54 52 55 53 54 5f 43 54 4c 5f 49 53 5f RT_TRUST_CTL_IS_
2520: 4e 4f 54 5f 56 41 4c 49 44 5f 46 4f 52 5f 55 53 NOT_VALID_FOR_US
2530: 41 47 45 20 3d 20 35 32 34 32 38 38 2c 0d 0a 7d AGE = 524288,..}
2540: 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 45 52 ....enum {...CER
2550: 54 5f 54 52 55 53 54 5f 48 41 53 5f 45 58 41 43 T_TRUST_HAS_EXAC
2560: 54 5f 4d 41 54 43 48 5f 49 53 53 55 45 52 20 3d T_MATCH_ISSUER =
2570: 20 31 2c 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 1,...CERT_TRUST
2580: 5f 48 41 53 5f 4b 45 59 5f 4d 41 54 43 48 5f 49 _HAS_KEY_MATCH_I
2590: 53 53 55 45 52 20 3d 20 32 2c 0d 0a 09 43 45 52 SSUER = 2,...CER
25a0: 54 5f 54 52 55 53 54 5f 48 41 53 5f 4e 41 4d 45 T_TRUST_HAS_NAME
25b0: 5f 4d 41 54 43 48 5f 49 53 53 55 45 52 20 3d 20 _MATCH_ISSUER =
25c0: 34 2c 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 5f 4,...CERT_TRUST_
25d0: 49 53 5f 53 45 4c 46 5f 53 49 47 4e 45 44 20 3d IS_SELF_SIGNED =
25e0: 20 38 2c 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 8,...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 3d 20 36 35 35 33 36 2c 0d 0a 7d 0d 0a 0d N = 65536,..}...
2610: 0a 65 6e 75 6d 20 7b 0d 0a 09 43 45 52 54 5f 43 .enum {...CERT_C
2620: 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 42 41 53 45 HAIN_POLICY_BASE
2630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 =
2640: 63 61 73 74 28 4c 50 43 53 54 52 29 20 31 2c 0d cast(LPCSTR) 1,.
2650: 0a 09 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c ..CERT_CHAIN_POL
2660: 49 43 59 5f 41 55 54 48 45 4e 54 49 43 4f 44 45 ICY_AUTHENTICODE
2670: 20 20 20 20 20 20 3d 20 63 61 73 74 28 4c 50 43 = cast(LPC
2680: 53 54 52 29 20 32 2c 0d 0a 09 43 45 52 54 5f 43 STR) 2,...CERT_C
2690: 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 41 55 54 48 HAIN_POLICY_AUTH
26a0: 45 4e 54 49 43 4f 44 45 5f 54 53 20 20 20 3d 20 ENTICODE_TS =
26b0: 63 61 73 74 28 4c 50 43 53 54 52 29 20 33 2c 0d cast(LPCSTR) 3,.
26c0: 0a 09 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c ..CERT_CHAIN_POL
26d0: 49 43 59 5f 53 53 4c 20 20 20 20 20 20 20 20 20 ICY_SSL
26e0: 20 20 20 20 20 20 3d 20 63 61 73 74 28 4c 50 43 = cast(LPC
26f0: 53 54 52 29 20 34 2c 0d 0a 09 43 45 52 54 5f 43 STR) 4,...CERT_C
2700: 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 42 41 53 49 HAIN_POLICY_BASI
2710: 43 5f 43 4f 4e 53 54 52 41 49 4e 54 53 20 3d 20 C_CONSTRAINTS =
2720: 63 61 73 74 28 4c 50 43 53 54 52 29 20 35 2c 0d cast(LPCSTR) 5,.
2730: 0a 09 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c ..CERT_CHAIN_POL
2740: 49 43 59 5f 4e 54 5f 41 55 54 48 20 20 20 20 20 ICY_NT_AUTH
2750: 20 20 20 20 20 20 3d 20 63 61 73 74 28 4c 50 43 = cast(LPC
2760: 53 54 52 29 20 36 2c 0d 0a 7d 0d 0a 0d 0a 65 6e STR) 6,..}....en
2770: 75 6d 20 7b 0d 0a 09 55 53 41 47 45 5f 4d 41 54 um {...USAGE_MAT
2780: 43 48 5f 54 59 50 45 5f 41 4e 44 20 3d 20 30 2c CH_TYPE_AND = 0,
2790: 0d 0a 09 55 53 41 47 45 5f 4d 41 54 43 48 5f 54 ...USAGE_MATCH_T
27a0: 59 50 45 5f 4f 52 20 3d 20 31 2c 0d 0a 7d 0d 0a YPE_OR = 1,..}..
27b0: 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 45 52 54 5f ..enum {...CERT_
27c0: 53 49 4d 50 4c 45 5f 4e 41 4d 45 5f 53 54 52 20 SIMPLE_NAME_STR
27d0: 3d 20 31 2c 0d 0a 09 43 45 52 54 5f 4f 49 44 5f = 1,...CERT_OID_
27e0: 4e 41 4d 45 5f 53 54 52 20 3d 20 32 2c 0d 0a 09 NAME_STR = 2,...
27f0: 43 45 52 54 5f 58 35 30 30 5f 4e 41 4d 45 5f 53 CERT_X500_NAME_S
2800: 54 52 20 3d 20 33 2c 0d 0a 7d 0d 0a 65 6e 75 6d TR = 3,..}..enum
2810: 20 7b 0d 0a 09 43 45 52 54 5f 4e 41 4d 45 5f 53 {...CERT_NAME_S
2820: 54 52 5f 53 45 4d 49 43 4f 4c 4f 4e 5f 46 4c 41 TR_SEMICOLON_FLA
2830: 47 20 3d 20 31 30 37 33 37 34 31 38 32 34 2c 0d G = 1073741824,.
2840: 0a 09 43 45 52 54 5f 4e 41 4d 45 5f 53 54 52 5f ..CERT_NAME_STR_
2850: 43 52 4c 46 5f 46 4c 41 47 20 3d 20 31 33 34 32 CRLF_FLAG = 1342
2860: 31 37 37 32 38 2c 0d 0a 09 43 45 52 54 5f 4e 41 17728,...CERT_NA
2870: 4d 45 5f 53 54 52 5f 4e 4f 5f 50 4c 55 53 5f 46 ME_STR_NO_PLUS_F
2880: 4c 41 47 20 3d 20 35 33 36 38 37 30 39 31 32 2c LAG = 536870912,
2890: 0d 0a 09 43 45 52 54 5f 4e 41 4d 45 5f 53 54 52 ...CERT_NAME_STR
28a0: 5f 4e 4f 5f 51 55 4f 54 49 4e 47 5f 46 4c 41 47 _NO_QUOTING_FLAG
28b0: 20 3d 20 32 36 38 34 33 35 34 35 36 2c 0d 0a 09 = 268435456,...
28c0: 43 45 52 54 5f 4e 41 4d 45 5f 53 54 52 5f 52 45 CERT_NAME_STR_RE
28d0: 56 45 52 53 45 5f 46 4c 41 47 20 3d 20 33 33 35 VERSE_FLAG = 335
28e0: 35 34 34 33 32 2c 0d 0a 09 43 45 52 54 5f 4e 41 54432,...CERT_NA
28f0: 4d 45 5f 53 54 52 5f 45 4e 41 42 4c 45 5f 54 36 ME_STR_ENABLE_T6
2900: 31 5f 55 4e 49 43 4f 44 45 5f 46 4c 41 47 20 3d 1_UNICODE_FLAG =
2910: 20 31 33 31 30 37 32 2c 0d 0a 7d 0d 0a 0d 0a 65 131072,..}....e
2920: 6e 75 6d 20 7b 0d 0a 09 43 45 52 54 5f 46 49 4e num {...CERT_FIN
2930: 44 5f 41 4e 59 20 3d 20 30 2c 0d 0a 09 43 45 52 D_ANY = 0,...CER
2940: 54 5f 46 49 4e 44 5f 43 45 52 54 5f 49 44 20 3d T_FIND_CERT_ID =
2950: 20 31 30 34 38 35 37 36 2c 0d 0a 09 43 45 52 54 1048576,...CERT
2960: 5f 46 49 4e 44 5f 43 54 4c 5f 55 53 41 47 45 20 _FIND_CTL_USAGE
2970: 3d 20 36 35 35 33 36 30 2c 0d 0a 09 43 45 52 54 = 655360,...CERT
2980: 5f 46 49 4e 44 5f 45 4e 48 4b 45 59 5f 55 53 41 _FIND_ENHKEY_USA
2990: 47 45 20 3d 20 36 35 35 33 36 30 2c 0d 0a 09 43 GE = 655360,...C
29a0: 45 52 54 5f 46 49 4e 44 5f 45 58 49 53 54 49 4e ERT_FIND_EXISTIN
29b0: 47 20 3d 20 38 35 31 39 36 38 2c 0d 0a 09 43 45 G = 851968,...CE
29c0: 52 54 5f 46 49 4e 44 5f 48 41 53 48 20 3d 20 36 RT_FIND_HASH = 6
29d0: 35 35 33 36 2c 0d 0a 09 43 45 52 54 5f 46 49 4e 5536,...CERT_FIN
29e0: 44 5f 49 53 53 55 45 52 5f 41 54 54 52 20 3d 20 D_ISSUER_ATTR =
29f0: 31 39 36 36 31 32 2c 0d 0a 09 43 45 52 54 5f 46 196612,...CERT_F
2a00: 49 4e 44 5f 49 53 53 55 45 52 5f 4e 41 4d 45 20 IND_ISSUER_NAME
2a10: 3d 20 31 33 31 30 37 36 2c 0d 0a 09 43 45 52 54 = 131076,...CERT
2a20: 5f 46 49 4e 44 5f 49 53 53 55 45 52 5f 4f 46 20 _FIND_ISSUER_OF
2a30: 3d 20 37 38 36 34 33 32 2c 0d 0a 09 43 45 52 54 = 786432,...CERT
2a40: 5f 46 49 4e 44 5f 4b 45 59 5f 49 44 45 4e 54 49 _FIND_KEY_IDENTI
2a50: 46 49 45 52 20 3d 20 39 38 33 30 34 30 2c 0d 0a FIER = 983040,..
2a60: 09 43 45 52 54 5f 46 49 4e 44 5f 4b 45 59 5f 53 .CERT_FIND_KEY_S
2a70: 50 45 43 20 3d 20 35 38 39 38 32 34 2c 0d 0a 09 PEC = 589824,...
2a80: 43 45 52 54 5f 46 49 4e 44 5f 4d 44 35 5f 48 41 CERT_FIND_MD5_HA
2a90: 53 48 20 3d 20 32 36 32 31 34 34 2c 0d 0a 09 43 SH = 262144,...C
2aa0: 45 52 54 5f 46 49 4e 44 5f 50 52 4f 50 45 52 54 ERT_FIND_PROPERT
2ab0: 59 20 3d 20 33 32 37 36 38 30 2c 0d 0a 09 43 45 Y = 327680,...CE
2ac0: 52 54 5f 46 49 4e 44 5f 50 55 42 4c 49 43 5f 4b RT_FIND_PUBLIC_K
2ad0: 45 59 20 3d 20 33 39 33 32 31 36 2c 0d 0a 09 43 EY = 393216,...C
2ae0: 45 52 54 5f 46 49 4e 44 5f 53 48 41 31 5f 48 41 ERT_FIND_SHA1_HA
2af0: 53 48 20 3d 20 36 35 35 33 36 2c 0d 0a 09 43 45 SH = 65536,...CE
2b00: 52 54 5f 46 49 4e 44 5f 53 49 47 4e 41 54 55 52 RT_FIND_SIGNATUR
2b10: 45 5f 48 41 53 48 20 3d 20 39 31 37 35 30 34 2c E_HASH = 917504,
2b20: 0d 0a 09 43 45 52 54 5f 46 49 4e 44 5f 53 55 42 ...CERT_FIND_SUB
2b30: 4a 45 43 54 5f 41 54 54 52 20 3d 20 31 39 36 36 JECT_ATTR = 1966
2b40: 31 35 2c 0d 0a 09 43 45 52 54 5f 46 49 4e 44 5f 15,...CERT_FIND_
2b50: 53 55 42 4a 45 43 54 5f 43 45 52 54 20 3d 20 37 SUBJECT_CERT = 7
2b60: 32 30 38 39 36 2c 0d 0a 09 43 45 52 54 5f 46 49 20896,...CERT_FI
2b70: 4e 44 5f 53 55 42 4a 45 43 54 5f 4e 41 4d 45 20 ND_SUBJECT_NAME
2b80: 3d 20 31 33 31 30 37 39 2c 0d 0a 09 43 45 52 54 = 131079,...CERT
2b90: 5f 46 49 4e 44 5f 53 55 42 4a 45 43 54 5f 53 54 _FIND_SUBJECT_ST
2ba0: 52 5f 41 20 3d 20 34 35 38 37 35 39 2c 0d 0a 09 R_A = 458759,...
2bb0: 43 45 52 54 5f 46 49 4e 44 5f 53 55 42 4a 45 43 CERT_FIND_SUBJEC
2bc0: 54 5f 53 54 52 5f 57 20 3d 20 35 32 34 32 39 35 T_STR_W = 524295
2bd0: 2c 0d 0a 09 43 45 52 54 5f 46 49 4e 44 5f 49 53 ,...CERT_FIND_IS
2be0: 53 55 45 52 5f 53 54 52 5f 41 20 3d 20 34 35 38 SUER_STR_A = 458
2bf0: 37 35 36 2c 0d 0a 09 43 45 52 54 5f 46 49 4e 44 756,...CERT_FIND
2c00: 5f 49 53 53 55 45 52 5f 53 54 52 5f 57 20 3d 20 _ISSUER_STR_W =
2c10: 35 32 34 32 39 32 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 524292,..}....en
2c20: 75 6d 20 7b 0d 0a 09 43 45 52 54 5f 46 49 4e 44 um {...CERT_FIND
2c30: 5f 4f 52 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 _OR_ENHKEY_USAGE
2c40: 5f 46 4c 41 47 20 3d 20 31 36 2c 0d 0a 09 43 45 _FLAG = 16,...CE
2c50: 52 54 5f 46 49 4e 44 5f 4f 50 54 49 4f 4e 41 4c RT_FIND_OPTIONAL
2c60: 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 5f 46 4c _ENHKEY_USAGE_FL
2c70: 41 47 20 20 3d 20 31 2c 0d 0a 09 43 45 52 54 5f AG = 1,...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 3d 20 38 2c 0d SAGE_FLAG = 8,.
2ca0: 0a 09 43 45 52 54 5f 46 49 4e 44 5f 56 41 4c 49 ..CERT_FIND_VALI
2cb0: 44 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 5f 46 D_ENHKEY_USAGE_F
2cc0: 4c 41 47 20 20 3d 20 33 32 2c 0d 0a 09 43 45 52 LAG = 32,...CER
2cd0: 54 5f 46 49 4e 44 5f 45 58 54 5f 4f 4e 4c 59 5f T_FIND_EXT_ONLY_
2ce0: 45 4e 48 4b 45 59 5f 55 53 41 47 45 5f 46 4c 41 ENHKEY_USAGE_FLA
2cf0: 47 20 20 3d 20 32 2c 0d 0a 7d 0d 0a 0d 0a 65 6e G = 2,..}....en
2d00: 75 6d 20 7b 0d 0a 09 43 45 52 54 5f 43 41 53 45 um {...CERT_CASE
2d10: 5f 49 4e 53 45 4e 53 49 54 49 56 45 5f 49 53 5f _INSENSITIVE_IS_
2d20: 52 44 4e 5f 41 54 54 52 53 5f 46 4c 41 47 20 20 RDN_ATTRS_FLAG
2d30: 3d 20 32 2c 0d 0a 09 43 45 52 54 5f 55 4e 49 43 = 2,...CERT_UNIC
2d40: 4f 44 45 5f 49 53 5f 52 44 4e 5f 41 54 54 52 53 ODE_IS_RDN_ATTRS
2d50: 5f 46 4c 41 47 20 3d 20 31 2c 0d 0a 09 43 45 52 _FLAG = 1,...CER
2d60: 54 5f 43 48 41 49 4e 5f 46 49 4e 44 5f 42 59 5f T_CHAIN_FIND_BY_
2d70: 49 53 53 55 45 52 20 3d 20 31 2c 0d 0a 7d 0d 0a ISSUER = 1,..}..
2d80: 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 45 52 54 5f ..enum {...CERT_
2d90: 43 48 41 49 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 CHAIN_FIND_BY_IS
2da0: 53 55 45 52 5f 43 4f 4d 50 41 52 45 5f 4b 45 59 SUER_COMPARE_KEY
2db0: 5f 46 4c 41 47 20 3d 20 31 2c 0d 0a 09 43 45 52 _FLAG = 1,...CER
2dc0: 54 5f 43 48 41 49 4e 5f 46 49 4e 44 5f 42 59 5f T_CHAIN_FIND_BY_
2dd0: 49 53 53 55 45 52 5f 43 4f 4d 50 4c 45 58 5f 43 ISSUER_COMPLEX_C
2de0: 48 41 49 4e 5f 46 4c 41 47 20 3d 20 32 2c 0d 0a HAIN_FLAG = 2,..
2df0: 09 43 45 52 54 5f 43 48 41 49 4e 5f 46 49 4e 44 .CERT_CHAIN_FIND
2e00: 5f 42 59 5f 49 53 53 55 45 52 5f 43 41 43 48 45 _BY_ISSUER_CACHE
2e10: 5f 4f 4e 4c 59 5f 55 52 4c 5f 46 4c 41 47 20 3d _ONLY_URL_FLAG =
2e20: 20 34 2c 0d 0a 09 43 45 52 54 5f 43 48 41 49 4e 4,...CERT_CHAIN
2e30: 5f 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f _FIND_BY_ISSUER_
2e40: 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45 5f 46 4c LOCAL_MACHINE_FL
2e50: 41 47 20 3d 20 38 2c 0d 0a 09 43 45 52 54 5f 43 AG = 8,...CERT_C
2e60: 48 41 49 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 53 HAIN_FIND_BY_ISS
2e70: 55 45 52 5f 4e 4f 5f 4b 45 59 5f 46 4c 41 47 20 UER_NO_KEY_FLAG
2e80: 3d 20 31 36 33 38 34 2c 0d 0a 09 43 45 52 54 5f = 16384,...CERT_
2e90: 43 48 41 49 4e 5f 46 49 4e 44 5f 42 59 5f 49 53 CHAIN_FIND_BY_IS
2ea0: 53 55 45 52 5f 43 41 43 48 45 5f 4f 4e 4c 59 5f SUER_CACHE_ONLY_
2eb0: 46 4c 41 47 20 3d 20 33 32 37 36 38 2c 0d 0a 7d FLAG = 32768,..}
2ec0: 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 45 52 ....enum {...CER
2ed0: 54 5f 53 54 4f 52 45 5f 50 52 4f 56 5f 53 59 53 T_STORE_PROV_SYS
2ee0: 54 45 4d 20 3d 20 31 30 2c 0d 0a 09 43 45 52 54 TEM = 10,...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 3d 20 31 33 CAL_MACHINE = 13
2f10: 31 30 37 32 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 1072,..}....enum
2f20: 20 7b 0d 0a 09 73 7a 4f 49 44 5f 50 4b 49 58 5f {...szOID_PKIX_
2f30: 4b 50 5f 53 45 52 56 45 52 5f 41 55 54 48 20 3d KP_SERVER_AUTH =
2f40: 20 22 34 32 33 35 36 30 30 22 2c 0d 0a 09 73 7a "4235600",...sz
2f50: 4f 49 44 5f 53 45 52 56 45 52 5f 47 41 54 45 44 OID_SERVER_GATED
2f60: 5f 43 52 59 50 54 4f 20 3d 20 22 34 32 33 35 36 _CRYPTO = "42356
2f70: 35 38 22 2c 0d 0a 09 73 7a 4f 49 44 5f 53 47 43 58",...szOID_SGC
2f80: 5f 4e 45 54 53 43 41 50 45 20 3d 20 22 32 2e 31 _NETSCAPE = "2.1
2f90: 36 2e 38 34 30 2e 31 2e 31 31 33 37 33 30 2e 34 6.840.1.113730.4
2fa0: 2e 31 22 2c 0d 0a 09 73 7a 4f 49 44 5f 50 4b 49 .1",...szOID_PKI
2fb0: 58 5f 4b 50 5f 43 4c 49 45 4e 54 5f 41 55 54 48 X_KP_CLIENT_AUTH
2fc0: 20 3d 20 22 31 2e 33 2e 36 2e 31 2e 35 2e 35 2e = "1.3.6.1.5.5.
2fd0: 37 2e 33 2e 32 22 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 7.3.2",..}....en
2fe0: 75 6d 20 7b 0d 0a 09 43 52 59 50 54 5f 4e 4f 48 um {...CRYPT_NOH
2ff0: 41 53 48 4f 49 44 20 3d 20 30 78 30 30 30 30 30 ASHOID = 0x00000
3000: 30 30 31 2c 0d 0a 09 43 52 59 50 54 5f 4e 4f 5f 001,...CRYPT_NO_
3010: 53 41 4c 54 20 3d 20 30 78 31 30 2c 0d 0a 09 43 SALT = 0x10,...C
3020: 52 59 50 54 5f 50 52 45 47 45 4e 20 3d 20 30 78 RYPT_PREGEN = 0x
3030: 34 30 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 40,..}....enum {
3040: 0d 0a 09 43 52 59 50 54 5f 52 45 43 49 50 49 45 ...CRYPT_RECIPIE
3050: 4e 54 20 3d 20 30 78 31 30 2c 0d 0a 09 43 52 59 NT = 0x10,...CRY
3060: 50 54 5f 49 4e 49 54 49 41 54 4f 52 20 3d 20 30 PT_INITIATOR = 0
3070: 78 34 30 2c 0d 0a 09 43 52 59 50 54 5f 4f 4e 4c x40,...CRYPT_ONL
3080: 49 4e 45 20 3d 20 30 78 38 30 2c 0d 0a 09 43 52 INE = 0x80,...CR
3090: 59 50 54 5f 53 46 20 3d 20 30 78 31 30 30 2c 0d YPT_SF = 0x100,.
30a0: 0a 09 43 52 59 50 54 5f 43 52 45 41 54 45 5f 49 ..CRYPT_CREATE_I
30b0: 56 20 3d 20 30 78 32 30 30 2c 0d 0a 09 43 52 59 V = 0x200,...CRY
30c0: 50 54 5f 4b 45 4b 20 3d 20 30 78 34 30 30 2c 0d PT_KEK = 0x400,.
30d0: 0a 09 43 52 59 50 54 5f 44 41 54 41 5f 4b 45 59 ..CRYPT_DATA_KEY
30e0: 20 3d 20 30 78 38 30 30 2c 0d 0a 09 43 52 59 50 = 0x800,...CRYP
30f0: 54 5f 56 4f 4c 41 54 49 4c 45 20 3d 20 30 78 31 T_VOLATILE = 0x1
3100: 30 30 30 2c 0d 0a 09 43 52 59 50 54 5f 53 47 43 000,...CRYPT_SGC
3110: 4b 45 59 20 3d 20 30 78 32 30 30 30 2c 0d 0a 7d KEY = 0x2000,..}
3120: 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 4b 50 5f ....enum {...KP_
3130: 49 56 20 20 20 20 20 20 20 20 20 20 20 20 20 20 IV
3140: 20 3d 20 30 78 30 30 30 30 30 30 30 31 2c 0d 0a = 0x00000001,..
3150: 09 4b 50 5f 53 41 4c 54 20 20 20 20 20 20 20 20 .KP_SALT
3160: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 = 0x0000000
3170: 32 2c 0d 0a 09 4b 50 5f 50 41 44 44 49 4e 47 20 2,...KP_PADDING
3180: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 = 0x000
3190: 30 30 30 30 33 2c 0d 0a 09 4b 50 5f 4d 4f 44 45 00003,...KP_MODE
31a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 = 0
31b0: 78 30 30 30 30 30 30 30 34 2c 0d 0a 09 4b 50 5f x00000004,...KP_
31c0: 4d 4f 44 45 5f 42 49 54 53 20 20 20 20 20 20 20 MODE_BITS
31d0: 20 3d 20 30 78 30 30 30 30 30 30 30 35 2c 0d 0a = 0x00000005,..
31e0: 09 4b 50 5f 50 45 52 4d 49 53 53 49 4f 4e 53 20 .KP_PERMISSIONS
31f0: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 = 0x0000000
3200: 36 2c 0d 0a 09 4b 50 5f 41 4c 47 49 44 20 20 20 6,...KP_ALGID
3210: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 = 0x000
3220: 30 30 30 30 37 2c 0d 0a 09 4b 50 5f 42 4c 4f 43 00007,...KP_BLOC
3230: 4b 4c 45 4e 20 20 20 20 20 20 20 20 20 3d 20 30 KLEN = 0
3240: 78 30 30 30 30 30 30 30 38 2c 0d 0a 09 4b 50 5f x00000008,...KP_
3250: 4b 45 59 4c 45 4e 20 20 20 20 20 20 20 20 20 20 KEYLEN
3260: 20 3d 20 30 78 30 30 30 30 30 30 30 39 2c 0d 0a = 0x00000009,..
3270: 09 4b 50 5f 53 41 4c 54 5f 45 58 20 20 20 20 20 .KP_SALT_EX
3280: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 = 0x0000000
3290: 61 2c 0d 0a 09 4b 50 5f 50 20 20 20 20 20 20 20 a,...KP_P
32a0: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 = 0x000
32b0: 30 30 30 30 62 2c 0d 0a 09 4b 50 5f 47 20 20 20 0000b,...KP_G
32c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 = 0
32d0: 78 30 30 30 30 30 30 30 63 2c 0d 0a 09 4b 50 5f x0000000c,...KP_
32e0: 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 Q
32f0: 20 3d 20 30 78 30 30 30 30 30 30 30 64 2c 0d 0a = 0x0000000d,..
3300: 09 4b 50 5f 58 20 20 20 20 20 20 20 20 20 20 20 .KP_X
3310: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 = 0x0000000
3320: 65 2c 0d 0a 09 4b 50 5f 59 20 20 20 20 20 20 20 e,...KP_Y
3330: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 = 0x000
3340: 30 30 30 30 66 2c 0d 0a 09 4b 50 5f 52 41 20 20 0000f,...KP_RA
3350: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 = 0
3360: 78 30 30 30 30 30 30 31 30 2c 0d 0a 09 4b 50 5f x00000010,...KP_
3370: 52 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RB
3380: 20 3d 20 30 78 30 30 30 30 30 30 31 31 2c 0d 0a = 0x00000011,..
3390: 09 4b 50 5f 49 4e 46 4f 20 20 20 20 20 20 20 20 .KP_INFO
33a0: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 31 = 0x0000001
33b0: 32 2c 0d 0a 09 4b 50 5f 45 46 46 45 43 54 49 56 2,...KP_EFFECTIV
33c0: 45 5f 4b 45 59 4c 45 4e 20 3d 20 30 78 30 30 30 E_KEYLEN = 0x000
33d0: 30 30 30 31 33 2c 0d 0a 09 4b 50 5f 53 43 48 41 00013,...KP_SCHA
33e0: 4e 4e 45 4c 5f 41 4c 47 20 20 20 20 20 3d 20 30 NNEL_ALG = 0
33f0: 78 30 30 30 30 30 30 31 34 2c 0d 0a 09 4b 50 5f x00000014,...KP_
3400: 50 55 42 5f 50 41 52 41 4d 53 20 20 20 20 20 20 PUB_PARAMS
3410: 20 3d 20 30 78 30 30 30 30 30 30 32 37 2c 0d 0a = 0x00000027,..
3420: 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 43 52 }....enum {...CR
3430: 59 50 54 5f 46 4c 41 47 5f 50 43 54 31 20 20 20 YPT_FLAG_PCT1
3440: 20 3d 20 30 78 30 30 30 31 2c 0d 0a 09 43 52 59 = 0x0001,...CRY
3450: 50 54 5f 46 4c 41 47 5f 53 53 4c 32 20 20 20 20 PT_FLAG_SSL2
3460: 3d 20 30 78 30 30 30 32 2c 0d 0a 09 43 52 59 50 = 0x0002,...CRYP
3470: 54 5f 46 4c 41 47 5f 53 53 4c 33 20 20 20 20 3d T_FLAG_SSL3 =
3480: 20 30 78 30 30 30 34 2c 0d 0a 09 43 52 59 50 54 0x0004,...CRYPT
3490: 5f 46 4c 41 47 5f 54 4c 53 31 20 20 20 20 3d 20 _FLAG_TLS1 =
34a0: 30 78 30 30 30 38 2c 0d 0a 09 43 52 59 50 54 5f 0x0008,...CRYPT_
34b0: 46 4c 41 47 5f 49 50 53 45 43 20 20 20 3d 20 30 FLAG_IPSEC = 0
34c0: 78 30 30 31 30 2c 0d 0a 09 43 52 59 50 54 5f 46 x0010,...CRYPT_F
34d0: 4c 41 47 5f 53 49 47 4e 49 4e 47 20 3d 20 30 78 LAG_SIGNING = 0x
34e0: 30 30 32 30 2c 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 0020,..}....enum
34f0: 20 7b 0d 0a 09 53 43 48 41 4e 4e 45 4c 5f 4d 41 {...SCHANNEL_MA
3500: 43 5f 4b 45 59 20 20 20 20 3d 20 30 78 30 30 30 C_KEY = 0x000
3510: 30 30 30 30 30 2c 0d 0a 09 53 43 48 41 4e 4e 45 00000,...SCHANNE
3520: 4c 5f 45 4e 43 5f 4b 45 59 20 20 20 20 3d 20 30 L_ENC_KEY = 0
3530: 78 30 30 30 30 30 30 30 31 2c 0d 0a 7d 0d 0a 0d x00000001,..}...
3540: 0a 65 6e 75 6d 20 7b 0d 0a 09 49 4e 54 45 52 4e .enum {...INTERN
3550: 41 54 49 4f 4e 41 4c 5f 55 53 41 47 45 20 3d 20 ATIONAL_USAGE =
3560: 30 78 30 30 30 30 30 30 30 31 2c 0d 0a 7d 0d 0a 0x00000001,..}..
3570: 0d 0a 0d 0a 61 6c 69 61 73 20 55 49 4e 54 20 41 ....alias UINT A
3580: 4c 47 5f 49 44 3b 0d 0a 61 6c 69 61 73 20 55 4c LG_ID;..alias UL
3590: 4f 4e 47 20 48 43 52 59 50 54 50 52 4f 56 2c 20 ONG HCRYPTPROV,
35a0: 48 43 52 59 50 54 4b 45 59 2c 20 48 43 52 59 50 HCRYPTKEY, HCRYP
35b0: 54 48 41 53 48 3b 0d 0a 61 6c 69 61 73 20 50 56 THASH;..alias PV
35c0: 4f 49 44 20 48 43 45 52 54 53 54 4f 52 45 2c 20 OID HCERTSTORE,
35d0: 48 43 52 59 50 54 4d 53 47 2c 20 48 43 45 52 54 HCRYPTMSG, HCERT
35e0: 43 48 41 49 4e 45 4e 47 49 4e 45 3b 0d 0a 0d 0a CHAINENGINE;....
35f0: 73 74 72 75 63 74 20 56 54 61 62 6c 65 50 72 6f struct VTablePro
3600: 76 53 74 72 75 63 20 7b 0d 0a 09 46 41 52 50 52 vStruc {...FARPR
3610: 4f 43 20 46 75 6e 63 56 65 72 69 66 79 49 6d 61 OC FuncVerifyIma
3620: 67 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 56 54 ge;..}..alias VT
3630: 61 62 6c 65 50 72 6f 76 53 74 72 75 63 2a 20 50 ableProvStruc* P
3640: 56 54 61 62 6c 65 50 72 6f 76 53 74 72 75 63 3b VTableProvStruc;
3650: 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 43 52 59 50 ....struct _CRYP
3660: 54 4f 41 50 49 5f 42 4c 4f 42 20 7b 0d 0a 09 44 TOAPI_BLOB {...D
3670: 57 4f 52 44 20 63 62 44 61 74 61 3b 0d 0a 09 42 WORD cbData;...B
3680: 59 54 45 2a 20 70 62 44 61 74 61 3b 0d 0a 7d 0d YTE* pbData;..}.
3690: 0a 61 6c 69 61 73 20 5f 43 52 59 50 54 4f 41 50 .alias _CRYPTOAP
36a0: 49 5f 42 4c 4f 42 20 43 52 59 50 54 5f 49 4e 54 I_BLOB CRYPT_INT
36b0: 45 47 45 52 5f 42 4c 4f 42 2c 20 43 52 59 50 54 EGER_BLOB, CRYPT
36c0: 5f 55 49 4e 54 5f 42 4c 4f 42 2c 0d 0a 20 20 43 _UINT_BLOB,.. C
36d0: 52 59 50 54 5f 4f 42 4a 49 44 5f 42 4c 4f 42 2c RYPT_OBJID_BLOB,
36e0: 20 43 45 52 54 5f 4e 41 4d 45 5f 42 4c 4f 42 2c CERT_NAME_BLOB,
36f0: 20 43 45 52 54 5f 52 44 4e 5f 56 41 4c 55 45 5f CERT_RDN_VALUE_
3700: 42 4c 4f 42 2c 20 43 45 52 54 5f 42 4c 4f 42 2c BLOB, CERT_BLOB,
3710: 0d 0a 20 20 43 52 4c 5f 42 4c 4f 42 2c 20 44 41 .. CRL_BLOB, DA
3720: 54 41 5f 42 4c 4f 42 2c 20 43 52 59 50 54 5f 44 TA_BLOB, CRYPT_D
3730: 41 54 41 5f 42 4c 4f 42 2c 20 43 52 59 50 54 5f ATA_BLOB, CRYPT_
3740: 48 41 53 48 5f 42 4c 4f 42 2c 0d 0a 20 20 43 52 HASH_BLOB,.. CR
3750: 59 50 54 5f 44 49 47 45 53 54 5f 42 4c 4f 42 2c YPT_DIGEST_BLOB,
3760: 20 43 52 59 50 54 5f 44 45 52 5f 42 4c 4f 42 2c CRYPT_DER_BLOB,
3770: 20 43 52 59 50 54 5f 41 54 54 52 5f 42 4c 4f 42 CRYPT_ATTR_BLOB
3780: 3b 0d 0a 61 6c 69 61 73 20 5f 43 52 59 50 54 4f ;..alias _CRYPTO
3790: 41 50 49 5f 42 4c 4f 42 2a 20 50 43 52 59 50 54 API_BLOB* PCRYPT
37a0: 5f 49 4e 54 45 47 45 52 5f 42 4c 4f 42 2c 20 50 _INTEGER_BLOB, P
37b0: 43 52 59 50 54 5f 55 49 4e 54 5f 42 4c 4f 42 2c CRYPT_UINT_BLOB,
37c0: 0d 0a 20 20 50 43 52 59 50 54 5f 4f 42 4a 49 44 .. PCRYPT_OBJID
37d0: 5f 42 4c 4f 42 2c 20 50 43 45 52 54 5f 4e 41 4d _BLOB, PCERT_NAM
37e0: 45 5f 42 4c 4f 42 2c 20 50 43 45 52 54 5f 52 44 E_BLOB, PCERT_RD
37f0: 4e 5f 56 41 4c 55 45 5f 42 4c 4f 42 2c 20 50 43 N_VALUE_BLOB, PC
3800: 45 52 54 5f 42 4c 4f 42 2c 0d 0a 20 20 50 43 52 ERT_BLOB,.. PCR
3810: 4c 5f 42 4c 4f 42 2c 20 50 44 41 54 41 5f 42 4c L_BLOB, PDATA_BL
3820: 4f 42 2c 20 50 43 52 59 50 54 5f 44 41 54 41 5f OB, PCRYPT_DATA_
3830: 42 4c 4f 42 2c 20 50 43 52 59 50 54 5f 48 41 53 BLOB, PCRYPT_HAS
3840: 48 5f 42 4c 4f 42 2c 0d 0a 20 20 50 43 52 59 50 H_BLOB,.. PCRYP
3850: 54 5f 44 49 47 45 53 54 5f 42 4c 4f 42 2c 20 50 T_DIGEST_BLOB, P
3860: 43 52 59 50 54 5f 44 45 52 5f 42 4c 4f 42 2c 20 CRYPT_DER_BLOB,
3870: 50 43 52 59 50 54 5f 41 54 54 52 5f 42 4c 4f 42 PCRYPT_ATTR_BLOB
3880: 3b 0d 0a 0d 0a 2f 2f 20 6e 6f 74 20 64 65 73 63 ;....// not desc
3890: 72 69 62 65 64 20 69 6e 20 53 44 4b 3b 20 68 61 ribed in SDK; ha
38a0: 73 20 74 68 65 20 73 61 6d 65 20 6c 61 79 6f 75 s the same layou
38b0: 74 20 61 73 20 48 54 54 50 53 50 6f 6c 69 63 79 t as HTTPSPolicy
38c0: 43 61 6c 6c 62 61 63 6b 44 61 74 61 0d 0a 73 74 CallbackData..st
38d0: 72 75 63 74 20 53 53 4c 5f 45 58 54 52 41 5f 43 ruct SSL_EXTRA_C
38e0: 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 ERT_CHAIN_POLICY
38f0: 5f 50 41 52 41 20 7b 0d 0a 09 44 57 4f 52 44 20 _PARA {...DWORD
3900: 20 63 62 53 74 72 75 63 74 3b 0d 0a 09 44 57 4f cbStruct;...DWO
3910: 52 44 20 20 64 77 41 75 74 68 54 79 70 65 3b 0d RD dwAuthType;.
3920: 0a 09 44 57 4f 52 44 20 20 66 64 77 43 68 65 63 ..DWORD fdwChec
3930: 6b 73 3b 0d 0a 09 4c 50 57 53 54 52 20 70 77 73 ks;...LPWSTR pws
3940: 7a 53 65 72 76 65 72 4e 61 6d 65 3b 0d 0a 7d 0d zServerName;..}.
3950: 0a 61 6c 69 61 73 20 53 53 4c 5f 45 58 54 52 41 .alias SSL_EXTRA
3960: 5f 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 _CERT_CHAIN_POLI
3970: 43 59 5f 50 41 52 41 20 48 54 54 50 53 50 6f 6c CY_PARA HTTPSPol
3980: 69 63 79 43 61 6c 6c 62 61 63 6b 44 61 74 61 3b icyCallbackData;
3990: 0d 0a 61 6c 69 61 73 20 53 53 4c 5f 45 58 54 52 ..alias SSL_EXTR
39a0: 41 5f 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c A_CERT_CHAIN_POL
39b0: 49 43 59 5f 50 41 52 41 2a 20 50 53 53 4c 5f 45 ICY_PARA* PSSL_E
39c0: 58 54 52 41 5f 43 45 52 54 5f 43 48 41 49 4e 5f XTRA_CERT_CHAIN_
39d0: 50 4f 4c 49 43 59 5f 50 41 52 41 2c 0d 0a 20 20 POLICY_PARA,..
39e0: 50 48 54 54 50 53 50 6f 6c 69 63 79 43 61 6c 6c PHTTPSPolicyCall
39f0: 62 61 63 6b 44 61 74 61 3b 0d 0a 0d 0a 2f 2a 20 backData;..../*
3a00: 23 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e #if (_WIN32_WINN
3a10: 54 3e 3d 30 78 35 30 30 29 20 2a 2f 0d 0a 73 74 T>=0x500) */..st
3a20: 72 75 63 74 20 43 45 52 54 5f 43 48 41 49 4e 5f ruct CERT_CHAIN_
3a30: 50 4f 4c 49 43 59 5f 50 41 52 41 20 7b 0d 0a 09 POLICY_PARA {...
3a40: 44 57 4f 52 44 20 63 62 53 69 7a 65 20 3d 20 43 DWORD cbSize = C
3a50: 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 ERT_CHAIN_POLICY
3a60: 5f 50 41 52 41 2e 73 69 7a 65 6f 66 3b 0d 0a 09 _PARA.sizeof;...
3a70: 44 57 4f 52 44 20 64 77 46 6c 61 67 73 3b 0d 0a DWORD dwFlags;..
3a80: 09 76 6f 69 64 2a 20 70 76 45 78 74 72 61 50 6f .void* pvExtraPo
3a90: 6c 69 63 79 50 61 72 61 3b 0d 0a 7d 0d 0a 61 6c licyPara;..}..al
3aa0: 69 61 73 20 43 45 52 54 5f 43 48 41 49 4e 5f 50 ias CERT_CHAIN_P
3ab0: 4f 4c 49 43 59 5f 50 41 52 41 2a 20 50 43 45 52 OLICY_PARA* PCER
3ac0: 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 50 T_CHAIN_POLICY_P
3ad0: 41 52 41 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 43 ARA;....struct C
3ae0: 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 59 ERT_CHAIN_POLICY
3af0: 5f 53 54 41 54 55 53 20 7b 0d 0a 09 44 57 4f 52 _STATUS {...DWOR
3b00: 44 20 63 62 53 69 7a 65 20 3d 20 43 45 52 54 5f D cbSize = CERT_
3b10: 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 53 54 41 CHAIN_POLICY_STA
3b20: 54 55 53 2e 73 69 7a 65 6f 66 3b 0d 0a 09 44 57 TUS.sizeof;...DW
3b30: 4f 52 44 20 64 77 45 72 72 6f 72 3b 0d 0a 09 4c ORD dwError;...L
3b40: 4f 4e 47 20 20 6c 43 68 61 69 6e 49 6e 64 65 78 ONG lChainIndex
3b50: 3b 0d 0a 09 4c 4f 4e 47 20 20 6c 45 6c 65 6d 65 ;...LONG lEleme
3b60: 6e 74 49 6e 64 65 78 3b 0d 0a 09 76 6f 69 64 2a ntIndex;...void*
3b70: 20 70 76 45 78 74 72 61 50 6f 6c 69 63 79 53 74 pvExtraPolicySt
3b80: 61 74 75 73 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 atus;..}..alias
3b90: 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 43 CERT_CHAIN_POLIC
3ba0: 59 5f 53 54 41 54 55 53 2a 20 50 43 45 52 54 5f Y_STATUS* PCERT_
3bb0: 43 48 41 49 4e 5f 50 4f 4c 49 43 59 5f 53 54 41 CHAIN_POLICY_STA
3bc0: 54 55 53 3b 0d 0a 2f 2a 20 23 65 6e 64 69 66 20 TUS;../* #endif
3bd0: 2a 2f 0d 0a 0d 0a 73 74 72 75 63 74 20 43 52 59 */....struct CRY
3be0: 50 54 5f 41 4c 47 4f 52 49 54 48 4d 5f 49 44 45 PT_ALGORITHM_IDE
3bf0: 4e 54 49 46 49 45 52 20 7b 0d 0a 09 4c 50 53 54 NTIFIER {...LPST
3c00: 52 20 70 73 7a 4f 62 6a 49 64 3b 0d 0a 09 43 52 R pszObjId;...CR
3c10: 59 50 54 5f 4f 42 4a 49 44 5f 42 4c 4f 42 20 50 YPT_OBJID_BLOB P
3c20: 61 72 61 6d 65 74 65 72 73 3b 0d 0a 7d 0d 0a 61 arameters;..}..a
3c30: 6c 69 61 73 20 43 52 59 50 54 5f 41 4c 47 4f 52 lias CRYPT_ALGOR
3c40: 49 54 48 4d 5f 49 44 45 4e 54 49 46 49 45 52 2a ITHM_IDENTIFIER*
3c50: 20 50 43 52 59 50 54 5f 41 4c 47 4f 52 49 54 48 PCRYPT_ALGORITH
3c60: 4d 5f 49 44 45 4e 54 49 46 49 45 52 3b 0d 0a 0d M_IDENTIFIER;...
3c70: 0a 73 74 72 75 63 74 20 43 52 59 50 54 5f 42 49 .struct CRYPT_BI
3c80: 54 5f 42 4c 4f 42 20 7b 0d 0a 09 44 57 4f 52 44 T_BLOB {...DWORD
3c90: 20 63 62 44 61 74 61 3b 0d 0a 09 42 59 54 45 2a cbData;...BYTE*
3ca0: 20 70 62 44 61 74 61 3b 0d 0a 09 44 57 4f 52 44 pbData;...DWORD
3cb0: 20 63 55 6e 75 73 65 64 42 69 74 73 3b 0d 0a 7d cUnusedBits;..}
3cc0: 0d 0a 61 6c 69 61 73 20 43 52 59 50 54 5f 42 49 ..alias CRYPT_BI
3cd0: 54 5f 42 4c 4f 42 2a 20 50 43 52 59 50 54 5f 42 T_BLOB* PCRYPT_B
3ce0: 49 54 5f 42 4c 4f 42 3b 0d 0a 0d 0a 73 74 72 75 IT_BLOB;....stru
3cf0: 63 74 20 43 45 52 54 5f 50 55 42 4c 49 43 5f 4b ct CERT_PUBLIC_K
3d00: 45 59 5f 49 4e 46 4f 20 7b 0d 0a 09 43 52 59 50 EY_INFO {...CRYP
3d10: 54 5f 41 4c 47 4f 52 49 54 48 4d 5f 49 44 45 4e T_ALGORITHM_IDEN
3d20: 54 49 46 49 45 52 20 41 6c 67 6f 72 69 74 68 6d TIFIER Algorithm
3d30: 3b 0d 0a 09 43 52 59 50 54 5f 42 49 54 5f 42 4c ;...CRYPT_BIT_BL
3d40: 4f 42 20 20 20 20 20 20 20 20 20 20 20 20 20 50 OB P
3d50: 75 62 6c 69 63 4b 65 79 3b 0d 0a 7d 0d 0a 61 6c ublicKey;..}..al
3d60: 69 61 73 20 43 45 52 54 5f 50 55 42 4c 49 43 5f ias CERT_PUBLIC_
3d70: 4b 45 59 5f 49 4e 46 4f 2a 20 50 43 45 52 54 5f KEY_INFO* PCERT_
3d80: 50 55 42 4c 49 43 5f 4b 45 59 5f 49 4e 46 4f 3b PUBLIC_KEY_INFO;
3d90: 0d 0a 0d 0a 73 74 72 75 63 74 20 43 45 52 54 5f ....struct CERT_
3da0: 45 58 54 45 4e 53 49 4f 4e 20 7b 0d 0a 09 4c 50 EXTENSION {...LP
3db0: 53 54 52 20 20 20 20 20 20 20 20 20 20 20 20 70 STR p
3dc0: 73 7a 4f 62 6a 49 64 3b 0d 0a 09 42 4f 4f 4c 20 szObjId;...BOOL
3dd0: 20 20 20 20 20 20 20 20 20 20 20 20 66 43 72 69 fCri
3de0: 74 69 63 61 6c 3b 0d 0a 09 43 52 59 50 54 5f 4f tical;...CRYPT_O
3df0: 42 4a 49 44 5f 42 4c 4f 42 20 56 61 6c 75 65 3b BJID_BLOB Value;
3e00: 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 45 52 54 5f ..}..alias CERT_
3e10: 45 58 54 45 4e 53 49 4f 4e 2a 20 50 43 45 52 54 EXTENSION* PCERT
3e20: 5f 45 58 54 45 4e 53 49 4f 4e 3b 0d 0a 0d 0a 73 _EXTENSION;....s
3e30: 74 72 75 63 74 20 43 45 52 54 5f 49 4e 46 4f 20 truct CERT_INFO
3e40: 7b 0d 0a 09 44 57 4f 52 44 20 64 77 56 65 72 73 {...DWORD dwVers
3e50: 69 6f 6e 3b 0d 0a 09 43 52 59 50 54 5f 49 4e 54 ion;...CRYPT_INT
3e60: 45 47 45 52 5f 42 4c 4f 42 20 53 65 72 69 61 6c EGER_BLOB Serial
3e70: 4e 75 6d 62 65 72 3b 0d 0a 09 43 52 59 50 54 5f Number;...CRYPT_
3e80: 41 4c 47 4f 52 49 54 48 4d 5f 49 44 45 4e 54 49 ALGORITHM_IDENTI
3e90: 46 49 45 52 20 53 69 67 6e 61 74 75 72 65 41 6c FIER SignatureAl
3ea0: 67 6f 72 69 74 68 6d 3b 0d 0a 09 43 45 52 54 5f gorithm;...CERT_
3eb0: 4e 41 4d 45 5f 42 4c 4f 42 20 49 73 73 75 65 72 NAME_BLOB Issuer
3ec0: 3b 0d 0a 09 46 49 4c 45 54 49 4d 45 20 4e 6f 74 ;...FILETIME Not
3ed0: 42 65 66 6f 72 65 3b 0d 0a 09 46 49 4c 45 54 49 Before;...FILETI
3ee0: 4d 45 20 4e 6f 74 41 66 74 65 72 3b 0d 0a 09 43 ME NotAfter;...C
3ef0: 45 52 54 5f 4e 41 4d 45 5f 42 4c 4f 42 20 53 75 ERT_NAME_BLOB Su
3f00: 62 6a 65 63 74 3b 0d 0a 09 43 45 52 54 5f 50 55 bject;...CERT_PU
3f10: 42 4c 49 43 5f 4b 45 59 5f 49 4e 46 4f 20 53 75 BLIC_KEY_INFO Su
3f20: 62 6a 65 63 74 50 75 62 6c 69 63 4b 65 79 49 6e bjectPublicKeyIn
3f30: 66 6f 3b 0d 0a 09 43 52 59 50 54 5f 42 49 54 5f fo;...CRYPT_BIT_
3f40: 42 4c 4f 42 20 49 73 73 75 65 72 55 6e 69 71 75 BLOB IssuerUniqu
3f50: 65 49 64 3b 0d 0a 09 43 52 59 50 54 5f 42 49 54 eId;...CRYPT_BIT
3f60: 5f 42 4c 4f 42 20 53 75 62 6a 65 63 74 55 6e 69 _BLOB SubjectUni
3f70: 71 75 65 49 64 3b 0d 0a 09 44 57 4f 52 44 20 63 queId;...DWORD c
3f80: 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 09 50 43 45 Extension;...PCE
3f90: 52 54 5f 45 58 54 45 4e 53 49 4f 4e 20 72 67 45 RT_EXTENSION rgE
3fa0: 78 74 65 6e 73 69 6f 6e 3b 0d 0a 7d 0d 0a 61 6c xtension;..}..al
3fb0: 69 61 73 20 43 45 52 54 5f 49 4e 46 4f 2a 20 50 ias CERT_INFO* P
3fc0: 43 45 52 54 5f 49 4e 46 4f 3b 0d 0a 0d 0a 73 74 CERT_INFO;....st
3fd0: 72 75 63 74 20 43 45 52 54 5f 43 4f 4e 54 45 58 ruct CERT_CONTEX
3fe0: 54 20 7b 0d 0a 09 44 57 4f 52 44 20 20 20 20 20 T {...DWORD
3ff0: 20 64 77 43 65 72 74 45 6e 63 6f 64 69 6e 67 54 dwCertEncodingT
4000: 79 70 65 3b 0d 0a 09 42 59 54 45 2a 20 20 20 20 ype;...BYTE*
4010: 20 20 70 62 43 65 72 74 45 6e 63 6f 64 65 64 3b pbCertEncoded;
4020: 0d 0a 09 44 57 4f 52 44 20 20 20 20 20 20 63 62 ...DWORD cb
4030: 43 65 72 74 45 6e 63 6f 64 65 64 3b 0d 0a 09 50 CertEncoded;...P
4040: 43 45 52 54 5f 49 4e 46 4f 20 70 43 65 72 74 49 CERT_INFO pCertI
4050: 6e 66 6f 3b 0d 0a 09 48 43 45 52 54 53 54 4f 52 nfo;...HCERTSTOR
4060: 45 20 68 43 65 72 74 53 74 6f 72 65 3b 0d 0a 7d E hCertStore;..}
4070: 0d 0a 61 6c 69 61 73 20 43 45 52 54 5f 43 4f 4e ..alias CERT_CON
4080: 54 45 58 54 2a 20 20 20 20 20 20 20 20 50 43 45 TEXT* PCE
4090: 52 54 5f 43 4f 4e 54 45 58 54 3b 0d 0a 61 6c 69 RT_CONTEXT;..ali
40a0: 61 73 20 63 6f 6e 73 74 28 43 45 52 54 5f 43 4f as const(CERT_CO
40b0: 4e 54 45 58 54 29 2a 20 50 43 43 45 52 54 5f 43 NTEXT)* PCCERT_C
40c0: 4f 4e 54 45 58 54 3b 0d 0a 0d 0a 73 74 72 75 63 ONTEXT;....struc
40d0: 74 20 43 54 4c 5f 55 53 41 47 45 20 7b 0d 0a 09 t CTL_USAGE {...
40e0: 44 57 4f 52 44 20 20 63 55 73 61 67 65 49 64 65 DWORD cUsageIde
40f0: 6e 74 69 66 69 65 72 3b 0d 0a 09 4c 50 53 54 52 ntifier;...LPSTR
4100: 2a 20 72 67 70 73 7a 55 73 61 67 65 49 64 65 6e * rgpszUsageIden
4110: 74 69 66 69 65 72 3b 0d 0a 7d 0d 0a 61 6c 69 61 tifier;..}..alia
4120: 73 20 43 54 4c 5f 55 53 41 47 45 20 43 45 52 54 s CTL_USAGE CERT
4130: 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 3b 0d 0a _ENHKEY_USAGE;..
4140: 61 6c 69 61 73 20 43 54 4c 5f 55 53 41 47 45 2a alias CTL_USAGE*
4150: 20 50 43 54 52 4c 5f 55 53 41 47 45 2c 20 50 43 PCTRL_USAGE, PC
4160: 45 52 54 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 ERT_ENHKEY_USAGE
4170: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 43 45 52 54 ;....struct CERT
4180: 5f 55 53 41 47 45 5f 4d 41 54 43 48 20 7b 0d 0a _USAGE_MATCH {..
4190: 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 .DWORD
41a0: 20 20 20 64 77 54 79 70 65 3b 0d 0a 09 43 45 52 dwType;...CER
41b0: 54 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 20 55 T_ENHKEY_USAGE U
41c0: 73 61 67 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 sage;..}..alias
41d0: 43 45 52 54 5f 55 53 41 47 45 5f 4d 41 54 43 48 CERT_USAGE_MATCH
41e0: 2a 20 50 43 45 52 54 5f 55 53 41 47 45 5f 4d 41 * PCERT_USAGE_MA
41f0: 54 43 48 3b 0d 0a 2f 2a 20 23 69 66 20 28 5f 57 TCH;../* #if (_W
4200: 49 4e 33 32 5f 57 49 4e 4e 54 3e 3d 30 78 35 30 IN32_WINNT>=0x50
4210: 30 29 20 2a 2f 0d 0a 0d 0a 73 74 72 75 63 74 20 0) */....struct
4220: 43 45 52 54 5f 43 48 41 49 4e 5f 50 41 52 41 20 CERT_CHAIN_PARA
4230: 7b 0d 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 {...DWORD
4240: 20 20 20 20 20 63 62 53 69 7a 65 20 3d 20 43 45 cbSize = CE
4250: 52 54 5f 43 48 41 49 4e 5f 50 41 52 41 2e 73 69 RT_CHAIN_PARA.si
4260: 7a 65 6f 66 3b 0d 0a 09 43 45 52 54 5f 55 53 41 zeof;...CERT_USA
4270: 47 45 5f 4d 41 54 43 48 20 52 65 71 75 65 73 74 GE_MATCH Request
4280: 65 64 55 73 61 67 65 3b 0d 0a 2f 2f 23 69 66 20 edUsage;..//#if
4290: 43 45 52 54 5f 43 48 41 49 4e 5f 50 41 52 41 5f CERT_CHAIN_PARA_
42a0: 48 41 53 5f 45 58 54 52 41 5f 46 49 45 4c 44 53 HAS_EXTRA_FIELDS
42b0: 0d 0a 09 43 45 52 54 5f 55 53 41 47 45 5f 4d 41 ...CERT_USAGE_MA
42c0: 54 43 48 20 52 65 71 75 65 73 74 65 64 49 73 73 TCH RequestedIss
42d0: 75 61 6e 63 65 50 6f 6c 69 63 79 3b 0d 0a 09 44 uancePolicy;...D
42e0: 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 20 20 WORD
42f0: 64 77 55 72 6c 52 65 74 72 69 65 76 61 6c 54 69 dwUrlRetrievalTi
4300: 6d 65 6f 75 74 3b 0d 0a 09 42 4f 4f 4c 20 20 20 meout;...BOOL
4310: 20 20 20 20 20 20 20 20 20 20 66 43 68 65 63 6b fCheck
4320: 52 65 76 6f 63 61 74 69 6f 6e 46 72 65 73 68 6e RevocationFreshn
4330: 65 73 73 54 69 6d 65 3b 0d 0a 09 44 57 4f 52 44 essTime;...DWORD
4340: 20 20 20 20 20 20 20 20 20 20 20 20 64 77 52 65 dwRe
4350: 76 6f 63 61 74 69 6f 6e 46 72 65 73 68 6e 65 73 vocationFreshnes
4360: 73 54 69 6d 65 3b 0d 0a 2f 2f 23 65 6e 64 69 66 sTime;..//#endif
4370: 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 45 52 54 5f ..}..alias CERT_
4380: 43 48 41 49 4e 5f 50 41 52 41 2a 20 50 43 45 52 CHAIN_PARA* PCER
4390: 54 5f 43 48 41 49 4e 5f 50 41 52 41 3b 0d 0a 0d T_CHAIN_PARA;...
43a0: 0a 65 78 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 .extern (Windows
43b0: 29 20 61 6c 69 61 73 20 42 4f 4f 4c 20 66 75 6e ) alias BOOL fun
43c0: 63 74 69 6f 6e 28 50 43 43 45 52 54 5f 43 4f 4e ction(PCCERT_CON
43d0: 54 45 58 54 2c 20 76 6f 69 64 2a 29 0d 0a 20 20 TEXT, void*)..
43e0: 50 46 4e 5f 43 45 52 54 5f 43 48 41 49 4e 5f 46 PFN_CERT_CHAIN_F
43f0: 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f 43 41 IND_BY_ISSUER_CA
4400: 4c 4c 42 41 43 4b 3b 0d 0a 0d 0a 73 74 72 75 63 LLBACK;....struc
4410: 74 20 43 45 52 54 5f 43 48 41 49 4e 5f 46 49 4e t CERT_CHAIN_FIN
4420: 44 5f 42 59 5f 49 53 53 55 45 52 5f 50 41 52 41 D_BY_ISSUER_PARA
4430: 20 7b 0d 0a 09 44 57 4f 52 44 20 20 63 62 53 69 {...DWORD cbSi
4440: 7a 65 20 3d 20 43 45 52 54 5f 43 48 41 49 4e 5f ze = CERT_CHAIN_
4450: 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f 50 FIND_BY_ISSUER_P
4460: 41 52 41 2e 73 69 7a 65 6f 66 3b 0d 0a 09 4c 50 ARA.sizeof;...LP
4470: 43 53 54 52 20 70 73 7a 55 73 61 67 65 49 64 65 CSTR pszUsageIde
4480: 6e 74 69 66 69 65 72 3b 0d 0a 09 44 57 4f 52 44 ntifier;...DWORD
4490: 20 20 64 77 4b 65 79 53 70 65 63 3b 0d 0a 09 44 dwKeySpec;...D
44a0: 57 4f 52 44 20 20 64 77 41 63 71 75 69 72 65 50 WORD dwAcquireP
44b0: 72 69 76 61 74 65 4b 65 79 46 6c 61 67 73 3b 0d rivateKeyFlags;.
44c0: 0a 09 44 57 4f 52 44 20 20 63 49 73 73 75 65 72 ..DWORD cIssuer
44d0: 3b 0d 0a 09 43 45 52 54 5f 4e 41 4d 45 5f 42 4c ;...CERT_NAME_BL
44e0: 4f 42 2a 20 72 67 49 73 73 75 65 72 3b 0d 0a 09 OB* rgIssuer;...
44f0: 50 46 4e 5f 43 45 52 54 5f 43 48 41 49 4e 5f 46 PFN_CERT_CHAIN_F
4500: 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f 43 41 IND_BY_ISSUER_CA
4510: 4c 4c 42 41 43 4b 20 70 66 6e 46 49 6e 64 43 61 LLBACK pfnFIndCa
4520: 6c 6c 62 61 63 6b 3b 0d 0a 09 76 6f 69 64 2a 20 llback;...void*
4530: 20 70 76 46 69 6e 64 41 72 67 3b 0d 0a 09 44 57 pvFindArg;...DW
4540: 4f 52 44 2a 20 70 64 77 49 73 73 75 65 72 43 68 ORD* pdwIssuerCh
4550: 61 69 6e 49 6e 64 65 78 3b 0d 0a 09 44 57 4f 52 ainIndex;...DWOR
4560: 44 2a 20 70 64 77 49 73 73 75 65 72 45 6c 65 6d D* pdwIssuerElem
4570: 65 6e 74 49 6e 64 65 78 3b 0d 0a 7d 0d 0a 61 6c entIndex;..}..al
4580: 69 61 73 20 43 45 52 54 5f 43 48 41 49 4e 5f 46 ias CERT_CHAIN_F
4590: 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f 50 41 IND_BY_ISSUER_PA
45a0: 52 41 2a 20 50 43 45 52 54 5f 43 48 41 49 4e 5f RA* PCERT_CHAIN_
45b0: 46 49 4e 44 5f 42 59 5f 49 53 53 55 45 52 5f 50 FIND_BY_ISSUER_P
45c0: 41 52 41 3b 0d 0a 2f 2a 20 23 65 6e 64 69 66 20 ARA;../* #endif
45d0: 2a 2f 0d 0a 0d 0a 73 74 72 75 63 74 20 43 45 52 */....struct CER
45e0: 54 5f 54 52 55 53 54 5f 53 54 41 54 55 53 20 7b T_TRUST_STATUS {
45f0: 0d 0a 09 44 57 4f 52 44 20 64 77 45 72 72 6f 72 ...DWORD dwError
4600: 53 74 61 74 75 73 3b 0d 0a 09 44 57 4f 52 44 20 Status;...DWORD
4610: 64 77 49 6e 66 6f 53 74 61 74 75 73 3b 0d 0a 7d dwInfoStatus;..}
4620: 0d 0a 61 6c 69 61 73 20 43 45 52 54 5f 54 52 55 ..alias CERT_TRU
4630: 53 54 5f 53 54 41 54 55 53 2a 20 50 43 45 52 54 ST_STATUS* PCERT
4640: 5f 54 52 55 53 54 5f 53 54 41 54 55 53 3b 0d 0a _TRUST_STATUS;..
4650: 0d 0a 73 74 72 75 63 74 20 43 52 4c 5f 45 4e 54 ..struct CRL_ENT
4660: 52 59 20 7b 0d 0a 09 43 52 59 50 54 5f 49 4e 54 RY {...CRYPT_INT
4670: 45 47 45 52 5f 42 4c 4f 42 20 53 65 72 69 61 6c EGER_BLOB Serial
4680: 4e 75 6d 62 65 72 3b 0d 0a 09 46 49 4c 45 54 49 Number;...FILETI
4690: 4d 45 20 20 20 20 20 20 20 20 20 20 20 52 65 76 ME Rev
46a0: 6f 63 61 74 69 6f 6e 44 61 74 65 3b 0d 0a 09 44 ocationDate;...D
46b0: 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 20 20 WORD
46c0: 20 20 63 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 09 cExtension;...
46d0: 50 43 45 52 54 5f 45 58 54 45 4e 53 49 4f 4e 20 PCERT_EXTENSION
46e0: 20 20 20 72 67 45 78 74 65 6e 73 69 6f 6e 3b 0d rgExtension;.
46f0: 0a 7d 0d 0a 61 6c 69 61 73 20 43 52 4c 5f 45 4e .}..alias CRL_EN
4700: 54 52 59 2a 20 50 43 52 4c 5f 45 4e 54 52 59 3b TRY* PCRL_ENTRY;
4710: 0d 0a 0d 0a 73 74 72 75 63 74 20 43 52 4c 5f 49 ....struct CRL_I
4720: 4e 46 4f 20 7b 0d 0a 09 44 57 4f 52 44 20 20 20 NFO {...DWORD
4730: 20 20 20 20 20 20 20 20 64 77 56 65 72 73 69 6f dwVersio
4740: 6e 3b 0d 0a 09 43 52 59 50 54 5f 41 4c 47 4f 52 n;...CRYPT_ALGOR
4750: 49 54 48 4d 5f 49 44 45 4e 54 49 46 49 45 52 20 ITHM_IDENTIFIER
4760: 53 69 67 6e 61 74 75 72 65 41 6c 67 6f 72 69 74 SignatureAlgorit
4770: 68 6d 3b 0d 0a 09 43 45 52 54 5f 4e 41 4d 45 5f hm;...CERT_NAME_
4780: 42 4c 4f 42 20 20 49 73 73 75 65 72 3b 0d 0a 09 BLOB Issuer;...
4790: 46 49 4c 45 54 49 4d 45 20 20 20 20 20 20 20 20 FILETIME
47a0: 54 68 69 73 55 70 64 61 74 65 3b 0d 0a 09 46 49 ThisUpdate;...FI
47b0: 4c 45 54 49 4d 45 20 20 20 20 20 20 20 20 4e 65 LETIME Ne
47c0: 78 74 55 70 64 61 74 65 3b 0d 0a 09 44 57 4f 52 xtUpdate;...DWOR
47d0: 44 20 20 20 20 20 20 20 20 20 20 20 63 43 52 4c D cCRL
47e0: 45 6e 74 72 79 3b 0d 0a 09 50 43 52 4c 5f 45 4e Entry;...PCRL_EN
47f0: 54 52 59 20 20 20 20 20 20 72 67 43 52 4c 45 6e TRY rgCRLEn
4800: 74 72 79 3b 0d 0a 09 44 57 4f 52 44 20 20 20 20 try;...DWORD
4810: 20 20 20 20 20 20 20 63 45 78 74 65 6e 73 69 6f cExtensio
4820: 6e 3b 0d 0a 09 50 43 45 52 54 5f 45 58 54 45 4e n;...PCERT_EXTEN
4830: 53 49 4f 4e 20 72 67 45 78 74 65 6e 73 69 6f 6e SION rgExtension
4840: 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 52 4c 5f ;..}..alias CRL_
4850: 49 4e 46 4f 2a 20 50 43 52 4c 5f 49 4e 46 4f 3b INFO* PCRL_INFO;
4860: 0d 0a 0d 0a 73 74 72 75 63 74 20 43 52 4c 5f 43 ....struct CRL_C
4870: 4f 4e 54 45 58 54 20 7b 0d 0a 09 44 57 4f 52 44 ONTEXT {...DWORD
4880: 20 20 20 20 20 20 64 77 43 65 72 74 45 6e 63 6f dwCertEnco
4890: 64 69 6e 67 54 79 70 65 3b 0d 0a 09 42 59 54 45 dingType;...BYTE
48a0: 2a 20 20 20 20 20 20 70 62 43 72 6c 45 6e 63 6f * pbCrlEnco
48b0: 64 65 64 3b 0d 0a 09 44 57 4f 52 44 20 20 20 20 ded;...DWORD
48c0: 20 20 63 62 43 72 6c 45 6e 63 6f 64 65 64 3b 0d cbCrlEncoded;.
48d0: 0a 09 50 43 52 4c 5f 49 4e 46 4f 20 20 70 43 72 ..PCRL_INFO pCr
48e0: 6c 49 6e 66 6f 3b 0d 0a 09 48 43 45 52 54 53 54 lInfo;...HCERTST
48f0: 4f 52 45 20 68 43 65 72 74 53 74 6f 72 65 3b 0d ORE hCertStore;.
4900: 0a 7d 0d 0a 61 6c 69 61 73 20 43 52 4c 5f 43 4f .}..alias CRL_CO
4910: 4e 54 45 58 54 2a 20 20 20 20 20 20 20 20 50 43 NTEXT* PC
4920: 52 4c 5f 43 4f 4e 54 45 58 54 3b 0d 0a 61 6c 69 RL_CONTEXT;..ali
4930: 61 73 20 63 6f 6e 73 74 28 43 52 4c 5f 43 4f 4e as const(CRL_CON
4940: 54 45 58 54 29 2a 20 50 43 43 52 4c 5f 43 4f 4e TEXT)* PCCRL_CON
4950: 54 45 58 54 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 TEXT;....struct
4960: 43 45 52 54 5f 52 45 56 4f 43 41 54 49 4f 4e 5f CERT_REVOCATION_
4970: 43 52 4c 5f 49 4e 46 4f 20 7b 0d 0a 09 44 57 4f CRL_INFO {...DWO
4980: 52 44 20 20 20 20 20 20 20 20 20 63 62 53 69 7a RD cbSiz
4990: 65 20 3d 20 43 45 52 54 5f 52 45 56 4f 43 41 54 e = CERT_REVOCAT
49a0: 49 4f 4e 5f 43 52 4c 5f 49 4e 46 4f 2e 73 69 7a ION_CRL_INFO.siz
49b0: 65 6f 66 3b 0d 0a 09 50 43 43 52 4c 5f 43 4f 4e eof;...PCCRL_CON
49c0: 54 45 58 54 20 70 42 61 73 65 43 52 4c 43 6f 6e TEXT pBaseCRLCon
49d0: 74 65 78 74 3b 0d 0a 09 50 43 43 52 4c 5f 43 4f text;...PCCRL_CO
49e0: 4e 54 45 58 54 20 70 44 65 6c 74 61 43 52 4c 43 NTEXT pDeltaCRLC
49f0: 6f 6e 74 65 78 74 3b 0d 0a 09 50 43 52 4c 5f 45 ontext;...PCRL_E
4a00: 4e 54 52 59 20 20 20 20 70 43 72 6c 45 6e 74 72 NTRY pCrlEntr
4a10: 79 3b 0d 0a 09 42 4f 4f 4c 20 20 20 20 20 20 20 y;...BOOL
4a20: 20 20 20 66 44 65 6c 74 61 43 72 6c 45 6e 74 72 fDeltaCrlEntr
4a30: 79 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 45 52 y;..}..alias CER
4a40: 54 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 43 52 4c T_REVOCATION_CRL
4a50: 5f 49 4e 46 4f 2a 20 50 43 45 52 54 5f 52 45 56 _INFO* PCERT_REV
4a60: 4f 43 41 54 49 4f 4e 5f 43 52 4c 5f 49 4e 46 4f OCATION_CRL_INFO
4a70: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 43 45 52 54 ;....struct CERT
4a80: 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 49 4e 46 4f _REVOCATION_INFO
4a90: 20 7b 0d 0a 09 44 57 4f 52 44 20 20 63 62 53 69 {...DWORD cbSi
4aa0: 7a 65 20 3d 20 43 45 52 54 5f 52 45 56 4f 43 41 ze = CERT_REVOCA
4ab0: 54 49 4f 4e 5f 49 4e 46 4f 2e 73 69 7a 65 6f 66 TION_INFO.sizeof
4ac0: 3b 0d 0a 09 44 57 4f 52 44 20 20 64 77 52 65 76 ;...DWORD dwRev
4ad0: 6f 63 61 74 69 6f 6e 52 65 73 75 6c 74 3b 0d 0a ocationResult;..
4ae0: 09 4c 50 43 53 54 52 20 70 73 7a 52 65 76 6f 63 .LPCSTR pszRevoc
4af0: 61 74 69 6f 6e 4f 69 64 3b 0d 0a 09 4c 50 56 4f ationOid;...LPVO
4b00: 49 44 20 70 76 4f 69 64 53 70 65 63 69 66 69 63 ID pvOidSpecific
4b10: 49 6e 66 6f 3b 0d 0a 09 42 4f 4f 4c 20 20 20 66 Info;...BOOL f
4b20: 48 61 73 46 72 65 73 68 6e 65 73 73 54 69 6d 65 HasFreshnessTime
4b30: 3b 0d 0a 09 44 57 4f 52 44 20 20 64 77 46 72 65 ;...DWORD dwFre
4b40: 73 68 6e 65 73 73 54 69 6d 65 3b 0d 0a 09 50 43 shnessTime;...PC
4b50: 45 52 54 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 43 ERT_REVOCATION_C
4b60: 52 4c 5f 49 4e 46 4f 20 70 43 72 6c 49 6e 66 6f RL_INFO pCrlInfo
4b70: 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 45 52 54 ;..}..alias CERT
4b80: 5f 52 45 56 4f 43 41 54 49 4f 4e 5f 49 4e 46 4f _REVOCATION_INFO
4b90: 2a 20 50 43 45 52 54 5f 52 45 56 4f 43 41 54 49 * PCERT_REVOCATI
4ba0: 4f 4e 5f 49 4e 46 4f 3b 0d 0a 0d 0a 2f 2a 20 23 ON_INFO;..../* #
4bb0: 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 if (_WIN32_WINNT
4bc0: 3e 3d 30 78 35 30 30 29 20 2a 2f 0d 0a 73 74 72 >=0x500) */..str
4bd0: 75 63 74 20 43 45 52 54 5f 43 48 41 49 4e 5f 45 uct CERT_CHAIN_E
4be0: 4c 45 4d 45 4e 54 20 7b 0d 0a 09 44 57 4f 52 44 LEMENT {...DWORD
4bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4c00: 20 63 62 53 69 7a 65 20 3d 20 43 45 52 54 5f 43 cbSize = CERT_C
4c10: 48 41 49 4e 5f 45 4c 45 4d 45 4e 54 2e 73 69 7a HAIN_ELEMENT.siz
4c20: 65 6f 66 3b 0d 0a 09 50 43 43 45 52 54 5f 43 4f eof;...PCCERT_CO
4c30: 4e 54 45 58 54 20 20 20 20 20 20 20 20 70 43 65 NTEXT pCe
4c40: 72 74 43 6f 6e 74 65 78 74 3b 0d 0a 09 43 45 52 rtContext;...CER
4c50: 54 5f 54 52 55 53 54 5f 53 54 41 54 55 53 20 20 T_TRUST_STATUS
4c60: 20 20 20 54 72 75 73 74 53 74 61 74 75 73 3b 0d TrustStatus;.
4c70: 0a 09 50 43 45 52 54 5f 52 45 56 4f 43 41 54 49 ..PCERT_REVOCATI
4c80: 4f 4e 5f 49 4e 46 4f 20 70 52 65 76 6f 63 61 74 ON_INFO pRevocat
4c90: 69 6f 6e 49 6e 66 6f 3b 0d 0a 09 50 43 45 52 54 ionInfo;...PCERT
4ca0: 5f 45 4e 48 4b 45 59 5f 55 53 41 47 45 20 20 20 _ENHKEY_USAGE
4cb0: 20 70 49 73 73 75 61 6e 63 65 55 73 61 67 65 3b pIssuanceUsage;
4cc0: 0d 0a 09 50 43 45 52 54 5f 45 4e 48 4b 45 59 5f ...PCERT_ENHKEY_
4cd0: 55 53 41 47 45 20 20 20 20 70 41 70 70 6c 69 63 USAGE pApplic
4ce0: 61 74 69 6f 6e 55 73 61 67 65 3b 0d 0a 7d 0d 0a ationUsage;..}..
4cf0: 61 6c 69 61 73 20 43 45 52 54 5f 43 48 41 49 4e alias CERT_CHAIN
4d00: 5f 45 4c 45 4d 45 4e 54 2a 20 50 43 45 52 54 5f _ELEMENT* PCERT_
4d10: 43 48 41 49 4e 5f 45 4c 45 4d 45 4e 54 3b 0d 0a CHAIN_ELEMENT;..
4d20: 2f 2a 20 23 65 6e 64 69 66 20 2a 2f 0d 0a 0d 0a /* #endif */....
4d30: 73 74 72 75 63 74 20 43 52 59 50 54 5f 41 54 54 struct CRYPT_ATT
4d40: 52 49 42 55 54 45 20 7b 0d 0a 09 4c 50 53 54 52 RIBUTE {...LPSTR
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 70 73 7a 4f pszO
4d60: 62 6a 49 64 3b 0d 0a 09 44 57 4f 52 44 20 20 20 bjId;...DWORD
4d70: 20 20 20 20 20 20 20 20 20 63 56 61 6c 75 65 3b cValue;
4d80: 0d 0a 09 50 43 52 59 50 54 5f 41 54 54 52 5f 42 ...PCRYPT_ATTR_B
4d90: 4c 4f 42 20 72 67 56 61 6c 75 65 3b 0d 0a 7d 0d LOB rgValue;..}.
4da0: 0a 61 6c 69 61 73 20 43 52 59 50 54 5f 41 54 54 .alias CRYPT_ATT
4db0: 52 49 42 55 54 45 2a 20 50 43 52 59 50 54 5f 41 RIBUTE* PCRYPT_A
4dc0: 54 54 52 49 42 55 54 45 3b 0d 0a 0d 0a 73 74 72 TTRIBUTE;....str
4dd0: 75 63 74 20 43 54 4c 5f 45 4e 54 52 59 20 7b 0d uct CTL_ENTRY {.
4de0: 0a 09 43 52 59 50 54 5f 44 41 54 41 5f 42 4c 4f ..CRYPT_DATA_BLO
4df0: 42 20 20 53 75 62 6a 65 63 74 49 64 65 6e 74 69 B SubjectIdenti
4e00: 66 69 65 72 3b 0d 0a 09 44 57 4f 52 44 20 20 20 fier;...DWORD
4e10: 20 20 20 20 20 20 20 20 20 63 41 74 74 72 69 62 cAttrib
4e20: 75 74 65 3b 0d 0a 09 50 43 52 59 50 54 5f 41 54 ute;...PCRYPT_AT
4e30: 54 52 49 42 55 54 45 20 72 67 41 74 74 72 69 62 TRIBUTE rgAttrib
4e40: 75 74 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 ute;..}..alias C
4e50: 54 4c 5f 45 4e 54 52 59 2a 20 50 43 54 4c 5f 45 TL_ENTRY* PCTL_E
4e60: 4e 54 52 59 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 NTRY;....struct
4e70: 43 54 4c 5f 49 4e 46 4f 20 7b 0d 0a 09 44 57 4f CTL_INFO {...DWO
4e80: 52 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RD
4e90: 64 77 56 65 72 73 69 6f 6e 3b 0d 0a 09 43 54 4c dwVersion;...CTL
4ea0: 5f 55 53 41 47 45 20 20 20 20 20 20 20 20 20 20 _USAGE
4eb0: 53 75 62 6a 65 63 74 55 73 61 67 65 3b 0d 0a 09 SubjectUsage;...
4ec0: 43 52 59 50 54 5f 44 41 54 41 5f 42 4c 4f 42 20 CRYPT_DATA_BLOB
4ed0: 20 20 20 4c 69 73 74 49 64 65 6e 74 69 66 69 65 ListIdentifie
4ee0: 72 3b 0d 0a 09 43 52 59 50 54 5f 49 4e 54 45 47 r;...CRYPT_INTEG
4ef0: 45 52 5f 42 4c 4f 42 20 53 65 71 75 65 6e 63 65 ER_BLOB Sequence
4f00: 4e 75 6d 62 65 72 3b 0d 0a 09 46 49 4c 45 54 49 Number;...FILETI
4f10: 4d 45 20 20 20 20 20 20 20 20 20 20 20 54 68 69 ME Thi
4f20: 73 55 70 64 61 74 65 3b 0d 0a 09 46 49 4c 45 54 sUpdate;...FILET
4f30: 49 4d 45 20 20 20 20 20 20 20 20 20 20 20 4e 65 IME Ne
4f40: 78 74 55 70 64 61 74 65 3b 0d 0a 09 43 52 59 50 xtUpdate;...CRYP
4f50: 54 5f 41 4c 47 4f 52 49 54 48 4d 5f 49 44 45 4e T_ALGORITHM_IDEN
4f60: 54 49 46 49 45 52 20 53 75 62 6a 65 63 74 41 6c TIFIER SubjectAl
4f70: 67 6f 72 69 74 68 6d 3b 0d 0a 09 44 57 4f 52 44 gorithm;...DWORD
4f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 43 cC
4f90: 54 4c 45 6e 74 72 79 3b 0d 0a 09 50 43 54 4c 5f TLEntry;...PCTL_
4fa0: 45 4e 54 52 59 20 20 20 20 20 20 20 20 20 72 67 ENTRY rg
4fb0: 43 54 4c 45 6e 74 72 79 3b 0d 0a 09 44 57 4f 52 CTLEntry;...DWOR
4fc0: 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 D c
4fd0: 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 09 50 43 45 Extension;...PCE
4fe0: 52 54 5f 45 58 54 45 4e 53 49 4f 4e 20 20 20 20 RT_EXTENSION
4ff0: 72 67 45 78 74 65 6e 73 69 6f 6e 3b 0d 0a 7d 0d rgExtension;..}.
5000: 0a 61 6c 69 61 73 20 43 54 4c 5f 49 4e 46 4f 2a .alias CTL_INFO*
5010: 20 50 43 54 4c 5f 49 4e 46 4f 3b 0d 0a 0d 0a 73 PCTL_INFO;....s
5020: 74 72 75 63 74 20 43 54 4c 5f 43 4f 4e 54 45 58 truct CTL_CONTEX
5030: 54 20 7b 0d 0a 09 44 57 4f 52 44 20 20 20 20 20 T {...DWORD
5040: 20 64 77 4d 73 67 41 6e 64 43 65 72 74 45 6e 63 dwMsgAndCertEnc
5050: 6f 64 69 6e 67 54 79 70 65 3b 0d 0a 09 42 59 54 odingType;...BYT
5060: 45 2a 20 20 20 20 20 20 70 62 43 74 6c 45 6e 63 E* pbCtlEnc
5070: 6f 64 65 64 3b 0d 0a 09 44 57 4f 52 44 20 20 20 oded;...DWORD
5080: 20 20 20 63 62 43 74 6c 45 6e 63 6f 64 65 64 3b cbCtlEncoded;
5090: 0d 0a 09 50 43 54 4c 5f 49 4e 46 4f 20 20 70 43 ...PCTL_INFO pC
50a0: 74 6c 49 6e 66 6f 3b 0d 0a 09 48 43 45 52 54 53 tlInfo;...HCERTS
50b0: 54 4f 52 45 20 68 43 65 72 74 53 74 6f 72 65 3b TORE hCertStore;
50c0: 0d 0a 09 48 43 52 59 50 54 4d 53 47 20 20 68 43 ...HCRYPTMSG hC
50d0: 72 79 70 74 4d 73 67 3b 0d 0a 09 42 59 54 45 2a ryptMsg;...BYTE*
50e0: 20 20 20 20 20 20 70 62 43 74 6c 43 6f 6e 74 65 pbCtlConte
50f0: 6e 74 3b 0d 0a 09 44 57 4f 52 44 20 20 20 20 20 nt;...DWORD
5100: 20 63 62 43 74 6c 43 6f 6e 74 65 6e 74 3b 0d 0a cbCtlContent;..
5110: 7d 0d 0a 61 6c 69 61 73 20 43 54 4c 5f 43 4f 4e }..alias CTL_CON
5120: 54 45 58 54 2a 20 20 20 20 20 20 20 20 50 43 54 TEXT* PCT
5130: 4c 5f 43 4f 4e 54 45 58 54 3b 0d 0a 61 6c 69 61 L_CONTEXT;..alia
5140: 73 20 63 6f 6e 73 74 28 43 54 4c 5f 43 4f 4e 54 s const(CTL_CONT
5150: 45 58 54 29 2a 20 50 43 43 54 4c 5f 43 4f 4e 54 EXT)* PCCTL_CONT
5160: 45 58 54 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 43 EXT;....struct C
5170: 45 52 54 5f 54 52 55 53 54 5f 4c 49 53 54 5f 49 ERT_TRUST_LIST_I
5180: 4e 46 4f 20 7b 0d 0a 09 44 57 4f 52 44 20 20 20 NFO {...DWORD
5190: 20 20 20 20 20 20 63 62 53 69 7a 65 20 3d 20 43 cbSize = C
51a0: 45 52 54 5f 54 52 55 53 54 5f 4c 49 53 54 5f 49 ERT_TRUST_LIST_I
51b0: 4e 46 4f 2e 73 69 7a 65 6f 66 3b 0d 0a 09 50 43 NFO.sizeof;...PC
51c0: 54 4c 5f 45 4e 54 52 59 20 20 20 20 70 43 74 6c TL_ENTRY pCtl
51d0: 45 6e 74 72 79 3b 0d 0a 09 50 43 43 54 4c 5f 43 Entry;...PCCTL_C
51e0: 4f 4e 54 45 58 54 20 70 43 74 6c 43 6f 6e 74 65 ONTEXT pCtlConte
51f0: 78 74 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 45 xt;..}..alias CE
5200: 52 54 5f 54 52 55 53 54 5f 4c 49 53 54 5f 49 4e RT_TRUST_LIST_IN
5210: 46 4f 2a 20 50 43 45 52 54 5f 54 52 55 53 54 5f FO* PCERT_TRUST_
5220: 4c 49 53 54 5f 49 4e 46 4f 3b 0d 0a 0d 0a 73 74 LIST_INFO;....st
5230: 72 75 63 74 20 43 45 52 54 5f 53 49 4d 50 4c 45 ruct CERT_SIMPLE
5240: 5f 43 48 41 49 4e 20 7b 0d 0a 09 44 57 4f 52 44 _CHAIN {...DWORD
5250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5260: 20 63 62 53 69 7a 65 20 3d 20 43 45 52 54 5f 53 cbSize = CERT_S
5270: 49 4d 50 4c 45 5f 43 48 41 49 4e 2e 73 69 7a 65 IMPLE_CHAIN.size
5280: 6f 66 3b 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 of;...CERT_TRUST
5290: 5f 53 54 41 54 55 53 20 20 20 20 20 54 72 75 73 _STATUS Trus
52a0: 74 53 74 61 74 75 73 3b 0d 0a 09 44 57 4f 52 44 tStatus;...DWORD
52b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
52c0: 20 63 45 6c 65 6d 65 6e 74 3b 0d 0a 09 50 43 45 cElement;...PCE
52d0: 52 54 5f 43 48 41 49 4e 5f 45 4c 45 4d 45 4e 54 RT_CHAIN_ELEMENT
52e0: 2a 20 20 72 67 70 45 6c 65 6d 65 6e 74 3b 0d 0a * rgpElement;..
52f0: 09 50 43 45 52 54 5f 54 52 55 53 54 5f 4c 49 53 .PCERT_TRUST_LIS
5300: 54 5f 49 4e 46 4f 20 70 54 72 75 73 74 4c 69 73 T_INFO pTrustLis
5310: 74 49 6e 66 6f 3b 0d 0a 09 42 4f 4f 4c 20 20 20 tInfo;...BOOL
5320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 f
5330: 48 61 73 52 65 76 6f 63 61 74 69 6f 6e 46 72 65 HasRevocationFre
5340: 73 68 6e 65 73 73 54 69 6d 65 3b 0d 0a 09 44 57 shnessTime;...DW
5350: 4f 52 44 20 20 20 20 20 20 20 20 20 20 20 20 20 ORD
5360: 20 20 20 20 64 77 52 65 76 6f 63 61 74 69 6f 6e dwRevocation
5370: 46 72 65 73 68 6e 65 73 73 54 69 6d 65 3b 0d 0a FreshnessTime;..
5380: 7d 0d 0a 61 6c 69 61 73 20 43 45 52 54 5f 53 49 }..alias CERT_SI
5390: 4d 50 4c 45 5f 43 48 41 49 4e 2a 20 50 43 45 52 MPLE_CHAIN* PCER
53a0: 54 5f 53 49 4d 50 4c 45 5f 43 48 41 49 4e 3b 0d T_SIMPLE_CHAIN;.
53b0: 0a 0d 0a 2f 2a 20 23 69 66 20 28 5f 57 49 4e 33 .../* #if (_WIN3
53c0: 32 5f 57 49 4e 4e 54 3e 3d 30 78 35 30 30 29 20 2_WINNT>=0x500)
53d0: 2a 2f 0d 0a 61 6c 69 61 73 20 63 6f 6e 73 74 28 */..alias const(
53e0: 43 45 52 54 5f 43 48 41 49 4e 5f 43 4f 4e 54 45 CERT_CHAIN_CONTE
53f0: 58 54 29 2a 20 50 43 43 45 52 54 5f 43 48 41 49 XT)* PCCERT_CHAI
5400: 4e 5f 43 4f 4e 54 45 58 54 3b 0d 0a 73 74 72 75 N_CONTEXT;..stru
5410: 63 74 20 43 45 52 54 5f 43 48 41 49 4e 5f 43 4f ct CERT_CHAIN_CO
5420: 4e 54 45 58 54 20 7b 0d 0a 09 44 57 4f 52 44 20 NTEXT {...DWORD
5430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5440: 63 62 53 69 7a 65 20 3d 20 43 45 52 54 5f 43 48 cbSize = CERT_CH
5450: 41 49 4e 5f 43 4f 4e 54 45 58 54 2e 73 69 7a 65 AIN_CONTEXT.size
5460: 6f 66 3b 0d 0a 09 43 45 52 54 5f 54 52 55 53 54 of;...CERT_TRUST
5470: 5f 53 54 41 54 55 53 20 20 20 20 20 54 72 75 73 _STATUS Trus
5480: 74 53 74 61 74 75 73 3b 0d 0a 09 44 57 4f 52 44 tStatus;...DWORD
5490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
54a0: 20 63 43 68 61 69 6e 3b 0d 0a 09 50 43 45 52 54 cChain;...PCERT
54b0: 5f 53 49 4d 50 4c 45 5f 43 48 41 49 4e 2a 20 20 _SIMPLE_CHAIN*
54c0: 20 72 67 70 43 68 61 69 6e 3b 0d 0a 09 44 57 4f rgpChain;...DWO
54d0: 52 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RD
54e0: 20 20 20 63 4c 6f 77 65 72 51 75 61 6c 69 74 79 cLowerQuality
54f0: 43 68 61 69 6e 43 6f 6e 74 65 78 74 3b 0d 0a 09 ChainContext;...
5500: 50 43 43 45 52 54 5f 43 48 41 49 4e 5f 43 4f 4e PCCERT_CHAIN_CON
5510: 54 45 58 54 2a 20 72 67 70 4c 6f 77 65 72 51 75 TEXT* rgpLowerQu
5520: 61 6c 69 74 79 43 68 61 69 6e 43 6f 6e 74 65 78 alityChainContex
5530: 74 3b 0d 0a 09 42 4f 4f 4c 20 20 20 20 20 20 20 t;...BOOL
5540: 20 20 20 20 20 20 20 20 20 20 20 66 48 61 73 52 fHasR
5550: 65 76 6f 63 61 74 69 6f 6e 46 72 65 73 68 6e 65 evocationFreshne
5560: 73 73 54 69 6d 65 3b 0d 0a 09 44 57 4f 52 44 20 ssTime;...DWORD
5570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5580: 64 77 52 65 76 6f 63 61 74 69 6f 6e 46 72 65 73 dwRevocationFres
5590: 68 6e 65 73 73 54 69 6d 65 3b 0d 0a 7d 0d 0a 61 hnessTime;..}..a
55a0: 6c 69 61 73 20 43 45 52 54 5f 43 48 41 49 4e 5f lias CERT_CHAIN_
55b0: 43 4f 4e 54 45 58 54 2a 20 50 43 45 52 54 5f 43 CONTEXT* PCERT_C
55c0: 48 41 49 4e 5f 43 4f 4e 54 45 58 54 3b 0d 0a 2f HAIN_CONTEXT;../
55d0: 2a 20 23 65 6e 64 69 66 20 2a 2f 0d 0a 0d 0a 73 * #endif */....s
55e0: 74 72 75 63 74 20 50 52 4f 56 5f 45 4e 55 4d 41 truct PROV_ENUMA
55f0: 4c 47 53 20 7b 0d 0a 09 41 4c 47 5f 49 44 20 20 LGS {...ALG_ID
5600: 20 61 69 41 6c 67 69 64 3b 0d 0a 09 44 57 4f 52 aiAlgid;...DWOR
5610: 44 20 20 20 20 64 77 42 69 74 4c 65 6e 3b 0d 0a D dwBitLen;..
5620: 09 44 57 4f 52 44 20 20 20 20 64 77 4e 61 6d 65 .DWORD dwName
5630: 4c 65 6e 3b 0d 0a 09 43 48 41 52 5b 32 30 5d 20 Len;...CHAR[20]
5640: 73 7a 4e 61 6d 65 3b 0d 0a 7d 0d 0a 0d 0a 73 74 szName;..}....st
5650: 72 75 63 74 20 50 55 42 4c 49 43 4b 45 59 53 54 ruct PUBLICKEYST
5660: 52 55 43 20 7b 0d 0a 09 42 59 54 45 20 20 20 62 RUC {...BYTE b
5670: 54 79 70 65 3b 0d 0a 09 42 59 54 45 20 20 20 62 Type;...BYTE b
5680: 56 65 72 73 69 6f 6e 3b 0d 0a 09 57 4f 52 44 20 Version;...WORD
5690: 20 20 72 65 73 65 72 76 65 64 3b 0d 0a 09 41 4c reserved;...AL
56a0: 47 5f 49 44 20 61 69 4b 65 79 41 6c 67 3b 0d 0a G_ID aiKeyAlg;..
56b0: 7d 0d 0a 61 6c 69 61 73 20 50 55 42 4c 49 43 4b }..alias PUBLICK
56c0: 45 59 53 54 52 55 43 20 42 4c 4f 42 48 45 41 44 EYSTRUC BLOBHEAD
56d0: 45 52 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 52 53 ER;....struct RS
56e0: 41 50 55 42 4b 45 59 20 7b 0d 0a 09 44 57 4f 52 APUBKEY {...DWOR
56f0: 44 20 6d 61 67 69 63 3b 0d 0a 09 44 57 4f 52 44 D magic;...DWORD
5700: 20 62 69 74 6c 65 6e 3b 0d 0a 09 44 57 4f 52 44 bitlen;...DWORD
5710: 20 70 75 62 65 78 70 3b 0d 0a 7d 0d 0a 0d 0a 73 pubexp;..}....s
5720: 74 72 75 63 74 20 48 4d 41 43 5f 49 4e 46 4f 20 truct HMAC_INFO
5730: 7b 0d 0a 09 41 4c 47 5f 49 44 20 48 61 73 68 41 {...ALG_ID HashA
5740: 6c 67 69 64 3b 0d 0a 09 42 59 54 45 2a 20 20 70 lgid;...BYTE* p
5750: 62 49 6e 6e 65 72 53 74 72 69 6e 67 3b 0d 0a 09 bInnerString;...
5760: 44 57 4f 52 44 20 20 63 62 49 6e 6e 65 72 53 74 DWORD cbInnerSt
5770: 72 69 6e 67 3b 0d 0a 09 42 59 54 45 2a 20 20 70 ring;...BYTE* p
5780: 62 4f 75 74 65 72 53 74 72 69 6e 67 3b 0d 0a 09 bOuterString;...
5790: 44 57 4f 52 44 20 20 63 62 4f 75 74 65 72 53 74 DWORD cbOuterSt
57a0: 72 69 6e 67 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 ring;..}..alias
57b0: 48 4d 41 43 5f 49 4e 46 4f 2a 20 50 48 4d 41 43 HMAC_INFO* PHMAC
57c0: 5f 49 4e 46 4f 3b 0d 0a 0d 0a 65 78 74 65 72 6e _INFO;....extern
57d0: 20 28 57 69 6e 64 6f 77 73 29 20 7b 0d 0a 09 42 (Windows) {...B
57e0: 4f 4f 4c 20 43 65 72 74 43 6c 6f 73 65 53 74 6f OOL CertCloseSto
57f0: 72 65 28 48 43 45 52 54 53 54 4f 52 45 2c 20 44 re(HCERTSTORE, D
5800: 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 65 WORD);...BOOL Ce
5810: 72 74 47 65 74 43 65 72 74 69 66 69 63 61 74 65 rtGetCertificate
5820: 43 68 61 69 6e 28 48 43 45 52 54 43 48 41 49 4e Chain(HCERTCHAIN
5830: 45 4e 47 49 4e 45 2c 20 50 43 43 45 52 54 5f 43 ENGINE, PCCERT_C
5840: 4f 4e 54 45 58 54 2c 20 4c 50 46 49 4c 45 54 49 ONTEXT, LPFILETI
5850: 4d 45 2c 0d 0a 09 20 20 48 43 45 52 54 53 54 4f ME,... HCERTSTO
5860: 52 45 2c 20 50 43 45 52 54 5f 43 48 41 49 4e 5f RE, PCERT_CHAIN_
5870: 50 41 52 41 2c 20 44 57 4f 52 44 2c 20 4c 50 56 PARA, DWORD, LPV
5880: 4f 49 44 2c 20 50 43 43 45 52 54 5f 43 48 41 49 OID, PCCERT_CHAI
5890: 4e 5f 43 4f 4e 54 45 58 54 2a 29 3b 0d 0a 09 42 N_CONTEXT*);...B
58a0: 4f 4f 4c 20 43 65 72 74 56 65 72 69 66 79 43 65 OOL CertVerifyCe
58b0: 72 74 69 66 69 63 61 74 65 43 68 61 69 6e 50 6f rtificateChainPo
58c0: 6c 69 63 79 28 4c 50 43 53 54 52 2c 20 50 43 43 licy(LPCSTR, PCC
58d0: 45 52 54 5f 43 48 41 49 4e 5f 43 4f 4e 54 45 58 ERT_CHAIN_CONTEX
58e0: 54 2c 0d 0a 09 20 20 50 43 45 52 54 5f 43 48 41 T,... PCERT_CHA
58f0: 49 4e 5f 50 4f 4c 49 43 59 5f 50 41 52 41 2c 20 IN_POLICY_PARA,
5900: 50 43 45 52 54 5f 43 48 41 49 4e 5f 50 4f 4c 49 PCERT_CHAIN_POLI
5910: 43 59 5f 53 54 41 54 55 53 29 3b 0d 0a 09 76 6f CY_STATUS);...vo
5920: 69 64 20 43 65 72 74 46 72 65 65 43 65 72 74 69 id CertFreeCerti
5930: 66 69 63 61 74 65 43 68 61 69 6e 28 50 43 43 45 ficateChain(PCCE
5940: 52 54 5f 43 48 41 49 4e 5f 43 4f 4e 54 45 58 54 RT_CHAIN_CONTEXT
5950: 29 3b 0d 0a 09 44 57 4f 52 44 20 43 65 72 74 4e );...DWORD CertN
5960: 61 6d 65 54 6f 53 74 72 41 28 44 57 4f 52 44 2c ameToStrA(DWORD,
5970: 20 50 43 45 52 54 5f 4e 41 4d 45 5f 42 4c 4f 42 PCERT_NAME_BLOB
5980: 2c 20 44 57 4f 52 44 2c 20 4c 50 53 54 52 2c 20 , DWORD, LPSTR,
5990: 44 57 4f 52 44 29 3b 0d 0a 09 44 57 4f 52 44 20 DWORD);...DWORD
59a0: 43 65 72 74 4e 61 6d 65 54 6f 53 74 72 57 28 44 CertNameToStrW(D
59b0: 57 4f 52 44 2c 20 50 43 45 52 54 5f 4e 41 4d 45 WORD, PCERT_NAME
59c0: 5f 42 4c 4f 42 2c 20 44 57 4f 52 44 2c 20 4c 50 _BLOB, DWORD, LP
59d0: 57 53 54 52 2c 20 44 57 4f 52 44 29 3b 0d 0a 09 WSTR, DWORD);...
59e0: 48 43 45 52 54 53 54 4f 52 45 20 43 65 72 74 4f HCERTSTORE CertO
59f0: 70 65 6e 53 79 73 74 65 6d 53 74 6f 72 65 41 28 penSystemStoreA(
5a00: 48 43 52 59 50 54 50 52 4f 56 2c 20 4c 50 43 53 HCRYPTPROV, LPCS
5a10: 54 52 29 3b 0d 0a 09 48 43 45 52 54 53 54 4f 52 TR);...HCERTSTOR
5a20: 45 20 43 65 72 74 4f 70 65 6e 53 79 73 74 65 6d E CertOpenSystem
5a30: 53 74 6f 72 65 57 28 48 43 52 59 50 54 50 52 4f StoreW(HCRYPTPRO
5a40: 56 2c 20 4c 50 43 57 53 54 52 29 3b 0d 0a 09 48 V, LPCWSTR);...H
5a50: 43 45 52 54 53 54 4f 52 45 20 43 65 72 74 4f 70 CERTSTORE CertOp
5a60: 65 6e 53 74 6f 72 65 28 4c 50 43 53 54 52 2c 20 enStore(LPCSTR,
5a70: 44 57 4f 52 44 2c 20 48 43 52 59 50 54 50 52 4f DWORD, HCRYPTPRO
5a80: 56 2c 20 44 57 4f 52 44 2c 20 63 6f 6e 73 74 28 V, DWORD, const(
5a90: 76 6f 69 64 29 2a 29 3b 0d 0a 09 50 43 43 45 52 void)*);...PCCER
5aa0: 54 5f 43 4f 4e 54 45 58 54 20 43 65 72 74 46 69 T_CONTEXT CertFi
5ab0: 6e 64 43 65 72 74 69 66 69 63 61 74 65 49 6e 53 ndCertificateInS
5ac0: 74 6f 72 65 28 48 43 45 52 54 53 54 4f 52 45 2c tore(HCERTSTORE,
5ad0: 20 44 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 44 DWORD, DWORD, D
5ae0: 57 4f 52 44 2c 0d 0a 09 20 20 63 6f 6e 73 74 28 WORD,... const(
5af0: 76 6f 69 64 29 2a 2c 20 50 43 43 45 52 54 5f 43 void)*, PCCERT_C
5b00: 4f 4e 54 45 58 54 29 3b 0d 0a 09 42 4f 4f 4c 20 ONTEXT);...BOOL
5b10: 43 65 72 74 46 72 65 65 43 65 72 74 69 66 69 63 CertFreeCertific
5b20: 61 74 65 43 6f 6e 74 65 78 74 28 50 43 43 45 52 ateContext(PCCER
5b30: 54 5f 43 4f 4e 54 45 58 54 29 3b 0d 0a 09 50 43 T_CONTEXT);...PC
5b40: 43 45 52 54 5f 43 4f 4e 54 45 58 54 20 43 65 72 CERT_CONTEXT Cer
5b50: 74 47 65 74 49 73 73 75 65 72 43 65 72 74 69 66 tGetIssuerCertif
5b60: 69 63 61 74 65 46 72 6f 6d 53 74 6f 72 65 28 48 icateFromStore(H
5b70: 43 45 52 54 53 54 4f 52 45 2c 0d 0a 09 20 20 50 CERTSTORE,... P
5b80: 43 43 45 52 54 5f 43 4f 4e 54 45 58 54 2c 20 50 CCERT_CONTEXT, P
5b90: 43 43 45 52 54 5f 43 4f 4e 54 45 58 54 2c 20 44 CCERT_CONTEXT, D
5ba0: 57 4f 52 44 2a 29 3b 0d 0a 09 50 43 43 45 52 54 WORD*);...PCCERT
5bb0: 5f 43 48 41 49 4e 5f 43 4f 4e 54 45 58 54 20 43 _CHAIN_CONTEXT C
5bc0: 65 72 74 46 69 6e 64 43 68 61 69 6e 49 6e 53 74 ertFindChainInSt
5bd0: 6f 72 65 28 48 43 45 52 54 53 54 4f 52 45 2c 20 ore(HCERTSTORE,
5be0: 44 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 44 57 DWORD, DWORD, DW
5bf0: 4f 52 44 2c 0d 0a 09 20 20 63 6f 6e 73 74 28 76 ORD,... const(v
5c00: 6f 69 64 29 2a 2c 20 50 43 43 45 52 54 5f 43 48 oid)*, PCCERT_CH
5c10: 41 49 4e 5f 43 4f 4e 54 45 58 54 29 3b 0d 0a 0d AIN_CONTEXT);...
5c20: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 41 63 71 75 ..BOOL CryptAcqu
5c30: 69 72 65 43 6f 6e 74 65 78 74 41 28 48 43 52 59 ireContextA(HCRY
5c40: 50 54 50 52 4f 56 2a 2c 20 4c 50 43 53 54 52 2c PTPROV*, LPCSTR,
5c50: 20 4c 50 43 53 54 52 2c 20 44 57 4f 52 44 2c 20 LPCSTR, DWORD,
5c60: 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 DWORD);...BOOL C
5c70: 72 79 70 74 41 63 71 75 69 72 65 43 6f 6e 74 65 ryptAcquireConte
5c80: 78 74 57 28 48 43 52 59 50 54 50 52 4f 56 2a 2c xtW(HCRYPTPROV*,
5c90: 20 4c 50 43 57 53 54 52 2c 20 4c 50 43 57 53 54 LPCWSTR, LPCWST
5ca0: 52 2c 20 44 57 4f 52 44 2c 20 44 57 4f 52 44 29 R, DWORD, DWORD)
5cb0: 3b 0d 0a 09 20 42 4f 4f 4c 20 43 72 79 70 74 43 ;... BOOL CryptC
5cc0: 6f 6e 74 65 78 74 41 64 64 52 65 66 28 48 43 52 ontextAddRef(HCR
5cd0: 59 50 54 50 52 4f 56 2c 20 44 57 4f 52 44 2a 2c YPTPROV, DWORD*,
5ce0: 20 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 DWORD);...BOOL
5cf0: 43 72 79 70 74 52 65 6c 65 61 73 65 43 6f 6e 74 CryptReleaseCont
5d00: 65 78 74 28 48 43 52 59 50 54 50 52 4f 56 2c 20 ext(HCRYPTPROV,
5d10: 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 DWORD);...BOOL C
5d20: 72 79 70 74 47 65 6e 4b 65 79 28 48 43 52 59 50 ryptGenKey(HCRYP
5d30: 54 50 52 4f 56 2c 20 41 4c 47 5f 49 44 2c 20 44 TPROV, ALG_ID, D
5d40: 57 4f 52 44 2c 20 48 43 52 59 50 54 4b 45 59 2a WORD, HCRYPTKEY*
5d50: 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 74 44 );...BOOL CryptD
5d60: 65 72 69 76 65 4b 65 79 28 48 43 52 59 50 54 50 eriveKey(HCRYPTP
5d70: 52 4f 56 2c 20 41 4c 47 5f 49 44 2c 20 48 43 52 ROV, ALG_ID, HCR
5d80: 59 50 54 48 41 53 48 2c 20 44 57 4f 52 44 2c 20 YPTHASH, DWORD,
5d90: 48 43 52 59 50 54 4b 45 59 2a 29 3b 0d 0a 09 42 HCRYPTKEY*);...B
5da0: 4f 4f 4c 20 43 72 79 70 74 44 65 73 74 72 6f 79 OOL CryptDestroy
5db0: 4b 65 79 28 48 43 52 59 50 54 4b 45 59 29 3b 0d Key(HCRYPTKEY);.
5dc0: 0a 09 73 74 61 74 69 63 20 69 66 20 28 5f 57 49 ..static if (_WI
5dd0: 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 35 N32_WINNT >= 0x5
5de0: 30 30 29 20 7b 0d 0a 09 09 42 4f 4f 4c 20 43 72 00) {....BOOL Cr
5df0: 79 70 74 44 75 70 6c 69 63 61 74 65 48 61 73 68 yptDuplicateHash
5e00: 28 48 43 52 59 50 54 48 41 53 48 2c 20 44 57 4f (HCRYPTHASH, DWO
5e10: 52 44 2a 2c 20 44 57 4f 52 44 2c 20 48 43 52 59 RD*, DWORD, HCRY
5e20: 50 54 48 41 53 48 2a 29 3b 0d 0a 09 09 42 4f 4f PTHASH*);....BOO
5e30: 4c 20 43 72 79 70 74 44 75 70 6c 69 63 61 74 65 L CryptDuplicate
5e40: 4b 65 79 28 48 43 52 59 50 54 4b 45 59 2c 20 44 Key(HCRYPTKEY, D
5e50: 57 4f 52 44 2a 2c 20 44 57 4f 52 44 2c 20 48 43 WORD*, DWORD, HC
5e60: 52 59 50 54 4b 45 59 2a 29 3b 0d 0a 09 7d 0d 0a RYPTKEY*);...}..
5e70: 09 42 4f 4f 4c 20 43 72 79 70 74 53 65 74 4b 65 .BOOL CryptSetKe
5e80: 79 50 61 72 61 6d 28 48 43 52 59 50 54 4b 45 59 yParam(HCRYPTKEY
5e90: 2c 20 44 57 4f 52 44 2c 20 50 42 59 54 45 2c 20 , DWORD, PBYTE,
5ea0: 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 DWORD);...BOOL C
5eb0: 72 79 70 74 47 65 74 4b 65 79 50 61 72 61 6d 28 ryptGetKeyParam(
5ec0: 48 43 52 59 50 54 4b 45 59 2c 20 44 57 4f 52 44 HCRYPTKEY, DWORD
5ed0: 2c 20 50 42 59 54 45 2c 20 50 44 57 4f 52 44 2c , PBYTE, PDWORD,
5ee0: 20 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 DWORD);...BOOL
5ef0: 43 72 79 70 74 53 65 74 48 61 73 68 50 61 72 61 CryptSetHashPara
5f00: 6d 28 48 43 52 59 50 54 48 41 53 48 2c 20 44 57 m(HCRYPTHASH, DW
5f10: 4f 52 44 2c 20 50 42 59 54 45 2c 20 44 57 4f 52 ORD, PBYTE, DWOR
5f20: 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 74 D);...BOOL Crypt
5f30: 47 65 74 48 61 73 68 50 61 72 61 6d 28 48 43 52 GetHashParam(HCR
5f40: 59 50 54 48 41 53 48 2c 20 44 57 4f 52 44 2c 20 YPTHASH, DWORD,
5f50: 50 42 59 54 45 2c 20 50 44 57 4f 52 44 2c 20 44 PBYTE, PDWORD, D
5f60: 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 WORD);...BOOL Cr
5f70: 79 70 74 53 65 74 50 72 6f 76 50 61 72 61 6d 28 yptSetProvParam(
5f80: 48 43 52 59 50 54 50 52 4f 56 2c 20 44 57 4f 52 HCRYPTPROV, DWOR
5f90: 44 2c 20 50 42 59 54 45 2c 20 44 57 4f 52 44 29 D, PBYTE, DWORD)
5fa0: 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 74 47 65 ;...BOOL CryptGe
5fb0: 74 50 72 6f 76 50 61 72 61 6d 28 48 43 52 59 50 tProvParam(HCRYP
5fc0: 54 50 52 4f 56 2c 20 44 57 4f 52 44 2c 20 50 42 TPROV, DWORD, PB
5fd0: 59 54 45 2c 20 50 44 57 4f 52 44 2c 20 44 57 4f YTE, PDWORD, DWO
5fe0: 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 RD);...BOOL Cryp
5ff0: 74 47 65 6e 52 61 6e 64 6f 6d 28 48 43 52 59 50 tGenRandom(HCRYP
6000: 54 50 52 4f 56 2c 20 44 57 4f 52 44 2c 20 50 42 TPROV, DWORD, PB
6010: 59 54 45 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 YTE);...BOOL Cry
6020: 70 74 47 65 74 55 73 65 72 4b 65 79 28 48 43 52 ptGetUserKey(HCR
6030: 59 50 54 50 52 4f 56 2c 20 44 57 4f 52 44 2c 20 YPTPROV, DWORD,
6040: 48 43 52 59 50 54 4b 45 59 2a 29 3b 0d 0a 09 42 HCRYPTKEY*);...B
6050: 4f 4f 4c 20 43 72 79 70 74 45 78 70 6f 72 74 4b OOL CryptExportK
6060: 65 79 28 48 43 52 59 50 54 4b 45 59 2c 20 48 43 ey(HCRYPTKEY, HC
6070: 52 59 50 54 4b 45 59 2c 20 44 57 4f 52 44 2c 20 RYPTKEY, DWORD,
6080: 44 57 4f 52 44 2c 20 50 42 59 54 45 2c 20 50 44 DWORD, PBYTE, PD
6090: 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 WORD);...BOOL Cr
60a0: 79 70 74 49 6d 70 6f 72 74 4b 65 79 28 48 43 52 yptImportKey(HCR
60b0: 59 50 54 50 52 4f 56 2c 20 50 42 59 54 45 2c 20 YPTPROV, PBYTE,
60c0: 44 57 4f 52 44 2c 20 48 43 52 59 50 54 4b 45 59 DWORD, HCRYPTKEY
60d0: 2c 20 44 57 4f 52 44 2c 0d 0a 09 20 20 48 43 52 , DWORD,... HCR
60e0: 59 50 54 4b 45 59 2a 29 3b 0d 0a 09 42 4f 4f 4c YPTKEY*);...BOOL
60f0: 20 43 72 79 70 74 45 6e 63 72 79 70 74 28 48 43 CryptEncrypt(HC
6100: 52 59 50 54 4b 45 59 2c 20 48 43 52 59 50 54 48 RYPTKEY, HCRYPTH
6110: 41 53 48 2c 20 42 4f 4f 4c 2c 20 44 57 4f 52 44 ASH, BOOL, DWORD
6120: 2c 20 50 42 59 54 45 2c 20 50 44 57 4f 52 44 2c , PBYTE, PDWORD,
6130: 0d 0a 09 20 20 44 57 4f 52 44 29 3b 0d 0a 09 42 ... DWORD);...B
6140: 4f 4f 4c 20 43 72 79 70 74 44 65 63 72 79 70 74 OOL CryptDecrypt
6150: 28 48 43 52 59 50 54 4b 45 59 2c 20 48 43 52 59 (HCRYPTKEY, HCRY
6160: 50 54 48 41 53 48 2c 20 42 4f 4f 4c 2c 20 44 57 PTHASH, BOOL, DW
6170: 4f 52 44 2c 20 50 42 59 54 45 2c 20 50 44 57 4f ORD, PBYTE, PDWO
6180: 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 RD);...BOOL Cryp
6190: 74 43 72 65 61 74 65 48 61 73 68 28 48 43 52 59 tCreateHash(HCRY
61a0: 50 54 50 52 4f 56 2c 20 41 4c 47 5f 49 44 2c 20 PTPROV, ALG_ID,
61b0: 48 43 52 59 50 54 4b 45 59 2c 20 44 57 4f 52 44 HCRYPTKEY, DWORD
61c0: 2c 20 48 43 52 59 50 54 48 41 53 48 2a 29 3b 0d , HCRYPTHASH*);.
61d0: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 48 61 73 68 ..BOOL CryptHash
61e0: 44 61 74 61 28 48 43 52 59 50 54 48 41 53 48 2c Data(HCRYPTHASH,
61f0: 20 50 42 59 54 45 2c 20 44 57 4f 52 44 2c 20 44 PBYTE, DWORD, D
6200: 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 WORD);...BOOL Cr
6210: 79 70 74 48 61 73 68 53 65 73 73 69 6f 6e 4b 65 yptHashSessionKe
6220: 79 28 48 43 52 59 50 54 48 41 53 48 2c 20 48 43 y(HCRYPTHASH, HC
6230: 52 59 50 54 4b 45 59 2c 20 44 57 4f 52 44 29 3b RYPTKEY, DWORD);
6240: 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 74 47 65 74 ...BOOL CryptGet
6250: 48 61 73 68 56 61 6c 75 65 28 48 43 52 59 50 54 HashValue(HCRYPT
6260: 48 41 53 48 2c 20 44 57 4f 52 44 2c 20 50 42 59 HASH, DWORD, PBY
6270: 54 45 2c 20 50 44 57 4f 52 44 29 3b 0d 0a 09 42 TE, PDWORD);...B
6280: 4f 4f 4c 20 43 72 79 70 74 44 65 73 74 72 6f 79 OOL CryptDestroy
6290: 48 61 73 68 28 48 43 52 59 50 54 48 41 53 48 29 Hash(HCRYPTHASH)
62a0: 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 74 53 69 ;...BOOL CryptSi
62b0: 67 6e 48 61 73 68 41 28 48 43 52 59 50 54 48 41 gnHashA(HCRYPTHA
62c0: 53 48 2c 20 44 57 4f 52 44 2c 20 4c 50 43 53 54 SH, DWORD, LPCST
62d0: 52 2c 20 44 57 4f 52 44 2c 20 50 42 59 54 45 2c R, DWORD, PBYTE,
62e0: 20 50 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c PDWORD);...BOOL
62f0: 20 43 72 79 70 74 53 69 67 6e 48 61 73 68 57 28 CryptSignHashW(
6300: 48 43 52 59 50 54 48 41 53 48 2c 20 44 57 4f 52 HCRYPTHASH, DWOR
6310: 44 2c 20 4c 50 43 57 53 54 52 2c 20 44 57 4f 52 D, LPCWSTR, DWOR
6320: 44 2c 20 50 42 59 54 45 2c 20 50 44 57 4f 52 44 D, PBYTE, PDWORD
6330: 29 3b 0d 0a 09 42 4f 4f 4c 20 43 72 79 70 74 56 );...BOOL CryptV
6340: 65 72 69 66 79 53 69 67 6e 61 74 75 72 65 41 28 erifySignatureA(
6350: 48 43 52 59 50 54 48 41 53 48 2c 20 50 42 59 54 HCRYPTHASH, PBYT
6360: 45 2c 20 44 57 4f 52 44 2c 20 48 43 52 59 50 54 E, DWORD, HCRYPT
6370: 4b 45 59 2c 20 4c 50 43 53 54 52 2c 0d 0a 09 20 KEY, LPCSTR,...
6380: 20 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 DWORD);...BOOL
6390: 43 72 79 70 74 56 65 72 69 66 79 53 69 67 6e 61 CryptVerifySigna
63a0: 74 75 72 65 57 28 48 43 52 59 50 54 48 41 53 48 tureW(HCRYPTHASH
63b0: 2c 20 50 42 59 54 45 2c 20 44 57 4f 52 44 2c 20 , PBYTE, DWORD,
63c0: 48 43 52 59 50 54 4b 45 59 2c 20 4c 50 43 57 53 HCRYPTKEY, LPCWS
63d0: 54 52 2c 0d 0a 09 20 20 44 57 4f 52 44 29 3b 0d TR,... DWORD);.
63e0: 0a 09 42 4f 4f 4c 20 43 72 79 70 74 53 65 74 50 ..BOOL CryptSetP
63f0: 72 6f 76 69 64 65 72 41 28 4c 50 43 53 54 52 2c roviderA(LPCSTR,
6400: 20 44 57 4f 52 44 29 3b 0d 0a 09 42 4f 4f 4c 20 DWORD);...BOOL
6410: 43 72 79 70 74 53 65 74 50 72 6f 76 69 64 65 72 CryptSetProvider
6420: 57 28 4c 50 43 57 53 54 52 2c 20 44 57 4f 52 44 W(LPCWSTR, DWORD
6430: 29 3b 0d 0a 7d 0d 0a 0d 0a 76 65 72 73 69 6f 6e );..}....version
6440: 20 28 55 6e 69 63 6f 64 65 29 20 7b 0d 0a 09 61 (Unicode) {...a
6450: 6c 69 61 73 20 43 65 72 74 4e 61 6d 65 54 6f 53 lias CertNameToS
6460: 74 72 57 20 43 65 72 74 4e 61 6d 65 54 6f 53 74 trW CertNameToSt
6470: 72 3b 0d 0a 09 61 6c 69 61 73 20 43 72 79 70 74 r;...alias Crypt
6480: 41 63 71 75 69 72 65 43 6f 6e 74 65 78 74 57 20 AcquireContextW
6490: 43 72 79 70 74 41 63 71 75 69 72 65 43 6f 6e 74 CryptAcquireCont
64a0: 65 78 74 3b 0d 0a 09 61 6c 69 61 73 20 43 72 79 ext;...alias Cry
64b0: 70 74 53 69 67 6e 48 61 73 68 57 20 43 72 79 70 ptSignHashW Cryp
64c0: 74 53 69 67 6e 48 61 73 68 3b 0d 0a 09 61 6c 69 tSignHash;...ali
64d0: 61 73 20 43 72 79 70 74 56 65 72 69 66 79 53 69 as CryptVerifySi
64e0: 67 6e 61 74 75 72 65 57 20 43 72 79 70 74 56 65 gnatureW CryptVe
64f0: 72 69 66 79 53 69 67 6e 61 74 75 72 65 3b 0d 0a rifySignature;..
6500: 09 61 6c 69 61 73 20 43 72 79 70 74 53 65 74 50 .alias CryptSetP
6510: 72 6f 76 69 64 65 72 57 20 43 72 79 70 74 53 65 roviderW CryptSe
6520: 74 50 72 6f 76 69 64 65 72 3b 0d 0a 09 61 6c 69 tProvider;...ali
6530: 61 73 20 43 65 72 74 4f 70 65 6e 53 79 73 74 65 as CertOpenSyste
6540: 6d 53 74 6f 72 65 57 20 43 65 72 74 4f 70 65 6e mStoreW CertOpen
6550: 53 79 73 74 65 6d 53 74 6f 72 65 3b 0d 0a 09 2f SystemStore;.../
6560: 2b 61 6c 69 61 73 20 43 45 52 54 5f 46 49 4e 44 +alias CERT_FIND
6570: 5f 53 55 42 4a 45 43 54 5f 53 54 52 5f 57 20 43 _SUBJECT_STR_W C
6580: 45 52 54 5f 46 49 4e 44 5f 53 55 42 4a 45 43 54 ERT_FIND_SUBJECT
6590: 5f 53 54 52 3b 0d 0a 09 61 6c 69 61 73 20 43 45 _STR;...alias CE
65a0: 52 54 5f 46 49 4e 44 5f 49 53 53 55 45 52 5f 53 RT_FIND_ISSUER_S
65b0: 54 52 5f 57 20 43 45 52 54 5f 46 49 4e 44 5f 49 TR_W CERT_FIND_I
65c0: 53 53 55 45 52 5f 53 54 52 3b 2b 2f 0d 0a 7d 20 SSUER_STR;+/..}
65d0: 65 6c 73 65 20 7b 0d 0a 09 61 6c 69 61 73 20 43 else {...alias C
65e0: 65 72 74 4e 61 6d 65 54 6f 53 74 72 41 20 43 65 ertNameToStrA Ce
65f0: 72 74 4e 61 6d 65 54 6f 53 74 72 3b 0d 0a 09 61 rtNameToStr;...a
6600: 6c 69 61 73 20 43 72 79 70 74 41 63 71 75 69 72 lias CryptAcquir
6610: 65 43 6f 6e 74 65 78 74 41 20 43 72 79 70 74 41 eContextA CryptA
6620: 63 71 75 69 72 65 43 6f 6e 74 65 78 74 3b 0d 0a cquireContext;..
6630: 09 61 6c 69 61 73 20 43 72 79 70 74 53 69 67 6e .alias CryptSign
6640: 48 61 73 68 41 20 43 72 79 70 74 53 69 67 6e 48 HashA CryptSignH
6650: 61 73 68 3b 0d 0a 09 61 6c 69 61 73 20 43 72 79 ash;...alias Cry
6660: 70 74 56 65 72 69 66 79 53 69 67 6e 61 74 75 72 ptVerifySignatur
6670: 65 41 20 43 72 79 70 74 56 65 72 69 66 79 53 69 eA CryptVerifySi
6680: 67 6e 61 74 75 72 65 3b 0d 0a 09 61 6c 69 61 73 gnature;...alias
6690: 20 43 72 79 70 74 53 65 74 50 72 6f 76 69 64 65 CryptSetProvide
66a0: 72 41 20 43 72 79 70 74 53 65 74 50 72 6f 76 69 rA CryptSetProvi
66b0: 64 65 72 3b 0d 0a 09 61 6c 69 61 73 20 43 65 72 der;...alias Cer
66c0: 74 4f 70 65 6e 53 79 73 74 65 6d 53 74 6f 72 65 tOpenSystemStore
66d0: 41 20 43 65 72 74 4f 70 65 6e 53 79 73 74 65 6d A CertOpenSystem
66e0: 53 74 6f 72 65 3b 0d 0a 09 2f 2b 61 6c 69 61 73 Store;.../+alias
66f0: 20 43 45 52 54 5f 46 49 4e 44 5f 53 55 42 4a 45 CERT_FIND_SUBJE
6700: 43 54 5f 53 54 52 5f 41 20 43 45 52 54 5f 46 49 CT_STR_A CERT_FI
6710: 4e 44 5f 53 55 42 4a 45 43 54 5f 53 54 52 3b 0d ND_SUBJECT_STR;.
6720: 0a 09 61 6c 69 61 73 20 43 45 52 54 5f 46 49 4e ..alias CERT_FIN
6730: 44 5f 49 53 53 55 45 52 5f 53 54 52 5f 41 20 43 D_ISSUER_STR_A C
6740: 45 52 54 5f 46 49 4e 44 5f 49 53 53 55 45 52 5f ERT_FIND_ISSUER_
6750: 53 54 52 3b 2b 2f 0d 0a 7d 0d 0a STR;+/..}..