diff options
Diffstat (limited to 'dl3_hdcp.c')
-rw-r--r-- | dl3_hdcp.c | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -189,3 +189,33 @@ void dl3_packet_hdcp_lc_init(uint8_t *buf, int *len_p, uint8_t *Rn) *len_p = total_len + 4; } + +void dl3_packet_hdcp_ske_send_eks(uint8_t *buf, int *len_p, uint8_t *edkey_ks, uint8_t *riv) +{ + int ske_send_eks_len = 24 + 1; + int total_len = 0; + int i; + int mid_len; + + /* 9 bytes for AKE */ + total_len = pkt4_mid_len(ske_send_eks_len, &mid_len); + + memset(buf, 0, ROUND_TO_4(total_len + 4)); + fill_hdcp_header1(buf, total_len, MSG_TYPE_4); + fill_hdcp_header2(buf, MSG4_PKT4); + + dl3_msg4_hdr4(buf, mid_len, 0x10, 0); + + buf[38] = 0x30; + buf[40] = HDCP_SKE_SEND_EKS; + + /* write Rtx */ + for (i = 0; i < 16; i++) { + buf[41 + i] = edkey_ks[i]; + } + for (i = 0; i < 8; i++) { + buf[41 + 16 + i] = riv[i]; + } + + *len_p = total_len + 4; +} |