Check for duplicate X.509v3 extension OIDs
authortb <tb@openbsd.org>
Sun, 25 Jun 2023 13:52:27 +0000 (13:52 +0000)
committertb <tb@openbsd.org>
Sun, 25 Jun 2023 13:52:27 +0000 (13:52 +0000)
commita7f5be1e7fa305450c9df264a8350f39e4793333
tree9b3673c92ef8365e0ceeb7a37b47c7b0a339908b
parent05c892ee32b66778bad594d80ab6bb86e6972cc4
Check for duplicate X.509v3 extension OIDs

Per RFC 5280, 4.2: A certificate MUST NOT include more than one instance
of a particular extension.

This implements such a check in x509v3_cache_extensions() by sorting the
list of extensions and looking for duplicate neighbors. This sidesteps
complications from extensions we do not know about and keeps algorithmic
complexity reasonable. If the check fails, EXFLAG_INVALID is set on the
certificate, which means that the verifier will not validate it.

ok jsing
lib/libcrypto/x509/x509_purp.c