Общие сведения о COPP
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Ниже приведены основные шаги, которые приложение должно выполнить для использования протокола COPP.
Получение цепочки сертификатов драйвера
- Создайте граф воспроизведения DirectShow, который отрисовывает видео с помощью отрисовщика для микширования видео (VMR-7 или VMR-9) или фильтра расширенного отрисовщика видео (EVR).
- Запросите vmr для интерфейса IAMCertifiedOutputProtection .
- Вызовите IAMCertifiedOutputProtection::KeyExchange. Этот метод возвращает 128-битовое случайное число из драйвера, а также цепочку сертификатов, содержащую 2048-разрядный открытый ключ RSA драйвера.
Проверка цепочки сертификатов
- Проверьте цепочку сертификатов. Если цепочка сертификатов недопустима, остановите.
- Проверьте список отзыва сертификатов (CRL). Если какой-либо из сертификатов в цепочке сертификатов отображается в списке отзыва, остановите.
- Получите открытый ключ RSA из цепочки сертификатов.
Инициализация сеанса COPP
- Создайте 128-разрядный ключ сеанса AES. Этот ключ используется для подписывания данных и проверки того, что подписанные данные не были изменены.
- Создайте два криптографически защищенных 32-разрядных случайных числа. Первый — порядковый номер состояния, а второй — порядковый номер команды. Каждый раз, когда приложение отправляет команду или запрос состояния, оно увеличивает соответствующий порядковый номер и включает этот номер в команду COPP или данные запроса.
- Сцепить 128-разрядное случайное число из графического драйвера, ключа сеанса AES, порядкового номера состояния и порядкового номера команды. Зашифруйте этот массив байтов с помощью открытого ключа драйвера и передайте результат в IAMCertifiedOutputProtection::SessionSequenceStart.
Отправка команд COPP и запросов состояния
- Запросите доступные типы защиты и другие сведения, вызвав IAMCertifiedOutputProtection::P rotectionStatus.
- Задайте требуемые уровни защиты, вызвав IAMCertifiedOutputProtection::P rotectionCommand.
- Периодически запрашивать текущий локальный уровень защиты. Остановите воспроизведение при неожиданном изменении локального уровня защиты или обнаружении проблемы.
Связанные темы