1 /* 2 * Copyright (C) 2008 Juan Lang 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 #ifndef __CRYPTUIAPI_H__ 19 #define __CRYPTUIAPI_H__ 20 21 #include <wintrust.h> 22 #include <wincrypt.h> 23 #include <prsht.h> 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 #include <pshpack8.h> 30 31 BOOL WINAPI CryptUIDlgViewContext(DWORD dwContextType, LPVOID pvContext, 32 HWND hwnd, LPCWSTR pwszTitle, DWORD dwFlags, LPVOID pvReserved); 33 34 /* Values for dwDontUseColumn */ 35 #define CRYPTUI_SELECT_ISSUEDTO_COLUMN 0x00000001 36 #define CRYPTUI_SELECT_ISSUEDBY_COLUMN 0x00000002 37 #define CRYPTUI_SELECT_INTENDEDUSE_COLUMN 0x00000004 38 #define CRYPTUI_SELECT_FRIENDLYNAME_COLUMN 0x00000008 39 #define CRYPTUI_SELECT_LOCATION_COLUMN 0x00000010 40 #define CRYPTUI_SELECT_EXPIRATION_COLUMN 0x00000020 41 42 PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateFromStore( 43 HCERTSTORE hCertStore, HWND hwnd, LPCWSTR pwszTitle, LPCWSTR pwszDisplayString, 44 DWORD dwDontUseColumn, DWORD dwFlags, LPVOID pvReserved); 45 46 /* Values for CRYPTUI_CERT_MGR_STRUCT's dwFlags */ 47 #define CRYPTUI_CERT_MGR_PUBLISHER_TAB 0x00000004 48 #define CRYPTUI_CERT_MGR_TAB_MASK 0x0000000f 49 #define CRYPTUI_CERT_MGR_SINGLE_TAB_FLAG 0x00008000 50 51 typedef struct _CRYPTUI_CERT_MGR_STRUCT 52 { 53 DWORD dwSize; 54 HWND hwndParent; 55 DWORD dwFlags; 56 LPCWSTR pwszTitle; 57 LPCSTR pszInitUsageOID; 58 } CRYPTUI_CERT_MGR_STRUCT, *PCRYPTUI_CERT_MGR_STRUCT; 59 typedef const struct _CRYPTUI_CERT_MGR_STRUCT *PCCRYPTUI_CERT_MGR_STRUCT; 60 61 BOOL WINAPI CryptUIDlgCertMgr(PCCRYPTUI_CERT_MGR_STRUCT pCryptUICertMgr); 62 63 typedef BOOL (WINAPI *PFNCFILTERPROC)(PCCERT_CONTEXT pCertContext, 64 BOOL *pfInitialSelectedCert, void *pvCallbackData); 65 66 typedef struct tagCRYPTUI_INITDIALOG_STRUCT 67 { 68 LPARAM lParam; 69 PCCERT_CONTEXT pCertContext; 70 } CRYPTUI_INITDIALOG_STRUCT, *PCRYPTUI_INITDIALOG_STRUCT; 71 72 /* Values for CRYPTUI_VIEWCERTIFICATE_STRUCT's dwFlags */ 73 #define CRYPTUI_HIDE_HIERARCHYPAGE 0x00000001 74 #define CRYPTUI_HIDE_DETAILPAGE 0x00000002 75 #define CRYPTUI_DISABLE_EDITPROPERTIES 0x00000004 76 #define CRYPTUI_ENABLE_EDITPROPERTIES 0x00000008 77 #define CRYPTUI_DISABLE_ADDTOSTORE 0x00000010 78 #define CRYPTUI_ENABLE_ADDTOSTORE 0x00000020 79 #define CRYPTUI_ACCEPT_DECLINE_STYLE 0x00000040 80 #define CRYPTUI_IGNORE_UNTRUSTED_ROOT 0x00000080 81 #define CRYPTUI_DONT_OPEN_STORES 0x00000100 82 #define CRYPTUI_ONLY_OPEN_ROOT_STORE 0x00000200 83 #define CRYPTUI_WARN_UNTRUSTED_ROOT 0x00000400 84 #define CRYPTUI_ENABLE_REVOCATION_CHECKING 0x00000800 85 #define CRYPTUI_WARN_REMOTE_TRUST 0x00001000 86 #define CRYPTUI_DISABLE_EXPORT 0x00002000 87 #define CRYPTUI_ENABLE_REVOCATION_CHECK_END_CERT 0x00004000 88 #define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN 0x00008000 89 #define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT CRYPTUI_ENABLE_REVOCATION_CHECKING 90 #define CRYPTUI_DISABLE_HTMLLINK 0x00010000 91 #define CRYPTUI_DISABLE_ISSUERSTATEMENT 0x00020000 92 93 typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTA 94 { 95 DWORD dwSize; 96 HWND hwndParent; 97 DWORD dwFlags; 98 LPCSTR szTitle; 99 PCCERT_CONTEXT pCertContext; 100 LPCSTR *rgszPurposes; 101 DWORD cPurposes; 102 union { 103 CRYPT_PROVIDER_DATA const *pCryptProviderData; 104 HANDLE hWVTStateData; 105 } DUMMYUNIONNAME; 106 BOOL fpCryptProviderDataTrustedUsage; 107 DWORD idxSigner; 108 DWORD idxCert; 109 BOOL fCounterSigner; 110 DWORD idxCounterSigner; 111 DWORD cStores; 112 HCERTSTORE *rghStores; 113 DWORD cPropSheetPages; 114 LPCPROPSHEETPAGEA rgPropSheetPages; 115 DWORD nStartPage; 116 } CRYPTUI_VIEWCERTIFICATE_STRUCTA, *PCRYPTUI_VIEWCERTIFICATE_STRUCTA; 117 typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTA *PCCRYPTUI_VIEWCERTIFICATE_STRUCTA; 118 119 typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTW 120 { 121 DWORD dwSize; 122 HWND hwndParent; 123 DWORD dwFlags; 124 LPCWSTR szTitle; 125 PCCERT_CONTEXT pCertContext; 126 LPCSTR *rgszPurposes; 127 DWORD cPurposes; 128 union { 129 CRYPT_PROVIDER_DATA const *pCryptProviderData; 130 HANDLE hWVTStateData; 131 } DUMMYUNIONNAME; 132 BOOL fpCryptProviderDataTrustedUsage; 133 DWORD idxSigner; 134 DWORD idxCert; 135 BOOL fCounterSigner; 136 DWORD idxCounterSigner; 137 DWORD cStores; 138 HCERTSTORE *rghStores; 139 DWORD cPropSheetPages; 140 LPCPROPSHEETPAGEW rgPropSheetPages; 141 DWORD nStartPage; 142 } CRYPTUI_VIEWCERTIFICATE_STRUCTW, *PCRYPTUI_VIEWCERTIFICATE_STRUCTW; 143 typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTW *PCCRYPTUI_VIEWCERTIFICATE_STRUCTW; 144 145 #define CRYPTUI_VIEWCERTIFICATE_STRUCT WINELIB_NAME_AW(CRYPTUI_VIEWCERTIFICATE_STRUCT) 146 #define PCCRYPTUI_VIEWCERTIFICATE_STRUCT WINELIB_NAME_AW(PCCRYPTUI_VIEWCERTIFICATE_STRUCT) 147 148 BOOL WINAPI CryptUIDlgViewCertificateA( 149 PCCRYPTUI_VIEWCERTIFICATE_STRUCTA pCertViewInfo, BOOL *pfPropertiesChanged); 150 BOOL WINAPI CryptUIDlgViewCertificateW( 151 PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo, BOOL *pfPropertiesChanged); 152 #define CryptUIDlgViewCertificate WINELIB_NAME_AW(CryptUIDlgViewCertificate) 153 154 typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO 155 { 156 DWORD dwSize; 157 GUID *pGuidSubject; 158 DWORD cbBlob; 159 BYTE *pbBlob; 160 LPCWSTR pwszDisplayName; 161 } CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO; 162 typedef const CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO * 163 PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO; 164 165 typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO 166 { 167 DWORD dwSize; 168 DWORD cCertStore; 169 HCERTSTORE *rghCertStore; 170 PFNCFILTERPROC pFilterCallback; 171 void *pvCallbackData; 172 } CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO; 173 typedef const CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO * 174 PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO; 175 176 typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO 177 { 178 DWORD dwSize; 179 LPWSTR pwszPvkFileName; 180 LPWSTR pwszProvName; 181 DWORD dwProvType; 182 } CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO, 183 *PCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO; 184 typedef const CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO * 185 PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO; 186 187 typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO 188 { 189 DWORD dwSize; 190 LPWSTR pwszSigningCertFileName; 191 DWORD dwPvkChoice; 192 union { 193 PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO pPvkFileInfo; 194 PCRYPT_KEY_PROV_INFO pPvkProvInfo; 195 } DUMMYUNIONNAME; 196 } CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO, 197 *PCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO; 198 typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO * 199 PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO; 200 201 typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO 202 { 203 DWORD dwSize; 204 DWORD dwAttrFlags; 205 LPCWSTR pwszDescription; 206 LPCWSTR pwszMoreInfoLocation; 207 LPCSTR pszHashAlg; 208 LPCWSTR pwszSigningCertDisplayString; 209 HCERTSTORE hAdditionalCertStore; 210 PCRYPT_ATTRIBUTES psAuthenticated; 211 PCRYPT_ATTRIBUTES psUnauthenticated; 212 } CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO, 213 *PCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO; 214 typedef const CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO * 215 PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO; 216 217 typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_INFO 218 { 219 DWORD dwSize; 220 DWORD dwSubjectChoice; 221 union { 222 LPCWSTR pwszFileName; 223 PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO pSignBlobInfo; 224 } DUMMYUNIONNAME1; 225 DWORD dwSigningCertChoice; 226 union { 227 PCCERT_CONTEXT pSigningCertContext; 228 PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO pSigningCertStore; 229 PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO pSigningCertPvkInfo; 230 } DUMMYUNIONNAME2; 231 LPCWSTR pwszTimestampURL; 232 DWORD dwAdditionalCertChoice; 233 PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO pSignExtInfo; 234 } CRYPTUI_WIZ_DIGITAL_SIGN_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_INFO; 235 typedef const CRYPTUI_WIZ_DIGITAL_SIGN_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO; 236 237 typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT 238 { 239 DWORD dwSize; 240 DWORD cbBlob; 241 BYTE *pbBlob; 242 } CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT, *PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT; 243 typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT; 244 245 /* Values for CryptUIWizDigitalSign's dwFlags */ 246 #define CRYPTUI_WIZ_NO_UI 0x00000001 247 #define CRYPTUI_WIZ_DIGITAL_SIGN_EXCLUDE_PAGE_HASHES 0x00000002 248 #define CRYPTUI_WIZ_DIGITAL_SIGN_INCLUDE_PAGE_HASHES 0x00000004 249 250 BOOL WINAPI CryptUIWizDigitalSign(DWORD dwFlags, HWND hwndParent, 251 LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO pDigitalSignInfo, 252 PCCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *ppSignContext); 253 254 BOOL WINAPI CryptUIWizFreeDigitalSignContext( 255 PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT pSignContext); 256 257 /* Values for CRYPTUI_WIZ_EXPORT_INFO's dwSubjectChoice */ 258 #define CRYPTUI_WIZ_EXPORT_CERT_CONTEXT 1 259 #define CRYPTUI_WIZ_EXPORT_CTL_CONTEXT 2 260 #define CRYPTUI_WIZ_EXPORT_CRL_CONTEXT 3 261 #define CRYPTUI_WIZ_EXPORT_CERT_STORE 4 262 #define CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY 5 263 #define CRYPTUI_WIZ_EXPORT_FORMAT_CRL 6 264 #define CRYPTUI_WIZ_EXPORT_FORMAT_CTL 7 265 266 typedef struct _CRYPTUI_WIZ_EXPORT_INFO 267 { 268 DWORD dwSize; 269 LPCWSTR pwszExportFileName; 270 DWORD dwSubjectChoice; 271 union { 272 PCCERT_CONTEXT pCertContext; 273 PCCTL_CONTEXT pCTLContext; 274 PCCRL_CONTEXT pCRLContext; 275 HCERTSTORE hCertStore; 276 } DUMMYUNIONNAME; 277 DWORD cStores; 278 HCERTSTORE *rghStores; 279 } CRYPTUI_WIZ_EXPORT_INFO, *PCRYPTUI_WIZ_EXPORT_INFO; 280 typedef const CRYPTUI_WIZ_EXPORT_INFO *PCCRYPTUI_WIZ_EXPORT_INFO; 281 282 /* Values for CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO's dwExportFormat */ 283 #define CRYPTUI_WIZ_EXPORT_FORMAT_DER 1 284 #define CRYPTUI_WIZ_EXPORT_FORMAT_PFX 2 285 #define CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7 3 286 #define CRYPTUI_WIZ_EXPORT_FORMAT_BASE64 4 287 #define CRYPTUI_WIZ_EXPORT_FORMAT_SERIALIZED_CERT_STORE 5 288 289 typedef struct _CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO 290 { 291 DWORD dwSize; 292 DWORD dwExportFormat; 293 BOOL fExportChain; 294 BOOL fExportPrivateKeys; 295 LPCWSTR pwszPassword; 296 BOOL fStrongEncryption; 297 } CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO, *PCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO; 298 typedef const CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO * 299 PCCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO; 300 301 BOOL WINAPI CryptUIWizExport(DWORD dwFlags, HWND hwndParent, 302 LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo, void *pvoid); 303 304 /* Values for CRYPTUI_WIZ_IMPORT_SRC_INFO's dwSubjectChoice */ 305 #define CRYPTUI_WIZ_IMPORT_SUBJECT_FILE 1 306 #define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_CONTEXT 2 307 #define CRYPTUI_WIZ_IMPORT_SUBJECT_CTL_CONTEXT 3 308 #define CRYPTUI_WIZ_IMPORT_SUBJECT_CRL_CONTEXT 4 309 #define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_STORE 5 310 311 typedef struct _CRYPTUI_WIZ_IMPORT_SUBJECT_INFO 312 { 313 DWORD dwSize; 314 DWORD dwSubjectChoice; 315 union { 316 LPCWSTR pwszFileName; 317 PCCERT_CONTEXT pCertContext; 318 PCCTL_CONTEXT pCTLContext; 319 PCCRL_CONTEXT pCRLContext; 320 HCERTSTORE hCertStore; 321 } DUMMYUNIONNAME; 322 DWORD dwFlags; 323 LPCWSTR pwszPassword; 324 } CRYPTUI_WIZ_IMPORT_SRC_INFO, *PCRYPTUI_WIZ_IMPORT_SRC_INFO; 325 typedef const CRYPTUI_WIZ_IMPORT_SRC_INFO *PCCRYPTUI_WIZ_IMPORT_SRC_INFO; 326 327 /* Values for CryptUIWizImport's dwFlags */ 328 #define CRYPTUI_WIZ_IMPORT_NO_CHANGE_DEST_STORE 0x00010000 329 #define CRYPTUI_WIZ_IMPORT_ALLOW_CERT 0x00020000 330 #define CRYPTUI_WIZ_IMPORT_ALLOW_CRL 0x00040000 331 #define CRYPTUI_WIZ_IMPORT_ALLOW_CTL 0x00080000 332 #define CRYPTUI_WIZ_IMPORT_TO_LOCALMACHINE 0x00100000 333 #define CRYPTUI_WIZ_IMPORT_TO_CURRENTUSER 0x00200000 334 #define CRYPTUI_WIZ_IMPORT_REMOTE_DEST_STORE 0x00400000 335 336 BOOL WINAPI CryptUIWizImport(DWORD dwFlags, HWND hwndParent, 337 LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc, 338 HCERTSTORE hDestCertStore); 339 340 /* Definitions missing from PSDK's cryptuiapi.h, but documented on MSDN. */ 341 typedef BOOL (WINAPI *PFNCCERTDISPLAYPROC)(PCCERT_CONTEXT pCertContext, 342 HWND hWndSelCertDlg, void *pvCallbackData); 343 344 /* Values for CRYPTUI_SELECTCERTIFICATE_STRUCT's dwFlags */ 345 #define CRYPTUI_SELECTCERT_MULTISELECT 0x00000001 346 347 typedef struct _CRYPTUI_SELECTCERTIFICATE_STRUCTA 348 { 349 DWORD dwSize; 350 HWND hwndParent; 351 DWORD dwFlags; 352 LPCSTR szTitle; 353 DWORD dwDontUseColumn; 354 LPCSTR szDisplayString; 355 PFNCFILTERPROC pFilterCallback; 356 PFNCCERTDISPLAYPROC pDisplayCallback; 357 void *pvCallbackData; 358 DWORD cDisplayStores; 359 HCERTSTORE *rghDisplayStores; 360 DWORD cStores; 361 HCERTSTORE *rghStores; 362 DWORD cPropSheetPages; 363 LPCPROPSHEETPAGEA rgPropSheetPages; 364 HCERTSTORE hSelectedCertStore; 365 } CRYPTUI_SELECTCERTIFICATE_STRUCTA, *PCRYPTUI_SELECTCERTIFICATE_STRUCTA; 366 typedef const CRYPTUI_SELECTCERTIFICATE_STRUCTA * 367 PCCRYPTUI_SELECTCERTIFICATE_STRUCTA; 368 369 typedef struct _CRYPTUI_SELECTCERTIFICATE_STRUCTW 370 { 371 DWORD dwSize; 372 HWND hwndParent; 373 DWORD dwFlags; 374 LPCWSTR szTitle; 375 DWORD dwDontUseColumn; 376 LPCWSTR szDisplayString; 377 PFNCFILTERPROC pFilterCallback; 378 PFNCCERTDISPLAYPROC pDisplayCallback; 379 void *pvCallbackData; 380 DWORD cDisplayStores; 381 HCERTSTORE *rghDisplayStores; 382 DWORD cStores; 383 HCERTSTORE *rghStores; 384 DWORD cPropSheetPages; 385 LPCPROPSHEETPAGEW rgPropSheetPages; 386 HCERTSTORE hSelectedCertStore; 387 } CRYPTUI_SELECTCERTIFICATE_STRUCTW, *PCRYPTUI_SELECTCERTIFICATE_STRUCTW; 388 typedef const CRYPTUI_SELECTCERTIFICATE_STRUCTW * 389 PCCRYPTUI_SELECTCERTIFICATE_STRUCTW; 390 391 PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateA( 392 PCCRYPTUI_SELECTCERTIFICATE_STRUCTA pcsc); 393 PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateW( 394 PCCRYPTUI_SELECTCERTIFICATE_STRUCTW pcsc); 395 396 typedef struct tagCRYPTUI_VIEWSIGNERINFO_STRUCTA 397 { 398 DWORD dwSize; 399 HWND hwndParent; 400 DWORD dwFlags; 401 LPCSTR szTitle; 402 CMSG_SIGNER_INFO *pSignerInfo; 403 HCRYPTMSG hMsg; 404 LPCSTR pszOID; 405 DWORD_PTR dwReserved; 406 DWORD cStores; 407 HCERTSTORE *rghStores; 408 DWORD cPropSheetPages; 409 LPCPROPSHEETPAGEA rgPropSheetPages; 410 } CRYPTUI_VIEWSIGNERINFO_STRUCTA, *PCRYPTUI_VIEWSIGNERINFO_STRUCTA; 411 412 typedef struct tagCRYPTUI_VIEWSIGNERINFO_STRUCTW 413 { 414 DWORD dwSize; 415 HWND hwndParent; 416 DWORD dwFlags; 417 LPCWSTR szTitle; 418 CMSG_SIGNER_INFO *pSignerInfo; 419 HCRYPTMSG hMsg; 420 LPCSTR pszOID; 421 DWORD_PTR dwReserved; 422 DWORD cStores; 423 HCERTSTORE *rghStores; 424 DWORD cPropSheetPages; 425 LPCPROPSHEETPAGEW rgPropSheetPages; 426 } CRYPTUI_VIEWSIGNERINFO_STRUCTW, *PCRYPTUI_VIEWSIGNERINFO_STRUCTW; 427 428 BOOL WINAPI CryptUIDlgViewSignerInfoA(CRYPTUI_VIEWSIGNERINFO_STRUCTA *pcvsi); 429 BOOL WINAPI CryptUIDlgViewSignerInfoW(CRYPTUI_VIEWSIGNERINFO_STRUCTW *pcvsi); 430 431 #include <poppack.h> 432 433 #ifdef __cplusplus 434 } 435 #endif 436 437 #endif 438