All of lore.kernel.org
 help / color / mirror / Atom feed
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,&#32;Mac:
+
+On&#32;Sat,&#32;2024-06-08&#32;at&#32;20:01&#32;+0800,&#32;mac.shen&#32;wrote:
+&gt;&#32;Changes&#32;in&#32;v3:
+&gt;&#32;-&#32;refine&#32;the&#32;function&#32;to&#32;get&#32;system&#32;time
+&gt;&#32;-&#32;refine&#32;the&#32;flow&#32;to&#32;do&#32;HDCP&#32;with&#32;content&#32;type&#32;and
+&gt;&#32;&#32;&#32;protection&#32;value&#32;which&#32;set&#32;by&#32;user&#32;space
+&gt;&#32;-&#32;refine&#32;the&#32;flow&#32;to&#32;update&#32;content&#32;protection
+&gt;&#32;-&#32;refine&#32;the&#32;flow&#32;to&#32;do&#32;HDCP2.x&#32;authentication
+&gt;&#32;per&#32;suggestion&#32;from&#32;the&#32;previous&#32;thread:
+&gt;&#32;https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA&#36;&#32;
+&gt;&#32;/patch/20240205055055.25340-3-mac.shen@mediatek.com/
+&gt;&#32;
+&gt;&#32;Signed-off-by:&#32;mac.shen&#32;&lt;mac.shen@mediatek.com&gt;
+&gt;&#32;---
+
+[snip]
+
+&gt;&#32;+/*&#32;Authentication&#32;flow&#32;starts&#32;from&#32;here&#32;*/
+&gt;&#32;+static&#32;int&#32;dp_tx_hdcp2x_key_exchange(struct&#32;mtk_hdcp_info&#32;*hdcp_info)
+&gt;&#32;+{
+&gt;&#32;+struct&#32;mtk_dp&#32;*mtk_dp&#32;=&#32;container_of(hdcp_info,&#32;struct&#32;mtk_dp,&#32;hdcp_info);
+&gt;&#32;+bool&#32;stored;
+&gt;&#32;+int&#32;ret;
+&gt;&#32;+
+&gt;&#32;+if&#32;(!hdcp_info-&gt;hdcp2_info.capable)
+&gt;&#32;+return&#32;-EAGAIN;
+&gt;&#32;+
+&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_init(hdcp_info);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_write_ake_init(hdcp_info);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_read_ake_send_cert(hdcp_info);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.repeater&#32;=
+&gt;&#32;+HDCP_2_2_RX_REPEATER(hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.rx_caps[2]);
+&gt;&#32;+
+&gt;&#32;+if&#32;(drm_hdcp_check_ksvs_revoked(mtk_dp-&gt;drm_dev,
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.cert_rx.receiver_id,
+&gt;&#32;+1)&#32;&gt;&#32;0)&#32;{
+&gt;&#32;+dev_err(mtk_dp-&gt;dev,&#32;&quot;[HDCP2.X]&#32;Receiver&#32;ID&#32;is&#32;revoked&#92;n&quot;);
+&gt;&#32;+return&#32;-EPERM;
+&gt;&#32;+}
+&gt;&#32;+
+&gt;&#32;+ret&#32;=&#32;tee_ake_certificate(hdcp_info,
+&gt;&#32;+&#32;&#32;(u8&#32;*)&amp;hdcp_info-&gt;hdcp2_info.hdcp_rx.cert_rx,&#32;&amp;stored,
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.ake_stored_km.e_kh_km_m&#32;+
+&gt;&#32;+HDCP_2_2_E_KH_KM_LEN,
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.ake_stored_km.e_kh_km_m);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.stored_km&#32;=&#32;stored;
+&gt;&#32;+
+&gt;&#32;+if&#32;(!hdcp_info-&gt;hdcp2_info.stored_km)&#32;{
+&gt;&#32;+ret&#32;=&#32;tee_enc_rsaes_oaep(hdcp_info,
+&gt;&#32;+&#32;hdcp_info-&gt;hdcp2_info.hdcp_tx.no_stored_km.e_kpub_km);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_write_ake_no_stored_km(hdcp_info);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+}&#32;else&#32;{
+&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_write_ake_stored_km(hdcp_info);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+}
+&gt;&#32;+
+&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_read_ake_send_hprime(hdcp_info);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+ret&#32;=&#32;tee_ake_h_prime(hdcp_info,
+&gt;&#32;+&#32;&#32;&#32;&#32;&#32;&#32;hdcp_info-&gt;hdcp2_info.hdcp_tx.ake_init.r_tx,
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.r_rx,
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.rx_caps,
+&gt;&#32;+(u8&#32;*)&amp;hdcp_info-&gt;hdcp2_info.hdcp_tx.tx_caps,
+&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_hprime.h_prime,
+&gt;&#32;+HDCP_2_2_H_PRIME_LEN);
+
+hdcp_info-&gt;hdcp2_info.hdcp_tx.ake_init,
+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert,
+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_hprime,
+hdcp_info-&gt;hdcp2_info.hdcp_tx.no_stored_km,
+hdcp_info-&gt;hdcp2_info.stored_km,
+hdcp_info-&gt;hdcp2_info.hdcp_rx.pairing_info
+
+are&#32;used&#32;only&#32;in&#32;dp_tx_hdcp2x_key_exchange(),&#32;so&#32;make&#32;them&#32;as&#32;local&#32;variable&#32;in&#32;dp_tx_hdcp2x_key_exchange().
+
+hdcp_info-&gt;hdcp2_info.hdcp_tx.tx_caps&#32;is&#32;constant&#32;value,&#32;so&#32;use&#32;t_tx_caps[]&#32;directly&#32;instead&#32;of&#32;using&#32;hdcp_info-&gt;hdcp2_info.hdcp_tx.tx_caps.
+
+Regards,
+CK
+
+&gt;&#32;+if&#32;(ret)&#32;{
+&gt;&#32;+if&#32;(hdcp_info-&gt;hdcp2_info.stored_km)
+&gt;&#32;+tee_clear_paring(hdcp_info);
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+}
+&gt;&#32;+
+&gt;&#32;+if&#32;(!hdcp_info-&gt;hdcp2_info.stored_km)&#32;{
+&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_read_ake_send_pairing_info(hdcp_info);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+
+&gt;&#32;+/*&#32;Store&#32;m,&#32;km,&#32;Ekh(km)&#32;*/
+&gt;&#32;+ret&#32;=&#32;tee_ake_paring(hdcp_info,
+&gt;&#32;+&#32;&#32;&#32;&#32;&#32;hdcp_info-&gt;hdcp2_info.hdcp_rx.pairing_info.e_kh_km);
+&gt;&#32;+if&#32;(ret)
+&gt;&#32;+return&#32;ret;
+&gt;&#32;+}
+&gt;&#32;+
+&gt;&#32;+return&#32;0;
+&gt;&#32;+}
+&gt;&#32;+
+
+</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,&#32;Mac:\r\n"
+ "\r\n"
+ "On&#32;Sat,&#32;2024-06-08&#32;at&#32;20:01&#32;+0800,&#32;mac.shen&#32;wrote:\r\n"
+ "&gt;&#32;Changes&#32;in&#32;v3:\r\n"
+ "&gt;&#32;-&#32;refine&#32;the&#32;function&#32;to&#32;get&#32;system&#32;time\r\n"
+ "&gt;&#32;-&#32;refine&#32;the&#32;flow&#32;to&#32;do&#32;HDCP&#32;with&#32;content&#32;type&#32;and\r\n"
+ "&gt;&#32;&#32;&#32;protection&#32;value&#32;which&#32;set&#32;by&#32;user&#32;space\r\n"
+ "&gt;&#32;-&#32;refine&#32;the&#32;flow&#32;to&#32;update&#32;content&#32;protection\r\n"
+ "&gt;&#32;-&#32;refine&#32;the&#32;flow&#32;to&#32;do&#32;HDCP2.x&#32;authentication\r\n"
+ "&gt;&#32;per&#32;suggestion&#32;from&#32;the&#32;previous&#32;thread:\r\n"
+ "&gt;&#32;https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA&#36;&#32;\r\n"
+ "&gt;&#32;/patch/20240205055055.25340-3-mac.shen@mediatek.com/\r\n"
+ "&gt;&#32;\r\n"
+ "&gt;&#32;Signed-off-by:&#32;mac.shen&#32;&lt;mac.shen@mediatek.com&gt;\r\n"
+ "&gt;&#32;---\r\n"
+ "\r\n"
+ "[snip]\r\n"
+ "\r\n"
+ "&gt;&#32;+/*&#32;Authentication&#32;flow&#32;starts&#32;from&#32;here&#32;*/\r\n"
+ "&gt;&#32;+static&#32;int&#32;dp_tx_hdcp2x_key_exchange(struct&#32;mtk_hdcp_info&#32;*hdcp_info)\r\n"
+ "&gt;&#32;+{\r\n"
+ "&gt;&#32;+struct&#32;mtk_dp&#32;*mtk_dp&#32;=&#32;container_of(hdcp_info,&#32;struct&#32;mtk_dp,&#32;hdcp_info);\r\n"
+ "&gt;&#32;+bool&#32;stored;\r\n"
+ "&gt;&#32;+int&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+if&#32;(!hdcp_info-&gt;hdcp2_info.capable)\r\n"
+ "&gt;&#32;+return&#32;-EAGAIN;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_init(hdcp_info);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_write_ake_init(hdcp_info);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_read_ake_send_cert(hdcp_info);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.repeater&#32;=\r\n"
+ "&gt;&#32;+HDCP_2_2_RX_REPEATER(hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.rx_caps[2]);\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+if&#32;(drm_hdcp_check_ksvs_revoked(mtk_dp-&gt;drm_dev,\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.cert_rx.receiver_id,\r\n"
+ "&gt;&#32;+1)&#32;&gt;&#32;0)&#32;{\r\n"
+ "&gt;&#32;+dev_err(mtk_dp-&gt;dev,&#32;&quot;[HDCP2.X]&#32;Receiver&#32;ID&#32;is&#32;revoked&#92;n&quot;);\r\n"
+ "&gt;&#32;+return&#32;-EPERM;\r\n"
+ "&gt;&#32;+}\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+ret&#32;=&#32;tee_ake_certificate(hdcp_info,\r\n"
+ "&gt;&#32;+&#32;&#32;(u8&#32;*)&amp;hdcp_info-&gt;hdcp2_info.hdcp_rx.cert_rx,&#32;&amp;stored,\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.ake_stored_km.e_kh_km_m&#32;+\r\n"
+ "&gt;&#32;+HDCP_2_2_E_KH_KM_LEN,\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.ake_stored_km.e_kh_km_m);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.stored_km&#32;=&#32;stored;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+if&#32;(!hdcp_info-&gt;hdcp2_info.stored_km)&#32;{\r\n"
+ "&gt;&#32;+ret&#32;=&#32;tee_enc_rsaes_oaep(hdcp_info,\r\n"
+ "&gt;&#32;+&#32;hdcp_info-&gt;hdcp2_info.hdcp_tx.no_stored_km.e_kpub_km);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_write_ake_no_stored_km(hdcp_info);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+}&#32;else&#32;{\r\n"
+ "&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_write_ake_stored_km(hdcp_info);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+}\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_read_ake_send_hprime(hdcp_info);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+ret&#32;=&#32;tee_ake_h_prime(hdcp_info,\r\n"
+ "&gt;&#32;+&#32;&#32;&#32;&#32;&#32;&#32;hdcp_info-&gt;hdcp2_info.hdcp_tx.ake_init.r_tx,\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.r_rx,\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert.rx_caps,\r\n"
+ "&gt;&#32;+(u8&#32;*)&amp;hdcp_info-&gt;hdcp2_info.hdcp_tx.tx_caps,\r\n"
+ "&gt;&#32;+hdcp_info-&gt;hdcp2_info.hdcp_rx.send_hprime.h_prime,\r\n"
+ "&gt;&#32;+HDCP_2_2_H_PRIME_LEN);\r\n"
+ "\r\n"
+ "hdcp_info-&gt;hdcp2_info.hdcp_tx.ake_init,\r\n"
+ "hdcp_info-&gt;hdcp2_info.hdcp_rx.send_cert,\r\n"
+ "hdcp_info-&gt;hdcp2_info.hdcp_rx.send_hprime,\r\n"
+ "hdcp_info-&gt;hdcp2_info.hdcp_tx.no_stored_km,\r\n"
+ "hdcp_info-&gt;hdcp2_info.stored_km,\r\n"
+ "hdcp_info-&gt;hdcp2_info.hdcp_rx.pairing_info\r\n"
+ "\r\n"
+ "are&#32;used&#32;only&#32;in&#32;dp_tx_hdcp2x_key_exchange(),&#32;so&#32;make&#32;them&#32;as&#32;local&#32;variable&#32;in&#32;dp_tx_hdcp2x_key_exchange().\r\n"
+ "\r\n"
+ "hdcp_info-&gt;hdcp2_info.hdcp_tx.tx_caps&#32;is&#32;constant&#32;value,&#32;so&#32;use&#32;t_tx_caps[]&#32;directly&#32;instead&#32;of&#32;using&#32;hdcp_info-&gt;hdcp2_info.hdcp_tx.tx_caps.\r\n"
+ "\r\n"
+ "Regards,\r\n"
+ "CK\r\n"
+ "\r\n"
+ "&gt;&#32;+if&#32;(ret)&#32;{\r\n"
+ "&gt;&#32;+if&#32;(hdcp_info-&gt;hdcp2_info.stored_km)\r\n"
+ "&gt;&#32;+tee_clear_paring(hdcp_info);\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+}\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+if&#32;(!hdcp_info-&gt;hdcp2_info.stored_km)&#32;{\r\n"
+ "&gt;&#32;+ret&#32;=&#32;dp_tx_hdcp2x_read_ake_send_pairing_info(hdcp_info);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+/*&#32;Store&#32;m,&#32;km,&#32;Ekh(km)&#32;*/\r\n"
+ "&gt;&#32;+ret&#32;=&#32;tee_ake_paring(hdcp_info,\r\n"
+ "&gt;&#32;+&#32;&#32;&#32;&#32;&#32;hdcp_info-&gt;hdcp2_info.hdcp_rx.pairing_info.e_kh_km);\r\n"
+ "&gt;&#32;+if&#32;(ret)\r\n"
+ "&gt;&#32;+return&#32;ret;\r\n"
+ "&gt;&#32;+}\r\n"
+ "&gt;&#32;+\r\n"
+ "&gt;&#32;+return&#32;0;\r\n"
+ "&gt;&#32;+}\r\n"
+ "&gt;&#32;+\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.