summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2014-11-04 11:26:50 +1000
committerDave Airlie <airlied@redhat.com>2014-11-04 11:26:50 +1000
commitd5f1826803f464f093110184c98e8e1248df7fc6 (patch)
tree4a511477de6311b725aca15a82eb49ca8c3b775c
parent0228dd12c49f3335f008443fbcb61c7d3f8df3ac (diff)
add send eks to pkt generator
-rw-r--r--dl3_hdcp.c30
-rw-r--r--dl_pkts.h1
-rw-r--r--hdcp.h1
3 files changed, 32 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;
+}
diff --git a/dl_pkts.h b/dl_pkts.h
index 75f705f..d3142e8 100644
--- a/dl_pkts.h
+++ b/dl_pkts.h
@@ -8,5 +8,6 @@ void dl3_msg2_hdr04(uint8_t *buf, int *len_p);
void dl3_packet_hdcp_ake_init(uint8_t *buf, int *len_p, uint8_t *Rtx);
void dl3_packet_hdcp_ake_no_stored_km(uint8_t *buf, int *len_p, uint8_t *ekpubkm);
void dl3_packet_hdcp_lc_init(uint8_t *buf, int *len_p, uint8_t *Rn);
+void dl3_packet_hdcp_ske_send_eks(uint8_t *buf, int *len_p, uint8_t *edkey_ks, uint8_t *riv);
#define ROUND_TO_4(x) ((((x) + 3) / 4) * 4)
#endif
diff --git a/hdcp.h b/hdcp.h
index a31a81b..5b362be 100644
--- a/hdcp.h
+++ b/hdcp.h
@@ -10,5 +10,6 @@
#define HDCP_AKE_SEND_PAIRING_INFO 8
#define HDCP_LC_INIT 9
#define HDCP_LC_SEND_L_PRIME 10
+#define HDCP_SKE_SEND_EKS 11
#endif