Stop setting X509_V_FLAG_IGNORE_CRITICAL
authortb <tb@openbsd.org>
Tue, 4 Jan 2022 13:39:01 +0000 (13:39 +0000)
committertb <tb@openbsd.org>
Tue, 4 Jan 2022 13:39:01 +0000 (13:39 +0000)
commitcac2b49e171900b8dee5ab21517de4ed0b8d46bd
tree298be80b0712bf3e31cd83e2e647171383870d7c
parent9ccbb9b1bfb3a09ebfc6b3bafcba58958c9b88d1
Stop setting X509_V_FLAG_IGNORE_CRITICAL

Since the last bump, libcrypto knows about the RFC 3779 extensions.
Therefore, setting X509_V_FLAG_IGNORE_CRITICAL is no longer needed.
In fact, we want to error on critical extensions neither rpki-client
nor libcrypto knows about.

On older LibreSSL versions with the default verify callback, this
causes verification failures. Implement a verify callback that
intercepts X509_V_ERR_UNHANDLED_CRITICAL_EXTENSIONS and checks that
the cert doesn't contain critical extensions not supported by libcrypto
other than the expected RFC 3779 extensions.

Tested with LibreSSL 3.3 and 3.4 on OpenBSD 6.9 and 7.0-stable by me
and with LibreSSL 3.2 on Linux by claudio.

input/ok claudio
usr.sbin/rpki-client/parser.c