//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1996 - 1997 // // File: wintrustP.h // // Contents: Microsoft Internet Security Trust PRIVATE INCLUDE // // History: 20-Nov-1997 pberkman created // //-------------------------------------------------------------------------- #ifndef WINTRUSTP_H #define WINTRUSTP_H #include #include #ifdef __cplusplus extern "C" { #endif #pragma pack(8) typedef struct WINTRUST_PBCB_INFO_ { DWORD cbStruct; LPCWSTR pcwszFileName; HANDLE hFile; DWORD cbContent; BYTE *pbContent; struct WINTRUST_ADV_INFO_ *psAdvanced; // optional } WINTRUST_PBCB_INFO, *PWINTRUST_PBCB_INFO; typedef struct WINTRUST_ADV_INFO_ { DWORD cbStruct; DWORD dwStoreFlags; # define WTCI_DONT_OPEN_STORES 0x00000001 // only open dummy "root" all other are in pahStores. # define WTCI_OPEN_ONLY_ROOT 0x00000002 DWORD chStores; // number of stores in pahStores HCERTSTORE *pahStores; // array of stores to add to internal list GUID *pgSubject; // Optional: SIP to load } WINTRUST_ADV_INFO, *PWINTRUST_ADV_INFO; #pragma pack() ////////////////////////////////////////////////////////////////////////////// // // TrustFindIssuerCertificate //---------------------------------------------------------------------------- // // Usage: // // Returns: // // Last Errors: // // Comments: // the dwFlags parameter is reserved for future use and MUST be set // to NULL. // extern PCCERT_CONTEXT WINAPI TrustFindIssuerCertificate(IN PCCERT_CONTEXT pChildContext, IN DWORD dwEncoding, IN DWORD chStores, IN HCERTSTORE *pahStores, IN FILETIME *psftVerifyAsOf, OUT OPTIONAL DWORD *pdwConfidence, OUT OPTIONAL DWORD *pdwError, IN DWORD dwFlags); ////////////////////////////////////////////////////////////////////////////// // // TrustOpenStores //---------------------------------------------------------------------------- // // Usage: // // Returns: // // Last Errors: // // Comments: // the dwFlags parameter is reserved for future use and MUST be set // to NULL. // extern BOOL WINAPI TrustOpenStores(IN HCRYPTPROV hProv, IN OUT DWORD *chStores, IN OUT OPTIONAL HCERTSTORE *pahStores, IN DWORD dwFlags); ////////////////////////////////////////////////////////////////////////////// // // TrustIsCertificateSelfSigned //---------------------------------------------------------------------------- // // Usage: // // Returns: // // Last Errors: // // Comments: // the dwFlags parameter is reserved for future use and MUST be set // to NULL. // extern BOOL WINAPI TrustIsCertificateSelfSigned(IN PCCERT_CONTEXT pContext, IN DWORD dwEncoding, IN DWORD dwFlags); ////////////////////////////////////////////////////////////////////////////// // // Exported "helper" functions //---------------------------------------------------------------------------- // extern BOOL WINAPI WTHelperOpenKnownStores(CRYPT_PROVIDER_DATA *pProvData); #define WTH_ALLOC 0x00000001 #define WTH_FREE 0x00000002 extern BOOL WINAPI WTHelperGetKnownUsages(DWORD fdwAction, PCCRYPT_OID_INFO **ppOidInfo); extern HANDLE WINAPI WTHelperGetFileHandle(WINTRUST_DATA *pWintrustData); extern WCHAR * WINAPI WTHelperGetFileName(WINTRUST_DATA *pWintrustData); extern BOOL WINAPI WTHelperCertIsSelfSignedEx(DWORD dwEncoding, PCCERT_CONTEXT pContext); extern BOOL WINAPI WTHelperOpenKnownStores(CRYPT_PROVIDER_DATA *pProvData); extern BOOL WINAPI WTHelperCheckCertUsage(PCCERT_CONTEXT pCertContext, LPCSTR pszRequestedUsageOID); extern BOOL WINAPI WTHelperIsInRootStore(CRYPT_PROVIDER_DATA *pProvData, PCCERT_CONTEXT pCertContext); extern BOOL WINAPI WTHelperGetAgencyInfo(PCCERT_CONTEXT pCert, DWORD *pcbAgencyInfo, struct _SPC_SP_AGENCY_INFO *psAgencyInfo); #define WVT_MODID_WINTRUST 0x00000001 #define WVT_MODID_SOFTPUB 0x00010000 #define WVT_MODID_MSSIP 0x00001000 extern BOOL WINAPI TrustDecode(DWORD dwModuleId, BYTE **ppbRet, DWORD *pcbRet, DWORD cbHint, DWORD dwEncoding, const char *pcszOID, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwDecodeFlags); extern BOOL WINAPI TrustFreeDecode(DWORD dwModuleId, BYTE **pbAllocated); // Returns ERROR_SUCCESS and the hash if the file was signed and contains a // valid hash extern LONG WINAPI WTHelperGetFileHash( IN LPCWSTR pwszFilename, IN DWORD dwFlags, IN OUT OPTIONAL PVOID *pvReserved, OUT OPTIONAL BYTE *pbFileHash, IN OUT OPTIONAL DWORD *pcbFileHash, OUT OPTIONAL ALG_ID *pHashAlgid ); // Open the cert manager UI dialog's TrustedPublisher Tab. // // The following flags may be set: // WT_TRUSTDBDIALOG_NO_UI_FLAG // Set this flag in conjunction with // WT_TRUSTDBDIALOG_WRITE_LEGACY_REG_FLAG and/or // WT_TRUSTDBDIALOG_WRITE_IEAK_STORE_FLAG to do the registry and/or // store write without any UI. // WT_TRUSTDBDIALOG_ONLY_PUB_TAB_FLAG // By default all of the UI tabs are displayed with TrustedPublisher // as the initial tab. Setting this flag only displays the // TrustedPublisher tab. // WT_TRUSTDBDIALOG_WRITE_LEGACY_REG_FLAG // Setting this flag causes the trusted publishers to be written to the // following legacy registry location: // "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ // WinTrust\Trust Providers\Software Publishing\Trust Database\0" // The registry value names are constructed as ascii generated // representations of the md5 hash of the issuer name and the cert's serial // number. The string value is the subject display name. // // Note, the above registry key is initially deleted to force the removal // of any previous publisher values. // WT_TRUSTDBDIALOG_WRITE_IEAK_STORE_FLAG // Setting this flag causes all of the trusted publishers to be copied to // the "TrustedPublisher_IEAK" system registry store at the following // location: // "HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\ // TrustedPublisher_IEAK\Certificates\..." // Note, the logical HKCU TrustedPublisher store inherits from HKLM and // GroupPolicy. The TrustedPublisher_IEAK will contain the entire set // under a single registry subkey. // // Note, initially all certs are removed from the above store. // extern BOOL WINAPI OpenPersonalTrustDBDialogEx( IN OPTIONAL HWND hwndParent, IN DWORD dwFlags, IN OUT OPTIONAL PVOID *pvReserved ); #define WT_TRUSTDBDIALOG_NO_UI_FLAG 0x00000001 #define WT_TRUSTDBDIALOG_ONLY_PUB_TAB_FLAG 0x00000002 #define WT_TRUSTDBDIALOG_WRITE_LEGACY_REG_FLAG 0x00000100 #define WT_TRUSTDBDIALOG_WRITE_IEAK_STORE_FLAG 0x00000200 // Calls above with dwFlags = 0 and pvReserved = NULL extern BOOL WINAPI OpenPersonalTrustDBDialog( IN OPTIONAL HWND hwndParent ); #ifdef __cplusplus } #endif #endif // WINTRUSTP_H