diff for duplicates of <2fd0c2ffd18bb9ab26a033c9e308626d70a9edbf.camel@mediatek.com> diff --git a/N1/2.bin b/N1/2.bin new file mode 100644 index 0000000..45c73f9 --- /dev/null +++ b/N1/2.bin @@ -0,0 +1,142 @@ +<html><body><p> +<pre> +Hi, Mac: + +On Sat, 2024-06-08 at 20:01 +0800, mac.shen wrote: +> Changes in v3: +> - refine the function to get system time +> - refine the flow to do HDCP with content type and +>   protection value which set by user space +> - refine the flow to update content protection +> - refine the flow to do HDCP2.x authentication +> per suggestion from the previous thread: +> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA$  +> /patch/20240205055055.25340-3-mac.shen@mediatek.com/ +>  +> Signed-off-by: mac.shen <mac.shen@mediatek.com> +> --- + +[snip] + +> +/* Authentication flow starts from here */ +> +static int dp_tx_hdcp2x_key_exchange(struct mtk_hdcp_info *hdcp_info) +> +{ +> +struct mtk_dp *mtk_dp = container_of(hdcp_info, struct mtk_dp, hdcp_info); +> +bool stored; +> +int ret; +> + +> +if (!hdcp_info->hdcp2_info.capable) +> +return -EAGAIN; +> + +> +ret = dp_tx_hdcp2x_init(hdcp_info); +> +if (ret) +> +return ret; +> + +> +ret = dp_tx_hdcp2x_write_ake_init(hdcp_info); +> +if (ret) +> +return ret; +> + +> +ret = dp_tx_hdcp2x_read_ake_send_cert(hdcp_info); +> +if (ret) +> +return ret; +> + +> +hdcp_info->hdcp2_info.repeater = +> +HDCP_2_2_RX_REPEATER(hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps[2]); +> + +> +if (drm_hdcp_check_ksvs_revoked(mtk_dp->drm_dev, +> +hdcp_info->hdcp2_info.hdcp_rx.send_cert.cert_rx.receiver_id, +> +1) > 0) { +> +dev_err(mtk_dp->dev, "[HDCP2.X] Receiver ID is revoked\n"); +> +return -EPERM; +> +} +> + +> +ret = tee_ake_certificate(hdcp_info, +> +  (u8 *)&hdcp_info->hdcp2_info.hdcp_rx.cert_rx, &stored, +> +hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m + +> +HDCP_2_2_E_KH_KM_LEN, +> +hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m); +> +if (ret) +> +return ret; +> + +> +hdcp_info->hdcp2_info.stored_km = stored; +> + +> +if (!hdcp_info->hdcp2_info.stored_km) { +> +ret = tee_enc_rsaes_oaep(hdcp_info, +> + hdcp_info->hdcp2_info.hdcp_tx.no_stored_km.e_kpub_km); +> +if (ret) +> +return ret; +> + +> +ret = dp_tx_hdcp2x_write_ake_no_stored_km(hdcp_info); +> +if (ret) +> +return ret; +> + +> +} else { +> +ret = dp_tx_hdcp2x_write_ake_stored_km(hdcp_info); +> +if (ret) +> +return ret; +> +} +> + +> +ret = dp_tx_hdcp2x_read_ake_send_hprime(hdcp_info); +> +if (ret) +> +return ret; +> + +> +ret = tee_ake_h_prime(hdcp_info, +> +      hdcp_info->hdcp2_info.hdcp_tx.ake_init.r_tx, +> +hdcp_info->hdcp2_info.hdcp_rx.send_cert.r_rx, +> +hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps, +> +(u8 *)&hdcp_info->hdcp2_info.hdcp_tx.tx_caps, +> +hdcp_info->hdcp2_info.hdcp_rx.send_hprime.h_prime, +> +HDCP_2_2_H_PRIME_LEN); + +hdcp_info->hdcp2_info.hdcp_tx.ake_init, +hdcp_info->hdcp2_info.hdcp_rx.send_cert, +hdcp_info->hdcp2_info.hdcp_rx.send_hprime, +hdcp_info->hdcp2_info.hdcp_tx.no_stored_km, +hdcp_info->hdcp2_info.stored_km, +hdcp_info->hdcp2_info.hdcp_rx.pairing_info + +are used only in dp_tx_hdcp2x_key_exchange(), so make them as local variable in dp_tx_hdcp2x_key_exchange(). + +hdcp_info->hdcp2_info.hdcp_tx.tx_caps is constant value, so use t_tx_caps[] directly instead of using hdcp_info->hdcp2_info.hdcp_tx.tx_caps. + +Regards, +CK + +> +if (ret) { +> +if (hdcp_info->hdcp2_info.stored_km) +> +tee_clear_paring(hdcp_info); +> +return ret; +> +} +> + +> +if (!hdcp_info->hdcp2_info.stored_km) { +> +ret = dp_tx_hdcp2x_read_ake_send_pairing_info(hdcp_info); +> +if (ret) +> +return ret; +> + +> +/* Store m, km, Ekh(km) */ +> +ret = tee_ake_paring(hdcp_info, +> +     hdcp_info->hdcp2_info.hdcp_rx.pairing_info.e_kh_km); +> +if (ret) +> +return ret; +> +} +> + +> +return 0; +> +} +> + + +</pre> +</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice + ******************** +The information contained in this e-mail message (including any +attachments) may be confidential, proprietary, privileged, or otherwise +exempt from disclosure under applicable laws. It is intended to be +conveyed only to the designated recipient(s). Any use, dissemination, +distribution, printing, retaining or copying of this e-mail (including its +attachments) by unintended recipient(s) is strictly prohibited and may +be unlawful. If you are not an intended recipient of this e-mail, or believe + +that you have received this e-mail in error, please notify the sender +immediately (by replying to this e-mail), delete any and all copies of +this e-mail (including any attachments) from your system, and do not +disclose the content of this e-mail to any other person. Thank you! +</pre><!--}--> diff --git a/N1/2.hdr b/N1/2.hdr new file mode 100644 index 0000000..da1f671 --- /dev/null +++ b/N1/2.hdr @@ -0,0 +1,3 @@ +Content-Type: text/html; + charset="utf-8" +Content-Transfer-Encoding: base64 diff --git a/a/content_digest b/N1/content_digest index 553097e..8fe1eb3 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -16,7 +16,7 @@ linux-mediatek@lists.infradead.org <linux-mediatek@lists.infradead.org> linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org> " Shuijing Li (\346\235\216\346\260\264\351\235\231) <Shuijing.Li@mediatek.com>\0" - "\00:1\0" + "\01:1\0" "b\0" "Hi, Mac:\n" "\n" @@ -141,5 +141,149 @@ "> +\treturn 0;\n" "> +}\n" > + + "\01:2\0" + "b\0" + "<html><body><p>\r\n" + "<pre>\r\n" + "Hi, Mac:\r\n" + "\r\n" + "On Sat, 2024-06-08 at 20:01 +0800, mac.shen wrote:\r\n" + "> Changes in v3:\r\n" + "> - refine the function to get system time\r\n" + "> - refine the flow to do HDCP with content type and\r\n" + ">   protection value which set by user space\r\n" + "> - refine the flow to update content protection\r\n" + "> - refine the flow to do HDCP2.x authentication\r\n" + "> per suggestion from the previous thread:\r\n" + "> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA$ \r\n" + "> /patch/20240205055055.25340-3-mac.shen@mediatek.com/\r\n" + "> \r\n" + "> Signed-off-by: mac.shen <mac.shen@mediatek.com>\r\n" + "> ---\r\n" + "\r\n" + "[snip]\r\n" + "\r\n" + "> +/* Authentication flow starts from here */\r\n" + "> +static int dp_tx_hdcp2x_key_exchange(struct mtk_hdcp_info *hdcp_info)\r\n" + "> +{\r\n" + "> +struct mtk_dp *mtk_dp = container_of(hdcp_info, struct mtk_dp, hdcp_info);\r\n" + "> +bool stored;\r\n" + "> +int ret;\r\n" + "> +\r\n" + "> +if (!hdcp_info->hdcp2_info.capable)\r\n" + "> +return -EAGAIN;\r\n" + "> +\r\n" + "> +ret = dp_tx_hdcp2x_init(hdcp_info);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +ret = dp_tx_hdcp2x_write_ake_init(hdcp_info);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +ret = dp_tx_hdcp2x_read_ake_send_cert(hdcp_info);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +hdcp_info->hdcp2_info.repeater =\r\n" + "> +HDCP_2_2_RX_REPEATER(hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps[2]);\r\n" + "> +\r\n" + "> +if (drm_hdcp_check_ksvs_revoked(mtk_dp->drm_dev,\r\n" + "> +hdcp_info->hdcp2_info.hdcp_rx.send_cert.cert_rx.receiver_id,\r\n" + "> +1) > 0) {\r\n" + "> +dev_err(mtk_dp->dev, "[HDCP2.X] Receiver ID is revoked\n");\r\n" + "> +return -EPERM;\r\n" + "> +}\r\n" + "> +\r\n" + "> +ret = tee_ake_certificate(hdcp_info,\r\n" + "> +  (u8 *)&hdcp_info->hdcp2_info.hdcp_rx.cert_rx, &stored,\r\n" + "> +hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m +\r\n" + "> +HDCP_2_2_E_KH_KM_LEN,\r\n" + "> +hdcp_info->hdcp2_info.ake_stored_km.e_kh_km_m);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +hdcp_info->hdcp2_info.stored_km = stored;\r\n" + "> +\r\n" + "> +if (!hdcp_info->hdcp2_info.stored_km) {\r\n" + "> +ret = tee_enc_rsaes_oaep(hdcp_info,\r\n" + "> + hdcp_info->hdcp2_info.hdcp_tx.no_stored_km.e_kpub_km);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +ret = dp_tx_hdcp2x_write_ake_no_stored_km(hdcp_info);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +} else {\r\n" + "> +ret = dp_tx_hdcp2x_write_ake_stored_km(hdcp_info);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +}\r\n" + "> +\r\n" + "> +ret = dp_tx_hdcp2x_read_ake_send_hprime(hdcp_info);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +ret = tee_ake_h_prime(hdcp_info,\r\n" + "> +      hdcp_info->hdcp2_info.hdcp_tx.ake_init.r_tx,\r\n" + "> +hdcp_info->hdcp2_info.hdcp_rx.send_cert.r_rx,\r\n" + "> +hdcp_info->hdcp2_info.hdcp_rx.send_cert.rx_caps,\r\n" + "> +(u8 *)&hdcp_info->hdcp2_info.hdcp_tx.tx_caps,\r\n" + "> +hdcp_info->hdcp2_info.hdcp_rx.send_hprime.h_prime,\r\n" + "> +HDCP_2_2_H_PRIME_LEN);\r\n" + "\r\n" + "hdcp_info->hdcp2_info.hdcp_tx.ake_init,\r\n" + "hdcp_info->hdcp2_info.hdcp_rx.send_cert,\r\n" + "hdcp_info->hdcp2_info.hdcp_rx.send_hprime,\r\n" + "hdcp_info->hdcp2_info.hdcp_tx.no_stored_km,\r\n" + "hdcp_info->hdcp2_info.stored_km,\r\n" + "hdcp_info->hdcp2_info.hdcp_rx.pairing_info\r\n" + "\r\n" + "are used only in dp_tx_hdcp2x_key_exchange(), so make them as local variable in dp_tx_hdcp2x_key_exchange().\r\n" + "\r\n" + "hdcp_info->hdcp2_info.hdcp_tx.tx_caps is constant value, so use t_tx_caps[] directly instead of using hdcp_info->hdcp2_info.hdcp_tx.tx_caps.\r\n" + "\r\n" + "Regards,\r\n" + "CK\r\n" + "\r\n" + "> +if (ret) {\r\n" + "> +if (hdcp_info->hdcp2_info.stored_km)\r\n" + "> +tee_clear_paring(hdcp_info);\r\n" + "> +return ret;\r\n" + "> +}\r\n" + "> +\r\n" + "> +if (!hdcp_info->hdcp2_info.stored_km) {\r\n" + "> +ret = dp_tx_hdcp2x_read_ake_send_pairing_info(hdcp_info);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +\r\n" + "> +/* Store m, km, Ekh(km) */\r\n" + "> +ret = tee_ake_paring(hdcp_info,\r\n" + "> +     hdcp_info->hdcp2_info.hdcp_rx.pairing_info.e_kh_km);\r\n" + "> +if (ret)\r\n" + "> +return ret;\r\n" + "> +}\r\n" + "> +\r\n" + "> +return 0;\r\n" + "> +}\r\n" + "> +\r\n" + "\r\n" + "</pre>\r\n" + "</p></body></html><!--type:text--><!--{--><pre>************* MEDIATEK Confidentiality Notice\r\n" + " ********************\r\n" + "The information contained in this e-mail message (including any \r\n" + "attachments) may be confidential, proprietary, privileged, or otherwise\r\n" + "exempt from disclosure under applicable laws. It is intended to be \r\n" + "conveyed only to the designated recipient(s). Any use, dissemination, \r\n" + "distribution, printing, retaining or copying of this e-mail (including its \r\n" + "attachments) by unintended recipient(s) is strictly prohibited and may \r\n" + "be unlawful. If you are not an intended recipient of this e-mail, or believe\r\n" + " \r\n" + "that you have received this e-mail in error, please notify the sender \r\n" + "immediately (by replying to this e-mail), delete any and all copies of \r\n" + "this e-mail (including any attachments) from your system, and do not\r\n" + "disclose the content of this e-mail to any other person. Thank you!\r\n" + </pre><!--}--> -dadbc00ad9ac5bed939dfae429f05f97148682d1b7a6ea185bd9f2558bc23c4b +c4f0fbb1e4b29b41c17b3b5e4b427fd63f4d59e16f919dbcb8edbcec5889eed8
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.