Add compliance checks for the X.509 version field
authorjob <job@openbsd.org>
Sun, 23 Apr 2023 21:31:16 +0000 (21:31 +0000)
committerjob <job@openbsd.org>
Sun, 23 Apr 2023 21:31:16 +0000 (21:31 +0000)
commit75cc5d0abf1f734c4d3011da63b223ea6dcb4a4c
treec1b0ad8601f3d3fa0f31f022a85bfd00e293ec6a
parenta3cd701e6e5f3719a4f464aecc0f437a5f4de7af
Add compliance checks for the X.509 version field

Check whether the X.509 version is in the range of valid version
values, and also checks whether the version is consistent with fields
new to those versions (such as X.509 v3 extensions).

X.690 section 11.5 states: "The encoding of a set value or a sequence
value shall not include an encoding for any component value which is
equal to its default value." However, enforcing version 1 (value 0) to
be absent reportedly caused some issues as recent as July 2020, so
accept version 1 even if it is explicitly encoded.

OK tb@ beck@
lib/libcrypto/asn1/x_x509.c
lib/libcrypto/x509/x509.h
lib/libcrypto/x509/x509_err.c