home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / win32 / Wintrust.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-08  |  10.8 KB  |  312 lines

  1. /************************************************************************
  2. *                                                                       *
  3. *   wintrust.h -- This module defines the 32-Bit WinTrust definitions   *
  4. *                 needed to build Trust Providers and / Subject         *
  5. *                 Interface Packages.                                   *
  6. *                                                                       *
  7. *   Copyright (c) 1990-1996, Microsoft Corp. All rights reserved.       *
  8. *                                                                       *
  9. ************************************************************************/
  10. #ifndef _WINTRUST_
  11. #define _WINTRUST_
  12.  
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16.  
  17.  
  18.  
  19. /***********************************************************************
  20. *                                                                      *
  21. * This section contains definitions related to:                        *
  22. *                                                                      *
  23. *                           WinTrust in general                        *
  24. *                                                                      *
  25. ************************************************************************/
  26.  
  27.  
  28. //
  29. // WinTrust Revisioning
  30. //
  31. #define WIN_TRUST_MAJOR_REVISION_MASK       0xFFFF0000
  32. #define WIN_TRUST_MINOR_REVISION_MASK       0x0000FFFF
  33. #define WIN_TRUST_REVISION_1_0              0x00010000
  34.  
  35.  
  36.  
  37.  
  38. /***********************************************************************
  39. *                                                                      *
  40. * This section contains definitions related to:                        *
  41. *                                                                      *
  42. *                           Subject Interface Packages                 *
  43. *                                                                      *
  44. ************************************************************************/
  45.  
  46. //
  47. // Allows passing of subject and type material.
  48. //
  49.  
  50. typedef struct _WIN_TRUST_SIP_SUBJECT {
  51.     GUID *                  SubjectType;
  52.     WIN_TRUST_SUBJECT       Subject;
  53. } WIN_TRUST_SIP_SUBJECT, *LPWIN_TRUST_SIP_SUBJECT;
  54.  
  55. //
  56. // Templates of services that must be EXPORTED by SIPs
  57. // FOR USE by Trust Providers (calling through WinTrust).
  58. //
  59.  
  60. typedef BOOL
  61. (WINAPI *LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO)(
  62.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,          // pointer to subject info
  63.     IN     LPWIN_CERTIFICATE                lpSignedData       // PKCS #7 Signed Data
  64.     );
  65.  
  66. typedef BOOL
  67. (WINAPI *LPWINTRUST_SUBJECT_ENUM_CERTIFICATES)(
  68.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,          // pointer to subject info
  69.     IN     DWORD                            dwTypeFilter,       // 0 or WIN_CERT_TYPE_xxx
  70.     OUT    LPDWORD                          lpCertificateCount,
  71.     IN OUT LPDWORD                          lpIndices,          // Rcvs WIN_CERT_TYPE_
  72.     IN     DWORD                            dwIndexCount
  73.     );
  74.  
  75. typedef BOOL
  76. (WINAPI *LPWINTRUST_SUBJECT_GET_CERTIFICATE)(
  77.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,
  78.     IN     DWORD                            dwCertificateIndex,
  79.     OUT    LPWIN_CERTIFICATE                lpCertificate,
  80.     IN OUT LPDWORD                          lpRequiredLength
  81.     );
  82.  
  83. typedef BOOL
  84. (WINAPI *LPWINTRUST_SUBJECT_GET_CERT_HEADER)(
  85.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,
  86.     IN     DWORD                            dwCertificateIndex,
  87.     OUT    LPWIN_CERTIFICATE                lpCertificateHeader
  88.     );
  89.  
  90. typedef BOOL
  91. (WINAPI *LPWINTRUST_SUBJECT_GET_NAME)(
  92.     IN     LPWIN_TRUST_SIP_SUBJECT      lpSubject,
  93.     IN     LPWIN_CERTIFICATE            lpSignedData,
  94.     IN OUT LPWSTR                       lpBuffer,
  95.     IN OUT LPDWORD                      lpRequiredLength
  96.     );
  97.  
  98. typedef DWORD
  99. (WINAPI *LPWINTRUST_PROVIDER_PING) (
  100.     IN      LPWSTR              lpProviderName,
  101.     IN      DWORD               dwClientParameter,
  102.     OUT     LPDWORD             lpdwServerReturnValue
  103.     );
  104.  
  105.  
  106. typedef struct _WINTRUST_SIP_DISPATCH_TABLE
  107. {
  108.     LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO   CheckSubjectContentInfo;
  109.     LPWINTRUST_SUBJECT_ENUM_CERTIFICATES    EnumSubjectCertificates;
  110.     LPWINTRUST_SUBJECT_GET_CERTIFICATE      GetSubjectCertificate;
  111.     LPWINTRUST_SUBJECT_GET_CERT_HEADER      GetSubjectCertHeader;
  112.     LPWINTRUST_SUBJECT_GET_NAME             GetSubjectName;
  113.  
  114. } WINTRUST_SIP_DISPATCH_TABLE, *LPWINTRUST_SIP_DISPATCH_TABLE;
  115.  
  116.  
  117.  
  118. //
  119. // Structure describing an individual SIP.
  120. //
  121. // This structure is passed back to WinTrust from a Subject Interface Package
  122. // initialization call.
  123. //
  124. typedef struct _WINTRUST_SIP_INFO {
  125.     DWORD                               dwRevision;
  126.     LPWINTRUST_SIP_DISPATCH_TABLE       lpServices;
  127.     DWORD                               dwSubjectTypeCount;
  128.     GUID *                              lpSubjectTypeArray;
  129. } WINTRUST_SIP_INFO, *LPWINTRUST_SIP_INFO;
  130.  
  131.  
  132.  
  133. //
  134. // SIP Intialization routine.
  135. // SIP DLLs are required to have a routine named:
  136. //
  137. //                          WinTrustSipInitialize.
  138. //
  139. // This initialization routine must have the following
  140. // definition:
  141. //
  142.  
  143. typedef BOOL
  144. (WINAPI *LPWINTRUST_SUBJECT_PACKAGE_INITIALIZE)(
  145.     IN     DWORD                            dwWinTrustRevision,
  146.     OUT    LPWINTRUST_SIP_INFO              *lpSipInfo
  147.     );
  148.  
  149.  
  150.  
  151.  
  152. /***********************************************************************
  153. *                                                                      *
  154. * This section contains definitions related to:                        *
  155. *                                                                      *
  156. *                           Trust Providers                            *
  157. *                                                                      *
  158. ************************************************************************/
  159.  
  160. //
  161. // Dispatch table of WinTrust services available to Trust Providers
  162. //
  163. // Client side...
  164.  
  165. typedef struct _WINTRUST_CLIENT_TP_DISPATCH_TABLE
  166. {
  167.     LPWINTRUST_PROVIDER_PING                ServerPing;
  168.     LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO   CheckSubjectContentInfo;
  169.     LPWINTRUST_SUBJECT_ENUM_CERTIFICATES    EnumSubjectCertificates;
  170.     LPWINTRUST_SUBJECT_GET_CERTIFICATE      GetSubjectCertificate;
  171.     LPWINTRUST_SUBJECT_GET_CERT_HEADER      GetSubjectCertHeader;
  172.     LPWINTRUST_SUBJECT_GET_NAME             GetSubjectName;
  173.  
  174. } WINTRUST_CLIENT_TP_DISPATCH_TABLE, *LPWINTRUST_CLIENT_TP_DISPATCH_TABLE;
  175.  
  176.  
  177. // Server side...
  178.  
  179. typedef struct _WINTRUST_SERVER_TP_DISPATCH_TABLE
  180. {
  181.     LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO   CheckSubjectContentInfo;
  182.     LPWINTRUST_SUBJECT_ENUM_CERTIFICATES    EnumSubectCertificates;
  183.     LPWINTRUST_SUBJECT_GET_CERTIFICATE      GetSubjectCertificate;
  184.     LPWINTRUST_SUBJECT_GET_CERT_HEADER      GetSubjectCertHeader;
  185.     LPWINTRUST_SUBJECT_GET_NAME             GetSubjectName;
  186.  
  187. } WINTRUST_SERVER_TP_DISPATCH_TABLE, *LPWINTRUST_SERVER_TP_DISPATCH_TABLE;
  188.  
  189.  
  190. //
  191. // The following structures are passed by WinTrust to a
  192. // Trust Provider being initialized.
  193. //
  194. // Client side...
  195.  
  196. typedef struct _WINTRUST_CLIENT_TP_INFO {
  197.     DWORD                                   dwRevision;
  198.     LPWINTRUST_CLIENT_TP_DISPATCH_TABLE     lpServices;
  199. } WINTRUST_CLIENT_TP_INFO,  *LPWINTRUST_CLIENT_TP_INFO;
  200.  
  201. // Server side
  202. typedef struct _WINTRUST_SERVER_TP_INFO {
  203.     DWORD                                   dwRevision;
  204.     LPWINTRUST_SERVER_TP_DISPATCH_TABLE     lpServices;
  205. } WINTRUST_SERVER_TP_INFO,  *LPWINTRUST_SERVER_TP_INFO;
  206.  
  207.  
  208. //
  209. // Templates of Trust Provider services available to WinTrust
  210. //
  211. typedef LONG
  212. (WINAPI *LPWINTRUST_PROVIDER_VERIFY_TRUST) (
  213.     IN     HWND                             hwnd,
  214.     IN     GUID *                           ActionID,
  215.     IN     LPVOID                           ActionData
  216.     );
  217.  
  218. typedef VOID
  219. (WINAPI *LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE) (
  220.     IN     LPWIN_CERTIFICATE                lpCertificate
  221.     );
  222.  
  223. typedef VOID
  224. (WINAPI *LPWINTRUST_PROVIDER_CLIENT_UNLOAD) (
  225.     IN     LPVOID                           lpTrustProviderInfo
  226.     );
  227.  
  228. typedef VOID
  229. (WINAPI *LPWINTRUST_PROVIDER_SERVER_UNLOAD) (
  230.     IN     LPVOID                           lpTrustProviderInfo
  231.     );
  232.  
  233. //
  234. // Dispatch table of Trust provider services available for use by WinTrust
  235. //
  236. //  Client side...
  237.  
  238. typedef struct _WINTRUST_PROVIDER_CLIENT_SERVICES
  239. {
  240.     LPWINTRUST_PROVIDER_CLIENT_UNLOAD       Unload;
  241.     LPWINTRUST_PROVIDER_VERIFY_TRUST        VerifyTrust;
  242.     LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE  SubmitCertificate;
  243.  
  244. } WINTRUST_PROVIDER_CLIENT_SERVICES, *LPWINTRUST_PROVIDER_CLIENT_SERVICES;
  245.  
  246.  
  247. typedef struct _WINTRUST_PROVIDER_SERVER_SERVICES
  248. {
  249.     LPWINTRUST_PROVIDER_SERVER_UNLOAD       Unload;
  250.     LPWINTRUST_PROVIDER_PING                Ping;
  251.  
  252. } WINTRUST_PROVIDER_SERVER_SERVICES, *LPWINTRUST_PROVIDER_SERVER_SERVICES;
  253.  
  254.  
  255. //
  256. // This structure is passed back from the client-side Trust Provider
  257. // following initialization of that Trust Provider.
  258. //
  259. typedef struct _WINTRUST_PROVIDER_CLIENT_INFO {
  260.     DWORD                                   dwRevision;
  261.     LPWINTRUST_PROVIDER_CLIENT_SERVICES     lpServices;
  262.     DWORD                                   dwActionIdCount;
  263.     GUID *                                  lpActionIdArray;
  264. } WINTRUST_PROVIDER_CLIENT_INFO, *LPWINTRUST_PROVIDER_CLIENT_INFO;
  265.  
  266. //
  267. // This structure is passed back from the server-side trust provider following
  268. // initialization of that trust provider.
  269. //
  270. typedef struct _WINTRUST_PROVIDER_SERVER_INFO {
  271.     DWORD                                   dwRevision;
  272.     LPWINTRUST_PROVIDER_SERVER_SERVICES     lpServices;
  273. } WINTRUST_PROVIDER_SERVER_INFO, *LPWINTRUST_PROVIDER_SERVER_INFO;
  274.  
  275.  
  276.  
  277.  
  278.  
  279. //
  280. // Trust Provider Initialization Routines
  281. // Each Trust Provider DLL must have a client and server side initialization
  282. // routine.  The routines must be named:
  283. //
  284. //              WinTrustProviderClientInitialize()
  285. //      and
  286. //              WinTrustProviderServerInitialize()
  287. //
  288. // and must be defined to match the following templates...
  289. //
  290. typedef BOOL
  291. (WINAPI *LPWINTRUST_PROVIDER_CLIENT_INITIALIZE)(
  292.     IN     DWORD                                dwWinTrustRevision,
  293.     IN     LPWINTRUST_CLIENT_TP_INFO            lpWinTrustInfo,
  294.     IN     LPWSTR                               lpProviderName,
  295.     OUT    LPWINTRUST_PROVIDER_CLIENT_INFO      *lpTrustProviderInfo
  296.     );
  297.  
  298. typedef BOOL
  299. (WINAPI *LPWINTRUST_PROVIDER_SERVER_INITIALIZE) (
  300.     IN     DWORD                            dwWinTrustRevision,
  301.     IN     LPWINTRUST_SERVER_TP_INFO        lpWinTrustInfo,
  302.     IN     LPWSTR                           lpProviderName,
  303.     OUT    LPWINTRUST_PROVIDER_SERVER_INFO  *lpTrustProviderInfo
  304.     );
  305.  
  306.  
  307. #ifdef __cplusplus
  308. }
  309. #endif
  310.  
  311. #endif // _WINTRUST_
  312.