Improving X.509 certificate validation errors

2020-03-05 Thread Martin Ukrop

I’m the lead of a university project investigating (and improving) the
usability of certificate validation errors. Our goal is to simplify the
ecosystem by consolidating the errors and their documentation in one place,
providing replicable example certificates for all validation errors and by
explaining better what the individual errors mean. The project is live at

Now we are reaching out to library developers and users (you) to ask for

Currently, we base the system on OpenSSL errors (as it’s the most common).
We have example certificates for 30+ OpenSSL errors and in-progress mapping
for corresponding errors error for OpenSSL, GnuTLS, Botan and MbedTLS.
In the future, we plan the possibility of web reorganization based on the
other libraries (currently, the web is organized by OpenSSL), adding the
error frequencies based on IP-wide scans and elaborating on the
consequences of individual errors.
Ultimately, we want to propose better (ideally user-tested) errors and
their documentation. (Just recently, we made a survey among 180 developers
regarding their error documentation preference with good reception).

As developers/users of TLS libraries, what do you think of the idea?
* Which part(s) do you find the most/least useful?
* Is there anything you see missing?
* What are your thoughts on unifying the error taxonomy? (a very long-term
goal, if at all possible)

During spring, we would like to start creating pull requests improving the
documentation and error messages in some of the libraries. Would you
welcome such contributions?

For transparency: My PhD is done at Masaryk University (Czech Republic) and
I’m partially supported by Red Hat Czech.

With regards,

Re: Deprecations

2020-03-05 Thread Salz, Rich
>Moreover, the deprecated commands print something to the effect of: "The 
>command dsa is deprecated. Use ‘pkey’ instead." when executed.

I hope it only does that
If (isatty(0) && isatty(1) && isatty(2)) {
BIO_printf(bio_errerr, “%s: This command is 
deprecated, use the \”%s\” command instead.\n”,
prog, “replacement”);

That is, only if “interactive and print to stderr