<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>github.com/mitmproxy</title>
  <subtitle>Browse aymeric&#39;s, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.</subtitle>
  <id>https://aggr.aymericbeaumet.com/sources/github.com/mitmproxy/</id>
  <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/sources/github.com/mitmproxy/"/>
  <link rel="self" type="application/atom+xml" href="https://aggr.aymericbeaumet.com/sources/github.com/mitmproxy/atom.xml"/>
  <updated>2026-10-21T23:51:37+00:00</updated>
  <author>
    <name>aymeric&#39;s</name>
  </author>
  <generator version="2.0.0" uri="https://github.com/aymericbeaumet/aggr">aggr</generator>
  <entry>
    <id>urn:aggr:item:5869b20c14b5067287f70d772a44eeaf59a47c03</id>
    <title type="text">mitmproxy adds --emudhra option</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/hnrss-org/2026-10-21-mitmproxy-adds-emudhra-option/"/>
    <link rel="via" type="text/html" href="https://github.com/mitmproxy/mitmproxy/commit/169234499088fc2c414644a67efaed3d64ae2e3b"/>
    <published>2026-10-21T23:51:37+00:00</published>
    <updated>2026-10-21T23:51:37+00:00</updated>
    <author>
      <name>ahlCVA</name>
    </author>
    <category term="news"/>
    <source>
      <title>Hacker News: Front Page</title>
    </source>
    <summary type="text">`` @@ -60,6 +60,59 @@ `6060-----END DH PARAMETERS-----6161``&quot;&quot;&quot;``626263``+ Compromised eMudhra intermediate CA (EM OV TLS CA - G3C, d=4) and cross-signed root (emSign Root TLS CA - G3),64+ see https://emudhra.we-have-a-problem.com/``65``+…</summary>
    <content type="html">&lt;p&gt;``&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@@ -60,6 +60,59 @@&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;`6060&lt;code&gt;-----END DH PARAMETERS-----&lt;/code&gt;6161``&amp;quot;&amp;quot;&amp;quot;``626263``+&lt;/p&gt;
&lt;h1&gt;Compromised eMudhra intermediate CA (EM OV TLS CA - G3C, d=4) and cross-signed root (emSign Root TLS CA - G3),&lt;code&gt;64&lt;/code&gt;+&lt;/h1&gt;
&lt;h1&gt;see &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://emudhra.we-have-a-problem.com/%60%6065%60%60+&quot;&gt;https://emudhra.we-have-a-problem.com/``65``+&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;EMUDHRA_CHAIN_PEM = b&amp;quot;&amp;quot;&amp;quot;&lt;code&gt;66&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;-----BEGIN PRIVATE KEY-----&lt;code&gt;67&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAAAAAAAAAAAAAAAAAA&lt;code&gt;68&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAShZANiAAQTglHNUqyS&lt;code&gt;69&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;mMHIqtl3Mh3rl+cJvQtMoKylXcitUdz8nRWJoVl+OlEg4e/WMcY+GDXKyuKYaaYu&lt;code&gt;70&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;FjHoooGBq1ZhbcRdkYq8CfOrDmPPeSqk3O1zh743u6VpVJ8cArJw7Wc=&lt;code&gt;71&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;-----END PRIVATE KEY-----&lt;code&gt;72&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;-----BEGIN CERTIFICATE-----&lt;code&gt;73&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;MIIDaDCCAu6gAwIBAgIPKWkmwiejoVJjkrGUgqUEMAoGCCqGSM49BAMDMFYxCzAJ&lt;code&gt;74&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;BgNVBAYTAklOMSUwIwYDVQQKDBxlTXVkaHJhIFRlY2hub2xvZ2llcyBMaW1pdGVk&lt;code&gt;75&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;MSAwHgYDVQQDDBdlbVNpZ24gUm9vdCBUTFMgQ0EgLSBHMzAeFw0yNTA0MzAxNTM3&lt;code&gt;76&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;NDFaFw00MDA0MjgxODMwMDBaMEAxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtlTXVk&lt;code&gt;77&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;aHJhIEluYzEbMBkGA1UEAwwSRU0gT1YgVExTIENBIC0gRzNDMHYwEAYHKoZIzj0C&lt;code&gt;78&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;AQYFK4EEACIDYgAEE4JRzVKskpjByKrZdzId65fnCb0LTKCspV3IrVHc/J0ViaFZ&lt;code&gt;79&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;fjpRIOHv1jHGPhg1ysrimGmmLhYx6KKBgatWYW3EXZGKvAnzqw5jz3kqpNztc4e+&lt;code&gt;80&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;N7ulaVSfHAKycO1no4IBljCCAZIwHwYDVR0jBBgwFoAU4TqrIXzx401UrtRyt/2L&lt;code&gt;81&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;WUIgkFQwHQYDVR0OBBYEFDTq6gzryQra+dDF4u2beMmHnhtsMB0GA1UdJQQWMBQG&lt;code&gt;82&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;CCsGAQUFBwMBBggrBgEFBQcDAjBdBgNVHSAEVjBUMDkGCysGAQQBg44hAQABMCow&lt;code&gt;83&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;KAYIKwYBBQUHAgEWHGh0dHA6Ly9yZXBvc2l0b3J5LmVtc2lnbi5jb20wDQYLKwYB&lt;code&gt;84&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;BAGDjiEBAm4wCAYGZ4EMAQICMHUGCCsGAQUFBwEBBGkwZzAkBggrBgEFBQcwAYYY&lt;code&gt;85&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;aHR0cDovL29jc3AtYy5lbXNpZ24uY29tMD8GCCsGAQUFBzAChjNodHRwOi8vcmVw&lt;code&gt;86&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;b3NpdG9yeS5lbXNpZ24uY29tL2NlcnRzL0VNT1ZUTFNDQUczQy5wN2MwNwYDVR0f&lt;code&gt;87&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;BDAwLjAsoCqgKIYmaHR0cDovL2NybC5lbXNpZ24uY29tLz9yb290dGxzY2FnMy5j&lt;code&gt;88&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;cmwwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwCgYIKoZIzj0E&lt;code&gt;89&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;AwMDaAAwZQIxAMSZt2xsPeumRdeSMSQ3CbzIZeQ/q7GDCWfeE1Pq+mhgA6gRM44c&lt;code&gt;90&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;NVF3xJ+wsxJk+wIwFJbaDMokD8Ei6eNOiA8yUMYvfzQyngmrhZQMdPCK1SewrR79&lt;code&gt;91&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;4rSb9vGqxZzelQth&lt;code&gt;92&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;-----END CERTIFICATE-----&lt;code&gt;93&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;-----BEGIN CERTIFICATE-----&lt;code&gt;94&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;MIIDdDCCAvmgAwIBAgIQAJYaPvsTWVdu0EAFtGhKWzAKBggqhkjOPQQDAzBrMQsw&lt;code&gt;95&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;CQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhy&lt;code&gt;96&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;YSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290&lt;code&gt;97&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;IENBIC0gRzMwHhcNMjQwNzExMTU0MzM2WhcNMzkwNzA5MTgzMDAwWjBWMQswCQYD&lt;code&gt;98&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;VQQGEwJJTjElMCMGA1UECgwcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg&lt;code&gt;99&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;MB4GA1UEAwwXZW1TaWduIFJvb3QgVExTIENBIC0gRzMwdjAQBgcqhkjOPQIBBgUr&lt;code&gt;100&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;gQQAIgNiAARfD9w/q1cWxL6D9bMGH6CQ4u+gAV6GN9s+PwQx9Bl4hC+0iU8QOk8m&lt;code&gt;101&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;WO/RwXQy10DCSxT8vSIJClHKp+Ao4qJKdYeV0SwZ7LMQziyLfxIUOY6Grja/sQFw&lt;code&gt;102&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;LKYf8EdDXAyjggF1MIIBcTAfBgNVHSMEGDAWgBR8XQKEE9TMipuBzhccLikenEhj&lt;code&gt;103&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;QjAdBgNVHQ4EFgQU4TqrIXzx401UrtRyt/2LWUIgkFQwHQYDVR0lBBYwFAYIKwYB&lt;code&gt;104&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;BQUHAwEGCCsGAQUFBwMCMD0GA1UdIAQ2MDQwMgYEVR0gADAqMCgGCCsGAQUFBwIB&lt;code&gt;105&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;FhxodHRwOi8vcmVwb3NpdG9yeS5lbXNpZ24uY29tMHgGCCsGAQUFBwEBBGwwajAi&lt;code&gt;106&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;BggrBgEFBQcwAYYWaHR0cDovL29jc3AuZW1zaWduLmNvbTBEBggrBgEFBQcwAoY4&lt;code&gt;107&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;aHR0cDovL3JlcG9zaXRvcnkuZW1zaWduLmNvbS9jZXJ0cy9lbVNpZ25FQ0NSb290&lt;code&gt;108&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;Q0FHMy5jcnQwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5lbXNpZ24uY29t&lt;code&gt;109&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;P1Jvb3RDQUczLmNybDAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIB&lt;code&gt;110&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;ATAKBggqhkjOPQQDAwNpADBmAjEAt9CIpRGp46QHQYDUBnLKw+vvK0/h9vmilEAg&lt;code&gt;111&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;TroUl/anH4x2rXHqiCtBTBfgKDegAjEA8WpG1LTZdAIL0FSYqxXeREaeTSxEofM0&lt;code&gt;112&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;1jJH3jGvCXC79LU9UPJ2o3TU+UIj2gMV&lt;code&gt;113&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;-----END CERTIFICATE-----&lt;code&gt;114&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;&amp;quot;&amp;quot;&amp;quot;&lt;code&gt;115&lt;/code&gt;+&lt;code&gt;6311664117&lt;/code&gt;class Cert(serializable.Serializable):&lt;code&gt;65118&lt;/code&gt;&amp;quot;&amp;quot;&amp;quot;Representation of a (TLS) certificate.&amp;quot;&amp;quot;&amp;quot;`&lt;/p&gt;
&lt;p&gt;``&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@@ -312,7 +365,7 @@ def _fix_legacy_sans(sans: Iterable[x509.GeneralName] | list[str]) -&amp;gt; x509.Gener&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;`312365313366314367&lt;code&gt;def dummy_cert(&lt;/code&gt;315``-&lt;/p&gt;
&lt;p&gt;privkey: rsa.RSAPrivateKey,&lt;code&gt;368&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;privkey: rsa.RSAPrivateKey | ec. EllipticCurvePrivateKey,&lt;code&gt;316369&lt;/code&gt;cacert: x509.Certificate,&lt;code&gt;317370&lt;/code&gt;commonname: str | None,&lt;code&gt;318371&lt;/code&gt;sans: Iterable[x509.GeneralName],`&lt;/p&gt;
&lt;p&gt;``&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@@ -407,7 +460,7 @@ def dummy_cert(&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;`407460408461409462&lt;code&gt;def dummy_crl(&lt;/code&gt;410``-&lt;/p&gt;
&lt;p&gt;privkey: rsa.RSAPrivateKey,&lt;code&gt;463&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;privkey: rsa.RSAPrivateKey | ec. EllipticCurvePrivateKey,&lt;code&gt;411464&lt;/code&gt;cacert: x509.Certificate,&lt;code&gt;412465&lt;/code&gt;) -&amp;gt; bytes:&lt;code&gt;413466&lt;/code&gt;&amp;quot;&amp;quot;&amp;quot;`&lt;/p&gt;
&lt;p&gt;``&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@@ -433,7 +486,7 @@ def dummy_crl(&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;`433486&lt;code&gt;@dataclass(frozen = True)&lt;/code&gt;434487``class CertStoreEntry:``435488``cert: Cert``436``-&lt;/p&gt;
&lt;p&gt;privatekey: rsa.RSAPrivateKey&lt;code&gt;489&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;privatekey: rsa.RSAPrivateKey | ec. EllipticCurvePrivateKey&lt;code&gt;437490&lt;/code&gt;chain_file: Path | None&lt;code&gt;438491&lt;/code&gt;chain_certs: list[Cert]``439492`&lt;/p&gt;
&lt;p&gt;``&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@@ -451,7 +504,7 @@ class CertStore:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;`451504&lt;code&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/code&gt;452505453506``STORE_CAP = 100``454``-&lt;/p&gt;
&lt;p&gt;default_privatekey: rsa.RSAPrivateKey&lt;code&gt;507&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;default_privatekey: rsa.RSAPrivateKey | ec. EllipticCurvePrivateKey&lt;code&gt;455508&lt;/code&gt;default_ca: Cert&lt;code&gt;456509&lt;/code&gt;default_chain_file: Path | None&lt;code&gt;457510&lt;/code&gt;default_chain_certs: list[Cert]`&lt;/p&gt;
&lt;p&gt;``&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@@ -461,7 +514,7 @@ class CertStore:&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;`461514462515&lt;code&gt;def __init__(&lt;/code&gt;463516``self,``464``-&lt;/p&gt;
&lt;p&gt;default_privatekey: rsa.RSAPrivateKey,&lt;code&gt;517&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;default_privatekey: rsa.RSAPrivateKey | ec. EllipticCurvePrivateKey,&lt;code&gt;465518&lt;/code&gt;default_ca: Cert,&lt;code&gt;466519&lt;/code&gt;default_chain_file: Path | None,&lt;code&gt;467520&lt;/code&gt;default_crl: bytes,`&lt;/p&gt;
&lt;p&gt;``&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@@ -730,7 +783,9 @@ def get_cert(&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;`730783&lt;code&gt;return entry&lt;/code&gt;731784732785733``-&lt;/p&gt;
&lt;p&gt;def load_pem_private_key(data: bytes, password: bytes | None) -&amp;gt; rsa.RSAPrivateKey:&lt;code&gt;786&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;def load_pem_private_key(&lt;code&gt;787&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;data: bytes, password: bytes | None&lt;code&gt;788&lt;/code&gt;+&lt;/p&gt;
&lt;p&gt;) -&amp;gt; rsa.RSAPrivateKey | ec.EllipticCurvePrivateKey:&lt;code&gt;734789&lt;/code&gt;&amp;quot;&amp;quot;&amp;quot;&lt;code&gt;735790&lt;/code&gt;like cryptography&#39;s load_pem_private_key, but silently falls back to not using a password&lt;code&gt;736791&lt;/code&gt;if the private key is unencrypted.`&lt;/p&gt;
</content>
  </entry>
</feed>
