Поделиться через


Защита файлов с помощью DRM версии 7 или более поздней

[Функция, связанная с этой страницей, SDK для формата Windows Media 11, является устаревшей. Он был заменен средства чтения источника и записи приемника. Source Reader и Sink Writer оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал компонент Source Reader и компонент Sink Writer вместо пакета SDK формата Windows Media 11, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Чтобы защитить файлы с помощью DRM Windows Media версии 7 или более поздней, используйте метод объекта записи IWMDRMWriter::SetDRMAttribute для задания атрибутов DRM. Так как DRM версии 7 и более поздних версий позволяют использовать уникальные лицензии для каждого защищенного файла или набора файлов, интерфейс IWMDRMWriter также имеет методы для создания ключей. Эти методы предоставляются только для удобства.

Чтобы защитить файлы ASF с помощью DRM версии 7 или более поздней, выполните следующие действия:

  1. Подключите WMStubDRM.lib и, при необходимости, отключите wmvcore.lib.

  2. Вызовите функцию WMCreateWriter, чтобы создать модуль записи DRM. Первый аргумент зарезервирован и должен иметь значение NULL.

  3. Задайте профиль для писателя, вызывая IWMWriter::SetProfile или IWMWriter::SetProfileByID. Перед настройкой атрибутов DRM необходимо установить профиль в приложении. DRM поддерживается только для профилей, использующих кодеки Windows Media Audio или Windows Media Video.

  4. Получите интерфейс IWMDRMWriter объекта записи.

  5. Вызовите IWMDRMWriter::SetDRMAttribute и установите для Use_Advanced_DRM значение TRUE.

  6. Если необходимо создать новое начальное значение ключа, вызовите IWMDRMWriter::GenerateKeySeed. В большинстве случаев вы будете повторно использовать начальное значение ключа, созданное ранее. Это значение должно оставаться секретом; он не записывается в файл.

  7. Вызовите IWMDRMWriter::GenerateKeyID для создания идентификатора ключа, который является вторым значением, используемым для создания фактического ключа. В отличие от начального значения ключа, идентификатор ключа является открытым и записывается в файл в заголовке DRM в ясном виде. Создайте идентификатор ключа для каждого создаваемого файла.

  8. При необходимости вызовите IWMDRMWriter::GenerateSigningKeyPair для создания открытого и закрытого ключа, который будет использоваться для подписи расширенного объекта заголовка DRM ASF. Дополнительные сведения об этих ключах см. в IWMDRMWriter::GenerateSigningKeyPair.

  9. При необходимости получите необходимые значения для заполнения объекта цифровой подписи заголовка DRM. Если в системе нет рабочей версии Windows Media Rights Manager, необходимо настроить объект цифровой подписи файла ASF, указав следующие четыре атрибута, которые должны быть получены от Корпорации Майкрософт:

    Если у вас установлен Диспетчер прав windows Media, в приложении не нужно устанавливать эти атрибуты. Компонент DRM извлекает эти атрибуты и использует их для автоматического подписывания заголовка. Если у вас активированная версия Windows Media Rights Manager на другом компьютере и хотите повторно использовать эти значения объектов цифровой подписи, их можно найти в реестре. Сертификат сервера лицензий хранится в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert1, а корневой сертификат хранится в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert2. При защите файлов с использованием DRM версии 7 необходимо использовать значения этих ключей реестра. Для свойства DRM_LASignaturePrivKeyиспользуйте GenerateSigningKeysEx (с помощью пакета SDK для Windows Media Rights Manager) или повторно используйте значение, установленное Диспетчером прав Windows Media в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server:Info_Cert0. Для свойства DRM_LASignatureCert используйте GenerateSigningKeysEx (с помощью пакета SDK для Windows Media Rights Manager) или значение, установленное Диспетчером прав Windows Media в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server\Certs:cert0.

  10. Вызовите IWMDRMWriter::SetDRMAttribute столько раз, сколько необходимо для настройки объекта записи, который при необходимости задает необходимые атрибуты заголовка DRM. Эти свойства сохраняются в течение времени существования объекта записи или до тех пор, пока они не будут сброшены новым значением. Их не нужно сбрасывать для каждого нового файла, который вы создаёте.

    Для объекта записи требуются следующие свойства:

    Следующие свойства являются необязательными:

    Кроме того, можно указать определяемые пользователем атрибуты файла DRM непосредственно с помощью базового атрибута DRM_DRMHeader. Вы можете добавить любой дополнительный атрибут, например DRMHeader.RequireSAP, как способ обмена дополнительными сведениями, которые будут использоваться сервером лицензий при создании лицензии. Сервер лицензий должен быть осведомлен заранее о дополнительных свойствах, которые вы добавляете. Не существует способа программного обнаружения неизвестных свойств.

  11. Запишите файл, используя методы интерфейса IWMWriter , как описано в этой документации. Чтобы создать поток с live-DRM, просто отправьте данные в сетевой ресивер. Вы также можете отправить данные в приемник push-уведомлений.

  12. При необходимости создайте лицензию для файла с помощью Диспетчера прав Windows Media. Эта задача также может выполняться сторонним сервером лицензирования. Для сценариев live-DRM конечные пользователи должны получить лицензию либо до начала потока, либо в то время, когда они сначала попытаются подключиться к нему.

Примечание DRM не поддерживается версией этого SDK на базе x64.

атрибуты

списка атрибутов DRM

свойства DRM

интерфейс IWMDRMWriter

IWMHeaderInfo::SetAttribute

интерфейс IWMWriter

чтение защищенных файлов

WMCreateWriter