diff options
Diffstat (limited to '')
-rw-r--r-- | public/sdk/inc/wintrust.h | 311 |
1 files changed, 311 insertions, 0 deletions
diff --git a/public/sdk/inc/wintrust.h b/public/sdk/inc/wintrust.h new file mode 100644 index 000000000..d7af52e96 --- /dev/null +++ b/public/sdk/inc/wintrust.h @@ -0,0 +1,311 @@ +/************************************************************************ +* * +* wintrust.h -- This module defines the 32-Bit WinTrust definitions * +* needed to build Trust Providers and / Subject * +* Interface Packages. * +* * +* Copyright (c) 1990-1996, Microsoft Corp. All rights reserved. * +* * +************************************************************************/ +#ifndef _WINTRUST_ +#define _WINTRUST_ + +#ifdef __cplusplus +extern "C" { +#endif + + + +/*********************************************************************** +* * +* This section contains definitions related to: * +* * +* WinTrust in general * +* * +************************************************************************/ + + +// +// WinTrust Revisioning +// +#define WIN_TRUST_MAJOR_REVISION_MASK 0xFFFF0000 +#define WIN_TRUST_MINOR_REVISION_MASK 0x0000FFFF +#define WIN_TRUST_REVISION_1_0 0x00010000 + + + + +/*********************************************************************** +* * +* This section contains definitions related to: * +* * +* Subject Interface Packages * +* * +************************************************************************/ + +// +// Allows passing of subject and type material. +// + +typedef struct _WIN_TRUST_SIP_SUBJECT { + GUID * SubjectType; + WIN_TRUST_SUBJECT Subject; +} WIN_TRUST_SIP_SUBJECT, *LPWIN_TRUST_SIP_SUBJECT; + +// +// Templates of services that must be EXPORTED by SIPs +// FOR USE by Trust Providers (calling through WinTrust). +// + +typedef BOOL +(WINAPI *LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO)( + IN LPWIN_TRUST_SIP_SUBJECT lpSubject, // pointer to subject info + IN LPWIN_CERTIFICATE lpSignedData // PKCS #7 Signed Data + ); + +typedef BOOL +(WINAPI *LPWINTRUST_SUBJECT_ENUM_CERTIFICATES)( + IN LPWIN_TRUST_SIP_SUBJECT lpSubject, // pointer to subject info + IN DWORD dwTypeFilter, // 0 or WIN_CERT_TYPE_xxx + OUT LPDWORD lpCertificateCount, + IN OUT LPDWORD lpIndices, // Rcvs WIN_CERT_TYPE_ + IN DWORD dwIndexCount + ); + +typedef BOOL +(WINAPI *LPWINTRUST_SUBJECT_GET_CERTIFICATE)( + IN LPWIN_TRUST_SIP_SUBJECT lpSubject, + IN DWORD dwCertificateIndex, + OUT LPWIN_CERTIFICATE lpCertificate, + IN OUT LPDWORD lpRequiredLength + ); + +typedef BOOL +(WINAPI *LPWINTRUST_SUBJECT_GET_CERT_HEADER)( + IN LPWIN_TRUST_SIP_SUBJECT lpSubject, + IN DWORD dwCertificateIndex, + OUT LPWIN_CERTIFICATE lpCertificateHeader + ); + +typedef BOOL +(WINAPI *LPWINTRUST_SUBJECT_GET_NAME)( + IN LPWIN_TRUST_SIP_SUBJECT lpSubject, + IN LPWIN_CERTIFICATE lpSignedData, + IN OUT LPWSTR lpBuffer, + IN OUT LPDWORD lpRequiredLength + ); + +typedef DWORD +(WINAPI *LPWINTRUST_PROVIDER_PING) ( + IN LPWSTR lpProviderName, + IN DWORD dwClientParameter, + OUT LPDWORD lpdwServerReturnValue + ); + + +typedef struct _WINTRUST_SIP_DISPATCH_TABLE +{ + LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO CheckSubjectContentInfo; + LPWINTRUST_SUBJECT_ENUM_CERTIFICATES EnumSubjectCertificates; + LPWINTRUST_SUBJECT_GET_CERTIFICATE GetSubjectCertificate; + LPWINTRUST_SUBJECT_GET_CERT_HEADER GetSubjectCertHeader; + LPWINTRUST_SUBJECT_GET_NAME GetSubjectName; + +} WINTRUST_SIP_DISPATCH_TABLE, *LPWINTRUST_SIP_DISPATCH_TABLE; + + + +// +// Structure describing an individual SIP. +// +// This structure is passed back to WinTrust from a Subject Interface Package +// initialization call. +// +typedef struct _WINTRUST_SIP_INFO { + DWORD dwRevision; + LPWINTRUST_SIP_DISPATCH_TABLE lpServices; + DWORD dwSubjectTypeCount; + GUID * lpSubjectTypeArray; +} WINTRUST_SIP_INFO, *LPWINTRUST_SIP_INFO; + + + +// +// SIP Intialization routine. +// SIP DLLs are required to have a routine named: +// +// WinTrustSipInitialize. +// +// This initialization routine must have the following +// definition: +// + +typedef BOOL +(WINAPI *LPWINTRUST_SUBJECT_PACKAGE_INITIALIZE)( + IN DWORD dwWinTrustRevision, + OUT LPWINTRUST_SIP_INFO *lpSipInfo + ); + + + + +/*********************************************************************** +* * +* This section contains definitions related to: * +* * +* Trust Providers * +* * +************************************************************************/ + +// +// Dispatch table of WinTrust services available to Trust Providers +// +// Client side... + +typedef struct _WINTRUST_CLIENT_TP_DISPATCH_TABLE +{ + LPWINTRUST_PROVIDER_PING ServerPing; + LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO CheckSubjectContentInfo; + LPWINTRUST_SUBJECT_ENUM_CERTIFICATES EnumSubjectCertificates; + LPWINTRUST_SUBJECT_GET_CERTIFICATE GetSubjectCertificate; + LPWINTRUST_SUBJECT_GET_CERT_HEADER GetSubjectCertHeader; + LPWINTRUST_SUBJECT_GET_NAME GetSubjectName; + +} WINTRUST_CLIENT_TP_DISPATCH_TABLE, *LPWINTRUST_CLIENT_TP_DISPATCH_TABLE; + + +// Server side... + +typedef struct _WINTRUST_SERVER_TP_DISPATCH_TABLE +{ + LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO CheckSubjectContentInfo; + LPWINTRUST_SUBJECT_ENUM_CERTIFICATES EnumSubectCertificates; + LPWINTRUST_SUBJECT_GET_CERTIFICATE GetSubjectCertificate; + LPWINTRUST_SUBJECT_GET_CERT_HEADER GetSubjectCertHeader; + LPWINTRUST_SUBJECT_GET_NAME GetSubjectName; + +} WINTRUST_SERVER_TP_DISPATCH_TABLE, *LPWINTRUST_SERVER_TP_DISPATCH_TABLE; + + +// +// The following structures are passed by WinTrust to a +// Trust Provider being initialized. +// +// Client side... + +typedef struct _WINTRUST_CLIENT_TP_INFO { + DWORD dwRevision; + LPWINTRUST_CLIENT_TP_DISPATCH_TABLE lpServices; +} WINTRUST_CLIENT_TP_INFO, *LPWINTRUST_CLIENT_TP_INFO; + +// Server side +typedef struct _WINTRUST_SERVER_TP_INFO { + DWORD dwRevision; + LPWINTRUST_SERVER_TP_DISPATCH_TABLE lpServices; +} WINTRUST_SERVER_TP_INFO, *LPWINTRUST_SERVER_TP_INFO; + + +// +// Templates of Trust Provider services available to WinTrust +// +typedef LONG +(WINAPI *LPWINTRUST_PROVIDER_VERIFY_TRUST) ( + IN HWND hwnd, + IN GUID * ActionID, + IN LPVOID ActionData + ); + +typedef VOID +(WINAPI *LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE) ( + IN LPWIN_CERTIFICATE lpCertificate + ); + +typedef VOID +(WINAPI *LPWINTRUST_PROVIDER_CLIENT_UNLOAD) ( + IN LPVOID lpTrustProviderInfo + ); + +typedef VOID +(WINAPI *LPWINTRUST_PROVIDER_SERVER_UNLOAD) ( + IN LPVOID lpTrustProviderInfo + ); + +// +// Dispatch table of Trust provider services available for use by WinTrust +// +// Client side... + +typedef struct _WINTRUST_PROVIDER_CLIENT_SERVICES +{ + LPWINTRUST_PROVIDER_CLIENT_UNLOAD Unload; + LPWINTRUST_PROVIDER_VERIFY_TRUST VerifyTrust; + LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE SubmitCertificate; + +} WINTRUST_PROVIDER_CLIENT_SERVICES, *LPWINTRUST_PROVIDER_CLIENT_SERVICES; + + +typedef struct _WINTRUST_PROVIDER_SERVER_SERVICES +{ + LPWINTRUST_PROVIDER_SERVER_UNLOAD Unload; + LPWINTRUST_PROVIDER_PING Ping; + +} WINTRUST_PROVIDER_SERVER_SERVICES, *LPWINTRUST_PROVIDER_SERVER_SERVICES; + + +// +// This structure is passed back from the client-side Trust Provider +// following initialization of that Trust Provider. +// +typedef struct _WINTRUST_PROVIDER_CLIENT_INFO { + DWORD dwRevision; + LPWINTRUST_PROVIDER_CLIENT_SERVICES lpServices; + DWORD dwActionIdCount; + GUID * lpActionIdArray; +} WINTRUST_PROVIDER_CLIENT_INFO, *LPWINTRUST_PROVIDER_CLIENT_INFO; + +// +// This structure is passed back from the server-side trust provider following +// initialization of that trust provider. +// +typedef struct _WINTRUST_PROVIDER_SERVER_INFO { + DWORD dwRevision; + LPWINTRUST_PROVIDER_SERVER_SERVICES lpServices; +} WINTRUST_PROVIDER_SERVER_INFO, *LPWINTRUST_PROVIDER_SERVER_INFO; + + + + + +// +// Trust Provider Initialization Routines +// Each Trust Provider DLL must have a client and server side initialization +// routine. The routines must be named: +// +// WinTrustProviderClientInitialize() +// and +// WinTrustProviderServerInitialize() +// +// and must be defined to match the following templates... +// +typedef BOOL +(WINAPI *LPWINTRUST_PROVIDER_CLIENT_INITIALIZE)( + IN DWORD dwWinTrustRevision, + IN LPWINTRUST_CLIENT_TP_INFO lpWinTrustInfo, + IN LPWSTR lpProviderName, + OUT LPWINTRUST_PROVIDER_CLIENT_INFO *lpTrustProviderInfo + ); + +typedef BOOL +(WINAPI *LPWINTRUST_PROVIDER_SERVER_INITIALIZE) ( + IN DWORD dwWinTrustRevision, + IN LPWINTRUST_SERVER_TP_INFO lpWinTrustInfo, + IN LPWSTR lpProviderName, + OUT LPWINTRUST_PROVIDER_SERVER_INFO *lpTrustProviderInfo + ); + + +#ifdef __cplusplus +} +#endif + +#endif // _WINTRUST_ |