MatrixSSL 4.x changelog

Changes between 4.5.1 and 4.6.0 [December 2022]

* Fixed a integer overflow (CVE-2022-43974) The vulnerability was found by
  Robert Hörr and Alissar Ibrahim, Security Evaluators of the Telekom
  Security Evaluation Facility.

Changes between 4.5.0 and 4.5.1 [July 2022]

* Fix a usage of return value of psX509ParseCert when a flag is set

Changes between 4.4.0 and 4.5.0 [June 2022]

* Enabled RSA SHA512 signature algorithm in TLS1.2 certrequest.
* Enabled SHA512 in privRsaEncryptSignedElement.
* Fixed DTLS change cipher spec retransmit epoch.
* Compilation warning fixes.
* Memory leak fixes.

Changes between 4.3.0 and 4.4.0 [December 2021]

* Fixed a type mismatch in matrixCmsParseEnvelopedDataBuf.
* Increased the value of MAX_OID_BYTES to 48.
* Changes to the handling of the validity time in self generated certs.
* Fixed a possible vulnerability in parseAuthorityInfoAccess 
  discovered by Tavis Ormandy (Github issue #44). 
* Fixed a memory leak in getExplicitExtensions 
  discovered by Tavis Ormandy (Github issue #43). 
* Fixed vulnerability in SHA256 intialisation discovered by Marcel Maehren,
  Philipp Nieting, Sven Hebrok, Robert Merget, Juraj Somorovsky and
  Jörg Schwenk from Ruhr University Bochum and Paderborn-University.
* Fixes in cross certificate handling.
* Fixed a bug in pkcs1Pad.
* Fixed a bug in psX963KeyDerivation.
* Fixed the default behaviour when TLS version is not explicitly specified.
* Fixed compilation errors when using debugging.
* Memory leak fixes.

Changes between 4.2.2 and 4.3.0 [June 2020]

* Added a constant-time variant of eccMulmod, in response to the Minerva attack.
* Fixed a possible infinite loop in message parsing discovered by 
  Andreas Walz (ivESK).
* Timing sidechannel mitigation (Github issue #23).
* Change hard coded values to enums in matrixSslLoadKeys (Github issue #35).
* Disabled TLS 1.3 draft versions by default.
* Fixes TLS 1.2 session ticket based resumption.
* May only enable either PS_PUBKEY_OPTIMIZE_FOR_FASTER_SPEED or
  PS_PUBKEY_OPTIMIZE_FOR_SMALLER_RAM (Github issue #37). 
* Channel Bindings for TLS (only for TLS 1.2 and below), new APIs added
    - matrixSslGetFinished
    - matrixSslGetPeerFinished
    - matrixSslGetTlsUniqueChannelBindings
* Added API for accessing MatrixSSL structures without direct access
  to structure members. Use of this API will slightly enlarge the
  MatrixSSL binary but will enable building software that is not
  dependent on exact binary layout of structures such as ssl_t.
* Fixes the bug when NULL keydata was used in sslLoadKeyPair() function.
* Other bug fixes.

Changes between 4.2.1 and 4.2.2 [August 2019]

This version fixes a few security issues related to DTLS and handshake message length. It also defines the size of psBool_t to be equivalent to bool on both x86 and ARM platforms.

Changes between 4.2.0 and 4.2.1 [June 2019]

This version fixes an out of bounds read in ASN.1 handling found by Tyler Nighswander (ForAllSecure).

Changes between 4.1.0 and 4.2.0 [May 2019]

This version adds a compile-time option that allows TLS 1.3 only builds, adds new getter APIs and fixes several bugs.

Changes between 4.0.2 and 4.1.0 [April 2019]

Changes between 4.0.1 and 4.0.2 [February 2019]

This version fixes a critical vulnerability in RSA signature verification. A maliciously crafted certificate can be used to trigger a stack buffer overflow, allowing potential remote code execution attacks. The vulnerability only affects version 4.0.1 and the standard Matrix Crypto provider. Other providers, such as the FIPS crypto provider, are not affected by the bug. Thanks to Tavis Ormandy for reporting this.

Changes between 4.0.0 and 4.0.1 [November 2018]

This version improves the security of RSA PKCS #1.5 signature verification and adds better support for run-time security configuration.

Changes between 3.9.5 and 4.0.0 [August 2018]

This version adds support for RFC 8446 (TLS 1.3), new APIs for configuring session options as well as fixes to security vulnerabilities.