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

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

Чтобы защитить файлы с помощью Windows Media DRM версии 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 в clear. Создайте новый идентификатор ключа для каждого создаваемого файла.

  8. При необходимости вызовите IWMDRMWriter::GenerateSigningKeyPair , чтобы создать открытый и закрытый ключи, которые будут использоваться для подписания расширенного объекта заголовка ASF DRM. Дополнительные сведения об этих ключах см. в разделе 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) или повторно используйте значение, установленное Диспетчером прав Windows Media в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WM Rights Manager\License Server:Info_Cert0. Для свойства DRM_LASignatureCert используйте generateSigningKeysEx (с помощью пакета SDK диспетчера прав Windows Media) или значение, установленное диспетчером прав 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 , как описано в других разделах этой документации. Чтобы создать динамический поток DRM, просто выполните запись в сетевой приемник. Вы также можете выполнить запись в приемник push-уведомлений.

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

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

Атрибуты

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

Свойства DRM

Интерфейс IWMDRMWriter

IWMHeaderInfo::SetAttribute

Интерфейс IWMWriter

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

WMCreateWriter