COPP 概述
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 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 来设置所需的保护级别。
- 定期查询当前本地保护级别。 如果本地保护级别发生意外更改或检测到问题,请停止播放。
相关主题