Skip to content
CHANGES 512 KiB
Newer Older
 OpenSSL CHANGES
 Changes between 1.0.2g and 1.1.0  [xx XXX xxxx]

  *) Remove the no-aes, no-hmac, no-rsa, no-sha and no-md5 Configure options.
     All of these option have not worked for some while and are fundamental
     algorithms.
     [Matt Caswell]

  *) Make various cleanup routines no-ops and mark them as deprecated. Most
     global cleanup functions are no longer required because they are handled
     via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages).
     Explicitly de-initing can cause problems (e.g. where a library that uses
     OpenSSL de-inits, but an application is still using it). The affected
     functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(),
     EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(),
     RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and
     COMP_zlib_cleanup().
     [Matt Caswell]
  *) --strict-warnings no longer enables runtime debugging options
     such as REF_DEBUG. Instead, debug options are automatically
     enabled with '--debug' builds.
     [Andy Polyakov, Emilia Käsper]

  *) Made DH and DH_METHOD opaque. The structures for managing DH objects
     have been moved out of the public header files. New functions for managing
     these have been added.
     [Matt Caswell]

  *) Made RSA and RSA_METHOD opaque. The structures for managing RSA
     objects have been moved out of the public header files. New
     functions for managing these have been added.
     [Richard Levitte]

  *) Made DSA and DSA_METHOD opaque. The structures for managing DSA objects
     have been moved out of the public header files. New functions for managing
     these have been added.
     [Matt Caswell]

  *) Made BIO and BIO_METHOD opaque. The structures for managing BIOs have been
     moved out of the public header files. New functions for managing these
     have been added.
     [Matt Caswell]

  *) Removed no-rijndael as a config option. Rijndael is an old name for AES.
     [Matt Caswell]
  *) Removed the mk1mf build scripts.
     [Richard Levitte]

  *) Headers are now wrapped, if necessary, with OPENSSL_NO_xxx, so
     it is always safe to #include a header now.
     [Rich Salz]

  *) Removed the aged BC-32 config and all its supporting scripts
     [Richard Levitte]

Rich Salz's avatar
Rich Salz committed
  *) Removed support for Ultrix, Netware, and OS/2.
Rich Salz's avatar
Rich Salz committed
     [Rich Salz]

Emilia Kasper's avatar
Emilia Kasper committed
  *) Add support for HKDF.
     [Alessandro Ghedini]

Kurt Roeckx's avatar
Kurt Roeckx committed
  *) Add support for blake2b and blake2s
     [Bill Cox]

Matt Caswell's avatar
Matt Caswell committed
  *) Added support for "pipelining". Ciphers that have the
     EVP_CIPH_FLAG_PIPELINE flag set have a capability to process multiple
     encryptions/decryptions simultaneously. There are currently no built-in
     ciphers with this property but the expectation is that engines will be able
     to offer it to significantly improve throughput. Support has been extended
     into libssl so that multiple records for a single connection can be
     processed in one go (for >=TLS 1.1).
     [Matt Caswell]

  *) Added the AFALG engine. This is an async capable engine which is able to
     offload work to the Linux kernel. In this initial version it only supports
     AES128-CBC. The kernel must be version 4.1.0 or greater.
     [Catriona Lucey]

  *) OpenSSL now uses a new threading API. It is no longer necessary to
     set locking callbacks to use OpenSSL in a multi-threaded environment. There
     are two supported threading models: pthreads and windows threads. It is
     also possible to configure OpenSSL at compile time for "no-threads". The
     old threading API should no longer be used. The functions have been
     replaced with "no-op" compatibility macros.
     [Alessandro Ghedini, Matt Caswell]

Todd Short's avatar
Todd Short committed
  *) Modify behavior of ALPN to invoke callback after SNI/servername
     callback, such that updates to the SSL_CTX affect ALPN.
     [Todd Short]

Todd Short's avatar
Todd Short committed
  *) Add SSL_CIPHER queries for authentication and key-exchange.
     [Todd Short]

  *) Changes to the DEFAULT cipherlist:
       - Prefer (EC)DHE handshakes over plain RSA.
       - Prefer AEAD ciphers over legacy ciphers.
       - Prefer ECDSA over RSA when both certificates are available.
       - Prefer TLSv1.2 ciphers/PRF.
       - Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the
         default cipherlist.
     [Emilia Käsper]

Rich Salz's avatar
Rich Salz committed
  *) Change the ECC default curve list to be this, in order: x25519,
     secp256r1, secp521r1, secp384r1.
     [Rich Salz]

  *) RC4 based libssl ciphersuites are now classed as "weak" ciphers and are
     disabled by default. They can be re-enabled using the
     enable-weak-ssl-ciphers option to Configure.
     [Matt Caswell]

  *) If the server has ALPN configured, but supports no protocols that the
     client advertises, send a fatal "no_application_protocol" alert.
     This behaviour is SHALL in RFC 7301, though it isn't universally
     implemented by other servers.
     [Emilia Käsper]

  *) Add X25519 support.
     Integrate support for X25519 into EC library. This includes support
     for public and private key encoding using the format documented in
     draft-josefsson-pkix-newcurves-01: specifically X25519 uses the
     OID from that draft, encodes public keys using little endian
     format in the ECPoint structure and private keys using
     little endian form in the privateKey field of the ECPrivateKey
     structure. TLS support complies with draft-ietf-tls-rfc4492bis-06
     and uses X25519(29).

     Note: the current version supports key generation, public and
     private key encoding and ECDH key agreement using the EC API.
     Low level point operations such as EC_POINT_add(), EC_POINT_mul()
     are NOT supported.
     [Steve Henson]

  *) Deprecate SRP_VBASE_get_by_user.
     SRP_VBASE_get_by_user had inconsistent memory management behaviour.
     In order to fix an unavoidable memory leak (CVE-2016-0798),
     SRP_VBASE_get_by_user was changed to ignore the "fake user" SRP
     seed, even if the seed is configured.

     Users should use SRP_VBASE_get1_by_user instead. Note that in
     SRP_VBASE_get1_by_user, caller must free the returned value. Note
     also that even though configuring the SRP seed attempts to hide
     invalid usernames by continuing the handshake with fake
     credentials, this behaviour is not constant time and no strong
     guarantees are made that the handshake is indistinguishable from
     that of a valid user.
     [Emilia Käsper]

  *) Configuration change; it's now possible to build dynamic engines
     without having to build shared libraries and vice versa.  This
     only applies to the engines in engines/, those in crypto/engine/
     will always be built into libcrypto (i.e. "static").

     Building dynamic engines is enabled by default; to disable, use
     the configuration option "disable-dynamic-engine".

Richard Levitte's avatar
Richard Levitte committed
     The only requirements for building dynamic engines are the
     presence of the DSO module and building with position independent
     code, so they will also automatically be disabled if configuring
Richard Levitte's avatar
Richard Levitte committed
     with "disable-dso" or "disable-pic".

     The macros OPENSSL_NO_STATIC_ENGINE and OPENSSL_NO_DYNAMIC_ENGINE
     are also taken away from openssl/opensslconf.h, as they are
     irrelevant.
     [Richard Levitte]

  *) Configuration change; if there is a known flag to compile
     position independent code, it will always be applied on the
     libcrypto and libssl object files, and never on the application
     object files.  This means other libraries that use routines from
     libcrypto / libssl can be made into shared libraries regardless
     of how OpenSSL was configured.

     If this isn't desirable, the configuration options "disable-pic"
     or "no-pic" can be used to disable the use of PIC.  This will
     also disable building shared libraries and dynamic engines.
Rich Salz's avatar
Rich Salz committed
  *) Removed JPAKE code.  It was experimental and has no wide use.
     [Rich Salz]

  *) The INSTALL_PREFIX Makefile variable has been renamed to
     DESTDIR.  That makes for less confusion on what this variable
     is for.  Also, the configuration option --install_prefix is
     removed.
     [Richard Levitte]

  *) Heartbeat for TLS has been removed and is disabled by default
     for DTLS; configure with enable-heartbeats.  Code that uses the
     old #define's might need to be updated.
     [Emilia Käsper, Rich Salz]

  *) Rename REF_CHECK to REF_DEBUG.
     [Rich Salz]

Loading full blame...