1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _INC_MSDRMDEFS
7 #define _INC_MSDRMDEFS
8 
9 typedef ULONG DRMHANDLE;
10 typedef ULONG DRMPUBHANDLE;
11 typedef ULONG DRMHSESSION;
12 typedef ULONG DRMENVHANDLE;
13 typedef ULONG DRMQUERYHANDLE;
14 
15 typedef enum _DRM_STATUS_MSG {
16   DRM_MSG_ACTIVATE_MACHINE = 0,
17   DRM_MSG_ACTIVATE_GROUPIDENTITY,
18   DRM_MSG_ACQUIRE_LICENSE,
19   DRM_MSG_ACQUIRE_ISSUANCE_LICENSE_TEMPLATE,
20   DRM_MSG_ACQUIRE_ADVISORY,
21   DRM_MSG_SIGN_ISSUANCE_LICENSE,
22   DRM_MSG_ACQUIRE_CLIENTLICENSOR
23 } DRM_STATUS_MSG;
24 
25 typedef enum _DRMGLOBALOPTIONS {
26   DRMGLOBALOPTIONS_USE_WINHTTP                   = 0x00,
27   DRMGLOBALOPTIONS_USE_SERVERSECURITYPROCESSOR   = 0x01
28 } DRMGLOBALOPTIONS;
29 
30 typedef enum _DRM_DISTRIBUTION_POINT_INFO {
31   DRM_DISTRIBUTION_POINT_LICENSE_ACQUISITION = 0,
32   DRM_DISTRIBUTION_POINT_PUBLISHING,
33   DRM_DISTRIBUTION_POINT_REFERRAL_INFO
34 } DRM_DISTRIBUTION_POINT_INFO;
35 
36 typedef enum _DRM_USAGEPOLICY_TYPE {
37   DRM_USAGEPOLICY_TYPE_BYNAME = 0,
38   DRM_USAGEPOLICY_TYPE_BYPUBLICKEY,
39   DRM_USAGEPOLICY_TYPE_BYDIGEST,
40   DRM_USAGEPOLICY_TYPE_OSEXCLUSION
41 } DRM_USAGEPOLICY_TYPE;
42 
43 typedef enum _DRMATTESTTYPE {
44   DRMATTESTTYPE_FULLENVIRONMENT = 0,
45   DRMATTESTTYPE_HASHONLY
46 } DRMATTESTTYPE;
47 
48 typedef enum _DRMENCODINGTYPE {
49   DRMENCODINGTYPE_BASE64 = 0,
50   DRMENCODINGTYPE_STRING,
51   DRMENCODINGTYPE_LONG,
52   DRMENCODINGTYPE_TIME,
53   DRMENCODINGTYPE_UINT,
54   DRMENCODINGTYPE_RAW
55 } DRMENCODINGTYPE;
56 
57 typedef enum _DRMSECURITYPROVIDERTYPE {
58   DRMSECURITYPROVIDERTYPE_SOFTWARESECREP = 0
59 } DRMSECURITYPROVIDERTYPE;
60 
61 typedef enum _DRMSPECTYPE {
62   DRMSPECTYPE_UNKNOWN,
63   DRMSPECTYPE_FILENAME
64 } DRMSPECTYPE;
65 
66 typedef enum _DRMTIMETYPE {
67   DRMTIMETYPE_SYSTEMUTC = 0,
68   DRMTIMETYPE_SYSTEMLOCAL
69 } DRMTIMETYPE;
70 
71 typedef struct _DRM_ACTSERV_INFO {
72   UINT  uVersion;
73   PWSTR wszPubKey;
74   PWSTR wszURL;
75 } DRM_ACTSERV_INFO;
76 
77 typedef struct _DRM_CLIENT_VERSION_INFO {
78   UINT  uStructVersion;
79   DWORD dwVersion[4];
80   WCHAR wszHierarchy[256];
81   WCHAR wszProductID[256];
82   WCHAR wszProductDescription[256];
83 } DRM_CLIENT_VERSION_INFO;
84 
85 typedef struct _DRMID {
86   UINT  uVersion;
87   WCHAR *wszIDType;
88   WCHAR *wszID;
89 } DRMID;
90 
91 typedef struct _DRMBOUNDLICENSEPARAMS {
92   UINT      uVersion;
93   DRMHANDLE hEnablingPrincipal;
94   DRMHANDLE hSecureStore;
95   PWSTR     wszRightsRequested;
96   PWSTR     wszRightsGroup;
97   DRMID     idResource;
98   UINT      cAuthenticatorCount;
99   DRMHANDLE *rghAuthenticators;
100   PWSTR     wszDefaultEnablingPrincipalCredentials;
101   DWORD     dwFlags;
102 } DRMBOUNDLICENSEPARAMS;
103 
104 typedef HRESULT (__stdcall *DRMCALLBACK)(
105     DRM_STATUS_MSG msg,
106     HRESULT hr,
107     VOID *pvParam,
108     VOID *pvContext
109 );
110 
111 #endif /*_INC_MSDRMDEFS*/
112