Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438/* * 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__
#include <wintrust.h>#include <wincrypt.h>#include <prsht.h>
#ifdef __cplusplusextern "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;typedef const CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT *PCCRYPTUI_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, PCCRYPTUI_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; LPCSTR szTitle; DWORD dwDontUseColumn; LPCSTR szDisplayString; PFNCFILTERPROC pFilterCallback; PFNCCERTDISPLAYPROC pDisplayCallback; void *pvCallbackData; DWORD cDisplayStores; HCERTSTORE *rghDisplayStores; DWORD cStores; HCERTSTORE *rghStores; DWORD cPropSheetPages; LPCPROPSHEETPAGEA 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 cDisplayStores; HCERTSTORE *rghDisplayStores; 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