diff options
author | Dave Airlie <airlied@redhat.com> | 2014-11-04 11:26:50 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-11-04 11:26:50 +1000 |
commit | d5f1826803f464f093110184c98e8e1248df7fc6 (patch) | |
tree | 4a511477de6311b725aca15a82eb49ca8c3b775c | |
parent | 0228dd12c49f3335f008443fbcb61c7d3f8df3ac (diff) |
add send eks to pkt generator
-rw-r--r-- | dl3_hdcp.c | 30 | ||||
-rw-r--r-- | dl_pkts.h | 1 | ||||
-rw-r--r-- | hdcp.h | 1 |
3 files changed, 32 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; +} @@ -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 @@ -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 |