diff options
Diffstat (limited to 'ChangeLog')
| -rw-r--r-- | ChangeLog | 249 |
1 files changed, 239 insertions, 10 deletions
| @@ -1,7 +1,7 @@ | |||
| 1 | Because this project is maintained both in the OpenBSD tree using CVS and in | 1 | Because this project is maintained both in the OpenBSD tree using CVS and in |
| 2 | Git, it can be confusing following all of the changes. | 2 | Git, it can be confusing following all of the changes. |
| 3 | 3 | ||
| 4 | Most of the libssl and libcrypto source code is is here in OpenBSD CVS: | 4 | Most of the libssl and libcrypto source code is here in OpenBSD CVS: |
| 5 | 5 | ||
| 6 | https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libssl/ | 6 | https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libssl/ |
| 7 | 7 | ||
| @@ -28,12 +28,181 @@ history is also available from Git. | |||
| 28 | 28 | ||
| 29 | LibreSSL Portable Release Notes: | 29 | LibreSSL Portable Release Notes: |
| 30 | 30 | ||
| 31 | 4.0.0 - In development | 31 | 4.3.0 - In development |
| 32 | |||
| 33 | * Internal improvements | ||
| 34 | - Remove the unused sequence number from X509_REVOKED. | ||
| 35 | - Replace a call to atoi() with strtonum() in nc(1) and replace a | ||
| 36 | misleading use of ntohs() with htons(). | ||
| 37 | * Compatibility changes | ||
| 38 | - Expose X509_VERIFY_PARAM_set_hostflags() as a public symbol. | ||
| 39 | - Provide SSL_SESSION_dup(). | ||
| 40 | * New features: support for MLKEM768_X25519 keyshare in TLS. | ||
| 41 | https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/ | ||
| 42 | * Bug fixes | ||
| 43 | - Ensure the group selected by a TLSv1.3 server for a | ||
| 44 | HelloRetryRequest is not one for which the client has | ||
| 45 | already sent a key share. | ||
| 46 | |||
| 47 | 4.2.0 - Stable release | ||
| 48 | |||
| 49 | * Portable changes | ||
| 50 | - Added explicit OpenBSD/ISC license to build system / scripts. | ||
| 51 | - Fixed compilation on more CPU targets by removing architecture-specific | ||
| 52 | definitions from header files. | ||
| 53 | - Fixed builds in deep paths by using relative paths for linking. | ||
| 54 | - Fixed Windows builds with Clang and CMake. | ||
| 55 | - Fixed Windows error handling accepting connections with nc. | ||
| 56 | - Fixed 32-bit ARM builds on Darwin. | ||
| 57 | * Internal improvements | ||
| 58 | - Cleaned up code implementing block cipher modes of operation. | ||
| 59 | Includes untangling a horrible #ifdef mess and removing a few | ||
| 60 | instances of undefined behavior. | ||
| 61 | - Removed assembly implementations of AES using bit slicing (BS-AES) | ||
| 62 | and vector permutation (VP-AES). | ||
| 63 | - Removed OPENSSL_SMALL_FOOTPRINT and OPENSSL_FIPSAPI. | ||
| 64 | - Implemented constant time EC field element operations to allow | ||
| 65 | elliptic curve operations without bignum arithmetic. | ||
| 66 | - Implemented an EC method using homogeneous projective coordinates. | ||
| 67 | This will allow exception-free elliptic curve arithmetic in | ||
| 68 | constant time in future releases. | ||
| 69 | - Started cleaning up the openssl speed implementation. | ||
| 70 | - The last SIGILL-based CPU capability detection was removed. | ||
| 71 | Instead, capabilities are now detected using a constructor on | ||
| 72 | library load, which improves the incomplete coverage by calls | ||
| 73 | to OPENSSL_init_crypto() on various entry points. | ||
| 74 | - Rework and simplify AES handling in EVP. In particular, AES-NI | ||
| 75 | is now handled in the AES internal code and no longer requires | ||
| 76 | the use of EVP. | ||
| 77 | - Added a public API for ML-KEM. This is not yet documented in a | ||
| 78 | manpage and may not be in its final form. This will be used to | ||
| 79 | support X25519MLKEM768 in libssl. | ||
| 80 | * Compatibility changes | ||
| 81 | - Removed the -msie_hack option from the openssl(1) ca subcommand. | ||
| 82 | - Removed parameters of the 239-bit prime curves from X9.62, H.5.2: | ||
| 83 | prime239v1, prime239v2, prime239v3. | ||
| 84 | - Increased default MAC salt length used by PKCS12_set_mac(3) to 16 | ||
| 85 | per recommendation of NIST SP 800-132. | ||
| 86 | - Encrypted PKCS#8 key files now use a default password-based key | ||
| 87 | derivation function that is acceptable in the present millenium. | ||
| 88 | - const corrected EVP_PKEY_get{0,1}_{DH,DSA,EC_KEY,RSA}(). | ||
| 89 | - X509_CRL_verify() now checks that the AlgorithmIdentifiers in the | ||
| 90 | signature and the tbsCertList are identical. | ||
| 91 | - Of the old *err() only PEMerr(), RSAerr(), and SSLerr() remain. | ||
| 92 | - Removed BIO_s_log(), X509_PKEY_{new,free}(), PEM_X509_INFO_read() | ||
| 93 | and PEM_X509_INFO_write_bio(). | ||
| 94 | - Re-expose the ASN.1 Boolean template items. | ||
| 95 | - opensslconf.h is now machine-independent. | ||
| 96 | * New features | ||
| 97 | - Allow specifying ALPN in nc(1) via -Talpn="http/1.1,http:/1.0". | ||
| 98 | * Bug fixes | ||
| 99 | - Avoid pointer arithmetic on NULL for memory BIOs. | ||
| 100 | - Fix leaks and use-after-frees in PKCS7 attribute handling. | ||
| 101 | - Ensure p and q in RSA private key have a minimum distance of | ||
| 102 | 2^(bits/2 - 100) as specified in NIST SP 800-56B Revision 2. | ||
| 103 | * Security fixes | ||
| 104 | - Fix out-of-bounds read and write, memory leaks and incorrect | ||
| 105 | error check for CMS enveloped data. | ||
| 106 | * Documentation | ||
| 107 | - Rewrote most of the EC documentation from scratch to be at least | ||
| 108 | somewhat accurate and intelligible. | ||
| 109 | - Updated documentation for SMIME_{read,write}* to match reality. | ||
| 110 | * Testing and proactive security | ||
| 111 | - Added a testing framework that will help deduplicating lots of | ||
| 112 | ad-hoc code in the regression tests. | ||
| 113 | - Converted the Wycheproof testing framework to use testvectors_v1. | ||
| 114 | This in combination with a few new tests significantly increases | ||
| 115 | regress coverage. | ||
| 116 | |||
| 117 | 4.1.0 - Stable release | ||
| 32 | 118 | ||
| 33 | * Portable changes | 119 | * Portable changes |
| 34 | - Added initial Emscripten support in CMake builds | 120 | - Added initial experimental support for loongarch64. |
| 121 | - Fixed compilation for mips32 and reenable CI. | ||
| 122 | - Fixed CMake builds on FreeBSD. | ||
| 123 | - Fixed the --prefix option for cmake --install. | ||
| 124 | - Fixed tests for MinGW due to missing sh(1). | ||
| 125 | * Internal improvements | ||
| 126 | - Cleaned up the error implementation. | ||
| 127 | - Many bug fixes and simplifications in the EC ASN.1 code. | ||
| 128 | - Corrected DER encoding for EC keys and parameters. | ||
| 129 | - Polished EC_POINT_{oct2point,point2oct}() internals. | ||
| 130 | - Rewrote the wNAF code for fast ECDSA verification. | ||
| 131 | - Improved the code setting compressed coordinates for EC points. | ||
| 132 | - Reworked CPU capabilities detection for amd64 and aarch64. | ||
| 133 | - New SHA-1, SHA-256 and SHA-512 assembly implementations for amd64. | ||
| 134 | These make use of the SHA-NI instruction if it is available and | ||
| 135 | replace the perl-generated assembly optimized for museum pieces. | ||
| 136 | These are not yet enabled in libressl-portable. | ||
| 137 | - New SHA-256 and SHA-512 assembly implementations for aarch64 | ||
| 138 | making use of the ARM Cryptographic Extension (CE). Not yet | ||
| 139 | enabled in libressl-portable. | ||
| 140 | - New simplified, readable MD5 implementation for amd64. | ||
| 141 | - Rewrote BN_bn2binpad() and its lebin siblings. | ||
| 142 | - The BIGNUMs in EC_GROUP and EC_POINT are now heap allocated. | ||
| 143 | - Rewrote TS_ASN1_INTEGER_print_bio(). | ||
| 144 | - Improved bit counter handling in MD5. | ||
| 145 | - Simplified and cleaned up the BN_RECP_CTX internals. | ||
| 146 | - Improved SM4 to match other symmetric ciphers more closely. | ||
| 147 | - Rewrote X509_NAME_oneline() and X509_NAME_print() using CBS/CBB. | ||
| 148 | - CRLs are now cached in the issuer cache like certificates. | ||
| 149 | - Replaced combinations of BN_MONT_CTX_new/set with an internal | ||
| 150 | BN_MONT_CTX_create(). | ||
| 151 | - Replaced BN_bn2hex() reimplementation in openssl(1) ca with | ||
| 152 | a proper API call. | ||
| 153 | - Fixed integer overflows due to signed shift in obj_dat.c. | ||
| 154 | - Improved some X509_VERIFY_PARAM internals and avoid an out of | ||
| 155 | bounds read from public API. | ||
| 156 | - Imported ML-KEM 768 and 1024 from BoringSSL (not yet public API). | ||
| 157 | * Compatibility changes | ||
| 158 | - Added an OPENSSL_INIT_NO_ATEXIT flag for OPENSSL_init_crypto(). | ||
| 159 | It has no effect since LibreSSL doesn't call atexit(). | ||
| 160 | - Elliptic curve parameters are only accepted if they encode a | ||
| 161 | built-in curve. | ||
| 162 | - EC_METHOD is no longer public and the API exposing it has been | ||
| 163 | removed. This includes EC_GROUP_new(), EC_GFp_mont_method(), | ||
| 164 | EC_GROUP_method_of() and EC_METHOD_get_field_type(). | ||
| 165 | - The precomputation stubs for EC_GROUP were removed. | ||
| 166 | - The API setting Jacobian projective coordinates for a point was | ||
| 167 | removed as were EC_POINTs_{mul,make_affine}(). | ||
| 168 | - All elliptic curves over fields with less than 224 bits and a | ||
| 169 | few more were removed from the built-in curves. This includes | ||
| 170 | all WTLS curves and P-192. | ||
| 171 | - It is no longer necessary to set RSA_FLAG_SIGN_VER to use the | ||
| 172 | sign and verify handlers set with RSA_meth_set_{sign,verify}. | ||
| 173 | - Removed the -C option to generate "C code" from the openssl(1) | ||
| 174 | dh, dhparam, dsaparam, ecparam, and x509 subcommands. | ||
| 175 | - Removed #error in headers when OPENSSL_NO_* is defined. | ||
| 176 | - CRYPTO_set_mem_functions() now matches OpenSSL 1.1 and | ||
| 177 | CRYPTO_set_mem_ex_functions() was removed. | ||
| 178 | - The tls_session_secret_cb_fn type now matches OpenSSL 1.1. | ||
| 179 | - Unexport X509_NAME_print() and X509_OBJECT_up_ref_count(). | ||
| 180 | - const corrected UI_OpenSSL() and BN_MONT_CTX_copy(). | ||
| 181 | - Support OPENSSL_NO_FILENAMES. | ||
| 182 | - Support SSL_OP_NO_RENEGOTIATION and SSL_OP_ALLOW_CLIENT_RENEGOTIATION. | ||
| 183 | - Export PKCS12_key_gen_uni() again. | ||
| 184 | * New features | ||
| 185 | - libtls has a new tls_peer_cert_common_name() API call to retrieve | ||
| 186 | the peer's common name without having to inspect the PEM. | ||
| 187 | * Bug fixes | ||
| 188 | - Plugged a leak in eckey_compute_pubkey(). | ||
| 189 | - Again allow the magic values -1, -2 and -3 for the salt length | ||
| 190 | of an RSA-PSS key in the EVP_PKEY_CTX_ctrl_str() interface. | ||
| 191 | - Fixed a few memory leaks in legacy code. | ||
| 192 | * Documentation | ||
| 193 | - The remaining undocumented public EVP API is now documented. | ||
| 194 | - Reorganization of existing documentation for clarity and accuracy. | ||
| 195 | * Testing and proactive security | ||
| 196 | - Improved regress coverage of the EC code. | ||
| 197 | |||
| 198 | 4.0.0 - Stable release | ||
| 199 | |||
| 200 | * Portable changes | ||
| 201 | - Added initial Emscripten support in CMake builds. | ||
| 35 | - Removed timegm() compatibility layer since all uses were replaced | 202 | - Removed timegm() compatibility layer since all uses were replaced |
| 36 | with OPENSSL_timegm(). Cleaned up the corresponding test harness. | 203 | with OPENSSL_timegm(). Cleaned up the corresponding test harness. |
| 204 | - The mips32 platform is no longer actively supported. | ||
| 205 | - Fixed Windows support for dates beyond 2038. | ||
| 37 | * Internal improvements | 206 | * Internal improvements |
| 38 | - Cleaned up parts of the conf directory. Simplified some logic, | 207 | - Cleaned up parts of the conf directory. Simplified some logic, |
| 39 | fixed memory leaks. | 208 | fixed memory leaks. |
| @@ -66,29 +235,68 @@ LibreSSL Portable Release Notes: | |||
| 66 | - Made most error string tables const. | 235 | - Made most error string tables const. |
| 67 | - Removed handling for SSLv2 client hello messages. | 236 | - Removed handling for SSLv2 client hello messages. |
| 68 | - Improvements in the openssl(1) speed app's signal handler. | 237 | - Improvements in the openssl(1) speed app's signal handler. |
| 69 | - Added support for TLS PRF in the EVP KDF API. | 238 | - Cleaned up various X509v3_* extension API. |
| 239 | - Unified the X.509v3 extension methods. | ||
| 240 | - Cleaned up cipher handling in SSL_SESSION. | ||
| 241 | - Removed get_cipher from SSL_METHOD. | ||
| 242 | - Rewrote CRYPTO_EX_DATA from scratch. The only intentional change of | ||
| 243 | behavior is that there is now a hard limit on the number of indexes | ||
| 244 | that can be allocated. | ||
| 245 | - Removed bogus connect() call from netcat. | ||
| 246 | - Uses of atoi() and strtol() in libcrypto were replaced with | ||
| 247 | strtonum(). | ||
| 248 | - Introduced crypto_arch.h which will contain the architecture | ||
| 249 | dependent code and defines rather than the public opensslconf.h. | ||
| 250 | - OPENSSL_cpu_caps() is now architecture independent. | ||
| 251 | - Reorganized the DES implementation to use fewer files and removed | ||
| 252 | optimizations for ancient processors and compilers. | ||
| 253 | * New features | ||
| 254 | - Added CRLfile option to the cms command of openssl(1) to specify | ||
| 255 | additional CRLs for use during verification. | ||
| 70 | * Documentation improvements | 256 | * Documentation improvements |
| 71 | - Removed documentation of no longer existing API. | 257 | - Removed documentation of no longer existing API. |
| 258 | - Unified the description of the obsolete ENGINE parameter that | ||
| 259 | needs to remain in many functions and should always be NULL. | ||
| 72 | * Testing and proactive security | 260 | * Testing and proactive security |
| 73 | - Switched the remaining tests to new certs. | 261 | - Switched the remaining tests to new certs. |
| 74 | * Compatibility changes | 262 | * Compatibility changes |
| 263 | - Protocol parsing in libtls was changed. The unsupported TLSv1.1 | ||
| 264 | and TLSv1.0 protocols are ignored and no longer enable or disable | ||
| 265 | TLSv1.2 in surprising ways. | ||
| 266 | - The dangerous EVP_PKEY*_check(3) family of functions was removed. | ||
| 267 | The openssl(1) pkey and pkeyparam commands no longer support the | ||
| 268 | -check and -pubcheck flags. | ||
| 75 | - The one-step hashing functions, MD4(), MD5(), RIPEMD160(), SHA1(), | 269 | - The one-step hashing functions, MD4(), MD5(), RIPEMD160(), SHA1(), |
| 76 | all SHA-2, and HMAC() no longer support returning a static buffer. | 270 | all SHA-2, and HMAC() no longer support returning a static buffer. |
| 77 | Callers must pass in a correctly sized buffer. | 271 | Callers must pass in a correctly sized buffer. |
| 272 | - Support for Whirlpool was removed. Applications still using this | ||
| 273 | should honor OPENSSL_NO_WHIRLPOOL. | ||
| 78 | - Removed workaround for F5 middle boxes. | 274 | - Removed workaround for F5 middle boxes. |
| 79 | - Removed the useless pem2.h, a public header that was added since | 275 | - Removed the useless pem2.h, a public header that was added since |
| 80 | it was too hard to add a prototype to one file. | 276 | it was too hard to add a single prototype to one file. |
| 277 | - Removed conf_api.h and the public API therein. | ||
| 278 | - Removed ssl2.h, ssl23.h and ui_compat.h. | ||
| 279 | - Numerous conf and attribute functions were removed. Some unused | ||
| 280 | types were removed, others were made opaque. | ||
| 281 | - Removed the deprecated HMAC_Init() function. | ||
| 282 | - Removed OPENSSL_load_builtin_modules(). | ||
| 283 | - Removed X509_REQ_{get,set}_extension_nids(). | ||
| 284 | - X509_check_trust() and was removed, X509_VAL was made opaque. | ||
| 81 | - Only specified versions can be set on certs, CRLs and CSRs. | 285 | - Only specified versions can be set on certs, CRLs and CSRs. |
| 82 | - Prepared X509_REQ_{get,set}_extension_nids() for removal. | ||
| 83 | - Removed unused PEM_USER and PEM_CTX types from pem.h. | 286 | - Removed unused PEM_USER and PEM_CTX types from pem.h. |
| 84 | - Removed typdefs for COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, | 287 | - Removed typdefs for COMP_CTX, COMP_METHOD, X509_CRL_METHOD, STORE, |
| 85 | STORE_METHOD, and SSL_AEAD_CTX. | 288 | STORE_METHOD, and SSL_AEAD_CTX. |
| 86 | - i2d_ASN1_OBJECT() now returns -1 on error like most other i2d_*. | 289 | - i2d_ASN1_OBJECT() now returns -1 on error like most other i2d_*. |
| 87 | - SPKAC support was removed from openssl(1) | 290 | - SPKAC support was removed from openssl(1). |
| 88 | - Added TLS1-PRF support to the EVP interface. | 291 | - Added TLS1-PRF support to the EVP interface. |
| 89 | - Cleaned up various X509v3_* extension API. | 292 | - Support for attributes in EVP_PKEYs was removed. |
| 90 | - Unified the X.509v3 extension methods. | 293 | - The X509at_* API is no longer public. |
| 91 | - Removed ssl2.h and ssl23.h. | 294 | - SSL_CTX_set1_cert_store() and SSL_CIPHER_get_handshake_digest() |
| 295 | were added to libssl. | ||
| 296 | - The completely broken UI_UTIL password API was removed. | ||
| 297 | - The OpenSSL pkcs12 command and PKCS12_create() no longer support | ||
| 298 | setting the Microsoft-specific Local Key Set and Cryptographic | ||
| 299 | Service Provider attributes. | ||
| 92 | * Bug fixes | 300 | * Bug fixes |
| 93 | - Made ASN1_TIME_set_string() and ASN1_TIME_set_string_X509() match | 301 | - Made ASN1_TIME_set_string() and ASN1_TIME_set_string_X509() match |
| 94 | their documentation. They always set an RFC 5280 conformant time. | 302 | their documentation. They always set an RFC 5280 conformant time. |
| @@ -115,6 +323,20 @@ LibreSSL Portable Release Notes: | |||
| 115 | ALPN callback. | 323 | ALPN callback. |
| 116 | - Avoid pushing a spurious error onto the error stack in | 324 | - Avoid pushing a spurious error onto the error stack in |
| 117 | ssl_sigalg_select(). | 325 | ssl_sigalg_select(). |
| 326 | - Made fatal alerts fatal in QUIC. | ||
| 327 | |||
| 328 | 3.9.2 - Stable release | ||
| 329 | |||
| 330 | * Bugfixes | ||
| 331 | - OpenBSD 7.5 errata 003. A missing bounds check could lead to a crash | ||
| 332 | due to dereferencing a zero-sized allocation. | ||
| 333 | |||
| 334 | 3.9.1 - Stable release | ||
| 335 | |||
| 336 | * Portable changes | ||
| 337 | - Updated tests with expiring certificates | ||
| 338 | - CET-related build fixes for Windows and macOS targets | ||
| 339 | - update libtls linker script to include libssl and libcrypto again | ||
| 118 | 340 | ||
| 119 | 3.9.0 - Development release | 341 | 3.9.0 - Development release |
| 120 | 342 | ||
| @@ -193,6 +415,13 @@ LibreSSL Portable Release Notes: | |||
| 193 | stack. | 415 | stack. |
| 194 | - Made in-place decryption work for EVP_chacha20_poly1305(). | 416 | - Made in-place decryption work for EVP_chacha20_poly1305(). |
| 195 | 417 | ||
| 418 | 3.8.4 - Stable release | ||
| 419 | |||
| 420 | * Portable changes | ||
| 421 | - Updated tests with expiring certificates | ||
| 422 | - CET-related build fixes for Windows and macOS targets | ||
| 423 | - update libtls linker script to include libssl and libcrypto again | ||
| 424 | |||
| 196 | 3.8.3 - Stable release | 425 | 3.8.3 - Stable release |
| 197 | 426 | ||
| 198 | * Portable changes | 427 | * Portable changes |
