summaryrefslogtreecommitdiff
path: root/dl3_hdcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'dl3_hdcp.c')
-rw-r--r--dl3_hdcp.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/dl3_hdcp.c b/dl3_hdcp.c
index 769e406..c2a8bbf 100644
--- a/dl3_hdcp.c
+++ b/dl3_hdcp.c
@@ -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;
+}