HDCP
1. 概述¶
HDCP(High-bandwidth Digital Content Protection):高带宽数字内容保护技术。它可以提供很高的带宽,无损地传输数字视频和音频信号。为了保证HDMI或者DVI传输的高清晰信号不会被非法录制,就出现了HDCP技术。当用户进行非法复制时,该技术会进行干扰,降低复制出来的影像的质量,从而对内容进行保护。在拿到raw/original key后,此Key可以通过SstarHDCPTool加密并烧录到指定存储区。
2. SstarHDCPTool HDCP key 加密&烧录¶
由于HDCP key 的解析格式要求,请使用最新版本SstarHDCPTool(http://hcgit04-master:9080/#/admin/projects/sigmastar/android/tools 中可以git到sstar_hdcp_tool)。主要介绍Fastboot 模式下 HDCP key 的烧录方式。
2.1. 系统要求¶
硬件:USB 连接线、SigmaStar 开发板
软件:SstarHDCPTool 软件包
系统:Fastboot 模式
2.2. HDCP key 加密¶
-
Raw key说明
Bytes(4+308n) 说明 First 4 bytes(0-3) 1:transmitter
2:receiver 如“0x00 0x00 0x00 0x02”,表示HDCP Key for Rx8 bytes(4-11) Key selection vector(KSV). Only first 5 bytes are valid 280 bytes(12-291) Device key(raw key) 20 bytes(292-311) SHA-1 hash value -
HDCP Tool encode key
-
选择 HDCP SOURCE 文件。
-
选择ENCODE KEY(加密后文件存储位置),建议使用数字命名,e.g.000000.bin。
-
选择key version(v1.4 / v 2.2),HeaderSize和KeySize无需修改。
-
Cut可以选择keys in one file,输入密钥(16 bytes),之后点击start,获得加密后的key。
-
-
One key one file 加密格式说明
Header AES key HDCP key 16 bytes 16 bytes Encode key size(offset0、1) 0-1: Encription key size
2-3:Version
4-15:Reserve16-31:AES encryption key HDCP1.4: [32:319] Encription Key
(KSV in first 5bytes after decryption)
HDCP2.2: [32:943] Encription Key -
烧录步骤
-
选择ENCODE KEY(加密后文件)作为HDCP KEY FILE路径。(格式不正确的话将提示错误)
-
选择对应的HDCP key version(1.4 / 2.2),Connect Type选择FastBoot,单次烧录的话HDCP Key Index 保持为0。
-
开发板进入fastboot 模式,点击烧录,即将HDCP KEY烧录到指定存储区(过程中串口会弹出KEY内容)。
-
3. HDCP v1.4 解析相关API¶
-
如下是MI HDMIRX模块的HDCP v1.4 解析相关用户接口:
API名称 说明 hdmirx_hdcp_read HDCP key 读取并解析 MI_HDMIRX_LoadHdcp 加载HDMI RX HDCP Key
3.1. hdmirx_hdcp_read¶
-
说明
支持优先到指定裸分区读取HDCP data,若裸分区不存在该data再到指定分区读取hdcp14.bin文件,依据加密格式解析,对帧头信息进行验证并解密出HDCP key。
-
定义
static int hdmirx_hdcp_read(uint8_t* hdcp)
-
形参
参数名称 描述 输入/输出 hdcp 存放解密后的hdcp key指针 输入 -
返回值
-
0:成功。
-
-1:失败。
-
-
依赖
-
头文件:openssl/aes.h, peripherals.h
-
库文件:libcrypto.so, libperipherals.so
-
3.2. MI_HDMIRX_LoadHdcp¶
-
说明
加载 HDMI RX HDCP Key。
-
语法
MI_S32 MI_HDMIRX_LoadHdcp(MI_HDMIRX_DeviceId_e ePortId, MI_HDMIRX_Hdcp_t *pstHdcp);
-
形参
参数名称 描述 输入/输出 ePortId 端口 ID, 对应HDMI 输入端口 ID 输入 pstHdcp HDMI RX hdcp key 输入 -
返回值
-
MI_SUCCESS(0):成功。
-
非0:失败。
-
-
依赖
-
头文件:mi_hdmirx.h
-
库文件:libmi_hdmirx.a / libmi_hdmirx.so
-