OpenBSD Journal

LibreSSL 4.1.0 released

Contributed by rueda on from the improvements SSLiding in dept.

LibreSSL version 4.1.0 has been released.

This is the version found in (the recently released) OpenBSD 7.7

The release notes read,

We have released LibreSSL 4.1.0, which will be arriving in the
LibreSSL directory of your local OpenBSD mirror soon. This is the
first stable release for the 4.1.x branch, also available with OpenBSD 7.7

It includes the following changes from LibreSSL 4.0.0:

    * Portable changes
      - Added initial experimental support for loongarch64.
      - Fixed compilation for mips32 and reenable CI.
      - Fixed CMake builds on FreeBSD.
      - Fixed the --prefix option for cmake --install.
      - Fixed tests for MinGW due to missing sh(1).
    * Internal improvements
      - Cleaned up the error implementation.
      - Many bug fixes and simplifications in the EC ASN.1 code.
      - Corrected DER encoding for EC keys and parameters.
      - Polished EC_POINT_{oct2point,point2oct}() internals.
      - Rewrote the wNAF code for fast ECDSA verification.
      - Improved the code setting compressed coordinates for EC points.
      - Reworked CPU capabilities detection for amd64 and aarch64.
      - New SHA-1, SHA-256 and SHA-512 assembly implementations for amd64.
        These make use of the SHA-NI instruction if it is available and
        replace the perl-generated assembly optimized for museum pieces.
        These are not yet enabled in libressl-portable.
      - New SHA-256 and SHA-512 assembly implementations for aarch64
        making use of the ARM Cryptographic Extension (CE). Not yet
        enabled in libressl-portable.
      - New simplified, readable MD5 implementation for amd64.
      - Rewrote BN_bn2binpad() and its lebin siblings.
      - The BIGNUMs in EC_GROUP and EC_POINT are now heap allocated.
      - Rewrote TS_ASN1_INTEGER_print_bio().
      - Improved bit counter handling in MD5.
      - Simplified and cleaned up the BN_RECP_CTX internals.
      - Improved SM4 to match other symmetric ciphers more closely.
      - Rewrote X509_NAME_oneline() and X509_NAME_print() using CBS/CBB.
      - CRLs are now cached in the issuer cache like certificates.
      - Replaced combinations of BN_MONT_CTX_new/set with an internal
        BN_MONT_CTX_create().
      - Replaced BN_bn2hex() reimplementation in openssl(1) ca with
        a proper API call.
      - Fixed integer overflows due to signed shift in obj_dat.c.
      - Improved some X509_VERIFY_PARAM internals and avoid an out of
        bounds read from public API.
      - Imported ML-KEM 768 and 1024 from BoringSSL (not yet public API).
          * Compatibility changes
      - Added an OPENSSL_INIT_NO_ATEXIT flag for OPENSSL_init_crypto().
        It has no effect since LibreSSL doesn't call atexit().
      - Elliptic curve parameters are only accepted if they encode a
        built-in curve.
      - EC_METHOD is no longer public and the API exposing it has been
        removed. This includes EC_GROUP_new(), EC_GFp_mont_method(),
        EC_GROUP_method_of() and EC_METHOD_get_field_type().
      - The precomputation stubs for EC_GROUP were removed.
      - The API setting Jacobian projective coordinates for a point was
        removed as were EC_POINTs_{mul,make_affine}().
      - All elliptic curves over fields with less than 224 bits and a
        few more were removed from the built-in curves. This includes
        all WTLS curves and P-192.
      - It is no longer necessary to set RSA_FLAG_SIGN_VER to use the
        sign and verify handlers set with RSA_meth_set_{sign,verify}.
      - Removed the -C option to generate "C code" from the openssl(1)
        dh, dhparam, dsaparam, ecparam, and x509 subcommands.
      - Removed #error in headers when OPENSSL_NO_* is defined.
      - CRYPTO_set_mem_functions() now matches OpenSSL 1.1 and
        CRYPTO_set_mem_ex_functions() was removed.
      - The tls_session_secret_cb_fn type now matches OpenSSL 1.1.
      - Unexport X509_NAME_print() and X509_OBJECT_up_ref_count().
      - const corrected UI_OpenSSL() and BN_MONT_CTX_copy().
      - Support OPENSSL_NO_FILENAMES.
      - Support SSL_OP_NO_RENEGOTIATION and SSL_OP_ALLOW_CLIENT_RENEGOTIATION.
      - Export PKCS12_key_gen_uni() again.
    * New features
      - libtls has a new tls_peer_cert_common_name() API call to retrieve
        the peer's common name without having to inspect the PEM.
    * Bug fixes
      - Plugged a leak in eckey_compute_pubkey().
      - Again allow the magic values -1, -2 and -3 for the salt length
        of an RSA-PSS key in the EVP_PKEY_CTX_ctrl_str() interface.
      - Fixed a few memory leaks in legacy code.
    * Documentation
      - The remaining undocumented public EVP API is now documented.
      - Reorganization of existing documentation for clarity and accuracy.
    * Testing and proactive security
      - Improved regress coverage of the EC code.

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.

Enjoy the new release!

If you have alrady upgraded to OpenBSD 7.7, you are already running this code.


Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]