验证和初始化

[与此页面关联的功能(Windows Media Format 11 SDK)是一项旧功能。 它已被 源读取器接收器编写器取代。 源读取器接收器编写器 已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 源读取器接收器编写器,而不是 Windows 媒体格式 11 SDK。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]

应执行以下步骤来验证是否允许 transcryption 并初始化将解密内容的对象:

  1. 如果已有内容的密钥 ID,请跳到步骤 5。
  2. 调用 WMCreateEditor 函数来创建元数据编辑器对象,并获取该对象的 IWMMetadataEditor 接口的实例。
  3. 调用 IWMMetadataEditor::QueryInterface 以获取 IWMDRMEditor 接口的实例。
  4. 调用 IWMDRMEditor::GetDRMProperty 以获取 DRM_DRMHeader_KeyID 属性。
  5. 通过调用 WMDRMStartup 函数初始化 Windows 媒体 DRM 客户端扩展 API。
  6. 调用 WMDRMCreateProtectedProvider 函数来创建安全提供程序对象,并获取该对象的 IWMDRMProvider 接口的实例。
  7. 调用 IWMDRMProvider::CreateObject 来创建许可证管理对象,并获取其 IWMDRMLicenseManagement 接口的实例。
  8. 调用 IWMDRMLicenseManagement::CreateLicenseEnumeration,传入密钥 ID 以及控制在内容被转译后要执行的作的权利。 此调用将检索 IWMDRMLicense 接口的实例,该接口可用于枚举任何匹配的许可证。
  9. 调用 IWMDRMLicense::GetInclusionList 以检索许可证颁发者指定的授权内容保护系统(CPS)列表。
  10. 分析包含列表,确认许可证允许输出 CPS 的 GUID。
  11. 如果所需的导出 GUID 不在包含列表中,请调用 IWMDRMLicense::GetNext 以获取下一个适用的许可证(如果有),并重复步骤 9 和 10。 如果没有许可证在其包含列表中具有所需的 GUID,则无法执行导出。
  12. 调用 IWMDRMLicense::CreateSecureDecryptor 来创建解密器对象。 传入导出应用程序证书。 此调用将提供指向解密程序对象的 IWMDRMDecrypt 接口和包含种子的二进制对象的实例的指针。 目前仅支持 Windows Media DRM_PROTECTION_TYPE_RC4 常量作为 dwFlags 参数的参数。
  13. 使用 RSA OAEP 加密方案解密初始化向量。
  14. 输入 Windows Media DRM 导出协议时,请使用Microsoft提供的 ASF 分析库,为每个有效负载查找偏移量(以字节为单位)。

导出压缩内容