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