Vue d’ensemble de COPP

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Voici les étapes de base qu’une application doit effectuer pour utiliser le protocole COPP (Certified Output Protection Protocol).

Obtenir la chaîne de certificats du pilote

  1. Créez un graphique de lecture DirectShow qui restitue la vidéo à l’aide du convertisseur de mixage vidéo (VMR-7 ou VMR-9) ou du filtre EVR ( Enhanced Video Renderer ).
  2. Interrogez le VMR pour l’interface IAMCertifiedOutputProtection .
  3. Appelez IAMCertifiedOutputProtection::KeyExchange. Cette méthode retourne un nombre aléatoire 128 bits à partir du pilote, ainsi qu’une chaîne de certificats qui contient la clé publique RSA 2048 bits du pilote.

Valider la chaîne de certificats

  1. Validez la chaîne de certificats. Si la chaîne de certificats n’est pas valide, arrêtez.
  2. Vérifiez la liste de révocation des certificats (CRL). Si l’un des certificats de la chaîne de certificats apparaît dans la liste de révocation, arrêtez.
  3. Obtenez la clé publique RSA à partir de la chaîne de certificats.

Initialiser la session COPP

  1. Générez une clé de session AES 128 bits. Cette clé est utilisée pour signer des données et vérifier que les données signées n’ont pas été falsifiées.
  2. Générez deux nombres aléatoires 32 bits sécurisés par chiffrement. Le premier est un numéro de séquence status, et le second est un numéro de séquence de commande. Chaque fois que l’application envoie une commande ou status demande, elle incrémente le numéro de séquence correspondant et inclut ce nombre dans la commande COPP ou les données de requête.
  3. Concaténer le nombre aléatoire 128 bits du pilote graphique, la clé de session AES, le numéro de séquence status et le numéro de séquence de commande. Chiffrez ce tableau d’octets à l’aide de la clé publique du pilote et passez le résultat à IAMCertifiedOutputProtection::SessionSequenceStart.

Envoyer des commandes COPP et des demandes d’état

  1. Interrogez les types de protection disponibles et d’autres informations en appelant IAMCertifiedOutputProtection::P rotectionStatus.
  2. Définissez les niveaux de protection souhaités en appelant IAMCertifiedOutputProtection::P rotectionCommand.
  3. Interrogez régulièrement le niveau de protection local actuel. Arrêtez la lecture si le niveau de protection local change de manière inattendue ou si un problème est détecté.

Utilisation du protocole COPP (Certified Output Protection Protocol)