Hex Artifact Content

Not logged in

Artifact 56b59d671f70303711508351508e03b05dff1c2f:


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;+/..}..