Compartilhar via


Visão geral do COPP

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Estas são as etapas básicas que um aplicativo deve executar para usar o COPP (Certified Output Protection Protocol).

Obter a cadeia de certificados do driver

  1. Crie um grafo de reprodução do DirectShow que renderize o vídeo usando o Renderizador de Combinação de Vídeo (VMR-7 ou VMR-9) ou o filtro EVR ( Renderizador de Vídeo Avançado ).
  2. Consulte a VMR para a interface IAMCertifiedOutputProtection .
  3. Chame IAMCertifiedOutputProtection::KeyExchange. Esse método retorna um número aleatório de 128 bits do driver, juntamente com uma cadeia de certificados que contém a chave pública RSA de 2048 bits do driver.

Validar a cadeia de certificados

  1. Valide a cadeia de certificados. Se a cadeia de certificados não for válida, pare.
  2. Verifique a CRL (lista de certificados revogados). Se qualquer um dos certificados na cadeia de certificados aparecer na lista de revogação, pare.
  3. Obtenha a chave pública RSA da cadeia de certificados.

Inicializar a sessão COPP

  1. Gere uma chave de sessão AES de 128 bits. Essa chave é usada para assinar dados e verificar se os dados assinados não foram adulterados.
  2. Gere dois números aleatórios de 32 bits protegidos criptograficamente. O primeiro é um status número de sequência e o segundo é um número de sequência de comandos. Sempre que o aplicativo envia um comando ou status solicitação, ele incrementa o número de sequência correspondente e inclui esse número no comando COPP ou nos dados de solicitação.
  3. Concatene o número aleatório de 128 bits do driver gráfico, a chave de sessão do AES, o número de sequência status e o número da sequência de comandos. Criptografe essa matriz de bytes usando a chave pública do driver e passe o resultado para IAMCertifiedOutputProtection::SessionSequenceStart.

Enviar comandos COPP e solicitações de status

  1. Consulte os tipos de proteção disponíveis e outras informações chamando IAMCertifiedOutputProtection::P rotectionStatus.
  2. Defina os níveis de proteção desejados chamando IAMCertifiedOutputProtection::P rotectionCommand.
  3. Consulta periódica para o nível de proteção local atual. Pare a reprodução se o nível de proteção local for alterado inesperadamente ou se um problema for detectado.

Usando o COPP (Certified Output Protection Protocol)