| /* | 
 |  * Copyright (C) 2004 Francois Gouget | 
 |  * | 
 |  * 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 __WINE_WINTRUST_H | 
 | #define __WINE_WINTRUST_H | 
 |  | 
 | #include <wincrypt.h> | 
 |  | 
 |  | 
 | #include <pshpack8.h> | 
 |  | 
 | typedef struct WINTRUST_FILE_INFO_ | 
 | { | 
 |     DWORD   cbStruct; | 
 |     LPCWSTR pcwszFilePath; | 
 |     HANDLE  hFile; | 
 |     GUID*   pgKnownSubject; | 
 | } WINTRUST_FILE_INFO, *PWINTRUST_FILE_INFO; | 
 |  | 
 | typedef struct WINTRUST_CATALOG_INFO_ | 
 | { | 
 |     DWORD         cbStruct; | 
 |     DWORD         dwCatalogVersion; | 
 |     LPCWSTR       pcwszCatalogFilePath; | 
 |     LPCWSTR       pcwszMemberTag; | 
 |     LPCWSTR       pcwszMemberFilePath; | 
 |     HANDLE        hMemberFile; | 
 |     BYTE*         pbCalculatedFileHash; | 
 |     DWORD         cbCalculatedFileHash; | 
 |     PCCTL_CONTEXT pcCatalogContext; | 
 | } WINTRUST_CATALOG_INFO, *PWINTRUST_CATALOG_INFO; | 
 |  | 
 | typedef struct WINTRUST_BLOB_INFO_ | 
 | { | 
 |     DWORD   cbStruct; | 
 |     GUID    gSubject; | 
 |     LPCWSTR pcwszDisplayName; | 
 |     DWORD   cbMemObject; | 
 |     BYTE*   pbMemObject; | 
 |     DWORD   cbMemSignedMsg; | 
 |     BYTE*   pbMemSignedMsg; | 
 | } WINTRUST_BLOB_INFO, *PWINTRUST_BLOB_INFO; | 
 |  | 
 | typedef struct WINTRUST_SGNR_INFO_ | 
 | { | 
 |     DWORD             cbStruct; | 
 |     LPCWSTR           pcwszDisplayName; | 
 |     CMSG_SIGNER_INFO* psSignerInfo; | 
 |     DWORD             chStores; | 
 |     HCERTSTORE*       pahStores; | 
 | } WINTRUST_SGNR_INFO, *PWINTRUST_SGNR_INFO; | 
 |  | 
 | typedef struct WINTRUST_CERT_INFO_ | 
 | { | 
 |     DWORD         cbStruct; | 
 |     LPCWSTR       pcwszDisplayName; | 
 |     CERT_CONTEXT* psCertContext; | 
 |     DWORD         chStores; | 
 |     HCERTSTORE*   pahStores; | 
 |     DWORD         dwFlags; | 
 |     FILETIME*     psftVerifyAsOf; | 
 | } WINTRUST_CERT_INFO, *PWINTRUST_CERT_INFO; | 
 |  | 
 | /* dwUIChoice */ | 
 | #define WTD_UI_ALL                1 | 
 | #define WTD_UI_NONE               2 | 
 | #define WTD_UI_NOBAD              3 | 
 | #define WTD_UI_NOGOOD             4 | 
 | /* fdwRevocationChecks */ | 
 | #define WTD_REVOKE_NONE           0 | 
 | #define WTD_REVOKE_WHOLECHAIN     1 | 
 | /* dwUnionChoice */ | 
 | #define WTD_CHOICE_FILE           1 | 
 | #define WTD_CHOICE_CATALOG        2 | 
 | #define WTD_CHOICE_BLOB           3 | 
 | #define WTD_CHOICE_SIGNER         4 | 
 | #define WTD_CHOICE_CERT           5 | 
 |  | 
 | typedef struct _WINTRUST_DATA | 
 | { | 
 |     DWORD  cbStruct; | 
 |     LPVOID pPolicyCallbackData; | 
 |     LPVOID pSIPClientData; | 
 |     DWORD  dwUIChoice; | 
 |     DWORD  fdwRevocationChecks; | 
 |     DWORD  dwUnionChoice; | 
 |     union | 
 |     { | 
 |         struct WINTRUST_FILE_INFO_*    pFile; | 
 |         struct WINTRUST_CATALOG_INFO_* pCatalog; | 
 |         struct WINTRUST_BLOB_INFO_*    pBlob; | 
 |         struct WINTRUST_SGNR_INFO_*    pSgnr; | 
 |         struct WINTRUST_CERT_INFO_*    pCert; | 
 |     } DUMMYUNIONNAME; | 
 |  | 
 |     DWORD  dwStateAction; | 
 |     HANDLE hWVTStateData; | 
 |     WCHAR* pwszURLReference; | 
 |     DWORD  dwProvFlags; | 
 |     DWORD  dwUIContext; | 
 | } WINTRUST_DATA, *PWINTRUST_DATA; | 
 |  | 
 | typedef struct _CRYPT_TRUST_REG_ENTRY | 
 | { | 
 |     DWORD cbStruct; | 
 |     WCHAR *pwszDLLName; | 
 |     WCHAR *pwszFunctionName; | 
 | } CRYPT_TRUST_REG_ENTRY, *PCRYPT_TRUST_REG_ENTRY; | 
 |  | 
 | typedef struct _CRYPT_REGISTER_ACTIONID | 
 | { | 
 |     DWORD cbStruct; | 
 |     CRYPT_TRUST_REG_ENTRY sInitProvider; | 
 |     CRYPT_TRUST_REG_ENTRY sObjectProvider; | 
 |     CRYPT_TRUST_REG_ENTRY sSignatureProvider; | 
 |     CRYPT_TRUST_REG_ENTRY sCertificateProvider; | 
 |     CRYPT_TRUST_REG_ENTRY sCertificatePolicyProvider; | 
 |     CRYPT_TRUST_REG_ENTRY sFinalPolicyProvider; | 
 |     CRYPT_TRUST_REG_ENTRY sTestPolicyProvider; | 
 |     CRYPT_TRUST_REG_ENTRY sCleanupProvider; | 
 | } CRYPT_REGISTER_ACTIONID, *PCRYPT_REGISTER_ACTIONID; | 
 |  | 
 | typedef struct _CRYPT_PROVUI_DATA { | 
 |     DWORD cbStruct; | 
 |     DWORD dwFinalError; | 
 |     WCHAR *pYesButtonText; | 
 |     WCHAR *pNoButtonText; | 
 |     WCHAR *pMoreInfoButtonText; | 
 |     WCHAR *pAdvancedLinkText; | 
 |     WCHAR *pCopyActionText; | 
 |     WCHAR *pCopyActionTextNoTS; | 
 |     WCHAR *pCopyActionTextNotSigned; | 
 | } CRYPT_PROVUI_DATA, *PCRYPT_PROVUI_DATA; | 
 |  | 
 | typedef struct _CRYPT_PROVIDER_CERT { | 
 |     DWORD               cbStruct; | 
 |     PCCERT_CONTEXT      pCert; | 
 |     BOOL                fCommercial; | 
 |     BOOL                fTrustedRoot; | 
 |     BOOL                fSelfSigned; | 
 |     BOOL                fTestCert; | 
 |     DWORD               dwRevokedReason; | 
 |     DWORD               dwConfidence; | 
 |     DWORD               dwError; | 
 |     CTL_CONTEXT        *pTrustListContext; | 
 |     BOOL                fTrustListSignerCert; | 
 |     PCCTL_CONTEXT       pCtlContext; | 
 |     DWORD               dwCtlError; | 
 |     BOOL                fIsCyclic; | 
 |     PCERT_CHAIN_ELEMENT pChainElement; | 
 | } CRYPT_PROVIDER_CERT, *PCRYPT_PROVIDER_CERT; | 
 |  | 
 | typedef struct _CRYPT_PROVIDER_SGNR { | 
 |     DWORD                cbStruct; | 
 |     FILETIME             sftVerifyAsOf; | 
 |     DWORD                csCertChain; | 
 |     CRYPT_PROVIDER_CERT *pasCertChain; | 
 |     DWORD                dwSignerType; | 
 |     CMSG_SIGNER_INFO    *psSigner; | 
 |     DWORD                dwError; | 
 |     DWORD                csCounterSigners; | 
 |     struct _CRYPT_PROVIDER_SGNR *pasCounterSigners; | 
 |     PCCERT_CHAIN_CONTEXT pChainContext; | 
 | } CRYPT_PROVIDER_SGNR, *PCRYPT_PROVIDER_SGNR; | 
 |  | 
 | typedef struct _CRYPT_PROVIDER_PRIVDATA { | 
 |     DWORD cbStruct; | 
 |     GUID  gProviderID; | 
 |     DWORD cbProvData; | 
 |     void *pvProvData; | 
 | } CRYPT_PROVIDER_PRIVDATA, *PCRYPT_PROVIDER_PRIVDATA; | 
 |  | 
 | struct _CRYPT_PROVIDER_DATA; | 
 |  | 
 | typedef void * (*PFN_CPD_MEM_ALLOC)(DWORD cbSize); | 
 | typedef void (*PFN_CPD_MEM_FREE)(void *pvMem2Free); | 
 | typedef BOOL (*PFN_CPD_ADD_STORE)(struct _CRYPT_PROVIDER_DATA *pProvData, | 
 |  HCERTSTORE hStore2Add); | 
 | typedef BOOL (*PFN_CPD_ADD_SGNR)(struct _CRYPT_PROVIDER_DATA *pProvData, | 
 |  BOOL fCounterSigner, DWORD idxSigner, struct _CRYPT_PROVIDER_SGNR *pSgnr2Add); | 
 | typedef BOOL (*PFN_CPD_ADD_CERT)(struct _CRYPT_PROVIDER_DATA *pProvData, | 
 |  DWORD idxSigner, BOOL fCounterSigner, DWORD idxCounterSigner, | 
 |  PCCERT_CONTEXT pCert2Add); | 
 | typedef BOOL (*PFN_CPD_ADD_PRIVDATA)(struct _CRYPT_PROVIDER_DATA *pProvData, | 
 |  struct _CRYPT_PROVIDER_PRIVDATA *pPrivData2Add); | 
 | typedef HRESULT (*PFN_PROVIDER_INIT_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 | typedef HRESULT (*PFN_PROVIDER_OBJTRUST_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 | typedef HRESULT (*PFN_PROVIDER_SIGTRUST_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 | typedef HRESULT (*PFN_PROVIDER_CERTTTRUST_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 | typedef HRESULT (*PFN_PROVIDER_FINALPOLICY_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 | typedef HRESULT (*PFN_PROVIDER_TESTFINALPOLICY_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 | typedef HRESULT (*PFN_PROVIDER_CLEANUP_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 | typedef BOOL (*PFN_PROVIDER_CERTCHKPOLICY_CALL)( | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner, | 
 |  BOOL fCounterSignerChain, DWORD idxCounterSigner); | 
 |  | 
 | typedef struct _CRYPT_PROVIDER_FUNCTIONS { | 
 |     DWORD cbStruct; | 
 |     PFN_CPD_MEM_ALLOC    pfnAlloc; | 
 |     PFN_CPD_MEM_FREE     pfnFree; | 
 |     PFN_CPD_ADD_STORE    pfnAddStore2Chain; | 
 |     PFN_CPD_ADD_SGNR     pfnAddSgnr2Chain; | 
 |     PFN_CPD_ADD_CERT     pfnAddCert2Chain; | 
 |     PFN_CPD_ADD_PRIVDATA pfnAddPrivData2Chain; | 
 |     PFN_PROVIDER_INIT_CALL            pfnInitialize; | 
 |     PFN_PROVIDER_OBJTRUST_CALL        pfnObjectTrust; | 
 |     PFN_PROVIDER_SIGTRUST_CALL        pfnSignatureTrust; | 
 |     PFN_PROVIDER_CERTTTRUST_CALL      pfnCertificateTrust; | 
 |     PFN_PROVIDER_FINALPOLICY_CALL     pfnFinalPolicy; | 
 |     PFN_PROVIDER_CERTCHKPOLICY_CALL   pfnCertCheckPolicy; | 
 |     PFN_PROVIDER_TESTFINALPOLICY_CALL pfnTestFinalPolicy; | 
 |     struct _CRYPT_PROVUI_FUNCS       *psUIpfns; | 
 |     PFN_PROVIDER_CLEANUP_CALL         pfnCleanupPolicy; | 
 | } CRYPT_PROVIDER_FUNCTIONS, *PCRYPT_PROVIDER_FUNCTIONS; | 
 |  | 
 | struct SIP_DISPATCH_INFO_; | 
 | struct SIP_SUBJECTINFO_; | 
 | struct SIP_INDIRECT_DATA_; | 
 |  | 
 | typedef struct _PROVDATA_SIP { | 
 |     DWORD cbStruct; | 
 |     GUID  gSubject; | 
 |     struct SIP_DISPATCH_INFO_ *pSip; | 
 |     struct SIP_DISPATCH_INFO_ *pCATSip; | 
 |     struct SIP_SUBJECTINFO_   *psSipSubjectInfo; | 
 |     struct SIP_SUBJECTINFO_   *psSipCATSubjectInfo; | 
 |     struct SIP_INDIRECT_DATA_ *psIndirectData; | 
 | } PROVDATA_SIP, *PPROVDATA_SIP; | 
 |  | 
 | typedef struct _CRYPT_PROVIDER_DATA { | 
 |     DWORD                     cbStruct; | 
 |     WINTRUST_DATA            *pWintrustData; | 
 |     BOOL                      fOpenedFile; | 
 |     HWND                      hWndParent; | 
 |     GUID                     *pgActionID; | 
 |     HCRYPTPROV                hProv; | 
 |     DWORD                     dwError; | 
 |     DWORD                     dwRegSecuritySettings; | 
 |     DWORD                     dwRegPolicySettings; | 
 |     CRYPT_PROVIDER_FUNCTIONS *psPfns; | 
 |     DWORD                     cdwTrustStepErrors; | 
 |     DWORD                    *padwTrustStepErrors; | 
 |     DWORD                     chStores; | 
 |     HCERTSTORE               *pahStores; | 
 |     DWORD                     dwEncoding; | 
 |     HCRYPTMSG                 hMsg; | 
 |     DWORD                     csSigners; | 
 |     CRYPT_PROVIDER_SGNR      *pasSigners; | 
 |     DWORD                     dwSubjectChoice; | 
 |     union { | 
 |         struct _PROVDATA_SIP        *pPDSip; | 
 |     } DUMMYUNIONNAME; | 
 |     char                     *pszUsageOID; | 
 |     BOOL                      fRecallWithState; | 
 |     FILETIME                  sftSystemTime; | 
 |     char                      *pszCTLSignerUsageOID; | 
 |     DWORD                     dwProvFlags; | 
 |     DWORD                     dwFinalError; | 
 |     PCERT_USAGE_MATCH         pRequestUsage; | 
 |     DWORD                     dwTrustPubSettings; | 
 |     DWORD                     dwUIStateFlags; | 
 | } CRYPT_PROVIDER_DATA, *PCRYPT_PROVIDER_DATA; | 
 |  | 
 | typedef BOOL (*PFN_PROVUI_CALL)(HWND hWndSecurityDialog, | 
 |  struct _CRYPT_PROVIDER_DATA *pProvData); | 
 |  | 
 | typedef struct _CRYPT_PROVUI_FUNCS { | 
 |     DWORD cbStruct; | 
 |     CRYPT_PROVUI_DATA psUIData; | 
 |     PFN_PROVUI_CALL pfnOnMoreInfoClick; | 
 |     PFN_PROVUI_CALL pfnOnMoreInfoClickDefault; | 
 |     PFN_PROVUI_CALL pfnOnAdvancedClick; | 
 |     PFN_PROVUI_CALL pfnOnAdvancedClickDefault; | 
 | } CRYPT_PROVUI_FUNCS, *PCRYPT_PROVUI_FUNCS; | 
 |  | 
 | #include <poppack.h> | 
 |  | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | BOOL      WINAPI WintrustAddActionID(GUID*,DWORD,CRYPT_REGISTER_ACTIONID*); | 
 | BOOL      WINAPI WintrustRemoveActionID(GUID*); | 
 | BOOL      WINAPI WintrustLoadFunctionPointers(GUID*,CRYPT_PROVIDER_FUNCTIONS*); | 
 | void      WINAPI WintrustGetRegPolicyFlags(DWORD*); | 
 | LONG      WINAPI WinVerifyTrust(HWND,GUID*,WINTRUST_DATA*); | 
 | HRESULT   WINAPI WinVerifyTrustEx(HWND,GUID*,WINTRUST_DATA*); | 
 |  | 
 | CRYPT_PROVIDER_SGNR * WINAPI WTHelperGetProvSignerFromChain( | 
 |  CRYPT_PROVIDER_DATA *pProvData, DWORD idxSigner, BOOL fCounterSigner, | 
 |  DWORD idxCounterSigner); | 
 | CRYPT_PROVIDER_DATA * WINAPI WTHelperProvDataFromStateData(HANDLE hStateData); | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 |  | 
 | #endif |