OpenSSL 4.0.0

OpenSSL 4.0.0 is a major feature release introducing Encrypted Client Hello (ECH), post-quantum cryptography support, and significant cleanup of legacy protocols like SSLv3.
OpenSSL 4.0.0 is a feature release adding significant new functionality
to OpenSSL.
This release incorporates the following potentially significant or incompatible
changes:
Removed extra leading '00:' when printing key data such as an RSA modulus
in hexadecimal format where the first (most significant) byte is >= 0x80. - Standardized the width of hexadecimal dumps to 24 bytes for signatures
(to stay within the 80 characters limit) and 16 bytes for everything else. - Lower bounds checks are now enforced when using
PKCS5_PBKDF2_HMAC
API
with FIPS provider. - Added AKID verification checks when
X509_V_FLAG_X509_STRICT
is set. - Augmented CRL verification process with several additional checks.
libcrypto
no longer cleans up globally allocated data viaatexit()
. -
BIO_snprintf()
now usessnprintf()
provided by libc instead of internal
implementation. -
OPENSSL_cleanup()
now runs in a global destructor, or not at all
by default. -
ASN1_STRING
has been made opaque. - Signatures of numerous API functions, including those that are related
to X509 processing, are changed to includeconst
qualifiers for argument
and return types, where suitable. - Deprecated
X509_cmp_time()
,X509_cmp_current_time()
,
andX509_cmp_timeframe()
in favor ofX509_check_certificate_times()
. - Removed support for the SSLv2 Client Hello.
Removed support for SSLv3. SSLv3 has been deprecated since 2015,
and OpenSSL had it disabled by default since version 1.1.0 (2016). - Removed support for engines. The
no-engine
build option
and theOPENSSL_NO_ENGINE
macro are always present. - Support of deprecated elliptic curves in TLS according to RFC 8422 was
disabled at compile-time by default. To enable it, use the
enable-tls-deprecated-ec
configuration option. - Support of explicit EC curves was disabled at compile-time by default.
To enable it, use theenable-ec_explicit_curves
configuration option. - Removed
c_rehash
script tool. Useopenssl rehash
instead. - Removed the deprecated
msie-hack
option from theopenssl ca
command. - Removed
BIO_f_reliable()
implementation without replacement.
It was broken since 3.0 release without any complaints. - Removed deprecated support for custom
EVP_CIPHER
,EVP_MD
,EVP_PKEY
,
andEVP_PKEY_ASN1
methods. - Removed deprecated fixed SSL/TLS version method functions.
Removed deprecated functions
ERR_get_state()
,ERR_remove_state()
andERR_remove_thread_state()
. TheERR_STATE
object is now always
opaque. - Dropped
darwin-i386{,-cc}
anddarwin-ppc{,64}{,-cc}
targets
from Configurations.
This release adds the following new features:
Support for Encrypted Client Hello (ECH, RFC 9849).
Seedoc/designs/ech-api.md
for details. - Support for RFC 8998, signature algorithm
sm2sig_sm3
, key exchange
groupcurveSM2
, and [tls-hybrid-sm2-mlkem] post-quantum group
curveSM2MLKEM768
. - cSHAKE function support as per SP 800-185.
"ML-DSA-MU" digest algorithm support.
Support for SNMP KDF and SRTP KDF.
FIPS self tests can now be deferred and run as needed when installing
the FIPS module with the-defer_tests
option of theopenssl fipsinstall
command. - Support for using either static or dynamic VC runtime linkage
on Windows. - Support for negotiated FFDHE key exchange in TLS 1.2 in accordance
with RFC 7919.
Source: Hacker News
















