[WIN32K, USER32]
[reactos.git] / reactos / include / psdk / cryptuiapi.h
index 10575ab..4ba04a3 100644 (file)
+/*
+ * Copyright (C) 2008 Juan Lang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#ifndef __CRYPTUIAPI_H__
+#define __CRYPTUIAPI_H__
 
-typedef struct _CRYPTUI_CERT_MGR_STRUCT {
-  DWORD dwSize;
-  HWND hwndParent;
-  DWORD dwFlags;
-  LPCWSTR pwszTitle;
-  LPCSTR pszInitUsageOID;
-} CRYPTUI_CERT_MGR_STRUCT, 
- *PCRYPTUI_CERT_MGR_STRUCT;
+#include <wintrust.h>
+#include <wincrypt.h>
+#include <prsht.h>
 
-typedef const CRYPTUI_CERT_MGR_STRUCT *PCCRYPTUI_CERT_MGR_STRUCT;
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <pshpack8.h>
+
+BOOL WINAPI CryptUIDlgViewContext(DWORD dwContextType, LPVOID pvContext,
+ HWND hwnd, LPCWSTR pwszTitle, DWORD dwFlags, LPVOID pvReserved);
+
+/* Values for dwDontUseColumn */
+#define CRYPTUI_SELECT_ISSUEDTO_COLUMN     0x00000001
+#define CRYPTUI_SELECT_ISSUEDBY_COLUMN     0x00000002
+#define CRYPTUI_SELECT_INTENDEDUSE_COLUMN  0x00000004
+#define CRYPTUI_SELECT_FRIENDLYNAME_COLUMN 0x00000008
+#define CRYPTUI_SELECT_LOCATION_COLUMN     0x00000010
+#define CRYPTUI_SELECT_EXPIRATION_COLUMN   0x00000020
+
+PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateFromStore(
+ HCERTSTORE hCertStore, HWND hwnd, LPCWSTR pwszTitle, LPCWSTR pwszDisplayString,
+ DWORD dwDontUseColumn, DWORD dwFlags, LPVOID pvReserved);
+
+/* Values for CRYPTUI_CERT_MGR_STRUCT's dwFlags */
+#define CRYPTUI_CERT_MGR_PUBLISHER_TAB   0x00000004
+#define CRYPTUI_CERT_MGR_TAB_MASK        0x0000000f
+#define CRYPTUI_CERT_MGR_SINGLE_TAB_FLAG 0x00008000
+
+typedef struct _CRYPTUI_CERT_MGR_STRUCT
+{
+    DWORD   dwSize;
+    HWND    hwndParent;
+    DWORD   dwFlags;
+    LPCWSTR pwszTitle;
+    LPCSTR  pszInitUsageOID;
+} CRYPTUI_CERT_MGR_STRUCT, *PCRYPTUI_CERT_MGR_STRUCT;
+typedef const struct _CRYPTUI_CERT_MGR_STRUCT *PCCRYPTUI_CERT_MGR_STRUCT;
 
 BOOL WINAPI CryptUIDlgCertMgr(PCCRYPTUI_CERT_MGR_STRUCT pCryptUICertMgr);
+
+typedef BOOL (WINAPI *PFNCFILTERPROC)(PCCERT_CONTEXT pCertContext,
+ BOOL *pfInitialSelectedCert, void *pvCallbackData);
+
+typedef struct tagCRYPTUI_INITDIALOG_STRUCT
+{
+    LPARAM         lParam;
+    PCCERT_CONTEXT pCertContext;
+} CRYPTUI_INITDIALOG_STRUCT, *PCRYPTUI_INITDIALOG_STRUCT;
+
+/* Values for CRYPTUI_VIEWCERTIFICATE_STRUCT's dwFlags */
+#define CRYPTUI_HIDE_HIERARCHYPAGE               0x00000001
+#define CRYPTUI_HIDE_DETAILPAGE                  0x00000002
+#define CRYPTUI_DISABLE_EDITPROPERTIES           0x00000004
+#define CRYPTUI_ENABLE_EDITPROPERTIES            0x00000008
+#define CRYPTUI_DISABLE_ADDTOSTORE               0x00000010
+#define CRYPTUI_ENABLE_ADDTOSTORE                0x00000020
+#define CRYPTUI_ACCEPT_DECLINE_STYLE             0x00000040
+#define CRYPTUI_IGNORE_UNTRUSTED_ROOT            0x00000080
+#define CRYPTUI_DONT_OPEN_STORES                 0x00000100
+#define CRYPTUI_ONLY_OPEN_ROOT_STORE             0x00000200
+#define CRYPTUI_WARN_UNTRUSTED_ROOT              0x00000400
+#define CRYPTUI_ENABLE_REVOCATION_CHECKING       0x00000800
+#define CRYPTUI_WARN_REMOTE_TRUST                0x00001000
+#define CRYPTUI_DISABLE_EXPORT                   0x00002000
+#define CRYPTUI_ENABLE_REVOCATION_CHECK_END_CERT 0x00004000
+#define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN    0x00008000
+#define CRYPTUI_ENABLE_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT CRYPTUI_ENABLE_REVOCATION_CHECKING
+#define CRYPTUI_DISABLE_HTMLLINK                 0x00010000
+#define CRYPTUI_DISABLE_ISSUERSTATEMENT          0x00020000
+
+typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTA
+{
+    DWORD             dwSize;
+    HWND              hwndParent;
+    DWORD             dwFlags;
+    LPCSTR            szTitle;
+    PCCERT_CONTEXT    pCertContext;
+    LPCSTR           *rgszPurposes;
+    DWORD             cPurposes;
+    union {
+        CRYPT_PROVIDER_DATA const *pCryptProviderData;
+        HANDLE                     hWVTStateData;
+    } DUMMYUNIONNAME;
+    BOOL              fpCryptProviderDataTrustedUsage;
+    DWORD             idxSigner;
+    DWORD             idxCert;
+    BOOL              fCounterSigner;
+    DWORD             idxCounterSigner;
+    DWORD             cStores;
+    HCERTSTORE       *rghStores;
+    DWORD             cPropSheetPages;
+    LPCPROPSHEETPAGEA rgPropSheetPages;
+    DWORD             nStartPage;
+} CRYPTUI_VIEWCERTIFICATE_STRUCTA, *PCRYPTUI_VIEWCERTIFICATE_STRUCTA;
+typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTA *PCCRYPTUI_VIEWCERTIFICATE_STRUCTA;
+
+typedef struct tagCRYPTUI_VIEWCERTIFICATE_STRUCTW
+{
+    DWORD             dwSize;
+    HWND              hwndParent;
+    DWORD             dwFlags;
+    LPCWSTR           szTitle;
+    PCCERT_CONTEXT    pCertContext;
+    LPCSTR           *rgszPurposes;
+    DWORD             cPurposes;
+    union {
+        CRYPT_PROVIDER_DATA const *pCryptProviderData;
+        HANDLE                     hWVTStateData;
+    } DUMMYUNIONNAME;
+    BOOL              fpCryptProviderDataTrustedUsage;
+    DWORD             idxSigner;
+    DWORD             idxCert;
+    BOOL              fCounterSigner;
+    DWORD             idxCounterSigner;
+    DWORD             cStores;
+    HCERTSTORE       *rghStores;
+    DWORD             cPropSheetPages;
+    LPCPROPSHEETPAGEW rgPropSheetPages;
+    DWORD             nStartPage;
+} CRYPTUI_VIEWCERTIFICATE_STRUCTW, *PCRYPTUI_VIEWCERTIFICATE_STRUCTW;
+typedef const CRYPTUI_VIEWCERTIFICATE_STRUCTW *PCCRYPTUI_VIEWCERTIFICATE_STRUCTW;
+
+#define CRYPTUI_VIEWCERTIFICATE_STRUCT   WINELIB_NAME_AW(CRYPTUI_VIEWCERTIFICATE_STRUCT)
+#define PCCRYPTUI_VIEWCERTIFICATE_STRUCT WINELIB_NAME_AW(PCCRYPTUI_VIEWCERTIFICATE_STRUCT)
+
+BOOL WINAPI CryptUIDlgViewCertificateA(
+ PCCRYPTUI_VIEWCERTIFICATE_STRUCTA pCertViewInfo, BOOL *pfPropertiesChanged);
+BOOL WINAPI CryptUIDlgViewCertificateW(
+ PCCRYPTUI_VIEWCERTIFICATE_STRUCTW pCertViewInfo, BOOL *pfPropertiesChanged);
+#define CryptUIDlgViewCertificate WINELIB_NAME_AW(CryptUIDlgViewCertificate)
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO
+{
+    DWORD   dwSize;
+    GUID   *pGuidSubject;
+    DWORD   cbBlob;
+    BYTE   *pbBlob;
+    LPCWSTR pwszDisplayName;
+} CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO
+{
+    DWORD          dwSize;
+    DWORD          cCertStore;
+    HCERTSTORE    *rghCertStore;
+    PFNCFILTERPROC pFilterCallback;
+    void          *pvCallbackData;
+} CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO
+{
+    DWORD  dwSize;
+    LPWSTR pwszPvkFileName;
+    LPWSTR pwszProvName;
+    DWORD  dwProvType;
+} CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO,
+ *PCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO
+{
+    DWORD  dwSize;
+    LPWSTR pwszSigningCertFileName;
+    DWORD  dwPvkChoice;
+    union {
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_PVK_FILE_INFO pPvkFileInfo;
+        PCRYPT_KEY_PROV_INFO                    pPvkProvInfo;
+    } DUMMYUNIONNAME;
+} CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO,
+ *PCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO
+{
+    DWORD             dwSize;
+    DWORD             dwAttrFlags;
+    LPCWSTR           pwszDescription;
+    LPCWSTR           pwszMoreInfoLocation;
+    LPCSTR            pszHashAlg;
+    LPCWSTR           pwszSigningCertDisplayString;
+    HCERTSTORE        hAdditionalCertStore;
+    PCRYPT_ATTRIBUTES psAuthenticated;
+    PCRYPT_ATTRIBUTES psUnauthenticated;
+} CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO,
+ *PCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO *
+ PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_INFO
+{
+    DWORD   dwSize;
+    DWORD   dwSubjectChoice;
+    union {
+        LPCWSTR                              pwszFileName;
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_BLOB_INFO pSignBlobInfo;
+    } DUMMYUNIONNAME1;
+    DWORD   dwSigningCertChoice;
+    union {
+        PCCERT_CONTEXT                           pSigningCertContext;
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_STORE_INFO    pSigningCertStore;
+        PCCRYPTUI_WIZ_DIGITAL_SIGN_CERT_PVK_INFO pSigningCertPvkInfo;
+    } DUMMYUNIONNAME2;
+    LPCWSTR pwszTimestampURL;
+    DWORD   dwAdditionalCertChoice;
+    PCCRYPTUI_WIZ_DIGITAL_SIGN_EXTENDED_INFO pSignExtInfo;
+} CRYPTUI_WIZ_DIGITAL_SIGN_INFO, *PCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
+typedef const CRYPTUI_WIZ_DIGITAL_SIGN_INFO *PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO;
+
+typedef struct _CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT
+{
+    DWORD dwSize;
+    DWORD cbBlob;
+    BYTE *pbBlob;
+} CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT, *PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT;
+
+/* Values for CryptUIWizDigitalSign's dwFlags */
+#define CRYPTUI_WIZ_NO_UI                            0x00000001
+#define CRYPTUI_WIZ_DIGITAL_SIGN_EXCLUDE_PAGE_HASHES 0x00000002
+#define CRYPTUI_WIZ_DIGITAL_SIGN_INCLUDE_PAGE_HASHES 0x00000004
+
+BOOL WINAPI CryptUIWizDigitalSign(DWORD dwFlags, HWND hwndParent,
+ LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_DIGITAL_SIGN_INFO pDigitalSignInfo,
+ PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *ppSignContext);
+
+BOOL WINAPI CryptUIWizFreeDigitalSignContext(
+ PCRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT pSignContext);
+
+/* Values for CRYPTUI_WIZ_EXPORT_INFO's dwSubjectChoice */
+#define CRYPTUI_WIZ_EXPORT_CERT_CONTEXT                 1
+#define CRYPTUI_WIZ_EXPORT_CTL_CONTEXT                  2
+#define CRYPTUI_WIZ_EXPORT_CRL_CONTEXT                  3
+#define CRYPTUI_WIZ_EXPORT_CERT_STORE                   4
+#define CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY 5
+#define CRYPTUI_WIZ_EXPORT_FORMAT_CRL                   6
+#define CRYPTUI_WIZ_EXPORT_FORMAT_CTL                   7
+
+typedef struct _CRYPTUI_WIZ_EXPORT_INFO
+{
+    DWORD       dwSize;
+    LPCWSTR     pwszExportFileName;
+    DWORD       dwSubjectChoice;
+    union {
+        PCCERT_CONTEXT pCertContext;
+        PCCTL_CONTEXT  pCTLContext;
+        PCCRL_CONTEXT  pCRLContext;
+        HCERTSTORE     hCertStore;
+    } DUMMYUNIONNAME;
+    DWORD       cStores;
+    HCERTSTORE *rghStores;
+} CRYPTUI_WIZ_EXPORT_INFO, *PCRYPTUI_WIZ_EXPORT_INFO;
+typedef const CRYPTUI_WIZ_EXPORT_INFO *PCCRYPTUI_WIZ_EXPORT_INFO;
+
+/* Values for CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO's dwExportFormat */
+#define CRYPTUI_WIZ_EXPORT_FORMAT_DER                   1
+#define CRYPTUI_WIZ_EXPORT_FORMAT_PFX                   2
+#define CRYPTUI_WIZ_EXPORT_FORMAT_PKCS7                 3
+#define CRYPTUI_WIZ_EXPORT_FORMAT_BASE64                4
+#define CRYPTUI_WIZ_EXPORT_FORMAT_SERIALIZED_CERT_STORE 5
+
+typedef struct _CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO
+{
+    DWORD   dwSize;
+    DWORD   dwExportFormat;
+    BOOL    fExportChain;
+    BOOL    fExportPrivateKeys;
+    LPCWSTR pwszPassword;
+    BOOL    fStrongEncryption;
+} CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO, *PCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO;
+typedef const CRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO *
+ PCCRYPTUI_WIZ_EXPORT_CERTCONTEXT_INFO;
+
+BOOL WINAPI CryptUIWizExport(DWORD dwFlags, HWND hwndParent,
+ LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_EXPORT_INFO pExportInfo, void *pvoid);
+
+/* Values for CRYPTUI_WIZ_IMPORT_SRC_INFO's dwSubjectChoice */
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_FILE         1
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_CONTEXT 2
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CTL_CONTEXT  3
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CRL_CONTEXT  4
+#define CRYPTUI_WIZ_IMPORT_SUBJECT_CERT_STORE   5
+
+typedef struct _CRYPTUI_WIZ_IMPORT_SUBJECT_INFO
+{
+    DWORD   dwSize;
+    DWORD   dwSubjectChoice;
+    union {
+        LPCWSTR        pwszFileName;
+        PCCERT_CONTEXT pCertContext;
+        PCCTL_CONTEXT  pCTLContext;
+        PCCRL_CONTEXT  pCRLContext;
+        HCERTSTORE     hCertStore;
+    } DUMMYUNIONNAME;
+    DWORD   dwFlags;
+    LPCWSTR pwszPassword;
+} CRYPTUI_WIZ_IMPORT_SRC_INFO, *PCRYPTUI_WIZ_IMPORT_SRC_INFO;
+typedef const CRYPTUI_WIZ_IMPORT_SRC_INFO *PCCRYPTUI_WIZ_IMPORT_SRC_INFO;
+
+/* Values for CryptUIWizImport's dwFlags */
+#define CRYPTUI_WIZ_IMPORT_NO_CHANGE_DEST_STORE 0x00010000
+#define CRYPTUI_WIZ_IMPORT_ALLOW_CERT           0x00020000
+#define CRYPTUI_WIZ_IMPORT_ALLOW_CRL            0x00040000
+#define CRYPTUI_WIZ_IMPORT_ALLOW_CTL            0x00080000
+#define CRYPTUI_WIZ_IMPORT_TO_LOCALMACHINE      0x00100000
+#define CRYPTUI_WIZ_IMPORT_TO_CURRENTUSER       0x00200000
+#define CRYPTUI_WIZ_IMPORT_REMOTE_DEST_STORE    0x00400000
+
+BOOL WINAPI CryptUIWizImport(DWORD dwFlags, HWND hwndParent,
+ LPCWSTR pwszWizardTitle, PCCRYPTUI_WIZ_IMPORT_SRC_INFO pImportSrc,
+ HCERTSTORE hDestCertStore);
+
+/* Definitions missing from PSDK's cryptuiapi.h, but documented on MSDN. */
+typedef BOOL (WINAPI *PFNCCERTDISPLAYPROC)(PCCERT_CONTEXT pCertContext,
+ HWND hWndSelCertDlg, void *pvCallbackData);
+
+/* Values for CRYPTUI_SELECTCERTIFICATE_STRUCT's dwFlags */
+#define CRYPTUI_SELECTCERT_MULTISELECT 0x00000001
+
+typedef struct _CRYPTUI_SELECTCERTIFICATE_STRUCTA
+{
+    DWORD               dwSize;
+    HWND                hwndParent;
+    DWORD               dwFlags;
+    LPCWSTR             szTitle;
+    DWORD               dwDontUseColumn;
+    LPCWSTR             szDisplayString;
+    PFNCFILTERPROC      pFilterCallback;
+    PFNCCERTDISPLAYPROC pDisplayCallback;
+    void               *pvCallbackData;
+    DWORD               cStores;
+    HCERTSTORE         *rghStores;
+    DWORD               cPropSheetPages;
+    LPCPROPSHEETPAGEW   rgPropSheetPages;
+    HCERTSTORE          hSelectedCertStore;
+} CRYPTUI_SELECTCERTIFICATE_STRUCTA, *PCRYPTUI_SELECTCERTIFICATE_STRUCTA;
+typedef const CRYPTUI_SELECTCERTIFICATE_STRUCTA *
+ PCCRYPTUI_SELECTCERTIFICATE_STRUCTA;
+
+typedef struct _CRYPTUI_SELECTCERTIFICATE_STRUCTW
+{
+    DWORD               dwSize;
+    HWND                hwndParent;
+    DWORD               dwFlags;
+    LPCWSTR             szTitle;
+    DWORD               dwDontUseColumn;
+    LPCWSTR             szDisplayString;
+    PFNCFILTERPROC      pFilterCallback;
+    PFNCCERTDISPLAYPROC pDisplayCallback;
+    void               *pvCallbackData;
+    DWORD               cStores;
+    HCERTSTORE         *rghStores;
+    DWORD               cPropSheetPages;
+    LPCPROPSHEETPAGEW   rgPropSheetPages;
+    HCERTSTORE          hSelectedCertStore;
+} CRYPTUI_SELECTCERTIFICATE_STRUCTW, *PCRYPTUI_SELECTCERTIFICATE_STRUCTW;
+typedef const CRYPTUI_SELECTCERTIFICATE_STRUCTW *
+ PCCRYPTUI_SELECTCERTIFICATE_STRUCTW;
+
+PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateA(
+ PCCRYPTUI_SELECTCERTIFICATE_STRUCTA pcsc);
+PCCERT_CONTEXT WINAPI CryptUIDlgSelectCertificateW(
+ PCCRYPTUI_SELECTCERTIFICATE_STRUCTW pcsc);
+
+typedef struct tagCRYPTUI_VIEWSIGNERINFO_STRUCTA
+{
+    DWORD             dwSize;
+    HWND              hwndParent;
+    DWORD             dwFlags;
+    LPCSTR            szTitle;
+    CMSG_SIGNER_INFO *pSignerInfo;
+    HCRYPTMSG         hMsg;
+    LPCSTR            pszOID;
+    DWORD_PTR         dwReserved;
+    DWORD             cStores;
+    HCERTSTORE       *rghStores;
+    DWORD             cPropSheetPages;
+    LPCPROPSHEETPAGEA rgPropSheetPages;
+} CRYPTUI_VIEWSIGNERINFO_STRUCTA, *PCRYPTUI_VIEWSIGNERINFO_STRUCTA;
+
+typedef struct tagCRYPTUI_VIEWSIGNERINFO_STRUCTW
+{
+    DWORD             dwSize;
+    HWND              hwndParent;
+    DWORD             dwFlags;
+    LPCWSTR           szTitle;
+    CMSG_SIGNER_INFO *pSignerInfo;
+    HCRYPTMSG         hMsg;
+    LPCSTR            pszOID;
+    DWORD_PTR         dwReserved;
+    DWORD             cStores;
+    HCERTSTORE       *rghStores;
+    DWORD             cPropSheetPages;
+    LPCPROPSHEETPAGEW rgPropSheetPages;
+} CRYPTUI_VIEWSIGNERINFO_STRUCTW, *PCRYPTUI_VIEWSIGNERINFO_STRUCTW;
+
+BOOL WINAPI CryptUIDlgViewSignerInfoA(CRYPTUI_VIEWSIGNERINFO_STRUCTA *pcvsi);
+BOOL WINAPI CryptUIDlgViewSignerInfoW(CRYPTUI_VIEWSIGNERINFO_STRUCTW *pcvsi);
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif