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 10 extern "C" { 11 #endif 12 13 HRESULT WINAPI DRMCreateClientSession( 14 DRMCALLBACK pfnCallback, 15 UINT uCallbackVersion, 16 PWSTR wszGroupIDProviderType, 17 PWSTR wszGroupID, 18 DRMHSESSION *phClient 19 ); 20 21 HRESULT 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 31 HRESULT WINAPI DRMActivate( 32 DRMHSESSION hClient, 33 UINT uFlags, 34 UINT uLangID, 35 DRM_ACTSERV_INFO *pActServInfo, 36 VOID *pvContext, 37 HWND hParentWnd 38 ); 39 40 HRESULT WINAPI DRMGetServiceLocation( 41 DRMHSESSION hClient, 42 UINT uServiceType, 43 UINT uServiceLocation, 44 PWSTR wszIssuanceLicense, 45 UINT *puServiceURLLength, 46 PWSTR wszServiceURL 47 ); 48 49 HRESULT WINAPI DRMIsActivated( 50 DRMHSESSION hClient, 51 UINT uFlags, 52 DRM_ACTSERV_INFO *pActServInfo 53 ); 54 55 HRESULT WINAPI DRMCheckSecurity( 56 DRMENVHANDLE hEnv, 57 UINT cLevel 58 ); 59 60 HRESULT WINAPI DRMCloseSession( 61 DRMHSESSION hSession 62 ); 63 64 HRESULT WINAPI DRMCreateLicenseStorageSession( 65 DRMENVHANDLE hEnv, 66 DRMHANDLE hDefaultLibrary, 67 DRMHSESSION hClient, 68 UINT uFlags, 69 PWSTR wszIssuanceLicense, 70 DRMHSESSION *phLicenseStorage 71 ); 72 73 HRESULT WINAPI DRMDuplicateSession( 74 DRMHSESSION hSessionIn, 75 DRMHSESSION *phSessionOut 76 ); 77 78 HRESULT WINAPI DRMGetClientVersion( 79 DRM_CLIENT_VERSION_INFO *pDRMClientVersionInfo 80 ); 81 82 HRESULT WINAPI DRMGetEnvironmentInfo( 83 DRMENVHANDLE handle, 84 PWSTR wszAttribute, 85 DRMENCODINGTYPE *peEncoding, 86 UINT *pcBuffer, 87 BYTE *pbBuffer 88 ); 89 90 HRESULT WINAPI DRMGetIntervalTime( 91 DRMPUBHANDLE hIssuanceLicense, 92 UINT *pcDays 93 ); 94 95 HRESULT WINAPI DRMGetOwnerLicense( 96 DRMPUBHANDLE hIssuanceLicense, 97 UINT *puLength, 98 PWSTR wszOwnerLicense 99 ); 100 101 HRESULT WINAPI DRMGetProcAddress( 102 DRMHANDLE hLibrary, 103 PWSTR wszProcName, 104 FARPROC *ppfnProcAddress 105 ); 106 107 HRESULT WINAPI DRMGetSecurityProvider( 108 UINT uFlags, 109 UINT *puTypeLen, 110 PWSTR wszType, 111 UINT *puPathLen, 112 PWSTR wszPath 113 ); 114 115 HRESULT 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 125 HRESULT WINAPI DRMLoadLibrary( 126 DRMENVHANDLE hEnv, 127 DRMSPECTYPE eSpecification, 128 PWSTR wszLibraryProvider, 129 PWSTR wszCredentials, 130 DRMHANDLE *phLibrary 131 ); 132 133 HRESULT WINAPI DRMRegisterContent( 134 WINBOOL fRegister 135 ); 136 137 HRESULT WINAPI DRMRegisterRevocationList( 138 DRMENVHANDLE hEnv, 139 PWSTR wszRevocationList 140 ); 141 142 HRESULT WINAPI DRMRepair(void); 143 144 HRESULT WINAPI DRMSetIntervalTime( 145 DRMPUBHANDLE hIssuanceLicense, 146 UINT cDays 147 ); 148 149 HRESULT WINAPI DRMSetGlobalOptions( 150 DRMGLOBALOPTIONS eGlobalOptions, 151 LPVOID pvdata, 152 DWORD dwlen 153 ); 154 155 HRESULT WINAPI DRMAddRightWithUser( 156 DRMPUBHANDLE hIssuanceLicense, 157 DRMPUBHANDLE hRight, 158 DRMPUBHANDLE hUser 159 ); 160 161 HRESULT WINAPI DRMClearAllRights( 162 DRMPUBHANDLE hIssuanceLicense 163 ); 164 165 HRESULT 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 176 HRESULT 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 186 HRESULT WINAPI DRMCreateUser( 187 PWSTR wszUserName, 188 PWSTR wszUserId, 189 PWSTR wszUserIdType, 190 DRMPUBHANDLE *phUser 191 ); 192 193 HRESULT WINAPI DRMGetApplicationSpecificData( 194 DRMPUBHANDLE hIssuanceLicense, 195 UINT uIndex, 196 UINT *puNameLength, 197 PWSTR wszName, 198 UINT *puValueLength, 199 PWSTR wszValue 200 ); 201 202 HRESULT 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 215 HRESULT WINAPI DRMGetIssuanceLicenseTemplate( 216 DRMPUBHANDLE hIssuanceLicense, 217 UINT *puIssuanceLicenseTemplateLength, 218 PWSTR wszIssuanceLicenseTemplate 219 ); 220 221 HRESULT 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 237 HRESULT 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 247 HRESULT 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 262 HRESULT WINAPI DRMGetRightExtendedInfo( 263 DRMPUBHANDLE hRight, 264 UINT uIndex, 265 UINT *puExtendedInfoNameLength, 266 PWSTR wszExtendedInfoName, 267 UINT *puExtendedInfoValueLength, 268 PWSTR wszExtendedInfoValue 269 ); 270 271 HRESULT WINAPI DRMGetRightInfo( 272 DRMPUBHANDLE hRight, 273 UINT *puRightNameLength, 274 PWSTR wszRightName, 275 SYSTEMTIME *pstFrom, 276 SYSTEMTIME *pstUntil 277 ); 278 279 HRESULT 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 292 HRESULT 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 311 HRESULT 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 321 HRESULT WINAPI DRMGetUserRights( 322 DRMPUBHANDLE hIssuanceLicense, 323 DRMPUBHANDLE hUser, 324 UINT uIndex, 325 DRMPUBHANDLE *phRight 326 ); 327 328 HRESULT WINAPI DRMGetUsers( 329 DRMPUBHANDLE hIssuanceLicense, 330 UINT uIndex, 331 DRMPUBHANDLE *phUser 332 ); 333 334 HRESULT WINAPI DRMSetApplicationSpecificData( 335 DRMPUBHANDLE hIssuanceLicense, 336 WINBOOL fDelete, 337 PWSTR wszName, 338 PWSTR wszValue 339 ); 340 341 HRESULT 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 351 HRESULT WINAPI DRMSetNameAndDescription( 352 DRMPUBHANDLE hIssuanceLicense, 353 WINBOOL fDelete, 354 UINT lcid, 355 PWSTR wszName, 356 PWSTR wszDescription 357 ); 358 359 HRESULT 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 370 HRESULT 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 384 HRESULT WINAPI DRMCloseEnvironmentHandle( 385 DRMENVHANDLE hEnv 386 ); 387 388 HRESULT WINAPI DRMCloseHandle( 389 DRMHANDLE handle 390 ); 391 392 HRESULT WINAPI DRMClosePubHandle( 393 DRMPUBHANDLE hPub 394 ); 395 396 HRESULT WINAPI DRMCloseQueryHandle( 397 DRMQUERYHANDLE hQuery 398 ); 399 400 HRESULT WINAPI DRMDuplicateEnvironmentHandle( 401 DRMENVHANDLE hToCopy, 402 DRMENVHANDLE *phCopy 403 ); 404 405 HRESULT WINAPI DRMDuplicateHandle( 406 DRMHANDLE hToCopy, 407 DRMHANDLE *phCopy 408 ); 409 410 HRESULT WINAPI DRMDuplicatePubHandle( 411 DRMPUBHANDLE hPubIn, 412 DRMPUBHANDLE *phPubOut 413 ); 414 415 HRESULT WINAPI DRMGetUnboundLicenseAttribute( 416 DRMQUERYHANDLE hQueryRoot, 417 PWSTR wszAttributeType, 418 UINT iWhich, 419 DRMENCODINGTYPE *peEncoding, 420 UINT *pcBuffer, 421 BYTE *pbBuffer 422 ); 423 424 HRESULT WINAPI DRMGetUnboundLicenseAttributeCount( 425 DRMQUERYHANDLE hQueryRoot, 426 PWSTR wszAttributeType, 427 UINT *pcAttributes 428 ); 429 430 HRESULT WINAPI DRMGetUnboundLicenseObject( 431 DRMQUERYHANDLE hQueryRoot, 432 PWSTR wszSubObjectType, 433 UINT iIndex, 434 DRMQUERYHANDLE *phSubQuery 435 ); 436 437 HRESULT WINAPI DRMGetUnboundLicenseObjectCount( 438 DRMQUERYHANDLE hQueryRoot, 439 PWSTR wszSubObjectType, 440 UINT *pcSubObjects 441 ); 442 443 HRESULT WINAPI DRMParseUnboundLicense( 444 PWSTR wszCertificate, 445 DRMQUERYHANDLE *phQueryRoot 446 ); 447 448 HRESULT WINAPI DRMCreateBoundLicense( 449 DRMENVHANDLE hEnv, 450 DRMBOUNDLICENSEPARAMS *pParams, 451 PWSTR wszLicenseChain, 452 DRMHANDLE *phBoundLicense, 453 DRMHANDLE *phErrorLog 454 ); 455 456 HRESULT WINAPI DRMCreateEnablingPrincipal( 457 DRMENVHANDLE hEnv, 458 DRMHANDLE hLibrary, 459 PWSTR wszObject, 460 DRMID *pidPrincipal, 461 PWSTR wszCredentials, 462 DRMHANDLE *pHEnablingPrincipal 463 ); 464 465 HRESULT WINAPI DRMGetBoundLicenseAttribute( 466 DRMHANDLE hQueryRoot, 467 PWSTR wszAttribute, 468 UINT iWhich, 469 DRMENCODINGTYPE *peEncoding, 470 UINT *pcBuffer, 471 BYTE *pbBuffer 472 ); 473 474 HRESULT WINAPI DRMGetBoundLicenseAttributeCount( 475 DRMHANDLE hQueryRoot, 476 PWSTR wszAttribute, 477 UINT *pcAttributes 478 ); 479 480 HRESULT WINAPI DRMGetBoundLicenseObject( 481 DRMHANDLE hQueryRoot, 482 PWSTR wszSubObjectType, 483 UINT iWhich, 484 DRMHANDLE *phSubObject 485 ); 486 487 HRESULT WINAPI DRMGetBoundLicenseObjectCount( 488 DRMHANDLE hQueryRoot, 489 PWSTR wszSubObjectType, 490 UINT *pcSubObject 491 ); 492 493 HRESULT WINAPI DRMAcquireAdvisories( 494 DRMHSESSION hLicenseStorage, 495 PWSTR wszLicense, 496 PWSTR wszURL, 497 VOID *pvContext 498 ); 499 500 HRESULT 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 510 HRESULT WINAPI DRMAddLicense( 511 DRMHSESSION hLicenseStorage, 512 UINT uFlags, 513 PWSTR wszLicense 514 ); 515 516 HRESULT WINAPI DRMConstructCertificateChain( 517 UINT cCertificates, 518 PWSTR *rgwszCertificates, 519 UINT *pcChain, 520 PWSTR wszChain 521 ); 522 523 HRESULT WINAPI DRMDeconstructCertificateChain( 524 PWSTR wszChain, 525 UINT iWhich, 526 UINT *pcCert, 527 PWSTR wszCert 528 ); 529 530 HRESULT WINAPI DRMDeleteLicense( 531 DRMHSESSION hSession, 532 PWSTR wszLicenseId 533 ); 534 535 HRESULT WINAPI DRMEnumerateLicense( 536 DRMHSESSION hSession, 537 UINT uFlags, 538 UINT uIndex, 539 WINBOOL *pfSharedFlag, 540 UINT *puCertificateDataLen, 541 PWSTR wszCertificateData 542 ); 543 544 HRESULT WINAPI DRMGetCertificateChainCount( 545 PWSTR wszChain, 546 UINT *pcCertCount 547 ); 548 549 HRESULT WINAPI DRMAttest( 550 DRMHANDLE hEnablingPrincipal, 551 PWSTR wszData, 552 DRMATTESTTYPE eType, 553 UINT *pcStrLen, 554 PWSTR wszAttestedBlob 555 ); 556 557 HRESULT WINAPI DRMCreateEnablingBitsDecryptor( 558 DRMHANDLE hBoundLicense, 559 PWSTR wszRight, 560 DRMHANDLE hAuxLib, 561 PWSTR wszAuxPlug, 562 DRMHANDLE *phDecryptor 563 ); 564 565 HRESULT WINAPI DRMCreateEnablingBitsEncryptor( 566 DRMHANDLE hBoundLicense, 567 PWSTR wszRight, 568 DRMHANDLE hAuxLib, 569 PWSTR wszAuxPlug, 570 DRMHANDLE *phEncryptor 571 ); 572 573 HRESULT WINAPI DRMDecrypt( 574 DRMHANDLE hCryptoProvider, 575 UINT iPosition, 576 UINT cNumInBytes, 577 BYTE *pbInData, 578 UINT *pcNumOutBytes, 579 BYTE *pbOutData 580 ); 581 582 HRESULT WINAPI DRMEncrypt( 583 DRMHANDLE hCryptoProvider, 584 UINT iPosition, 585 UINT cNumInBytes, 586 BYTE *pbInData, 587 UINT *pcNumOutBytes, 588 BYTE *pbOutData 589 ); 590 591 HRESULT 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 602 HRESULT WINAPI DRMDecode( 603 PWSTR wszAlgID, 604 PWSTR wszEncodedString, 605 UINT *puDecodedDataLen, 606 BYTE *pbDecodedData 607 ); 608 609 HRESULT WINAPI DRMEncode( 610 PWSTR wszAlgID, 611 UINT uDataLen, 612 BYTE *pbDecodedData, 613 UINT *puEncodedStringLen, 614 PWSTR wszEncodedString 615 ); 616 617 HRESULT WINAPI DRMGetInfo( 618 DRMHANDLE handle, 619 PWSTR wszAttribute, 620 DRMENCODINGTYPE *peEncoding, 621 UINT *pcBuffer, 622 BYTE *pbBuffer 623 ); 624 625 HRESULT WINAPI DRMGetTime( 626 DRMENVHANDLE hEnv, 627 DRMTIMETYPE eTimerIdType, 628 SYSTEMTIME *poTimeObject 629 ); 630 631 #if (_WIN32_WINNT >= 0x0600) 632 HRESULT WINAPI DRMIsWindowProtected( 633 HWND hwnd, 634 WINBOOL *pfProtected 635 ); 636 637 HRESULT WINAPI DRMRegisterProtectedWindow( 638 DRMENVHANDLE hEnv, 639 HWND hwnd 640 ); 641 642 HRESULT 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) 654 HRESULT 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