cryptuiapi.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef __CRYPTUIAPI_H__
  7. #define __CRYPTUIAPI_H__
  8. #include <_mingw_unicode.h>
  9. #include <wintrust.h>
  10. #include <wincrypt.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. #include <pshpack8.h>
  15. WINBOOL WINAPI CryptUIDlgViewContext(DWORD dwContextType,const void *pvContext,HWND hwnd,LPCWSTR pwszTitle,DWORD dwFlags,void *pvReserved);
  16. PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateFromStore(HCERTSTORE hCertStore,HWND hwnd,LPCWSTR pwszTitle,LPCWSTR pwszDisplayString,DWORD dwDontUseColumn,DWORD dwFlags,void *pvReserved);
  17. #define CRYPTUI_SELECT_ISSUEDTO_COLUMN 0x000000001
  18. #define CRYPTUI_SELECT_ISSUEDBY_COLUMN 0x000000002
  19. #define CRYPTUI_SELECT_INTENDEDUSE_COLUMN 0x000000004
  20. #define CRYPTUI_SELECT_FRIENDLYNAME_COLUMN 0x000000008
  21. #define CRYPTUI_SELECT_LOCATION_COLUMN 0x000000010
  22. #define CRYPTUI_SELECT_EXPIRATION_COLUMN 0x000000020
  23. typedef WINBOOL (WINAPI *PFNCFILTERPROC)(PCCERT_CONTEXT pCertContext,WINBOOL *pfInitialSelectedCert,void *pvCallbackData);
  24. #define CRYPTUI_CERT_MGR_TAB_MASK 0x0000000F
  25. #define CRYPTUI_CERT_MGR_PUBLISHER_TAB 0x00000004
  26. #define CRYPTUI_CERT_MGR_SINGLE_TAB_FLAG 0x00008000
  27. typedef struct _CRYPTUI_CERT_MGR_STRUCT {
  28. DWORD dwSize;
  29. HWND hwndParent;
  30. DWORD dwFlags;
  31. LPCWSTR pwszTitle;
  32. LPCSTR pszInitUsageOID;
  33. } CRYPTUI_CERT_MGR_STRUCT,*PCRYPTUI_CERT_MGR_STRUCT;
  34. typedef const CRYPTUI_CERT_MGR_STRUCT *PCCRYPTUI_CERT_MGR_STRUCT;
  35. WINBOOL WINAPI CryptUIDlgCertMgr(PCCRYPTUI_CERT_MGR_STRUCT pCryptUICertMgr);
  36. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO {
  37. DWORD dwSize;
  38. GUID *pGuidSubject;
  39. DWORD cbBlob;
  40. BYTE *pbBlob;
  41. LPCWSTR pwszDisplayName;
  42. } CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO,*PCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
  43. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
  44. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO {
  45. DWORD dwSize;
  46. DWORD cCertStore;
  47. HCERTSTORE *rghCertStore;
  48. PFNCFILTERPROC pFilterCallback;
  49. void *pvCallbackData;
  50. } CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO,*PCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
  51. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
  52. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO {
  53. DWORD dwSize;
  54. LPWSTR pwszPvkFileName;
  55. LPWSTR pwszProvName;
  56. DWORD dwProvType;
  57. } CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO,*PCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
  58. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
  59. #define CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE 0x01
  60. #define CRYPTUI_WIZ_DIGITAL_SIGN_PVK_PROV 0x02
  61. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO {
  62. DWORD dwSize;
  63. LPWSTR pwszSigningCertFileName;
  64. DWORD dwPvkChoice;
  65. __C89_NAMELESS union {
  66. PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO pPvkFileInfo;
  67. PCRYPT_KEY_PROV_INFO pPvkProvInfo;
  68. };
  69. } CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO,*PCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
  70. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
  71. #define CRYPTUI_WIZ_DIGITAL_SIGN_COMMERCIAL 0x0001
  72. #define CRYPTUI_WIZ_DIGITAL_SIGN_INDIVIDUAL 0x0002
  73. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO {
  74. DWORD dwSize;
  75. DWORD dwAttrFlags;
  76. LPCWSTR pwszDescription;
  77. LPCWSTR pwszMoreInfoLocation;
  78. LPCSTR pszHashAlg;
  79. LPCWSTR pwszSigningCertDisplayString;
  80. HCERTSTORE hAdditionalCertStore;
  81. PCRYPT_ATTRIBUTES psAuthenticated;
  82. PCRYPT_ATTRIBUTES psUnauthenticated;
  83. } CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO,*PCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
  84. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
  85. #define CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_FILE 0x01
  86. #define CRYPTUI_WIZ_DIGITAL_SIGN_SUBJECT_BLOB 0x02
  87. #define CRYPTUI_WIZ_DIGITAL_SIGN_CERT 0x01
  88. #define CRYPTUI_WIZ_DIGITAL_SIGN_STORE 0x02
  89. #define CRYPTUI_WIZ_DIGITAL_SIGN_PVK 0x03
  90. #define CRYPTUI_WIZ_DIGITAL_SIGN_ADD_CHAIN 0x00000001
  91. #define CRYPTUI_WIZ_DIGITAL_SIGN_ADD_CHAIN_NO_ROOT 0x00000002
  92. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_INFO {
  93. DWORD dwSize;
  94. DWORD dwSubjectChoice;
  95. __C89_NAMELESS union {
  96. LPCWSTR pwszFileName;
  97. PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO pSignBlobInfo;
  98. };
  99. DWORD dwSigningCertChoice;
  100. __C89_NAMELESS union {
  101. PCCERT_CONTEXT pSigningCertContext;
  102. PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO pSigningCertStore;
  103. PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO pSigningCertPvkInfo;
  104. };
  105. LPCWSTR pwszTimestampURL;
  106. DWORD dwAdditionalCertChoice;
  107. PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO pSignExtInfo;
  108. } CRYPTUI_WIZ_DIGITAL_SIGN_INFO,*PCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
  109. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
  110. typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT {
  111. DWORD dwSize;
  112. DWORD cbBlob;
  113. BYTE *pbBlob;
  114. } CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT,*PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT;
  115. typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT;
  116. #define CRYPTUI_WIZ_NO_UI 0x0001
  117. WINBOOL WINAPI CryptUIWizDigitalSign(DWORD dwFlags,HWND hwndParent,LPCWSTR pwszWizardTitle,PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO pDigitalSignInfo,PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *ppSignContext);
  118. WINBOOL WINAPI CryptUIWizFreeDigitalSignContext(PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT pSignContext);
  119. #define CRYPTUI_HIDE_HIERARCHYPAGE 0x00000001
  120. #define CRYPTUI_HIDE_DETAILPAGE 0x00000002
  121. #define CRYPTUI_DISABLE_EDITPROPERTIES 0x00000004
  122. #define CRYPTUI_ENABLE_EDITPROPERTIES 0x00000008
  123. #define CRYPTUI_DISABLE_ADDTOSTORE 0x00000010
  124. #define CRYPTUI_ENABLE_ADDTOSTORE 0x00000020
  125. #define CRYPTUI_ACCEPT_DECLINE_STYLE 0x00000040
  126. #define CRYPTUI_IGNORE_UNTRUSTED_ROOT 0x00000080
  127. #define CRYPTUI_DONT_OPEN_STORES 0x00000100
  128. #define CRYPTUI_ONLY_OPEN_ROOT_STORE 0x00000200
  129. #define CRYPTUI_WARN_UNTRUSTED_ROOT 0x00000400
  130. #define CRYPTUI_ENABLE_REVOCATION_CHECKING 0x00000800
  131. #define CRYPTUI_WARN_REMOTE_TRUST 0x00001000
  132. #define CRYPTUI_DISABLE_EXPORT 0x00002000
  133. #define CRYPTUI_ENABLE_REVOCATION_CHECK_END_CERT 0x00004000
  134. #define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN 0x00008000
  135. #define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT CRYPTUI_ENABLE_REVOCATION_CHECKING
  136. typedef struct tagCRYPTUI_INITDIALOG_STRUCT {
  137. LPARAM lParam;
  138. PCCERT_CONTEXT pCertContext;
  139. } CRYPTUI_INITDIALOG_STRUCT,*PCRYPTUI_INITDIALOG_STRUCT;
  140. typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTW {
  141. DWORD dwSize;
  142. HWND hwndParent;
  143. DWORD dwFlags;
  144. LPCWSTR szTitle;
  145. PCCERT_CONTEXT pCertContext;
  146. LPCSTR *rgszPurposes;
  147. DWORD cPurposes;
  148. __C89_NAMELESS union {
  149. CRYPT_PROVIDER_DATA const *pCryptProviderData;
  150. HANDLE hWVTStateData;
  151. };
  152. WINBOOL fpCryptProviderDataTrustedUsage;
  153. DWORD idxSigner;
  154. DWORD idxCert;
  155. WINBOOL fCounterSigner;
  156. DWORD idxCounterSigner;
  157. DWORD cStores;
  158. HCERTSTORE *rghStores;
  159. DWORD cPropSheetPages;
  160. LPCPROPSHEETPAGEW rgPropSheetPages;
  161. DWORD nStartPage;
  162. } CRYPTUI_VIEWCERTIFICATE_STRUCTW,*PCRYPTUI_VIEWCERTIFICATE_STRUCTW;
  163. typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTW *PCCRYPTUI_VIEWCERTIFICATE_STRUCTW;
  164. typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTA {
  165. DWORD dwSize;
  166. HWND hwndParent;
  167. DWORD dwFlags;
  168. LPCSTR szTitle;
  169. PCCERT_CONTEXT pCertContext;
  170. LPCSTR *rgszPurposes;
  171. DWORD cPurposes;
  172. __C89_NAMELESS union {
  173. CRYPT_PROVIDER_DATA const *pCryptProviderData;
  174. HANDLE hWVTStateData;
  175. };
  176. WINBOOL fpCryptProviderDataTrustedUsage;
  177. DWORD idxSigner;
  178. DWORD idxCert;
  179. WINBOOL fCounterSigner;
  180. DWORD idxCounterSigner;
  181. DWORD cStores;
  182. HCERTSTORE *rghStores;
  183. DWORD cPropSheetPages;
  184. LPCPROPSHEETPAGEA rgPropSheetPages;
  185. DWORD nStartPage;
  186. } CRYPTUI_VIEWCERTIFICATE_STRUCTA,*PCRYPTUI_VIEWCERTIFICATE_STRUCTA;
  187. typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTA *PCCRYPTUI_VIEWCERTIFICATE_STRUCTA;
  188. WINBOOL WINAPI CryptUIDlgViewCertificateW(PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo,WINBOOL *pfPropertiesChanged);
  189. WINBOOL WINAPI CryptUIDlgViewCertificateA(PCCRYPTUI_VIEWCERTIFICATE_STRUCTA pCertViewInfo,WINBOOL *pfPropertiesChanged);
  190. #define CryptUIDlgViewCertificate __MINGW_NAME_AW(CryptUIDlgViewCertificate)
  191. #define PCRYPTUI_VIEWCERTIFICATE_STRUCT __MINGW_NAME_AW(PCRYPTUI_VIEWCERTIFICATE_STRUCT)
  192. #define CRYPTUI_VIEWCERTIFICATE_STRUCT __MINGW_NAME_AW(CRYPTUI_VIEWCERTIFICATE_STRUCT)
  193. #define PCCRYPTUI_VIEWCERTIFICATE_STRUCT __MINGW_NAME_AW(PCCRYPTUI_VIEWCERTIFICATE_STRUCT)
  194. #define CRYPTUI_WIZ_EXPORT_CERT_CONTEXT 1
  195. #define CRYPTUI_WIZ_EXPORT_CTL_CONTEXT 2
  196. #define CRYPTUI_WIZ_EXPORT_CRL_CONTEXT 3
  197. #define CRYPTUI_WIZ_EXPORT_CERT_STORE 4
  198. #define CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY 5
  199. typedef struct _CRYPTUI_WIZ_EXPORT_INFO {
  200. DWORD dwSize;
  201. LPCWSTR pwszExportFileName;
  202. DWORD dwSubjectChoice;
  203. __C89_NAMELESS union {
  204. PCCERT_CONTEXT pCertContext;
  205. PCCTL_CONTEXT pCTLContext;
  206. PCCRL_CONTEXT pCRLContext;
  207. HCERTSTORE hCertStore;
  208. };
  209. DWORD cStores;
  210. HCERTSTORE *rghStores;
  211. } CRYPTUI_WIZ_EXPORT_INFO,*PCRYPTUI_WIZ_EXPORT_INFO;
  212. typedef const CRYPTUI_WIZ_EXPORT_INFO *PCCRYPTUI_WIZ_EXPORT_INFO;
  213. #define CRYPTUI_WIZ_EXPORT_FORMAT_DER 1
  214. #define CRYPTUI_WIZ_EXPORT_FORMAT_PFX 2
  215. #define CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7 3
  216. #define CRYPTUI_WIZ_EXPORT_FORMAT_BASE64 4
  217. #define CRYPTUI_WIZ_EXPORT_FORMAT_SERIALIZED_CERT_STORE 5
  218. typedef struct _CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO {
  219. DWORD dwSize;
  220. DWORD dwExportFormat;
  221. WINBOOL fExportChain;
  222. WINBOOL fExportPrivateKeys;
  223. LPCWSTR pwszPassword;
  224. WINBOOL fStrongEncryption;
  225. } CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO,*PCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO;
  226. typedef const CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO *PCCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO;
  227. WINBOOL WINAPI CryptUIWizExport(DWORD dwFlags,HWND hwndParent,LPCWSTR pwszWizardTitle,PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo,void *pvoid);
  228. #define CRYPTUI_WIZ_IMPORT_SUBJECT_FILE 1
  229. #define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_CONTEXT 2
  230. #define CRYPTUI_WIZ_IMPORT_SUBJECT_CTL_CONTEXT 3
  231. #define CRYPTUI_WIZ_IMPORT_SUBJECT_CRL_CONTEXT 4
  232. #define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_STORE 5
  233. typedef struct _CRYPTUI_WIZ_IMPORT_SUBJECT_INFO {
  234. DWORD dwSize;
  235. DWORD dwSubjectChoice;
  236. __C89_NAMELESS union {
  237. LPCWSTR pwszFileName;
  238. PCCERT_CONTEXT pCertContext;
  239. PCCTL_CONTEXT pCTLContext;
  240. PCCRL_CONTEXT pCRLContext;
  241. HCERTSTORE hCertStore;
  242. };
  243. DWORD dwFlags;
  244. LPCWSTR pwszPassword;
  245. } CRYPTUI_WIZ_IMPORT_SRC_INFO,*PCRYPTUI_WIZ_IMPORT_SRC_INFO;
  246. typedef const CRYPTUI_WIZ_IMPORT_SRC_INFO *PCCRYPTUI_WIZ_IMPORT_SRC_INFO;
  247. #define CRYPTUI_WIZ_IMPORT_NO_CHANGE_DEST_STORE 0x00010000
  248. #define CRYPTUI_WIZ_IMPORT_ALLOW_CERT 0x00020000
  249. #define CRYPTUI_WIZ_IMPORT_ALLOW_CRL 0x00040000
  250. #define CRYPTUI_WIZ_IMPORT_ALLOW_CTL 0x00080000
  251. #define CRYPTUI_WIZ_IMPORT_TO_LOCALMACHINE 0x00100000
  252. #define CRYPTUI_WIZ_IMPORT_TO_CURRENTUSER 0x00200000
  253. #define CRYPTUI_WIZ_IMPORT_REMOTE_DEST_STORE 0x00400000
  254. WINBOOL WINAPI CryptUIWizImport(DWORD dwFlags,HWND hwndParent,LPCWSTR pwszWizardTitle,PCCRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc,HCERTSTORE hDestCertStore);
  255. #include <poppack.h>
  256. #ifdef __cplusplus
  257. }
  258. #endif
  259. #endif