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
- 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 ).
- Consulte a VMR para a interface IAMCertifiedOutputProtection .
- 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
- Valide a cadeia de certificados. Se a cadeia de certificados não for válida, pare.
- Verifique a CRL (lista de certificados revogados). Se qualquer um dos certificados na cadeia de certificados aparecer na lista de revogação, pare.
- Obtenha a chave pública RSA da cadeia de certificados.
Inicializar a sessão COPP
- 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.
- 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.
- 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
- Consulte os tipos de proteção disponíveis e outras informações chamando IAMCertifiedOutputProtection::P rotectionStatus.
- Defina os níveis de proteção desejados chamando IAMCertifiedOutputProtection::P rotectionCommand.
- 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.
Tópicos relacionados