Eliminate the timegm(3) dependency in libcrypto
authortb <tb@openbsd.org>
Mon, 13 Nov 2023 10:33:00 +0000 (10:33 +0000)
committertb <tb@openbsd.org>
Mon, 13 Nov 2023 10:33:00 +0000 (10:33 +0000)
commit91b40737dd8713c4b24d6504eacee31f6b57e4c1
tree59f6a046f3de5c5515f6fff52a8f1394b1505635
parentb38eec6c1578ecf76d0d6a63f1de49d6a51da126
Eliminate the timegm(3) dependency in libcrypto

timegm(3) is not available on some operating systems we support in
portable. We currently use musl's implementation, for which gcc-13
decided to emit warnings (which seem incorrect in general and are
irrelevant in this case anyway). Instead of patching this up and
diverge from upstream, we can avoid reports about compiler warnings
by simply not depending on this function.

Rework the caching of notBefore and notAfter by replacing timegm(3)
with asn1_time_tm_to_time_t(3). Also make this API properly error
checkable since at the time x509v3_cache_extensions(3) is called,
nothing is known about the cert, in particular not whether it isn't
malformed one way or the other.

suggested by and ok beck
lib/libcrypto/x509/x509_internal.h
lib/libcrypto/x509/x509_purp.c
lib/libcrypto/x509/x509_verify.c
lib/libcrypto/x509/x509_vfy.c