Fix the legacy verifier callback behaviour for untrusted certs.
authorbeck <beck@openbsd.org>
Tue, 28 Jun 2022 07:56:34 +0000 (07:56 +0000)
committerbeck <beck@openbsd.org>
Tue, 28 Jun 2022 07:56:34 +0000 (07:56 +0000)
commitd8913d6a3cd5eee62791d2bf40ad31a6cb5d7d5e
treebad3e43ed04691aac4a48412e822eb06b9ff3c94
parent88576cf028cf22b46a86aceb26ee64a66c6e7a3c
Fix the legacy verifier callback behaviour for untrusted certs.

The verifier callback is used by mutt to do a form of certificate
pinning where the callback gets fired and depending on a
cert saved to a file will decide to accept an untrusted cert.

This corrects two problems that affected this. The callback was not
getting the correct depth and chain for the error where mutt would
save the certificate in the first place, and then the callback was not
getting fired to allow it to override the failing certificate
validation.

thanks to Avon Robertson <avon.r@xtra.co.nz> for the report and
sthen@ for analysis.

"The callback is not an API, it's a gordian knot - tb@"
ok jsing@
lib/libcrypto/x509/x509_verify.c
regress/lib/libcrypto/x509/Makefile
regress/lib/libcrypto/x509/callbackfailures.c [new file with mode: 0644]