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


Общие сведения о COPP

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

Ниже приведены основные шаги, которые приложение должно выполнить для использования протокола COPP.

Получение цепочки сертификатов драйвера

  1. Создайте граф воспроизведения DirectShow, который отрисовывает видео с помощью отрисовщика для микширования видео (VMR-7 или VMR-9) или фильтра расширенного отрисовщика видео (EVR).
  2. Запросите vmr для интерфейса IAMCertifiedOutputProtection .
  3. Вызовите IAMCertifiedOutputProtection::KeyExchange. Этот метод возвращает 128-битовое случайное число из драйвера, а также цепочку сертификатов, содержащую 2048-разрядный открытый ключ RSA драйвера.

Проверка цепочки сертификатов

  1. Проверьте цепочку сертификатов. Если цепочка сертификатов недопустима, остановите.
  2. Проверьте список отзыва сертификатов (CRL). Если какой-либо из сертификатов в цепочке сертификатов отображается в списке отзыва, остановите.
  3. Получите открытый ключ RSA из цепочки сертификатов.

Инициализация сеанса COPP

  1. Создайте 128-разрядный ключ сеанса AES. Этот ключ используется для подписывания данных и проверки того, что подписанные данные не были изменены.
  2. Создайте два криптографически защищенных 32-разрядных случайных числа. Первый — порядковый номер состояния, а второй — порядковый номер команды. Каждый раз, когда приложение отправляет команду или запрос состояния, оно увеличивает соответствующий порядковый номер и включает этот номер в команду COPP или данные запроса.
  3. Сцепить 128-разрядное случайное число из графического драйвера, ключа сеанса AES, порядкового номера состояния и порядкового номера команды. Зашифруйте этот массив байтов с помощью открытого ключа драйвера и передайте результат в IAMCertifiedOutputProtection::SessionSequenceStart.

Отправка команд COPP и запросов состояния

  1. Запросите доступные типы защиты и другие сведения, вызвав IAMCertifiedOutputProtection::P rotectionStatus.
  2. Задайте требуемые уровни защиты, вызвав IAMCertifiedOutputProtection::P rotectionCommand.
  3. Периодически запрашивать текущий локальный уровень защиты. Остановите воспроизведение при неожиданном изменении локального уровня защиты или обнаружении проблемы.

Использование сертифицированного протокола защиты вывода (COPP)