We have released LibreSSL 3.8.1, which will be arriving in the LibreSSL directory of your local OpenBSD mirror soon. This is a development release for the 3.8.x branch, so we appreciate early testing and feedback. It includes the following changes: * Portable changes - Applications bundled as part of the LibreSSL package internally, nc(1) and openssl(1), now are linked statically if static libraries are built. - Internal compatibility function symbols are no longer exported from libcrypto. Instead, the libcompat library is linked to libcrypto, libssl, and libtls separately. This increases size a little, but ensures that the libraries are not exporting symbols to programs unintentionally. - Selective removal of CET implementation on platforms where it is not supported (macOS). - Integrated four more tests. - Added Windows ARM64 architecture to tested platforms. - Removed Solaris 10 support, fixed Solaris 11. - libtls no longer links statically to libcrypto / libssl unless '--enable-libtls-only' is specified at configure time. - Improved Windows compatibility library, namely handling of files vs sockets, correcting an exception when operating on a closed socket. - CMake builds no longer hardcode '-O2' into the compiler flags, instead using flags from the CMake build type instead. - Set the CMake default build type to 'Release'. This can be overridden during configuration. - Fixed broken ASM support with MinGW builds. * Internal improvements - Fixed alignment handling in SHA-512. - Moved the verified_chain to the correct internal struct. - Improved checks for commonName in libtls. - Fixed error check for X509_get_ext_d2i() failure in libtls. - Improved BIGNUM internals and performance. - Significantly improved Montgomery multiplication performance. - Initial cleanup passes for SHA-256 internals. - Converted more libcrypto internals API using CBB and CBS. - Removed code guarded by #ifdef ZLIB. - Changed ASN1_item_sign_ctx() and ASN1_item_verify() to work with Ed25519 and fixed a few bugs in there. - Fixed various issues with EVP_PKEY_CTX_{new,dup}(). - Improved X.509 certificate version checks. - Cleaned up handling of elliptic curve cofactors. - Made BN_num_bits() independent of bn->top. - Rewrote and simplified bn_sqr(). - Removed EC_GROUP precomp machinery. - Ensure no X.509v3 extensions appear more than once in certificates. - Cleaned up various ECDH, ECDSA and EC internals. - Replaced ASN1_bn_print with a cleaner internal implementation. - Simplified ASN1_item_sign_ctx(). - Rewrote OBJ_find_sigid_algs() and OBJ_find_sigid_by_algs(). - Various improvements in the 'simple' EC code. - Fix OPENSSL_cpuid_setup() invocations on arm/aarch64. - Reduced the dependency of hash implementations on many layers of macros. This results in significant speedups since modern compilers are now less confused. - Significantly simplified the BN_BLINDING internals used in RSA. * New features * Compatibility changes - X509_NAME_get_text_by_{NID,OBJ}() now only succeed if they contain valid UTF-8 without embedded NUL. - Moved libtls from ECDSA_METHOD to EC_KEY_METHOD. - Removed support for ECDH_METHOD and ECDSA_METHOD. - BN_is_prime{,_fasttest}_ex() refuse to check numbers larger than 32 kbits for primality. This mitigates various DoS vectors. - Comp was removed. - Dynamic loading of conf modules is no longer supported. - DSO was removed and OPENSSL_NO_DSO is defined. - ENGINE support was removed and OPENSSL_NO_ENGINE is set. In spite of this, some stub functions are provided to avoid patching some applications that do not honor OPENSSL_NO_ENGINE. - It is no longer possible to make the library use your own error stack or ex_data implementation. * Bug fixes - Fixed aliasing issue in BN_mod_inverse(). - Made CRYPTO_get_ex_new_index() not return 0 to allow applications to use *_{get,set}_app_data() and *_{get,set}_ex_data() alongside each other. - Made EVP_PKEY_set1_hkdf_key() fail on a NULL key. - Plugged leaks in BIO_chain_dup(). - Fixed numerous leaks and other minor bugs in RSA, DH, DSA and EC ASN.1 methods. Unified the coding style. - On socket errors in the poll loop, netcat could issue system calls on invalidated file descriptors. * Documentation improvements - Made it very explicit that the verify callback should not be used. - Called out that the CRL lastUpdate is standardized as thisUpdate. * Testing and Proactive Security - As always, new test coverage is added as bugs are fixed and subsystems are cleaned up. * Security fixes - Disabled TLSv1.0 and TLSv1.1 in libssl so that they may no longer be selected for use. The LibreSSL project continues improvement of the codebase to reflect modern, safe programming practices. We welcome feedback and improvements from the broader community. Thanks to all of the contributors who helped make this release possible.