SuperIC社区_

标题: 如何简单验证HDCP key是否有效 [打印本页]

作者: creass    时间: 2016-5-28 14:26
标题: 如何简单验证HDCP key是否有效
现在HDCP key基本上都是放在flash中,在没有任何debug 工具辅助的情况下,且不接HDMI信号的条件下,如何知道HDCP key是否有烧写或者是是否有效,以下函数MApp_ZUI_ACT_isHdcpValid 给出了一种方法供参考:


#if ENABLE_SHOW_HDCP_VALID_INFO_IN_FAC_MENU
static BOOLEAN MApp_ZUI_ACT_isHdcpValid(void)
{

int i;
UINT8 j,cnt=0;
UINT8 data[5];
UINT8 compare[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
BOOL b_isHdcpValid = FALSE;
       MS_U8 u8HdcpKey[HDCP_KEY_SIZE];

#if (HDCP_KEY_TYPE==HDCP_KEY_IN_CODE)
MApp_XC_Sys_GetHDCP_KEY_FromCode((MS_U8 *)u8HdcpKey);// for hdcp key in code
#elif (HDCP_KEY_TYPE==HDCP_KEY_IN_DB)  // readkey from db
MApp_DB_LoadHDCP_KEY((MS_U8 *)u8HdcpKey);
#else
msAPI_hdcpkeyBurstReadBytes(HDCP_KEY_ADDR, (MS_U8 *)&u8HdcpKey, HDCP_KEY_SIZE);
#endif

b_isHdcpValid = FALSE;


for (i=0;i<5;i++)
{
data = u8HdcpKey;

for(j=0; j<8; j++)
{
if (data & compare[j])
{
cnt++;
}
}
}

if (cnt == 20)
{
b_isHdcpValid = TRUE;
//printf("HdmiTable_Init:check BKSV bit pass(cnt=%d)\n",cnt);
}
else
{
//printf("HdmiTable_Init:check BKSV bit error(cnt=%d)\n",cnt);
}

return b_isHdcpValid;
}
#endif





作者: Sunny    时间: 2016-9-6 16:43
收藏一下。




欢迎光临 SuperIC社区_ (/) Powered by Discuz! X3.3