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_MSDRM
7#define _INC_MSDRM
8#include <msdrmdefs.h>
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13HRESULT WINAPI DRMCreateClientSession(
14  DRMCALLBACK pfnCallback,
15  UINT uCallbackVersion,
16  PWSTR wszGroupIDProviderType,
17  PWSTR wszGroupID,
18  DRMHSESSION *phClient
19);
20
21HRESULT WINAPI DRMAcquireIssuanceLicenseTemplate(
22  DRMHSESSION hClient,
23  UINT uFlags,
24  VOID *pvReserved,
25  UINT cReserved,
26  PWSTR *pwszReserved,
27  PWSTR wszURL,
28  VOID *pvContext
29);
30
31HRESULT WINAPI DRMActivate(
32  DRMHSESSION hClient,
33  UINT uFlags,
34  UINT uLangID,
35  DRM_ACTSERV_INFO *pActServInfo,
36  VOID *pvContext,
37  HWND hParentWnd
38);
39
40HRESULT WINAPI DRMGetServiceLocation(
41  DRMHSESSION hClient,
42  UINT uServiceType,
43  UINT uServiceLocation,
44  PWSTR wszIssuanceLicense,
45  UINT *puServiceURLLength,
46  PWSTR wszServiceURL
47);
48
49HRESULT WINAPI DRMIsActivated(
50  DRMHSESSION hClient,
51  UINT uFlags,
52  DRM_ACTSERV_INFO *pActServInfo
53);
54
55HRESULT WINAPI DRMCheckSecurity(
56  DRMENVHANDLE hEnv,
57  UINT cLevel
58);
59
60HRESULT WINAPI DRMCloseSession(
61  DRMHSESSION hSession
62);
63
64HRESULT WINAPI DRMCreateLicenseStorageSession(
65  DRMENVHANDLE hEnv,
66  DRMHANDLE hDefaultLibrary,
67  DRMHSESSION hClient,
68  UINT uFlags,
69  PWSTR wszIssuanceLicense,
70  DRMHSESSION *phLicenseStorage
71);
72
73HRESULT WINAPI DRMDuplicateSession(
74  DRMHSESSION hSessionIn,
75  DRMHSESSION *phSessionOut
76);
77
78HRESULT WINAPI DRMGetClientVersion(
79  DRM_CLIENT_VERSION_INFO *pDRMClientVersionInfo
80);
81
82HRESULT WINAPI DRMGetEnvironmentInfo(
83  DRMENVHANDLE handle,
84  PWSTR wszAttribute,
85  DRMENCODINGTYPE *peEncoding,
86  UINT *pcBuffer,
87  BYTE *pbBuffer
88);
89
90HRESULT WINAPI DRMGetIntervalTime(
91  DRMPUBHANDLE hIssuanceLicense,
92  UINT *pcDays
93);
94
95HRESULT WINAPI DRMGetOwnerLicense(
96  DRMPUBHANDLE hIssuanceLicense,
97  UINT *puLength,
98  PWSTR wszOwnerLicense
99);
100
101HRESULT WINAPI DRMGetProcAddress(
102  DRMHANDLE hLibrary,
103  PWSTR wszProcName,
104  FARPROC *ppfnProcAddress
105);
106
107HRESULT WINAPI DRMGetSecurityProvider(
108  UINT uFlags,
109  UINT *puTypeLen,
110  PWSTR wszType,
111  UINT *puPathLen,
112  PWSTR wszPath
113);
114
115HRESULT WINAPI DRMInitEnvironment(
116  DRMSECURITYPROVIDERTYPE eSecurityProviderType,
117  DRMSPECTYPE eSpecification,
118  PWSTR wszSecurityProvider,
119  PWSTR wszManifestCredentials,
120  PWSTR wszMachineCredentials,
121  DRMENVHANDLE *phEnv,
122  DRMHANDLE *phDefaultLibrary
123);
124
125HRESULT WINAPI DRMLoadLibrary(
126  DRMENVHANDLE hEnv,
127  DRMSPECTYPE eSpecification,
128  PWSTR wszLibraryProvider,
129  PWSTR wszCredentials,
130  DRMHANDLE *phLibrary
131);
132
133HRESULT WINAPI DRMRegisterContent(
134  WINBOOL fRegister
135);
136
137HRESULT WINAPI DRMRegisterRevocationList(
138  DRMENVHANDLE hEnv,
139  PWSTR wszRevocationList
140);
141
142HRESULT WINAPI DRMRepair(void);
143
144HRESULT WINAPI DRMSetIntervalTime(
145  DRMPUBHANDLE hIssuanceLicense,
146  UINT cDays
147);
148
149HRESULT WINAPI DRMSetGlobalOptions(
150  DRMGLOBALOPTIONS eGlobalOptions,
151  LPVOID pvdata,
152  DWORD dwlen
153);
154
155HRESULT WINAPI DRMAddRightWithUser(
156  DRMPUBHANDLE hIssuanceLicense,
157  DRMPUBHANDLE hRight,
158  DRMPUBHANDLE hUser
159);
160
161HRESULT WINAPI DRMClearAllRights(
162  DRMPUBHANDLE hIssuanceLicense
163);
164
165HRESULT WINAPI DRMCreateIssuanceLicense(
166  SYSTEMTIME *pstTimeFrom,
167  SYSTEMTIME *pstTimeUntil,
168  PWSTR wszReferralInfoName,
169  PWSTR wszReferralInfoURL,
170  DRMPUBHANDLE hOwner,
171  PWSTR wszIssuanceLicense,
172  DRMHANDLE hBoundLicense,
173  DRMPUBHANDLE *phIssuanceLicense
174);
175
176HRESULT WINAPI DRMCreateRight(
177  PWSTR wszRightName,
178  SYSTEMTIME *pstFrom,
179  SYSTEMTIME *pstUntil,
180  UINT cExtendedInfo,
181  PWSTR *pwszExtendedInfoName,
182  PWSTR *pwszExtendedInfoValue,
183  DRMPUBHANDLE *phRight
184);
185
186HRESULT WINAPI DRMCreateUser(
187  PWSTR wszUserName,
188  PWSTR wszUserId,
189  PWSTR wszUserIdType,
190  DRMPUBHANDLE *phUser
191);
192
193HRESULT WINAPI DRMGetApplicationSpecificData(
194  DRMPUBHANDLE hIssuanceLicense,
195  UINT uIndex,
196  UINT *puNameLength,
197  PWSTR wszName,
198  UINT *puValueLength,
199  PWSTR wszValue
200);
201
202HRESULT WINAPI DRMGetIssuanceLicenseInfo(
203  DRMPUBHANDLE hIssuanceLicense,
204  SYSTEMTIME *pstTimeFrom,
205  SYSTEMTIME *pstTimeUntil,
206  UINT uFlags,
207  UINT *puDistributionPointNameLength,
208  PWSTR wszDistributionPointName,
209  UINT *puDistributionPointURLLength,
210  PWSTR wszDistributionPointURL,
211  DRMPUBHANDLE *phOwner,
212  WINBOOL *pfOfficial
213);
214
215HRESULT WINAPI DRMGetIssuanceLicenseTemplate(
216  DRMPUBHANDLE hIssuanceLicense,
217  UINT *puIssuanceLicenseTemplateLength,
218  PWSTR wszIssuanceLicenseTemplate
219);
220
221HRESULT WINAPI DRMGetMetaData(
222  DRMPUBHANDLE hIssuanceLicense,
223  UINT *puContentIdLength,
224  PWSTR wszContentId,
225  UINT *puContentIdTypeLength,
226  PWSTR wszContentIdType,
227  UINT *puSKUIdLength,
228  PWSTR wszSKUId,
229  UINT *puSKUIdTypeLength,
230  PWSTR wszSKUIdType,
231  UINT *puContentTypeLength,
232  PWSTR wszContentType,
233  UINT *puContentNameLength,
234  PWSTR wszContentName
235);
236
237HRESULT WINAPI DRMGetNameAndDescription(
238  DRMPUBHANDLE hIssuanceLicense,
239  UINT uIndex,
240  UINT *pulcid,
241  UINT *puNameLength,
242  PWSTR wszName,
243  UINT *puDescriptionLength,
244  PWSTR wszDescription
245);
246
247HRESULT WINAPI DRMGetRevocationPoint(
248  DRMPUBHANDLE hIssuanceLicense,
249  UINT *puIdLength,
250  PWSTR wszId,
251  UINT *puIdTypeLength,
252  PWSTR wszIdType,
253  UINT *puURLLength,
254  PWSTR wszURL,
255  SYSTEMTIME *pstFrequency,
256  UINT *puNameLength,
257  PWSTR wszName,
258  UINT *puPublicKeyLength,
259  PWSTR wszPublicKey
260);
261
262HRESULT WINAPI DRMGetRightExtendedInfo(
263  DRMPUBHANDLE hRight,
264  UINT uIndex,
265  UINT *puExtendedInfoNameLength,
266  PWSTR wszExtendedInfoName,
267  UINT *puExtendedInfoValueLength,
268  PWSTR wszExtendedInfoValue
269);
270
271HRESULT WINAPI DRMGetRightInfo(
272  DRMPUBHANDLE hRight,
273  UINT *puRightNameLength,
274  PWSTR wszRightName,
275  SYSTEMTIME *pstFrom,
276  SYSTEMTIME *pstUntil
277);
278
279HRESULT WINAPI DRMGetSignedIssuanceLicense(
280  DRMENVHANDLE hEnv,
281  DRMPUBHANDLE hIssuanceLicense,
282  UINT uFlags,
283  BYTE *pbSymKey,
284  UINT cbSymKey,
285  PWSTR wszSymKeyType,
286  PWSTR wszClientLicensorCertificate,
287  DRMCALLBACK pfnCallback,
288  PWSTR wszURL,
289  VOID *pvContext
290);
291
292HRESULT WINAPI DRMGetUsagePolicy(
293  DRMPUBHANDLE hIssuanceLicense,
294  UINT uIndex,
295  DRM_USAGEPOLICY_TYPE *peUsagePolicyType,
296  WINBOOL *pfExclusion,
297  UINT *puNameLength,
298  PWSTR wszName,
299  UINT *puMinVersionLength,
300  PWSTR wszMinVersion,
301  UINT *puMaxVersionLength,
302  PWSTR wszMaxVersion,
303  UINT *puPublicKeyLength,
304  PWSTR wszPublicKey,
305  UINT *puDigestAlgorithmLength,
306  PWSTR wszDigestAlgorithm,
307  UINT *pcbDigest,
308  BYTE *pbDigest
309);
310
311HRESULT WINAPI DRMGetUserInfo(
312  DRMPUBHANDLE hUser,
313  UINT *puUserNameLength,
314  PWSTR wszUserName,
315  UINT *puUserIdLength,
316  PWSTR wszUserId,
317  UINT *puUserIdTypeLength,
318  PWSTR wszUserIdType
319);
320
321HRESULT WINAPI DRMGetUserRights(
322  DRMPUBHANDLE hIssuanceLicense,
323  DRMPUBHANDLE hUser,
324  UINT uIndex,
325  DRMPUBHANDLE *phRight
326);
327
328HRESULT WINAPI DRMGetUsers(
329  DRMPUBHANDLE hIssuanceLicense,
330  UINT uIndex,
331  DRMPUBHANDLE *phUser
332);
333
334HRESULT WINAPI DRMSetApplicationSpecificData(
335  DRMPUBHANDLE hIssuanceLicense,
336  WINBOOL fDelete,
337  PWSTR wszName,
338  PWSTR wszValue
339);
340
341HRESULT WINAPI DRMSetMetaData(
342  DRMPUBHANDLE hIssuanceLicense,
343  PWSTR wszContentId,
344  PWSTR wszContentIdType,
345  PWSTR wszSKUId,
346  PWSTR wszSKUIdType,
347  PWSTR wszContentType,
348  PWSTR wszContentName
349);
350
351HRESULT WINAPI DRMSetNameAndDescription(
352  DRMPUBHANDLE hIssuanceLicense,
353  WINBOOL fDelete,
354  UINT lcid,
355  PWSTR wszName,
356  PWSTR wszDescription
357);
358
359HRESULT WINAPI DRMSetRevocationPoint(
360  DRMPUBHANDLE hIssuanceLicense,
361  WINBOOL fDelete,
362  PWSTR wszId,
363  PWSTR wszIdType,
364  PWSTR wszURL,
365  SYSTEMTIME *pstFrequency,
366  PWSTR wszName,
367  PWSTR wszPublicKey
368);
369
370HRESULT WINAPI DRMSetUsagePolicy(
371  DRMPUBHANDLE hIssuanceLicense,
372  DRM_USAGEPOLICY_TYPE eUsagePolicyType,
373  WINBOOL fDelete,
374  WINBOOL fExclusion,
375  PWSTR wszName,
376  PWSTR wszMinVersion,
377  PWSTR wszMaxVersion,
378  PWSTR wszPublicKey,
379  PWSTR wszDigestAlgorithm,
380  BYTE *pbDigest,
381  UINT cbDigest
382);
383
384HRESULT WINAPI DRMCloseEnvironmentHandle(
385  DRMENVHANDLE hEnv
386);
387
388HRESULT WINAPI DRMCloseHandle(
389  DRMHANDLE handle
390);
391
392HRESULT WINAPI DRMClosePubHandle(
393  DRMPUBHANDLE hPub
394);
395
396HRESULT WINAPI DRMCloseQueryHandle(
397  DRMQUERYHANDLE hQuery
398);
399
400HRESULT WINAPI DRMDuplicateEnvironmentHandle(
401  DRMENVHANDLE hToCopy,
402  DRMENVHANDLE *phCopy
403);
404
405HRESULT WINAPI DRMDuplicateHandle(
406  DRMHANDLE hToCopy,
407  DRMHANDLE *phCopy
408);
409
410HRESULT WINAPI DRMDuplicatePubHandle(
411  DRMPUBHANDLE hPubIn,
412  DRMPUBHANDLE *phPubOut
413);
414
415HRESULT WINAPI DRMGetUnboundLicenseAttribute(
416  DRMQUERYHANDLE hQueryRoot,
417  PWSTR wszAttributeType,
418  UINT iWhich,
419  DRMENCODINGTYPE *peEncoding,
420  UINT *pcBuffer,
421  BYTE *pbBuffer
422);
423
424HRESULT WINAPI DRMGetUnboundLicenseAttributeCount(
425  DRMQUERYHANDLE hQueryRoot,
426  PWSTR wszAttributeType,
427  UINT *pcAttributes
428);
429
430HRESULT WINAPI DRMGetUnboundLicenseObject(
431  DRMQUERYHANDLE hQueryRoot,
432  PWSTR wszSubObjectType,
433  UINT iIndex,
434  DRMQUERYHANDLE *phSubQuery
435);
436
437HRESULT WINAPI DRMGetUnboundLicenseObjectCount(
438  DRMQUERYHANDLE hQueryRoot,
439  PWSTR wszSubObjectType,
440  UINT *pcSubObjects
441);
442
443HRESULT WINAPI DRMParseUnboundLicense(
444  PWSTR wszCertificate,
445  DRMQUERYHANDLE *phQueryRoot
446);
447
448HRESULT WINAPI DRMCreateBoundLicense(
449  DRMENVHANDLE hEnv,
450  DRMBOUNDLICENSEPARAMS *pParams,
451  PWSTR wszLicenseChain,
452  DRMHANDLE *phBoundLicense,
453  DRMHANDLE *phErrorLog
454);
455
456HRESULT WINAPI DRMCreateEnablingPrincipal(
457  DRMENVHANDLE hEnv,
458  DRMHANDLE hLibrary,
459  PWSTR wszObject,
460  DRMID *pidPrincipal,
461  PWSTR wszCredentials,
462  DRMHANDLE *pHEnablingPrincipal
463);
464
465HRESULT WINAPI DRMGetBoundLicenseAttribute(
466  DRMHANDLE hQueryRoot,
467  PWSTR wszAttribute,
468  UINT iWhich,
469  DRMENCODINGTYPE *peEncoding,
470  UINT *pcBuffer,
471  BYTE *pbBuffer
472);
473
474HRESULT WINAPI DRMGetBoundLicenseAttributeCount(
475  DRMHANDLE hQueryRoot,
476  PWSTR wszAttribute,
477  UINT *pcAttributes
478);
479
480HRESULT WINAPI DRMGetBoundLicenseObject(
481  DRMHANDLE hQueryRoot,
482  PWSTR wszSubObjectType,
483  UINT iWhich,
484  DRMHANDLE *phSubObject
485);
486
487HRESULT WINAPI DRMGetBoundLicenseObjectCount(
488  DRMHANDLE hQueryRoot,
489  PWSTR wszSubObjectType,
490  UINT *pcSubObject
491);
492
493HRESULT WINAPI DRMAcquireAdvisories(
494  DRMHSESSION hLicenseStorage,
495  PWSTR wszLicense,
496  PWSTR wszURL,
497  VOID *pvContext
498);
499
500HRESULT WINAPI DRMAcquireLicense(
501  DRMHSESSION hSession,
502  UINT uFlags,
503  PWSTR wszGroupIdentityCredential,
504  PWSTR wszRequestedRights,
505  PWSTR wszCustomData,
506  PWSTR wszURL,
507  VOID *pvContext
508);
509
510HRESULT WINAPI DRMAddLicense(
511  DRMHSESSION hLicenseStorage,
512  UINT uFlags,
513  PWSTR wszLicense
514);
515
516HRESULT WINAPI DRMConstructCertificateChain(
517  UINT cCertificates,
518  PWSTR *rgwszCertificates,
519  UINT *pcChain,
520  PWSTR wszChain
521);
522
523HRESULT WINAPI DRMDeconstructCertificateChain(
524  PWSTR wszChain,
525  UINT iWhich,
526  UINT *pcCert,
527  PWSTR wszCert
528);
529
530HRESULT WINAPI DRMDeleteLicense(
531  DRMHSESSION hSession,
532  PWSTR wszLicenseId
533);
534
535HRESULT WINAPI DRMEnumerateLicense(
536  DRMHSESSION hSession,
537  UINT uFlags,
538  UINT uIndex,
539  WINBOOL *pfSharedFlag,
540  UINT *puCertificateDataLen,
541  PWSTR wszCertificateData
542);
543
544HRESULT WINAPI DRMGetCertificateChainCount(
545  PWSTR wszChain,
546  UINT *pcCertCount
547);
548
549HRESULT WINAPI DRMAttest(
550  DRMHANDLE hEnablingPrincipal,
551  PWSTR wszData,
552  DRMATTESTTYPE eType,
553  UINT *pcStrLen,
554  PWSTR wszAttestedBlob
555);
556
557HRESULT WINAPI DRMCreateEnablingBitsDecryptor(
558  DRMHANDLE hBoundLicense,
559  PWSTR wszRight,
560  DRMHANDLE hAuxLib,
561  PWSTR wszAuxPlug,
562  DRMHANDLE *phDecryptor
563);
564
565HRESULT WINAPI DRMCreateEnablingBitsEncryptor(
566  DRMHANDLE hBoundLicense,
567  PWSTR wszRight,
568  DRMHANDLE hAuxLib,
569  PWSTR wszAuxPlug,
570  DRMHANDLE *phEncryptor
571);
572
573HRESULT WINAPI DRMDecrypt(
574  DRMHANDLE hCryptoProvider,
575  UINT iPosition,
576  UINT cNumInBytes,
577  BYTE *pbInData,
578  UINT *pcNumOutBytes,
579  BYTE *pbOutData
580);
581
582HRESULT WINAPI DRMEncrypt(
583  DRMHANDLE hCryptoProvider,
584  UINT iPosition,
585  UINT cNumInBytes,
586  BYTE *pbInData,
587  UINT *pcNumOutBytes,
588  BYTE *pbOutData
589);
590
591HRESULT WINAPI DRMVerify(
592  PWSTR wszData,
593  UINT *pcStrLenAttestedData,
594  PWSTR wszAttestedData,
595  DRMATTESTTYPE *peType,
596  UINT *pcPrincipalChain,
597  PWSTR wszPrincipalChain,
598  UINT *pcManifestChain,
599  PWSTR wszManifestChain
600);
601
602HRESULT WINAPI DRMDecode(
603  PWSTR wszAlgID,
604  PWSTR wszEncodedString,
605  UINT *puDecodedDataLen,
606  BYTE *pbDecodedData
607);
608
609HRESULT WINAPI DRMEncode(
610  PWSTR wszAlgID,
611  UINT uDataLen,
612  BYTE *pbDecodedData,
613  UINT *puEncodedStringLen,
614  PWSTR wszEncodedString
615);
616
617HRESULT WINAPI DRMGetInfo(
618  DRMHANDLE handle,
619  PWSTR wszAttribute,
620  DRMENCODINGTYPE *peEncoding,
621  UINT *pcBuffer,
622  BYTE *pbBuffer
623);
624
625HRESULT WINAPI DRMGetTime(
626  DRMENVHANDLE hEnv,
627  DRMTIMETYPE eTimerIdType,
628  SYSTEMTIME *poTimeObject
629);
630
631#if (_WIN32_WINNT >= 0x0600)
632HRESULT WINAPI DRMIsWindowProtected(
633  HWND hwnd,
634  WINBOOL *pfProtected
635);
636
637HRESULT WINAPI DRMRegisterProtectedWindow(
638  DRMENVHANDLE hEnv,
639  HWND hwnd
640);
641
642HRESULT WINAPI DRMAcquireIssuanceLicenseTemplate(
643  DRMHSESSION hClient,
644  UINT uFlags,
645  VOID *pvReserved,
646  UINT cReserved,
647  PWSTR *pwszReserved,
648  PWSTR wszURL,
649  VOID *pvContext
650);
651
652#endif /*(_WIN32_WINNT >= 0x0600)*/
653#if (_WIN32_WINNT >= 0x0601)
654HRESULT WINAPI DRMGetSignedIssuanceLicenseEx(
655  DRMENVHANDLE hEnv,
656  DRMPUBHANDLE hIssuanceLicense,
657  UINT uFlags,
658  BYTE *pbSymKey,
659  UINT cbSymKey,
660  PWSTR wszSymKeyType,
661  VOID *pvReserved,
662  DRMHANDLE hEnablingPrincipal,
663  DRMHANDLE hBoundLicense,
664  DRMCALLBACK pfnCallback,
665  VOID *pvContext
666);
667#endif /*(_WIN32_WINNT >= 0x0601)*/
668
669#ifdef __cplusplus
670}
671#endif
672#endif /*_INC_MSDRM*/
673