home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * *
- * 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_
-