<div dir="ltr"><div>Hi Ben,</div><div><br></div><div>Yes, a reply after a few weeks is still very useful, thanks!</div><div><br></div><div>You are right about the point that every library has an "expired" code, though I start to see other differences. The number of errors itself wildly differ – OpenSSL has over 75 of certificate-related errors, while GnuTLS has only about 18 and Botan about 40.</div><div>Hearing developer opinions helps me do it in a way useful for you. I understand big, replied-on, open-source projects are sensitive about changes. Though I believe at least updating the documentation should be harmless (the details on the error message in OpenSSL docs sometimes just restate the message). I'll open a separate issue/WiP pull request when we have specific propositions.</div><div><br></div><div>PS: @Kurt, thanks for the pointer to Frankencert, it did not cross my radar yet.</div><div><br></div><div>Martin.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 26 Mar 2020 at 10:28, Kurt Roeckx <<a href="mailto:kurt@roeckx.be">kurt@roeckx.be</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, Mar 25, 2020 at 10:21:36PM -0700, Benjamin Kaduk wrote:<br>
> I tihnk it's an interesting idea.  To me, perhaps the most valuable part<br>
> would be to accumulate a corpus of certificates/chains that are malformed<br>
> or fail to validate due to a wide variety of errors, almost akin to a<br>
> fuzzing corpus.  I'd also be curious (though I'm not entirely sure how<br>
> large a practical impact it would have) to perform a clustering analysis<br>
> across different X.509 implementations and see if different implementations<br>
> produce different distributions of errors.  (That is, we might expect each<br>
> implementation to have an error for "not valid yet", "expired", "missing<br>
> required ASN.1 field", etc.; each implementation will have a different<br>
> error string, of course, but if we group all certificates that produce the<br>
> same error with the same implementation together, we have a bunch of<br>
> different clusters.  Repeating the clustering across all implementations<br>
> lets us compare the different distributions, and examine certificates that<br>
> end up in a different cluster in different implementations.)<br>
<br>
That's what frankencert did.<br>
<br>
<br>
Kurt<br>
<br>
</blockquote></div></div>