1*817466cbSJens Wiklandermbed TLS ChangeLog (Sorted per branch, date) 2*817466cbSJens Wiklander 3*817466cbSJens Wiklander= mbed TLS 2.6.1 branch released 2017-10-08 4*817466cbSJens Wiklander 5*817466cbSJens WiklanderBugfix 6*817466cbSJens Wiklander * Parse signature algorithm extension when renegotiating. Previously, 7*817466cbSJens Wiklander renegotiated handshakes would only accept signatures using SHA-1 8*817466cbSJens Wiklander regardless of the peer's preferences, or fail if SHA-1 was disabled. 9*817466cbSJens Wiklander 10*817466cbSJens Wiklander= mbed TLS 2.6.0 branch released 2017-08-10 11*817466cbSJens Wiklander 12*817466cbSJens WiklanderSecurity 13*817466cbSJens Wiklander * Fix authentication bypass in SSL/TLS: when authmode is set to optional, 14*817466cbSJens Wiklander mbedtls_ssl_get_verify_result() would incorrectly return 0 when the peer's 15*817466cbSJens Wiklander X.509 certificate chain had more than MBEDTLS_X509_MAX_INTERMEDIATE_CA 16*817466cbSJens Wiklander (default: 8) intermediates, even when it was not trusted. This could be 17*817466cbSJens Wiklander triggered remotely from either side. (With authmode set to 'required' 18*817466cbSJens Wiklander (the default), the handshake was correctly aborted). 19*817466cbSJens Wiklander * Reliably wipe sensitive data after use in the AES example applications 20*817466cbSJens Wiklander programs/aes/aescrypt2 and programs/aes/crypt_and_hash. 21*817466cbSJens Wiklander Found by Laurent Simon. 22*817466cbSJens Wiklander 23*817466cbSJens WiklanderFeatures 24*817466cbSJens Wiklander * Add the functions mbedtls_platform_setup() and mbedtls_platform_teardown() 25*817466cbSJens Wiklander and the context struct mbedtls_platform_context to perform 26*817466cbSJens Wiklander platform-specific setup and teardown operations. The macro 27*817466cbSJens Wiklander MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT allows the functions to be overridden 28*817466cbSJens Wiklander by the user in a platform_alt.h file. These new functions are required in 29*817466cbSJens Wiklander some embedded environments to provide a means of initialising underlying 30*817466cbSJens Wiklander cryptographic acceleration hardware. 31*817466cbSJens Wiklander 32*817466cbSJens WiklanderAPI Changes 33*817466cbSJens Wiklander * Reverted API/ABI breaking changes introduced in mbed TLS 2.5.1, to make the 34*817466cbSJens Wiklander API consistent with mbed TLS 2.5.0. Specifically removed the inline 35*817466cbSJens Wiklander qualifier from the functions mbedtls_aes_decrypt, mbedtls_aes_encrypt, 36*817466cbSJens Wiklander mbedtls_ssl_ciphersuite_uses_ec and mbedtls_ssl_ciphersuite_uses_psk. Found 37*817466cbSJens Wiklander by James Cowgill. #978 38*817466cbSJens Wiklander * Certificate verification functions now set flags to -1 in case the full 39*817466cbSJens Wiklander chain was not verified due to an internal error (including in the verify 40*817466cbSJens Wiklander callback) or chain length limitations. 41*817466cbSJens Wiklander * With authmode set to optional, the TLS handshake is now aborted if the 42*817466cbSJens Wiklander verification of the peer's certificate failed due to an overlong chain or 43*817466cbSJens Wiklander a fatal error in the verify callback. 44*817466cbSJens Wiklander 45*817466cbSJens WiklanderBugfix 46*817466cbSJens Wiklander * Add a check if iv_len is zero in GCM, and return an error if it is zero. 47*817466cbSJens Wiklander Reported by roberto. #716 48*817466cbSJens Wiklander * Replace preprocessor condition from #if defined(MBEDTLS_THREADING_PTHREAD) 49*817466cbSJens Wiklander to #if defined(MBEDTLS_THREADING_C) as the library cannot assume they will 50*817466cbSJens Wiklander always be implemented by pthread support. #696 51*817466cbSJens Wiklander * Fix a resource leak on Windows platforms in mbedtls_x509_crt_parse_path(), 52*817466cbSJens Wiklander in the case of an error. Found by redplait. #590 53*817466cbSJens Wiklander * Add MBEDTLS_MPI_CHK to check for error value of mbedtls_mpi_fill_random. 54*817466cbSJens Wiklander Reported and fix suggested by guidovranken. #740 55*817466cbSJens Wiklander * Fix conditional preprocessor directives in bignum.h to enable 64-bit 56*817466cbSJens Wiklander compilation when using ARM Compiler 6. 57*817466cbSJens Wiklander * Fix a potential integer overflow in the version verification for DER 58*817466cbSJens Wiklander encoded X.509 CRLs. The overflow could enable maliciously constructed CRLs 59*817466cbSJens Wiklander to bypass the version verification check. Found by Peng Li/Yueh-Hsun Lin, 60*817466cbSJens Wiklander KNOX Security, Samsung Research America 61*817466cbSJens Wiklander * Fix potential integer overflow in the version verification for DER 62*817466cbSJens Wiklander encoded X.509 CSRs. The overflow could enable maliciously constructed CSRs 63*817466cbSJens Wiklander to bypass the version verification check. Found by Peng Li/Yueh-Hsun Lin, 64*817466cbSJens Wiklander KNOX Security, Samsung Research America 65*817466cbSJens Wiklander * Fix a potential integer overflow in the version verification for DER 66*817466cbSJens Wiklander encoded X.509 certificates. The overflow could enable maliciously 67*817466cbSJens Wiklander constructed certificates to bypass the certificate verification check. 68*817466cbSJens Wiklander * Fix a call to the libc function time() to call the platform abstraction 69*817466cbSJens Wiklander function mbedtls_time() instead. Found by wairua. #666 70*817466cbSJens Wiklander * Avoid shadowing of time and index functions through mbed TLS function 71*817466cbSJens Wiklander arguments. Found by inestlerode. #557. 72*817466cbSJens Wiklander 73*817466cbSJens WiklanderChanges 74*817466cbSJens Wiklander * Added config.h option MBEDTLS_NO_UDBL_DIVISION, to prevent the use of 75*817466cbSJens Wiklander 64-bit division. This is useful on embedded platforms where 64-bit division 76*817466cbSJens Wiklander created a dependency on external libraries. #708 77*817466cbSJens Wiklander * Removed mutexes from ECP hardware accelerator code. Now all hardware 78*817466cbSJens Wiklander accelerator code in the library leaves concurrency handling to the 79*817466cbSJens Wiklander platform. Reported by Steven Cooreman. #863 80*817466cbSJens Wiklander * Define the macro MBEDTLS_AES_ROM_TABLES in the configuration file 81*817466cbSJens Wiklander config-no-entropy.h to reduce the RAM footprint. 82*817466cbSJens Wiklander * Added a test script that can be hooked into git that verifies commits 83*817466cbSJens Wiklander before they are pushed. 84*817466cbSJens Wiklander * Improve documentation of PKCS1 decryption functions. 85*817466cbSJens Wiklander 86*817466cbSJens Wiklander= mbed TLS 2.5.1 released 2017-06-21 87*817466cbSJens Wiklander 88*817466cbSJens WiklanderSecurity 89*817466cbSJens Wiklander * Fixed unlimited overread of heap-based buffer in mbedtls_ssl_read(). 90*817466cbSJens Wiklander The issue could only happen client-side with renegotiation enabled. 91*817466cbSJens Wiklander Could result in DoS (application crash) or information leak 92*817466cbSJens Wiklander (if the application layer sent data read from mbedtls_ssl_read() 93*817466cbSJens Wiklander back to the server or to a third party). Can be triggered remotely. 94*817466cbSJens Wiklander * Removed SHA-1 and RIPEMD-160 from the default hash algorithms for 95*817466cbSJens Wiklander certificate verification. SHA-1 can be turned back on with a compile-time 96*817466cbSJens Wiklander option if needed. 97*817466cbSJens Wiklander * Fixed offset in FALLBACK_SCSV parsing that caused TLS server to fail to 98*817466cbSJens Wiklander detect it sometimes. Reported by Hugo Leisink. #810 99*817466cbSJens Wiklander * Tighten parsing of RSA PKCS#1 v1.5 signatures, to avoid a 100*817466cbSJens Wiklander potential Bleichenbacher/BERserk-style attack. 101*817466cbSJens Wiklander 102*817466cbSJens WiklanderBugfix 103*817466cbSJens Wiklander * Remove size zero arrays from ECJPAKE test suite. Size zero arrays are not 104*817466cbSJens Wiklander valid C and they prevented the test from compiling in Visual Studio 2015 105*817466cbSJens Wiklander and with GCC using the -Wpedantic compilation option. 106*817466cbSJens Wiklander * Fix insufficient support for signature-hash-algorithm extension, 107*817466cbSJens Wiklander resulting in compatibility problems with Chrome. Found by hfloyrd. #823 108*817466cbSJens Wiklander * Fix behaviour that hid the original cause of fatal alerts in some cases 109*817466cbSJens Wiklander when sending the alert failed. The fix makes sure not to hide the error 110*817466cbSJens Wiklander that triggered the alert. 111*817466cbSJens Wiklander * Fix SSLv3 renegotiation behaviour and stop processing data received from 112*817466cbSJens Wiklander peer after sending a fatal alert to refuse a renegotiation attempt. 113*817466cbSJens Wiklander Previous behaviour was to keep processing data even after the alert has 114*817466cbSJens Wiklander been sent. 115*817466cbSJens Wiklander * Accept empty trusted CA chain in authentication mode 116*817466cbSJens Wiklander MBEDTLS_SSL_VERIFY_OPTIONAL. 117*817466cbSJens Wiklander Found by jethrogb. #864 118*817466cbSJens Wiklander * Fix implementation of mbedtls_ssl_parse_certificate() to not annihilate 119*817466cbSJens Wiklander fatal errors in authentication mode MBEDTLS_SSL_VERIFY_OPTIONAL and to 120*817466cbSJens Wiklander reflect bad EC curves within verification result. 121*817466cbSJens Wiklander * Fix bug that caused the modular inversion function to accept the invalid 122*817466cbSJens Wiklander modulus 1 and therefore to hang. Found by blaufish. #641. 123*817466cbSJens Wiklander * Fix incorrect sign computation in modular exponentiation when the base is 124*817466cbSJens Wiklander a negative MPI. Previously the result was always negative. Found by Guido 125*817466cbSJens Wiklander Vranken. 126*817466cbSJens Wiklander * Fix a numerical underflow leading to stack overflow in mpi_read_file() 127*817466cbSJens Wiklander that was triggered uppon reading an empty line. Found by Guido Vranken. 128*817466cbSJens Wiklander 129*817466cbSJens WiklanderChanges 130*817466cbSJens Wiklander * Send fatal alerts in more cases. The previous behaviour was to skip 131*817466cbSJens Wiklander sending the fatal alert and just drop the connection. 132*817466cbSJens Wiklander * Clarify ECDSA documentation and improve the sample code to avoid 133*817466cbSJens Wiklander misunderstanding and potentially dangerous use of the API. Pointed out 134*817466cbSJens Wiklander by Jean-Philippe Aumasson. 135*817466cbSJens Wiklander 136*817466cbSJens Wiklander= mbed TLS 2.5.0 branch released 2017-05-17 137*817466cbSJens Wiklander 138*817466cbSJens WiklanderSecurity 139*817466cbSJens Wiklander * Wipe stack buffers in RSA private key operations 140*817466cbSJens Wiklander (rsa_rsaes_pkcs1_v15_decrypt(), rsa_rsaes_oaep_decrypt). Found by Laurent 141*817466cbSJens Wiklander Simon. 142*817466cbSJens Wiklander * Add exponent blinding to RSA private operations as a countermeasure 143*817466cbSJens Wiklander against side-channel attacks like the cache attack described in 144*817466cbSJens Wiklander https://arxiv.org/abs/1702.08719v2. 145*817466cbSJens Wiklander Found and fix proposed by Michael Schwarz, Samuel Weiser, Daniel Gruss, 146*817466cbSJens Wiklander Clémentine Maurice and Stefan Mangard. 147*817466cbSJens Wiklander 148*817466cbSJens WiklanderFeatures 149*817466cbSJens Wiklander * Add hardware acceleration support for the Elliptic Curve Point module. 150*817466cbSJens Wiklander This involved exposing parts of the internal interface to enable 151*817466cbSJens Wiklander replacing the core functions and adding and alternative, module level 152*817466cbSJens Wiklander replacement support for enabling the extension of the interface. 153*817466cbSJens Wiklander * Add a new configuration option to 'mbedtls_ssl_config' to enable 154*817466cbSJens Wiklander suppressing the CA list in Certificate Request messages. The default 155*817466cbSJens Wiklander behaviour has not changed, namely every configured CAs name is included. 156*817466cbSJens Wiklander 157*817466cbSJens WiklanderAPI Changes 158*817466cbSJens Wiklander * The following functions in the AES module have been deprecated and replaced 159*817466cbSJens Wiklander by the functions shown below. The new functions change the return type from 160*817466cbSJens Wiklander void to int to allow returning error codes when using MBEDTLS_AES_ALT, 161*817466cbSJens Wiklander MBEDTLS_AES_DECRYPT_ALT or MBEDTLS_AES_ENCRYPT_ALT. 162*817466cbSJens Wiklander mbedtls_aes_decrypt() -> mbedtls_internal_aes_decrypt() 163*817466cbSJens Wiklander mbedtls_aes_encrypt() -> mbedtls_internal_aes_encrypt() 164*817466cbSJens Wiklander 165*817466cbSJens WiklanderBugfix 166*817466cbSJens Wiklander * Remove macros from compat-1.3.h that correspond to deleted items from most 167*817466cbSJens Wiklander recent versions of the library. Found by Kyle Keen. 168*817466cbSJens Wiklander * Fixed issue in the Threading module that prevented mutexes from 169*817466cbSJens Wiklander initialising. Found by sznaider. #667 #843 170*817466cbSJens Wiklander * Add checks in the PK module for the RSA functions on 64-bit systems. 171*817466cbSJens Wiklander The PK and RSA modules use different types for passing hash length and 172*817466cbSJens Wiklander without these checks the type cast could lead to data loss. Found by Guido 173*817466cbSJens Wiklander Vranken. 174*817466cbSJens Wiklander 175*817466cbSJens Wiklander= mbed TLS 2.4.2 branch released 2017-03-08 176*817466cbSJens Wiklander 177*817466cbSJens WiklanderSecurity 178*817466cbSJens Wiklander * Add checks to prevent signature forgeries for very large messages while 179*817466cbSJens Wiklander using RSA through the PK module in 64-bit systems. The issue was caused by 180*817466cbSJens Wiklander some data loss when casting a size_t to an unsigned int value in the 181*817466cbSJens Wiklander functions rsa_verify_wrap(), rsa_sign_wrap(), rsa_alt_sign_wrap() and 182*817466cbSJens Wiklander mbedtls_pk_sign(). Found by Jean-Philippe Aumasson. 183*817466cbSJens Wiklander * Fixed potential livelock during the parsing of a CRL in PEM format in 184*817466cbSJens Wiklander mbedtls_x509_crl_parse(). A string containing a CRL followed by trailing 185*817466cbSJens Wiklander characters after the footer could result in the execution of an infinite 186*817466cbSJens Wiklander loop. The issue can be triggered remotely. Found by Greg Zaverucha, 187*817466cbSJens Wiklander Microsoft. 188*817466cbSJens Wiklander * Removed MD5 from the allowed hash algorithms for CertificateRequest and 189*817466cbSJens Wiklander CertificateVerify messages, to prevent SLOTH attacks against TLS 1.2. 190*817466cbSJens Wiklander Introduced by interoperability fix for #513. 191*817466cbSJens Wiklander * Fixed a bug that caused freeing a buffer that was allocated on the stack, 192*817466cbSJens Wiklander when verifying the validity of a key on secp224k1. This could be 193*817466cbSJens Wiklander triggered remotely for example with a maliciously constructed certificate 194*817466cbSJens Wiklander and potentially could lead to remote code execution on some platforms. 195*817466cbSJens Wiklander Reported independently by rongsaws and Aleksandar Nikolic, Cisco Talos 196*817466cbSJens Wiklander team. #569 CVE-2017-2784 197*817466cbSJens Wiklander 198*817466cbSJens WiklanderBugfix 199*817466cbSJens Wiklander * Fix output certificate verification flags set by x509_crt_verify_top() when 200*817466cbSJens Wiklander traversing a chain of trusted CA. The issue would cause both flags, 201*817466cbSJens Wiklander MBEDTLS_X509_BADCERT_NOT_TRUSTED and MBEDTLS_X509_BADCERT_EXPIRED, to be 202*817466cbSJens Wiklander set when the verification conditions are not met regardless of the cause. 203*817466cbSJens Wiklander Found by Harm Verhagen and inestlerode. #665 #561 204*817466cbSJens Wiklander * Fix the redefinition of macro ssl_set_bio to an undefined symbol 205*817466cbSJens Wiklander mbedtls_ssl_set_bio_timeout in compat-1.3.h, by removing it. 206*817466cbSJens Wiklander Found by omlib-lin. #673 207*817466cbSJens Wiklander * Fix unused variable/function compilation warnings in pem.c, x509_crt.c and 208*817466cbSJens Wiklander x509_csr.c that are reported when building mbed TLS with a config.h that 209*817466cbSJens Wiklander does not define MBEDTLS_PEM_PARSE_C. Found by omnium21. #562 210*817466cbSJens Wiklander * Fix incorrect renegotiation condition in ssl_check_ctr_renegotiate() that 211*817466cbSJens Wiklander would compare 64 bits of the record counter instead of 48 bits as indicated 212*817466cbSJens Wiklander in RFC 6347 Section 4.3.1. This could cause the execution of the 213*817466cbSJens Wiklander renegotiation routines at unexpected times when the protocol is DTLS. Found 214*817466cbSJens Wiklander by wariua. #687 215*817466cbSJens Wiklander * Fixed multiple buffer overreads in mbedtls_pem_read_buffer() when parsing 216*817466cbSJens Wiklander the input string in PEM format to extract the different components. Found 217*817466cbSJens Wiklander by Eyal Itkin. 218*817466cbSJens Wiklander * Fixed potential arithmetic overflow in mbedtls_ctr_drbg_reseed() that could 219*817466cbSJens Wiklander cause buffer bound checks to be bypassed. Found by Eyal Itkin. 220*817466cbSJens Wiklander * Fixed potential arithmetic overflows in mbedtls_cipher_update() that could 221*817466cbSJens Wiklander cause buffer bound checks to be bypassed. Found by Eyal Itkin. 222*817466cbSJens Wiklander * Fixed potential arithmetic overflow in mbedtls_md2_update() that could 223*817466cbSJens Wiklander cause buffer bound checks to be bypassed. Found by Eyal Itkin. 224*817466cbSJens Wiklander * Fixed potential arithmetic overflow in mbedtls_base64_decode() that could 225*817466cbSJens Wiklander cause buffer bound checks to be bypassed. Found by Eyal Itkin. 226*817466cbSJens Wiklander * Fixed heap overreads in mbedtls_x509_get_time(). Found by Peng 227*817466cbSJens Wiklander Li/Yueh-Hsun Lin, KNOX Security, Samsung Research America. 228*817466cbSJens Wiklander * Fix potential memory leak in mbedtls_x509_crl_parse(). The leak was caused 229*817466cbSJens Wiklander by missing calls to mbedtls_pem_free() in cases when a 230*817466cbSJens Wiklander MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT error was encountered. Found and 231*817466cbSJens Wiklander fix proposed by Guido Vranken. #722 232*817466cbSJens Wiklander * Fixed the templates used to generate project and solution files for Visual 233*817466cbSJens Wiklander Studio 2015 as well as the files themselves, to remove a build warning 234*817466cbSJens Wiklander generated in Visual Studio 2015. Reported by Steve Valliere. #742 235*817466cbSJens Wiklander * Fix a resource leak in ssl_cookie, when using MBEDTLS_THREADING_C. 236*817466cbSJens Wiklander Raised and fix suggested by Alan Gillingham in the mbed TLS forum. #771 237*817466cbSJens Wiklander * Fix 1 byte buffer overflow in mbedtls_mpi_write_string() when the MPI 238*817466cbSJens Wiklander number to write in hexadecimal is negative and requires an odd number of 239*817466cbSJens Wiklander digits. Found and fixed by Guido Vranken. 240*817466cbSJens Wiklander * Fix unlisted DES configuration dependency in some pkparse test cases. Found 241*817466cbSJens Wiklander by inestlerode. #555 242*817466cbSJens Wiklander 243*817466cbSJens Wiklander= mbed TLS 2.4.1 branch released 2016-12-13 244*817466cbSJens Wiklander 245*817466cbSJens WiklanderChanges 246*817466cbSJens Wiklander * Update to CMAC test data, taken from - NIST Special Publication 800-38B - 247*817466cbSJens Wiklander Recommendation for Block Cipher Modes of Operation: The CMAC Mode for 248*817466cbSJens Wiklander Authentication – October 2016 249*817466cbSJens Wiklander 250*817466cbSJens Wiklander= mbed TLS 2.4.0 branch released 2016-10-17 251*817466cbSJens Wiklander 252*817466cbSJens WiklanderSecurity 253*817466cbSJens Wiklander * Removed the MBEDTLS_SSL_AEAD_RANDOM_IV option, because it was not compliant 254*817466cbSJens Wiklander with RFC-5116 and could lead to session key recovery in very long TLS 255*817466cbSJens Wiklander sessions. "Nonce-Disrespecting Adversaries Practical Forgery Attacks on GCM in 256*817466cbSJens Wiklander TLS" - H. Bock, A. Zauner, S. Devlin, J. Somorovsky, P. Jovanovic. 257*817466cbSJens Wiklander https://eprint.iacr.org/2016/475.pdf 258*817466cbSJens Wiklander * Fixed potential stack corruption in mbedtls_x509write_crt_der() and 259*817466cbSJens Wiklander mbedtls_x509write_csr_der() when the signature is copied to the buffer 260*817466cbSJens Wiklander without checking whether there is enough space in the destination. The 261*817466cbSJens Wiklander issue cannot be triggered remotely. Found by Jethro Beekman. 262*817466cbSJens Wiklander 263*817466cbSJens WiklanderFeatures 264*817466cbSJens Wiklander * Added support for CMAC for AES and 3DES and AES-CMAC-PRF-128, as defined by 265*817466cbSJens Wiklander NIST SP 800-38B, RFC-4493 and RFC-4615. 266*817466cbSJens Wiklander * Added hardware entropy selftest to verify that the hardware entropy source 267*817466cbSJens Wiklander is functioning correctly. 268*817466cbSJens Wiklander * Added a script to print build environment info for diagnostic use in test 269*817466cbSJens Wiklander scripts, which is also now called by all.sh. 270*817466cbSJens Wiklander * Added the macro MBEDTLS_X509_MAX_FILE_PATH_LEN that enables the user to 271*817466cbSJens Wiklander configure the maximum length of a file path that can be buffered when 272*817466cbSJens Wiklander calling mbedtls_x509_crt_parse_path(). 273*817466cbSJens Wiklander * Added a configuration file config-no-entropy.h that configures the subset of 274*817466cbSJens Wiklander library features that do not require an entropy source. 275*817466cbSJens Wiklander * Added the macro MBEDTLS_ENTROPY_MIN_HARDWARE in config.h. This allows users 276*817466cbSJens Wiklander to configure the minimum number of bytes for entropy sources using the 277*817466cbSJens Wiklander mbedtls_hardware_poll() function. 278*817466cbSJens Wiklander 279*817466cbSJens WiklanderBugfix 280*817466cbSJens Wiklander * Fix for platform time abstraction to avoid dependency issues where a build 281*817466cbSJens Wiklander may need time but not the standard C library abstraction, and added 282*817466cbSJens Wiklander configuration consistency checks to check_config.h 283*817466cbSJens Wiklander * Fix dependency issue in Makefile to allow parallel builds. 284*817466cbSJens Wiklander * Fix incorrect handling of block lengths in crypt_and_hash.c sample program, 285*817466cbSJens Wiklander when GCM is used. Found by udf2457. #441 286*817466cbSJens Wiklander * Fix for key exchanges based on ECDH-RSA or ECDH-ECDSA which weren't 287*817466cbSJens Wiklander enabled unless others were also present. Found by David Fernandez. #428 288*817466cbSJens Wiklander * Fix for out-of-tree builds using CMake. Found by jwurzer, and fix based on 289*817466cbSJens Wiklander a contribution from Tobias Tangemann. #541 290*817466cbSJens Wiklander * Fixed cert_app.c sample program for debug output and for use when no root 291*817466cbSJens Wiklander certificates are provided. 292*817466cbSJens Wiklander * Fix conditional statement that would cause a 1 byte overread in 293*817466cbSJens Wiklander mbedtls_asn1_get_int(). Found and fixed by Guido Vranken. #599 294*817466cbSJens Wiklander * Fixed pthread implementation to avoid unintended double initialisations 295*817466cbSJens Wiklander and double frees. Found by Niklas Amnebratt. 296*817466cbSJens Wiklander * Fixed the sample applications gen_key.c, cert_req.c and cert_write.c for 297*817466cbSJens Wiklander builds where the configuration MBEDTLS_PEM_WRITE_C is not defined. Found 298*817466cbSJens Wiklander by inestlerode. #559. 299*817466cbSJens Wiklander * Fix mbedtls_x509_get_sig() to update the ASN1 type in the mbedtls_x509_buf 300*817466cbSJens Wiklander data structure until after error checks are successful. Found by 301*817466cbSJens Wiklander subramanyam-c. #622 302*817466cbSJens Wiklander * Fix documentation and implementation missmatch for function arguments of 303*817466cbSJens Wiklander mbedtls_gcm_finish(). Found by cmiatpaar. #602 304*817466cbSJens Wiklander * Guarantee that P>Q at RSA key generation. Found by inestlerode. #558 305*817466cbSJens Wiklander * Fix potential byte overread when verifying malformed SERVER_HELLO in 306*817466cbSJens Wiklander ssl_parse_hello_verify_request() for DTLS. Found by Guido Vranken. 307*817466cbSJens Wiklander * Fix check for validity of date when parsing in mbedtls_x509_get_time(). 308*817466cbSJens Wiklander Found by subramanyam-c. #626 309*817466cbSJens Wiklander * Fix compatibility issue with Internet Explorer client authentication, 310*817466cbSJens Wiklander where the limited hash choices prevented the client from sending its 311*817466cbSJens Wiklander certificate. Found by teumas. #513 312*817466cbSJens Wiklander * Fix compilation without MBEDTLS_SELF_TEST enabled. 313*817466cbSJens Wiklander 314*817466cbSJens WiklanderChanges 315*817466cbSJens Wiklander * Extended test coverage of special cases, and added new timing test suite. 316*817466cbSJens Wiklander * Removed self-tests from the basic-built-test.sh script, and added all 317*817466cbSJens Wiklander missing self-tests to the test suites, to ensure self-tests are only 318*817466cbSJens Wiklander executed once. 319*817466cbSJens Wiklander * Added support for 3 and 4 byte lengths to mbedtls_asn1_write_len(). 320*817466cbSJens Wiklander * Added support for a Yotta specific configuration file - 321*817466cbSJens Wiklander through the symbol YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE. 322*817466cbSJens Wiklander * Added optimization for code space for X.509/OID based on configured 323*817466cbSJens Wiklander features. Contributed by Aviv Palivoda. 324*817466cbSJens Wiklander * Renamed source file library/net.c to library/net_sockets.c to avoid 325*817466cbSJens Wiklander naming collision in projects which also have files with the common name 326*817466cbSJens Wiklander net.c. For consistency, the corresponding header file, net.h, is marked as 327*817466cbSJens Wiklander deprecated, and its contents moved to net_sockets.h. 328*817466cbSJens Wiklander * Changed the strategy for X.509 certificate parsing and validation, to no 329*817466cbSJens Wiklander longer disregard certificates with unrecognised fields. 330*817466cbSJens Wiklander 331*817466cbSJens Wiklander= mbed TLS 2.3.0 branch released 2016-06-28 332*817466cbSJens Wiklander 333*817466cbSJens WiklanderSecurity 334*817466cbSJens Wiklander * Fix missing padding length check in mbedtls_rsa_rsaes_pkcs1_v15_decrypt 335*817466cbSJens Wiklander required by PKCS1 v2.2 336*817466cbSJens Wiklander * Fix potential integer overflow to buffer overflow in 337*817466cbSJens Wiklander mbedtls_rsa_rsaes_pkcs1_v15_encrypt and mbedtls_rsa_rsaes_oaep_encrypt 338*817466cbSJens Wiklander (not triggerable remotely in (D)TLS). 339*817466cbSJens Wiklander * Fix a potential integer underflow to buffer overread in 340*817466cbSJens Wiklander mbedtls_rsa_rsaes_oaep_decrypt. It is not triggerable remotely in 341*817466cbSJens Wiklander SSL/TLS. 342*817466cbSJens Wiklander 343*817466cbSJens WiklanderFeatures 344*817466cbSJens Wiklander * Support for platform abstraction of the standard C library time() 345*817466cbSJens Wiklander function. 346*817466cbSJens Wiklander 347*817466cbSJens WiklanderBugfix 348*817466cbSJens Wiklander * Fix bug in mbedtls_mpi_add_mpi() that caused wrong results when the three 349*817466cbSJens Wiklander arguments where the same (in-place doubling). Found and fixed by Janos 350*817466cbSJens Wiklander Follath. #309 351*817466cbSJens Wiklander * Fix potential build failures related to the 'apidoc' target, introduced 352*817466cbSJens Wiklander in the previous patch release. Found by Robert Scheck. #390 #391 353*817466cbSJens Wiklander * Fix issue in Makefile that prevented building using armar. #386 354*817466cbSJens Wiklander * Fix memory leak that occured only when ECJPAKE was enabled and ECDHE and 355*817466cbSJens Wiklander ECDSA was disabled in config.h . The leak didn't occur by default. 356*817466cbSJens Wiklander * Fix an issue that caused valid certificates to be rejected whenever an 357*817466cbSJens Wiklander expired or not yet valid certificate was parsed before a valid certificate 358*817466cbSJens Wiklander in the trusted certificate list. 359*817466cbSJens Wiklander * Fix bug in mbedtls_x509_crt_parse that caused trailing extra data in the 360*817466cbSJens Wiklander buffer after DER certificates to be included in the raw representation. 361*817466cbSJens Wiklander * Fix issue that caused a hang when generating RSA keys of odd bitlength 362*817466cbSJens Wiklander * Fix bug in mbedtls_rsa_rsaes_pkcs1_v15_encrypt that made null pointer 363*817466cbSJens Wiklander dereference possible. 364*817466cbSJens Wiklander * Fix issue that caused a crash if invalid curves were passed to 365*817466cbSJens Wiklander mbedtls_ssl_conf_curves. #373 366*817466cbSJens Wiklander * Fix issue in ssl_fork_server which was preventing it from functioning. #429 367*817466cbSJens Wiklander * Fix memory leaks in test framework 368*817466cbSJens Wiklander * Fix test in ssl-opt.sh that does not run properly with valgrind 369*817466cbSJens Wiklander * Fix unchecked calls to mmbedtls_md_setup(). Fix by Brian Murray. #502 370*817466cbSJens Wiklander 371*817466cbSJens WiklanderChanges 372*817466cbSJens Wiklander * On ARM platforms, when compiling with -O0 with GCC, Clang or armcc5, 373*817466cbSJens Wiklander don't use the optimized assembly for bignum multiplication. This removes 374*817466cbSJens Wiklander the need to pass -fomit-frame-pointer to avoid a build error with -O0. 375*817466cbSJens Wiklander * Disabled SSLv3 in the default configuration. 376*817466cbSJens Wiklander * Optimized mbedtls_mpi_zeroize() for MPI integer size. (Fix by Alexey 377*817466cbSJens Wiklander Skalozub). 378*817466cbSJens Wiklander * Fix non-compliance server extension handling. Extensions for SSLv3 are now 379*817466cbSJens Wiklander ignored, as required by RFC6101. 380*817466cbSJens Wiklander 381*817466cbSJens Wiklander= mbed TLS 2.2.1 released 2016-01-05 382*817466cbSJens Wiklander 383*817466cbSJens WiklanderSecurity 384*817466cbSJens Wiklander * Fix potential double free when mbedtls_asn1_store_named_data() fails to 385*817466cbSJens Wiklander allocate memory. Only used for certificate generation, not triggerable 386*817466cbSJens Wiklander remotely in SSL/TLS. Found by Rafał Przywara. #367 387*817466cbSJens Wiklander * Disable MD5 handshake signatures in TLS 1.2 by default to prevent the 388*817466cbSJens Wiklander SLOTH attack on TLS 1.2 server authentication (other attacks from the 389*817466cbSJens Wiklander SLOTH paper do not apply to any version of mbed TLS or PolarSSL). 390*817466cbSJens Wiklander https://www.mitls.org/pages/attacks/SLOTH 391*817466cbSJens Wiklander 392*817466cbSJens WiklanderBugfix 393*817466cbSJens Wiklander * Fix over-restrictive length limit in GCM. Found by Andreas-N. #362 394*817466cbSJens Wiklander * Fix bug in certificate validation that caused valid chains to be rejected 395*817466cbSJens Wiklander when the first intermediate certificate has pathLenConstraint=0. Found by 396*817466cbSJens Wiklander Nicholas Wilson. Introduced in mbed TLS 2.2.0. #280 397*817466cbSJens Wiklander * Removed potential leak in mbedtls_rsa_rsassa_pkcs1_v15_sign(), found by 398*817466cbSJens Wiklander JayaraghavendranK. #372 399*817466cbSJens Wiklander * Fix suboptimal handling of unexpected records that caused interop issues 400*817466cbSJens Wiklander with some peers over unreliable links. Avoid dropping an entire DTLS 401*817466cbSJens Wiklander datagram if a single record in a datagram is unexpected, instead only 402*817466cbSJens Wiklander drop the record and look at subsequent records (if any are present) in 403*817466cbSJens Wiklander the same datagram. Found by jeannotlapin. #345 404*817466cbSJens Wiklander 405*817466cbSJens Wiklander= mbed TLS 2.2.0 released 2015-11-04 406*817466cbSJens Wiklander 407*817466cbSJens WiklanderSecurity 408*817466cbSJens Wiklander * Fix potential double free if mbedtls_ssl_conf_psk() is called more than 409*817466cbSJens Wiklander once and some allocation fails. Cannot be forced remotely. Found by Guido 410*817466cbSJens Wiklander Vranken, Intelworks. 411*817466cbSJens Wiklander * Fix potential heap corruption on Windows when 412*817466cbSJens Wiklander mbedtls_x509_crt_parse_path() is passed a path longer than 2GB. Cannot be 413*817466cbSJens Wiklander triggered remotely. Found by Guido Vranken, Intelworks. 414*817466cbSJens Wiklander * Fix potential buffer overflow in some asn1_write_xxx() functions. 415*817466cbSJens Wiklander Cannot be triggered remotely unless you create X.509 certificates based 416*817466cbSJens Wiklander on untrusted input or write keys of untrusted origin. Found by Guido 417*817466cbSJens Wiklander Vranken, Intelworks. 418*817466cbSJens Wiklander * The X509 max_pathlen constraint was not enforced on intermediate 419*817466cbSJens Wiklander certificates. Found by Nicholas Wilson, fix and tests provided by 420*817466cbSJens Wiklander Janos Follath. #280 and #319 421*817466cbSJens Wiklander 422*817466cbSJens WiklanderFeatures 423*817466cbSJens Wiklander * Experimental support for EC J-PAKE as defined in Thread 1.0.0. 424*817466cbSJens Wiklander Disabled by default as the specification might still change. 425*817466cbSJens Wiklander * Added a key extraction callback to accees the master secret and key 426*817466cbSJens Wiklander block. (Potential uses include EAP-TLS and Thread.) 427*817466cbSJens Wiklander 428*817466cbSJens WiklanderBugfix 429*817466cbSJens Wiklander * Self-signed certificates were not excluded from pathlen counting, 430*817466cbSJens Wiklander resulting in some valid X.509 being incorrectly rejected. Found and fix 431*817466cbSJens Wiklander provided by Janos Follath. #319 432*817466cbSJens Wiklander * Fix build error with configurations where ECDHE-PSK is the only key 433*817466cbSJens Wiklander exchange. Found and fix provided by Chris Hammond. #270 434*817466cbSJens Wiklander * Fix build error with configurations where RSA, RSA-PSK, ECDH-RSA or 435*817466cbSJens Wiklander ECHD-ECDSA if the only key exchange. Multiple reports. #310 436*817466cbSJens Wiklander * Fixed a bug causing some handshakes to fail due to some non-fatal alerts 437*817466cbSJens Wiklander not being properly ignored. Found by mancha and Kasom Koht-arsa, #308 438*817466cbSJens Wiklander * mbedtls_x509_crt_verify(_with_profile)() now also checks the key type and 439*817466cbSJens Wiklander size/curve against the profile. Before that, there was no way to set a 440*817466cbSJens Wiklander minimum key size for end-entity certificates with RSA keys. Found by 441*817466cbSJens Wiklander Matthew Page of Scannex Electronics Ltd. 442*817466cbSJens Wiklander * Fix failures in MPI on Sparc(64) due to use of bad assembly code. 443*817466cbSJens Wiklander Found by Kurt Danielson. #292 444*817466cbSJens Wiklander * Fix typo in name of the extKeyUsage OID. Found by inestlerode, #314 445*817466cbSJens Wiklander * Fix bug in ASN.1 encoding of booleans that caused generated CA 446*817466cbSJens Wiklander certificates to be rejected by some applications, including OS X 447*817466cbSJens Wiklander Keychain. Found and fixed by Jonathan Leroy, Inikup. 448*817466cbSJens Wiklander 449*817466cbSJens WiklanderChanges 450*817466cbSJens Wiklander * Improved performance of mbedtls_ecp_muladd() when one of the scalars is 1 451*817466cbSJens Wiklander or -1. 452*817466cbSJens Wiklander 453*817466cbSJens Wiklander= mbed TLS 2.1.2 released 2015-10-06 454*817466cbSJens Wiklander 455*817466cbSJens WiklanderSecurity 456*817466cbSJens Wiklander * Added fix for CVE-2015-5291 to prevent heap corruption due to buffer 457*817466cbSJens Wiklander overflow of the hostname or session ticket. Found by Guido Vranken, 458*817466cbSJens Wiklander Intelworks. 459*817466cbSJens Wiklander * Fix potential double-free if mbedtls_ssl_set_hs_psk() is called more than 460*817466cbSJens Wiklander once in the same handhake and mbedtls_ssl_conf_psk() was used. 461*817466cbSJens Wiklander Found and patch provided by Guido Vranken, Intelworks. Cannot be forced 462*817466cbSJens Wiklander remotely. 463*817466cbSJens Wiklander * Fix stack buffer overflow in pkcs12 decryption (used by 464*817466cbSJens Wiklander mbedtls_pk_parse_key(file)() when the password is > 129 bytes. 465*817466cbSJens Wiklander Found by Guido Vranken, Intelworks. Not triggerable remotely. 466*817466cbSJens Wiklander * Fix potential buffer overflow in mbedtls_mpi_read_string(). 467*817466cbSJens Wiklander Found by Guido Vranken, Intelworks. Not exploitable remotely in the context 468*817466cbSJens Wiklander of TLS, but might be in other uses. On 32 bit machines, requires reading a 469*817466cbSJens Wiklander string of close to or larger than 1GB to exploit; on 64 bit machines, would 470*817466cbSJens Wiklander require reading a string of close to or larger than 2^62 bytes. 471*817466cbSJens Wiklander * Fix potential random memory allocation in mbedtls_pem_read_buffer() 472*817466cbSJens Wiklander on crafted PEM input data. Found and fix provided by Guido Vranken, 473*817466cbSJens Wiklander Intelworks. Not triggerable remotely in TLS. Triggerable remotely if you 474*817466cbSJens Wiklander accept PEM data from an untrusted source. 475*817466cbSJens Wiklander * Fix possible heap buffer overflow in base64_encoded() when the input 476*817466cbSJens Wiklander buffer is 512MB or larger on 32-bit platforms. Found by Guido Vranken, 477*817466cbSJens Wiklander Intelworks. Not trigerrable remotely in TLS. 478*817466cbSJens Wiklander * Fix potential double-free if mbedtls_conf_psk() is called repeatedly on 479*817466cbSJens Wiklander the same mbedtls_ssl_config object and memory allocation fails. Found by 480*817466cbSJens Wiklander Guido Vranken, Intelworks. Cannot be forced remotely. 481*817466cbSJens Wiklander * Fix potential heap buffer overflow in servers that perform client 482*817466cbSJens Wiklander authentication against a crafted CA cert. Cannot be triggered remotely 483*817466cbSJens Wiklander unless you allow third parties to pick trust CAs for client auth. 484*817466cbSJens Wiklander Found by Guido Vranken, Intelworks. 485*817466cbSJens Wiklander 486*817466cbSJens WiklanderBugfix 487*817466cbSJens Wiklander * Fix compile error in net.c with musl libc. Found and patch provided by 488*817466cbSJens Wiklander zhasha (#278). 489*817466cbSJens Wiklander * Fix macroization of 'inline' keyword when building as C++. (#279) 490*817466cbSJens Wiklander 491*817466cbSJens WiklanderChanges 492*817466cbSJens Wiklander * Added checking of hostname length in mbedtls_ssl_set_hostname() to ensure 493*817466cbSJens Wiklander domain names are compliant with RFC 1035. 494*817466cbSJens Wiklander * Fixed paths for check_config.h in example config files. (Found by bachp) 495*817466cbSJens Wiklander (#291) 496*817466cbSJens Wiklander 497*817466cbSJens Wiklander= mbed TLS 2.1.1 released 2015-09-17 498*817466cbSJens Wiklander 499*817466cbSJens WiklanderSecurity 500*817466cbSJens Wiklander * Add countermeasure against Lenstra's RSA-CRT attack for PKCS#1 v1.5 501*817466cbSJens Wiklander signatures. (Found by Florian Weimer, Red Hat.) 502*817466cbSJens Wiklander https://securityblog.redhat.com/2015/09/02/factoring-rsa-keys-with-tls-perfect-forward-secrecy/ 503*817466cbSJens Wiklander * Fix possible client-side NULL pointer dereference (read) when the client 504*817466cbSJens Wiklander tries to continue the handshake after it failed (a misuse of the API). 505*817466cbSJens Wiklander (Found and patch provided by Fabian Foerg, Gotham Digital Science using 506*817466cbSJens Wiklander afl-fuzz.) 507*817466cbSJens Wiklander 508*817466cbSJens WiklanderBugfix 509*817466cbSJens Wiklander * Fix warning when using a 64bit platform. (found by embedthis) (#275) 510*817466cbSJens Wiklander * Fix off-by-one error in parsing Supported Point Format extension that 511*817466cbSJens Wiklander caused some handshakes to fail. 512*817466cbSJens Wiklander 513*817466cbSJens WiklanderChanges 514*817466cbSJens Wiklander * Made X509 profile pointer const in mbedtls_ssl_conf_cert_profile() to allow 515*817466cbSJens Wiklander use of mbedtls_x509_crt_profile_next. (found by NWilson) 516*817466cbSJens Wiklander * When a client initiates a reconnect from the same port as a live 517*817466cbSJens Wiklander connection, if cookie verification is available 518*817466cbSJens Wiklander (MBEDTLS_SSL_DTLS_HELLO_VERIFY defined in config.h, and usable cookie 519*817466cbSJens Wiklander callbacks set with mbedtls_ssl_conf_dtls_cookies()), this will be 520*817466cbSJens Wiklander detected and mbedtls_ssl_read() will return 521*817466cbSJens Wiklander MBEDTLS_ERR_SSL_CLIENT_RECONNECT - it is then possible to start a new 522*817466cbSJens Wiklander handshake with the same context. (See RFC 6347 section 4.2.8.) 523*817466cbSJens Wiklander 524*817466cbSJens Wiklander= mbed TLS 2.1.0 released 2015-09-04 525*817466cbSJens Wiklander 526*817466cbSJens WiklanderFeatures 527*817466cbSJens Wiklander * Added support for yotta as a build system. 528*817466cbSJens Wiklander * Primary open source license changed to Apache 2.0 license. 529*817466cbSJens Wiklander 530*817466cbSJens WiklanderBugfix 531*817466cbSJens Wiklander * Fix segfault in the benchmark program when benchmarking DHM. 532*817466cbSJens Wiklander * Fix build error with CMake and pre-4.5 versions of GCC (found by Hugo 533*817466cbSJens Wiklander Leisink). 534*817466cbSJens Wiklander * Fix bug when parsing a ServerHello without extensions (found by David 535*817466cbSJens Wiklander Sears). 536*817466cbSJens Wiklander * Fix bug in CMake lists that caused libmbedcrypto.a not to be installed 537*817466cbSJens Wiklander (found by Benoit Lecocq). 538*817466cbSJens Wiklander * Fix bug in Makefile that caused libmbedcrypto and libmbedx509 not to be 539*817466cbSJens Wiklander installed (found by Rawi666). 540*817466cbSJens Wiklander * Fix compile error with armcc 5 with --gnu option. 541*817466cbSJens Wiklander * Fix bug in Makefile that caused programs not to be installed correctly 542*817466cbSJens Wiklander (found by robotanarchy) (#232). 543*817466cbSJens Wiklander * Fix bug in Makefile that prevented from installing without building the 544*817466cbSJens Wiklander tests (found by robotanarchy) (#232). 545*817466cbSJens Wiklander * Fix missing -static-libgcc when building shared libraries for Windows 546*817466cbSJens Wiklander with make. 547*817466cbSJens Wiklander * Fix link error when building shared libraries for Windows with make. 548*817466cbSJens Wiklander * Fix error when loading libmbedtls.so. 549*817466cbSJens Wiklander * Fix bug in mbedtls_ssl_conf_default() that caused the default preset to 550*817466cbSJens Wiklander be always used (found by dcb314) (#235) 551*817466cbSJens Wiklander * Fix bug in mbedtls_rsa_public() and mbedtls_rsa_private() that could 552*817466cbSJens Wiklander result trying to unlock an unlocked mutex on invalid input (found by 553*817466cbSJens Wiklander Fredrik Axelsson) (#257) 554*817466cbSJens Wiklander * Fix -Wshadow warnings (found by hnrkp) (#240) 555*817466cbSJens Wiklander * Fix memory corruption on client with overlong PSK identity, around 556*817466cbSJens Wiklander SSL_MAX_CONTENT_LEN or higher - not triggerrable remotely (found by 557*817466cbSJens Wiklander Aleksandrs Saveljevs) (#238) 558*817466cbSJens Wiklander * Fix unused function warning when using MBEDTLS_MDx_ALT or 559*817466cbSJens Wiklander MBEDTLS_SHAxxx_ALT (found by Henrik) (#239) 560*817466cbSJens Wiklander * Fix memory corruption in pkey programs (found by yankuncheng) (#210) 561*817466cbSJens Wiklander 562*817466cbSJens WiklanderChanges 563*817466cbSJens Wiklander * The PEM parser now accepts a trailing space at end of lines (#226). 564*817466cbSJens Wiklander * It is now possible to #include a user-provided configuration file at the 565*817466cbSJens Wiklander end of the default config.h by defining MBEDTLS_USER_CONFIG_FILE on the 566*817466cbSJens Wiklander compiler's command line. 567*817466cbSJens Wiklander * When verifying a certificate chain, if an intermediate certificate is 568*817466cbSJens Wiklander trusted, no later cert is checked. (suggested by hannes-landeholm) 569*817466cbSJens Wiklander (#220). 570*817466cbSJens Wiklander * Prepend a "thread identifier" to debug messages (issue pointed out by 571*817466cbSJens Wiklander Hugo Leisink) (#210). 572*817466cbSJens Wiklander * Add mbedtls_ssl_get_max_frag_len() to query the current maximum fragment 573*817466cbSJens Wiklander length. 574*817466cbSJens Wiklander 575*817466cbSJens Wiklander= mbed TLS 2.0.0 released 2015-07-13 576*817466cbSJens Wiklander 577*817466cbSJens WiklanderFeatures 578*817466cbSJens Wiklander * Support for DTLS 1.0 and 1.2 (RFC 6347). 579*817466cbSJens Wiklander * Ability to override core functions from MDx, SHAx, AES and DES modules 580*817466cbSJens Wiklander with custom implementation (eg hardware accelerated), complementing the 581*817466cbSJens Wiklander ability to override the whole module. 582*817466cbSJens Wiklander * New server-side implementation of session tickets that rotate keys to 583*817466cbSJens Wiklander preserve forward secrecy, and allows sharing across multiple contexts. 584*817466cbSJens Wiklander * Added a concept of X.509 cerificate verification profile that controls 585*817466cbSJens Wiklander which algorithms and key sizes (curves for ECDSA) are acceptable. 586*817466cbSJens Wiklander * Expanded configurability of security parameters in the SSL module with 587*817466cbSJens Wiklander mbedtls_ssl_conf_dhm_min_bitlen() and mbedtls_ssl_conf_sig_hashes(). 588*817466cbSJens Wiklander * Introduced a concept of presets for SSL security-relevant configuration 589*817466cbSJens Wiklander parameters. 590*817466cbSJens Wiklander 591*817466cbSJens WiklanderAPI Changes 592*817466cbSJens Wiklander * The library has been split into libmbedcrypto, libmbedx509, libmbedtls. 593*817466cbSJens Wiklander You now need to link to all of them if you use TLS for example. 594*817466cbSJens Wiklander * All public identifiers moved to the mbedtls_* or MBEDTLS_* namespace. 595*817466cbSJens Wiklander Some names have been further changed to make them more consistent. 596*817466cbSJens Wiklander Migration helpers scripts/rename.pl and include/mbedlts/compat-1.3.h are 597*817466cbSJens Wiklander provided. Full list of renamings in scripts/data_files/rename-1.3-2.0.txt 598*817466cbSJens Wiklander * Renamings of fields inside structures, not covered by the previous list: 599*817466cbSJens Wiklander mbedtls_cipher_info_t.key_length -> key_bitlen 600*817466cbSJens Wiklander mbedtls_cipher_context_t.key_length -> key_bitlen 601*817466cbSJens Wiklander mbedtls_ecp_curve_info.size -> bit_size 602*817466cbSJens Wiklander * Headers are now found in the 'mbedtls' directory (previously 'polarssl'). 603*817466cbSJens Wiklander * The following _init() functions that could return errors have 604*817466cbSJens Wiklander been split into an _init() that returns void and another function that 605*817466cbSJens Wiklander should generally be the first function called on this context after init: 606*817466cbSJens Wiklander mbedtls_ssl_init() -> mbedtls_ssl_setup() 607*817466cbSJens Wiklander mbedtls_ccm_init() -> mbedtls_ccm_setkey() 608*817466cbSJens Wiklander mbedtls_gcm_init() -> mbedtls_gcm_setkey() 609*817466cbSJens Wiklander mbedtls_hmac_drbg_init() -> mbedtls_hmac_drbg_seed(_buf)() 610*817466cbSJens Wiklander mbedtls_ctr_drbg_init() -> mbedtls_ctr_drbg_seed() 611*817466cbSJens Wiklander Note that for mbedtls_ssl_setup(), you need to be done setting up the 612*817466cbSJens Wiklander ssl_config structure before calling it. 613*817466cbSJens Wiklander * Most ssl_set_xxx() functions (all except ssl_set_bio(), ssl_set_hostname(), 614*817466cbSJens Wiklander ssl_set_session() and ssl_set_client_transport_id(), plus 615*817466cbSJens Wiklander ssl_legacy_renegotiation()) have been renamed to mbedtls_ssl_conf_xxx() 616*817466cbSJens Wiklander (see rename.pl and compat-1.3.h above) and their first argument's type 617*817466cbSJens Wiklander changed from ssl_context to ssl_config. 618*817466cbSJens Wiklander * ssl_set_bio() changed signature (contexts merged, order switched, one 619*817466cbSJens Wiklander additional callback for read-with-timeout). 620*817466cbSJens Wiklander * The following functions have been introduced and must be used in callback 621*817466cbSJens Wiklander implementations (SNI, PSK) instead of their *conf counterparts: 622*817466cbSJens Wiklander mbedtls_ssl_set_hs_own_cert() 623*817466cbSJens Wiklander mbedtls_ssl_set_hs_ca_chain() 624*817466cbSJens Wiklander mbedtls_ssl_set_hs_psk() 625*817466cbSJens Wiklander * mbedtls_ssl_conf_ca_chain() lost its last argument (peer_cn), now set 626*817466cbSJens Wiklander using mbedtls_ssl_set_hostname(). 627*817466cbSJens Wiklander * mbedtls_ssl_conf_session_cache() changed prototype (only one context 628*817466cbSJens Wiklander pointer, parameters reordered). 629*817466cbSJens Wiklander * On server, mbedtls_ssl_conf_session_tickets_cb() must now be used in 630*817466cbSJens Wiklander place of mbedtls_ssl_conf_session_tickets() to enable session tickets. 631*817466cbSJens Wiklander * The SSL debug callback gained two new arguments (file name, line number). 632*817466cbSJens Wiklander * Debug modes were removed. 633*817466cbSJens Wiklander * mbedtls_ssl_conf_truncated_hmac() now returns void. 634*817466cbSJens Wiklander * mbedtls_memory_buffer_alloc_init() now returns void. 635*817466cbSJens Wiklander * X.509 verification flags are now an uint32_t. Affect the signature of: 636*817466cbSJens Wiklander mbedtls_ssl_get_verify_result() 637*817466cbSJens Wiklander mbedtls_x509_ctr_verify_info() 638*817466cbSJens Wiklander mbedtls_x509_crt_verify() (flags, f_vrfy -> needs to be updated) 639*817466cbSJens Wiklander mbedtls_ssl_conf_verify() (f_vrfy -> needs to be updated) 640*817466cbSJens Wiklander * The following functions changed prototype to avoid an in-out length 641*817466cbSJens Wiklander parameter: 642*817466cbSJens Wiklander mbedtls_base64_encode() 643*817466cbSJens Wiklander mbedtls_base64_decode() 644*817466cbSJens Wiklander mbedtls_mpi_write_string() 645*817466cbSJens Wiklander mbedtls_dhm_calc_secret() 646*817466cbSJens Wiklander * In the NET module, all "int" and "int *" arguments for file descriptors 647*817466cbSJens Wiklander changed type to "mbedtls_net_context *". 648*817466cbSJens Wiklander * net_accept() gained new arguments for the size of the client_ip buffer. 649*817466cbSJens Wiklander * In the threading layer, mbedtls_mutex_init() and mbedtls_mutex_free() now 650*817466cbSJens Wiklander return void. 651*817466cbSJens Wiklander * ecdsa_write_signature() gained an addtional md_alg argument and 652*817466cbSJens Wiklander ecdsa_write_signature_det() was deprecated. 653*817466cbSJens Wiklander * pk_sign() no longer accepts md_alg == POLARSSL_MD_NONE with ECDSA. 654*817466cbSJens Wiklander * Last argument of x509_crt_check_key_usage() and 655*817466cbSJens Wiklander mbedtls_x509write_crt_set_key_usage() changed from int to unsigned. 656*817466cbSJens Wiklander * test_ca_list (from certs.h) is renamed to test_cas_pem and is only 657*817466cbSJens Wiklander available if POLARSSL_PEM_PARSE_C is defined (it never worked without). 658*817466cbSJens Wiklander * Test certificates in certs.c are no longer guaranteed to be nul-terminated 659*817466cbSJens Wiklander strings; use the new *_len variables instead of strlen(). 660*817466cbSJens Wiklander * Functions mbedtls_x509_xxx_parse(), mbedtls_pk_parse_key(), 661*817466cbSJens Wiklander mbedtls_pk_parse_public_key() and mbedtls_dhm_parse_dhm() now expect the 662*817466cbSJens Wiklander length parameter to include the terminating null byte for PEM input. 663*817466cbSJens Wiklander * Signature of mpi_mul_mpi() changed to make the last argument unsigned 664*817466cbSJens Wiklander * calloc() is now used instead of malloc() everywhere. API of platform 665*817466cbSJens Wiklander layer and the memory_buffer_alloc module changed accordingly. 666*817466cbSJens Wiklander (Thanks to Mansour Moufid for helping with the replacement.) 667*817466cbSJens Wiklander * Change SSL_DISABLE_RENEGOTIATION config.h flag to SSL_RENEGOTIATION 668*817466cbSJens Wiklander (support for renegotiation now needs explicit enabling in config.h). 669*817466cbSJens Wiklander * Split MBEDTLS_HAVE_TIME into MBEDTLS_HAVE_TIME and MBEDTLS_HAVE_TIME_DATE 670*817466cbSJens Wiklander in config.h 671*817466cbSJens Wiklander * net_connect() and net_bind() have a new 'proto' argument to choose 672*817466cbSJens Wiklander between TCP and UDP, using the macros NET_PROTO_TCP or NET_PROTO_UDP. 673*817466cbSJens Wiklander Their 'port' argument type is changed to a string. 674*817466cbSJens Wiklander * Some constness fixes 675*817466cbSJens Wiklander 676*817466cbSJens WiklanderRemovals 677*817466cbSJens Wiklander * Removed mbedtls_ecp_group_read_string(). Only named groups are supported. 678*817466cbSJens Wiklander * Removed mbedtls_ecp_sub() and mbedtls_ecp_add(), use 679*817466cbSJens Wiklander mbedtls_ecp_muladd(). 680*817466cbSJens Wiklander * Removed individual mdX_hmac, shaX_hmac, mdX_file and shaX_file functions 681*817466cbSJens Wiklander (use generic functions from md.h) 682*817466cbSJens Wiklander * Removed mbedtls_timing_msleep(). Use mbedtls_net_usleep() or a custom 683*817466cbSJens Wiklander waiting function. 684*817466cbSJens Wiklander * Removed test DHM parameters from the test certs module. 685*817466cbSJens Wiklander * Removed the PBKDF2 module (use PKCS5). 686*817466cbSJens Wiklander * Removed POLARSSL_ERROR_STRERROR_BC (use mbedtls_strerror()). 687*817466cbSJens Wiklander * Removed compat-1.2.h (helper for migrating from 1.2 to 1.3). 688*817466cbSJens Wiklander * Removed openssl.h (very partial OpenSSL compatibility layer). 689*817466cbSJens Wiklander * Configuration options POLARSSL_HAVE_LONGLONG was removed (now always on). 690*817466cbSJens Wiklander * Configuration options POLARSSL_HAVE_INT8 and POLARSSL_HAVE_INT16 have 691*817466cbSJens Wiklander been removed (compiler is required to support 32-bit operations). 692*817466cbSJens Wiklander * Configuration option POLARSSL_HAVE_IPV6 was removed (always enabled). 693*817466cbSJens Wiklander * Removed test program o_p_test, the script compat.sh does more. 694*817466cbSJens Wiklander * Removed test program ssl_test, superseded by ssl-opt.sh. 695*817466cbSJens Wiklander * Removed helper script active-config.pl 696*817466cbSJens Wiklander 697*817466cbSJens WiklanderNew deprecations 698*817466cbSJens Wiklander * md_init_ctx() is deprecated in favour of md_setup(), that adds a third 699*817466cbSJens Wiklander argument (allowing memory savings if HMAC is not used) 700*817466cbSJens Wiklander 701*817466cbSJens WiklanderSemi-API changes (technically public, morally private) 702*817466cbSJens Wiklander * Renamed a few headers to include _internal in the name. Those headers are 703*817466cbSJens Wiklander not supposed to be included by users. 704*817466cbSJens Wiklander * Changed md_info_t into an opaque structure (use md_get_xxx() accessors). 705*817466cbSJens Wiklander * Changed pk_info_t into an opaque structure. 706*817466cbSJens Wiklander * Changed cipher_base_t into an opaque structure. 707*817466cbSJens Wiklander * Removed sig_oid2 and rename sig_oid1 to sig_oid in x509_crt and x509_crl. 708*817466cbSJens Wiklander * x509_crt.key_usage changed from unsigned char to unsigned int. 709*817466cbSJens Wiklander * Removed r and s from ecdsa_context 710*817466cbSJens Wiklander * Removed mode from des_context and des3_context 711*817466cbSJens Wiklander 712*817466cbSJens WiklanderDefault behavior changes 713*817466cbSJens Wiklander * The default minimum TLS version is now TLS 1.0. 714*817466cbSJens Wiklander * RC4 is now blacklisted by default in the SSL/TLS layer, and excluded from the 715*817466cbSJens Wiklander default ciphersuite list returned by ssl_list_ciphersuites() 716*817466cbSJens Wiklander * Support for receiving SSLv2 ClientHello is now disabled by default at 717*817466cbSJens Wiklander compile time. 718*817466cbSJens Wiklander * The default authmode for SSL/TLS clients is now REQUIRED. 719*817466cbSJens Wiklander * Support for RSA_ALT contexts in the PK layer is now optional. Since is is 720*817466cbSJens Wiklander enabled in the default configuration, this is only noticeable if using a 721*817466cbSJens Wiklander custom config.h 722*817466cbSJens Wiklander * Default DHM parameters server-side upgraded from 1024 to 2048 bits. 723*817466cbSJens Wiklander * A minimum RSA key size of 2048 bits is now enforced during ceritificate 724*817466cbSJens Wiklander chain verification. 725*817466cbSJens Wiklander * Negotiation of truncated HMAC is now disabled by default on server too. 726*817466cbSJens Wiklander * The following functions are now case-sensitive: 727*817466cbSJens Wiklander mbedtls_cipher_info_from_string() 728*817466cbSJens Wiklander mbedtls_ecp_curve_info_from_name() 729*817466cbSJens Wiklander mbedtls_md_info_from_string() 730*817466cbSJens Wiklander mbedtls_ssl_ciphersuite_from_string() 731*817466cbSJens Wiklander mbedtls_version_check_feature() 732*817466cbSJens Wiklander 733*817466cbSJens WiklanderRequirement changes 734*817466cbSJens Wiklander * The minimum MSVC version required is now 2010 (better C99 support). 735*817466cbSJens Wiklander * The NET layer now unconditionnaly relies on getaddrinfo() and select(). 736*817466cbSJens Wiklander * Compiler is required to support C99 types such as long long and uint32_t. 737*817466cbSJens Wiklander 738*817466cbSJens WiklanderAPI changes from the 1.4 preview branch 739*817466cbSJens Wiklander * ssl_set_bio_timeout() was removed, split into mbedtls_ssl_set_bio() with 740*817466cbSJens Wiklander new prototype, and mbedtls_ssl_set_read_timeout(). 741*817466cbSJens Wiklander * The following functions now return void: 742*817466cbSJens Wiklander mbedtls_ssl_conf_transport() 743*817466cbSJens Wiklander mbedtls_ssl_conf_max_version() 744*817466cbSJens Wiklander mbedtls_ssl_conf_min_version() 745*817466cbSJens Wiklander * DTLS no longer hard-depends on TIMING_C, but uses a callback interface 746*817466cbSJens Wiklander instead, see mbedtls_ssl_set_timer_cb(), with the Timing module providing 747*817466cbSJens Wiklander an example implementation, see mbedtls_timing_delay_context and 748*817466cbSJens Wiklander mbedtls_timing_set/get_delay(). 749*817466cbSJens Wiklander * With UDP sockets, it is no longer necessary to call net_bind() again 750*817466cbSJens Wiklander after a successful net_accept(). 751*817466cbSJens Wiklander 752*817466cbSJens WiklanderChanges 753*817466cbSJens Wiklander * mbedtls_ctr_drbg_random() and mbedtls_hmac_drbg_random() are now 754*817466cbSJens Wiklander thread-safe if MBEDTLS_THREADING_C is enabled. 755*817466cbSJens Wiklander * Reduced ROM fooprint of SHA-256 and added an option to reduce it even 756*817466cbSJens Wiklander more (at the expense of performance) MBEDTLS_SHA256_SMALLER. 757*817466cbSJens Wiklander 758*817466cbSJens Wiklander= mbed TLS 1.3 branch 759*817466cbSJens Wiklander 760*817466cbSJens WiklanderSecurity 761*817466cbSJens Wiklander * With authmode set to SSL_VERIFY_OPTIONAL, verification of keyUsage and 762*817466cbSJens Wiklander extendedKeyUsage on the leaf certificate was lost (results not accessible 763*817466cbSJens Wiklander via ssl_get_verify_results()). 764*817466cbSJens Wiklander * Add countermeasure against "Lucky 13 strikes back" cache-based attack, 765*817466cbSJens Wiklander https://dl.acm.org/citation.cfm?id=2714625 766*817466cbSJens Wiklander 767*817466cbSJens WiklanderFeatures 768*817466cbSJens Wiklander * Improve ECC performance by using more efficient doubling formulas 769*817466cbSJens Wiklander (contributed by Peter Dettman). 770*817466cbSJens Wiklander * Add x509_crt_verify_info() to display certificate verification results. 771*817466cbSJens Wiklander * Add support for reading DH parameters with privateValueLength included 772*817466cbSJens Wiklander (contributed by Daniel Kahn Gillmor). 773*817466cbSJens Wiklander * Add support for bit strings in X.509 names (request by Fredrik Axelsson). 774*817466cbSJens Wiklander * Add support for id-at-uniqueIdentifier in X.509 names. 775*817466cbSJens Wiklander * Add support for overriding snprintf() (except on Windows) and exit() in 776*817466cbSJens Wiklander the platform layer. 777*817466cbSJens Wiklander * Add an option to use macros instead of function pointers in the platform 778*817466cbSJens Wiklander layer (helps get rid of unwanted references). 779*817466cbSJens Wiklander * Improved Makefiles for Windows targets by fixing library targets and making 780*817466cbSJens Wiklander cross-compilation easier (thanks to Alon Bar-Lev). 781*817466cbSJens Wiklander * The benchmark program also prints heap usage for public-key primitives 782*817466cbSJens Wiklander if POLARSSL_MEMORY_BUFFER_ALLOC_C and POLARSSL_MEMORY_DEBUG are defined. 783*817466cbSJens Wiklander * New script ecc-heap.sh helps measuring the impact of ECC parameters on 784*817466cbSJens Wiklander speed and RAM (heap only for now) usage. 785*817466cbSJens Wiklander * New script memory.sh helps measuring the ROM and RAM requirements of two 786*817466cbSJens Wiklander reduced configurations (PSK-CCM and NSA suite B). 787*817466cbSJens Wiklander * Add config flag POLARSSL_DEPRECATED_WARNING (off by default) to produce 788*817466cbSJens Wiklander warnings on use of deprecated functions (with GCC and Clang only). 789*817466cbSJens Wiklander * Add config flag POLARSSL_DEPRECATED_REMOVED (off by default) to produce 790*817466cbSJens Wiklander errors on use of deprecated functions. 791*817466cbSJens Wiklander 792*817466cbSJens WiklanderBugfix 793*817466cbSJens Wiklander * Fix compile errors with PLATFORM_NO_STD_FUNCTIONS. 794*817466cbSJens Wiklander * Fix compile error with PLATFORM_EXIT_ALT (thanks to Rafał Przywara). 795*817466cbSJens Wiklander * Fix bug in entropy.c when THREADING_C is also enabled that caused 796*817466cbSJens Wiklander entropy_free() to crash (thanks to Rafał Przywara). 797*817466cbSJens Wiklander * Fix memory leak when gcm_setkey() and ccm_setkey() are used more than 798*817466cbSJens Wiklander once on the same context. 799*817466cbSJens Wiklander * Fix bug in ssl_mail_client when password is longer that username (found 800*817466cbSJens Wiklander by Bruno Pape). 801*817466cbSJens Wiklander * Fix undefined behaviour (memcmp( NULL, NULL, 0 );) in X.509 modules 802*817466cbSJens Wiklander (detected by Clang's 3.6 UBSan). 803*817466cbSJens Wiklander * mpi_size() and mpi_msb() would segfault when called on an mpi that is 804*817466cbSJens Wiklander initialized but not set (found by pravic). 805*817466cbSJens Wiklander * Fix detection of support for getrandom() on Linux (reported by syzzer) by 806*817466cbSJens Wiklander doing it at runtime (using uname) rather that compile time. 807*817466cbSJens Wiklander * Fix handling of symlinks by "make install" (found by Gaël PORTAY). 808*817466cbSJens Wiklander * Fix potential NULL pointer dereference (not trigerrable remotely) when 809*817466cbSJens Wiklander ssl_write() is called before the handshake is finished (introduced in 810*817466cbSJens Wiklander 1.3.10) (first reported by Martin Blumenstingl). 811*817466cbSJens Wiklander * Fix bug in pk_parse_key() that caused some valid private EC keys to be 812*817466cbSJens Wiklander rejected. 813*817466cbSJens Wiklander * Fix bug in Via Padlock support (found by Nikos Mavrogiannopoulos). 814*817466cbSJens Wiklander * Fix thread safety bug in RSA operations (found by Fredrik Axelsson). 815*817466cbSJens Wiklander * Fix hardclock() (only used in the benchmarking program) with some 816*817466cbSJens Wiklander versions of mingw64 (found by kxjhlele). 817*817466cbSJens Wiklander * Fix warnings from mingw64 in timing.c (found by kxjklele). 818*817466cbSJens Wiklander * Fix potential unintended sign extension in asn1_get_len() on 64-bit 819*817466cbSJens Wiklander platforms. 820*817466cbSJens Wiklander * Fix potential memory leak in ssl_set_psk() (found by Mansour Moufid). 821*817466cbSJens Wiklander * Fix compile error when POLARSSL_SSL_DISABLE_RENEGOTATION and 822*817466cbSJens Wiklander POLARSSL_SSL_SSESSION_TICKETS where both enabled in config.h (introduced 823*817466cbSJens Wiklander in 1.3.10). 824*817466cbSJens Wiklander * Add missing extern "C" guard in aesni.h (reported by amir zamani). 825*817466cbSJens Wiklander * Add missing dependency on SHA-256 in some x509 programs (reported by 826*817466cbSJens Wiklander Gergely Budai). 827*817466cbSJens Wiklander * Fix bug related to ssl_set_curves(): the client didn't check that the 828*817466cbSJens Wiklander curve picked by the server was actually allowed. 829*817466cbSJens Wiklander 830*817466cbSJens WiklanderChanges 831*817466cbSJens Wiklander * Remove bias in mpi_gen_prime (contributed by Pascal Junod). 832*817466cbSJens Wiklander * Remove potential sources of timing variations (some contributed by Pascal 833*817466cbSJens Wiklander Junod). 834*817466cbSJens Wiklander * Options POLARSSL_HAVE_INT8 and POLARSSL_HAVE_INT16 are deprecated. 835*817466cbSJens Wiklander * Enabling POLARSSL_NET_C without POLARSSL_HAVE_IPV6 is deprecated. 836*817466cbSJens Wiklander * compat-1.2.h and openssl.h are deprecated. 837*817466cbSJens Wiklander * Adjusting/overriding CFLAGS and LDFLAGS with the make build system is now 838*817466cbSJens Wiklander more flexible (warning: OFLAGS is not used any more) (see the README) 839*817466cbSJens Wiklander (contributed by Alon Bar-Lev). 840*817466cbSJens Wiklander * ssl_set_own_cert() no longer calls pk_check_pair() since the 841*817466cbSJens Wiklander performance impact was bad for some users (this was introduced in 1.3.10). 842*817466cbSJens Wiklander * Move from SHA-1 to SHA-256 in example programs using signatures 843*817466cbSJens Wiklander (suggested by Thorsten Mühlfelder). 844*817466cbSJens Wiklander * Remove some unneeded inclusions of header files from the standard library 845*817466cbSJens Wiklander "minimize" others (eg use stddef.h if only size_t is needed). 846*817466cbSJens Wiklander * Change #include lines in test files to use double quotes instead of angle 847*817466cbSJens Wiklander brackets for uniformity with the rest of the code. 848*817466cbSJens Wiklander * Remove dependency on sscanf() in X.509 parsing modules. 849*817466cbSJens Wiklander 850*817466cbSJens Wiklander= mbed TLS 1.3.10 released 2015-02-09 851*817466cbSJens WiklanderSecurity 852*817466cbSJens Wiklander * NULL pointer dereference in the buffer-based allocator when the buffer is 853*817466cbSJens Wiklander full and polarssl_free() is called (found by Mark Hasemeyer) 854*817466cbSJens Wiklander (only possible if POLARSSL_MEMORY_BUFFER_ALLOC_C is enabled, which it is 855*817466cbSJens Wiklander not by default). 856*817466cbSJens Wiklander * Fix remotely-triggerable uninitialised pointer dereference caused by 857*817466cbSJens Wiklander crafted X.509 certificate (TLS server is not affected if it doesn't ask for a 858*817466cbSJens Wiklander client certificate) (found using Codenomicon Defensics). 859*817466cbSJens Wiklander * Fix remotely-triggerable memory leak caused by crafted X.509 certificates 860*817466cbSJens Wiklander (TLS server is not affected if it doesn't ask for a client certificate) 861*817466cbSJens Wiklander (found using Codenomicon Defensics). 862*817466cbSJens Wiklander * Fix potential stack overflow while parsing crafted X.509 certificates 863*817466cbSJens Wiklander (TLS server is not affected if it doesn't ask for a client certificate) 864*817466cbSJens Wiklander (found using Codenomicon Defensics). 865*817466cbSJens Wiklander * Fix timing difference that could theoretically lead to a 866*817466cbSJens Wiklander Bleichenbacher-style attack in the RSA and RSA-PSK key exchanges 867*817466cbSJens Wiklander (reported by Sebastian Schinzel). 868*817466cbSJens Wiklander 869*817466cbSJens WiklanderFeatures 870*817466cbSJens Wiklander * Add support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv). 871*817466cbSJens Wiklander * Add support for Extended Master Secret (draft-ietf-tls-session-hash). 872*817466cbSJens Wiklander * Add support for Encrypt-then-MAC (RFC 7366). 873*817466cbSJens Wiklander * Add function pk_check_pair() to test if public and private keys match. 874*817466cbSJens Wiklander * Add x509_crl_parse_der(). 875*817466cbSJens Wiklander * Add compile-time option POLARSSL_X509_MAX_INTERMEDIATE_CA to limit the 876*817466cbSJens Wiklander length of an X.509 verification chain. 877*817466cbSJens Wiklander * Support for renegotiation can now be disabled at compile-time 878*817466cbSJens Wiklander * Support for 1/n-1 record splitting, a countermeasure against BEAST. 879*817466cbSJens Wiklander * Certificate selection based on signature hash, preferring SHA-1 over SHA-2 880*817466cbSJens Wiklander for pre-1.2 clients when multiple certificates are available. 881*817466cbSJens Wiklander * Add support for getrandom() syscall on recent Linux kernels with Glibc or 882*817466cbSJens Wiklander a compatible enough libc (eg uClibc). 883*817466cbSJens Wiklander * Add ssl_set_arc4_support() to make it easier to disable RC4 at runtime 884*817466cbSJens Wiklander while using the default ciphersuite list. 885*817466cbSJens Wiklander * Added new error codes and debug messages about selection of 886*817466cbSJens Wiklander ciphersuite/certificate. 887*817466cbSJens Wiklander 888*817466cbSJens WiklanderBugfix 889*817466cbSJens Wiklander * Stack buffer overflow if ctr_drbg_update() is called with too large 890*817466cbSJens Wiklander add_len (found by Jean-Philippe Aumasson) (not triggerable remotely). 891*817466cbSJens Wiklander * Possible buffer overflow of length at most POLARSSL_MEMORY_ALIGN_MULTIPLE 892*817466cbSJens Wiklander if memory_buffer_alloc_init() was called with buf not aligned and len not 893*817466cbSJens Wiklander a multiple of POLARSSL_MEMORY_ALIGN_MULTIPLE (not triggerable remotely). 894*817466cbSJens Wiklander * User set CFLAGS were ignored by Cmake with gcc (introduced in 1.3.9, found 895*817466cbSJens Wiklander by Julian Ospald). 896*817466cbSJens Wiklander * Fix potential undefined behaviour in Camellia. 897*817466cbSJens Wiklander * Fix potential failure in ECDSA signatures when POLARSSL_ECP_MAX_BITS is a 898*817466cbSJens Wiklander multiple of 8 (found by Gergely Budai). 899*817466cbSJens Wiklander * Fix unchecked return code in x509_crt_parse_path() on Windows (found by 900*817466cbSJens Wiklander Peter Vaskovic). 901*817466cbSJens Wiklander * Fix assembly selection for MIPS64 (thanks to James Cowgill). 902*817466cbSJens Wiklander * ssl_get_verify_result() now works even if the handshake was aborted due 903*817466cbSJens Wiklander to a failed verification (found by Fredrik Axelsson). 904*817466cbSJens Wiklander * Skip writing and parsing signature_algorithm extension if none of the 905*817466cbSJens Wiklander key exchanges enabled needs certificates. This fixes a possible interop 906*817466cbSJens Wiklander issue with some servers when a zero-length extension was sent. (Reported 907*817466cbSJens Wiklander by Peter Dettman.) 908*817466cbSJens Wiklander * On a 0-length input, base64_encode() did not correctly set output length 909*817466cbSJens Wiklander (found by Hendrik van den Boogaard). 910*817466cbSJens Wiklander 911*817466cbSJens WiklanderChanges 912*817466cbSJens Wiklander * Use deterministic nonces for AEAD ciphers in TLS by default (possible to 913*817466cbSJens Wiklander switch back to random with POLARSSL_SSL_AEAD_RANDOM_IV in config.h). 914*817466cbSJens Wiklander * Blind RSA private operations even when POLARSSL_RSA_NO_CRT is defined. 915*817466cbSJens Wiklander * ssl_set_own_cert() now returns an error on key-certificate mismatch. 916*817466cbSJens Wiklander * Forbid repeated extensions in X.509 certificates. 917*817466cbSJens Wiklander * debug_print_buf() now prints a text view in addition to hexadecimal. 918*817466cbSJens Wiklander * A specific error is now returned when there are ciphersuites in common 919*817466cbSJens Wiklander but none of them is usable due to external factors such as no certificate 920*817466cbSJens Wiklander with a suitable (extended)KeyUsage or curve or no PSK set. 921*817466cbSJens Wiklander * It is now possible to disable negotiation of truncated HMAC server-side 922*817466cbSJens Wiklander at runtime with ssl_set_truncated_hmac(). 923*817466cbSJens Wiklander * Example programs for SSL client and server now disable SSLv3 by default. 924*817466cbSJens Wiklander * Example programs for SSL client and server now disable RC4 by default. 925*817466cbSJens Wiklander * Use platform.h in all test suites and programs. 926*817466cbSJens Wiklander 927*817466cbSJens Wiklander= PolarSSL 1.3.9 released 2014-10-20 928*817466cbSJens WiklanderSecurity 929*817466cbSJens Wiklander * Lowest common hash was selected from signature_algorithms extension in 930*817466cbSJens Wiklander TLS 1.2 (found by Darren Bane) (introduced in 1.3.8). 931*817466cbSJens Wiklander * Remotely-triggerable memory leak when parsing some X.509 certificates 932*817466cbSJens Wiklander (server is not affected if it doesn't ask for a client certificate) 933*817466cbSJens Wiklander (found using Codenomicon Defensics). 934*817466cbSJens Wiklander * Remotely-triggerable memory leak when parsing crafted ClientHello 935*817466cbSJens Wiklander (not affected if ECC support was compiled out) (found using Codenomicon 936*817466cbSJens Wiklander Defensics). 937*817466cbSJens Wiklander 938*817466cbSJens WiklanderBugfix 939*817466cbSJens Wiklander * Support escaping of commas in x509_string_to_names() 940*817466cbSJens Wiklander * Fix compile error in ssl_pthread_server (found by Julian Ospald). 941*817466cbSJens Wiklander * Fix net_accept() regarding non-blocking sockets (found by Luca Pesce). 942*817466cbSJens Wiklander * Don't print uninitialised buffer in ssl_mail_client (found by Marc Abel). 943*817466cbSJens Wiklander * Fix warnings from Clang's scan-build (contributed by Alfred Klomp). 944*817466cbSJens Wiklander * Fix compile error in timing.c when POLARSSL_NET_C and POLARSSL_SELFTEST 945*817466cbSJens Wiklander are defined but not POLARSSL_HAVE_TIME (found by Stephane Di Vito). 946*817466cbSJens Wiklander * Remove non-existent file from VS projects (found by Peter Vaskovic). 947*817466cbSJens Wiklander * ssl_read() could return non-application data records on server while 948*817466cbSJens Wiklander renegotation was pending, and on client when a HelloRequest was received. 949*817466cbSJens Wiklander * Server-initiated renegotiation would fail with non-blocking I/O if the 950*817466cbSJens Wiklander write callback returned WANT_WRITE when requesting renegotiation. 951*817466cbSJens Wiklander * ssl_close_notify() could send more than one message in some circumstances 952*817466cbSJens Wiklander with non-blocking I/O. 953*817466cbSJens Wiklander * Fix compiler warnings on iOS (found by Sander Niemeijer). 954*817466cbSJens Wiklander * x509_crt_parse() did not increase total_failed on PEM error 955*817466cbSJens Wiklander * Fix compile error with armcc in mpi_is_prime() 956*817466cbSJens Wiklander * Fix potential bad read in parsing ServerHello (found by Adrien 957*817466cbSJens Wiklander Vialletelle). 958*817466cbSJens Wiklander 959*817466cbSJens WiklanderChanges 960*817466cbSJens Wiklander * Ciphersuites using SHA-256 or SHA-384 now require TLS 1.x (there is no 961*817466cbSJens Wiklander standard defining how to use SHA-2 with SSL 3.0). 962*817466cbSJens Wiklander * Ciphersuites using RSA-PSK key exchange new require TLS 1.x (the spec is 963*817466cbSJens Wiklander ambiguous on how to encode some packets with SSL 3.0). 964*817466cbSJens Wiklander * Made buffer size in pk_write_(pub)key_pem() more dynamic, eg smaller if 965*817466cbSJens Wiklander RSA is disabled, larger if POLARSSL_MPI_MAX_SIZE is larger. 966*817466cbSJens Wiklander * ssl_read() now returns POLARSSL_ERR_NET_WANT_READ rather than 967*817466cbSJens Wiklander POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE on harmless alerts. 968*817466cbSJens Wiklander * POLARSSL_MPI_MAX_SIZE now defaults to 1024 in order to allow 8192 bits 969*817466cbSJens Wiklander RSA keys. 970*817466cbSJens Wiklander * Accept spaces at end of line or end of buffer in base64_decode(). 971*817466cbSJens Wiklander * X.509 certificates with more than one AttributeTypeAndValue per 972*817466cbSJens Wiklander RelativeDistinguishedName are not accepted any more. 973*817466cbSJens Wiklander 974*817466cbSJens Wiklander= PolarSSL 1.3.8 released 2014-07-11 975*817466cbSJens WiklanderSecurity 976*817466cbSJens Wiklander * Fix length checking for AEAD ciphersuites (found by Codenomicon). 977*817466cbSJens Wiklander It was possible to crash the server (and client) using crafted messages 978*817466cbSJens Wiklander when a GCM suite was chosen. 979*817466cbSJens Wiklander 980*817466cbSJens WiklanderFeatures 981*817466cbSJens Wiklander * Add CCM module and cipher mode to Cipher Layer 982*817466cbSJens Wiklander * Support for CCM and CCM_8 ciphersuites 983*817466cbSJens Wiklander * Support for parsing and verifying RSASSA-PSS signatures in the X.509 984*817466cbSJens Wiklander modules (certificates, CRLs and CSRs). 985*817466cbSJens Wiklander * Blowfish in the cipher layer now supports variable length keys. 986*817466cbSJens Wiklander * Add example config.h for PSK with CCM, optimized for low RAM usage. 987*817466cbSJens Wiklander * Optimize for RAM usage in example config.h for NSA Suite B profile. 988*817466cbSJens Wiklander * Add POLARSSL_REMOVE_ARC4_CIPHERSUITES to allow removing RC4 ciphersuites 989*817466cbSJens Wiklander from the default list (inactive by default). 990*817466cbSJens Wiklander * Add server-side enforcement of sent renegotiation requests 991*817466cbSJens Wiklander (ssl_set_renegotiation_enforced()) 992*817466cbSJens Wiklander * Add SSL_CIPHERSUITES config.h flag to allow specifying a list of 993*817466cbSJens Wiklander ciphersuites to use and save some memory if the list is small. 994*817466cbSJens Wiklander 995*817466cbSJens WiklanderChanges 996*817466cbSJens Wiklander * Add LINK_WITH_PTHREAD option in CMake for explicit linking that is 997*817466cbSJens Wiklander required on some platforms (e.g. OpenBSD) 998*817466cbSJens Wiklander * Migrate zeroizing of data to polarssl_zeroize() instead of memset() 999*817466cbSJens Wiklander against unwanted compiler optimizations 1000*817466cbSJens Wiklander * md_list() now returns hashes strongest first 1001*817466cbSJens Wiklander * Selection of hash for signing ServerKeyExchange in TLS 1.2 now picks 1002*817466cbSJens Wiklander strongest offered by client. 1003*817466cbSJens Wiklander * All public contexts have _init() and _free() functions now for simpler 1004*817466cbSJens Wiklander usage pattern 1005*817466cbSJens Wiklander 1006*817466cbSJens WiklanderBugfix 1007*817466cbSJens Wiklander * Fix in debug_print_msg() 1008*817466cbSJens Wiklander * Enforce alignment in the buffer allocator even if buffer is not aligned 1009*817466cbSJens Wiklander * Remove less-than-zero checks on unsigned numbers 1010*817466cbSJens Wiklander * Stricter check on SSL ClientHello internal sizes compared to actual packet 1011*817466cbSJens Wiklander size (found by TrustInSoft) 1012*817466cbSJens Wiklander * Fix WSAStartup() return value check (found by Peter Vaskovic) 1013*817466cbSJens Wiklander * Other minor issues (found by Peter Vaskovic) 1014*817466cbSJens Wiklander * Fix symlink command for cross compiling with CMake (found by Andre 1015*817466cbSJens Wiklander Heinecke) 1016*817466cbSJens Wiklander * Fix DER output of gen_key app (found by Gergely Budai) 1017*817466cbSJens Wiklander * Very small records were incorrectly rejected when truncated HMAC was in 1018*817466cbSJens Wiklander use with some ciphersuites and versions (RC4 in all versions, CBC with 1019*817466cbSJens Wiklander versions < TLS 1.1). 1020*817466cbSJens Wiklander * Very large records using more than 224 bytes of padding were incorrectly 1021*817466cbSJens Wiklander rejected with CBC-based ciphersuites and TLS >= 1.1 1022*817466cbSJens Wiklander * Very large records using less padding could cause a buffer overread of up 1023*817466cbSJens Wiklander to 32 bytes with CBC-based ciphersuites and TLS >= 1.1 1024*817466cbSJens Wiklander * Restore ability to use a v1 cert as a CA if trusted locally. (This had 1025*817466cbSJens Wiklander been removed in 1.3.6.) 1026*817466cbSJens Wiklander * Restore ability to locally trust a self-signed cert that is not a proper 1027*817466cbSJens Wiklander CA for use as an end entity certificate. (This had been removed in 1028*817466cbSJens Wiklander 1.3.6.) 1029*817466cbSJens Wiklander * Fix preprocessor checks for bn_mul PPC asm (found by Barry K. Nathan). 1030*817466cbSJens Wiklander * Use \n\t rather than semicolons for bn_mul asm, since some assemblers 1031*817466cbSJens Wiklander interpret semicolons as comment delimiters (found by Barry K. Nathan). 1032*817466cbSJens Wiklander * Fix off-by-one error in parsing Supported Point Format extension that 1033*817466cbSJens Wiklander caused some handshakes to fail. 1034*817466cbSJens Wiklander * Fix possible miscomputation of the premaster secret with DHE-PSK key 1035*817466cbSJens Wiklander exchange that caused some handshakes to fail with other implementations. 1036*817466cbSJens Wiklander (Failure rate <= 1/255 with common DHM moduli.) 1037*817466cbSJens Wiklander * Disable broken Sparc64 bn_mul assembly (found by Florian Obser). 1038*817466cbSJens Wiklander * Fix base64_decode() to return and check length correctly (in case of 1039*817466cbSJens Wiklander tight buffers) 1040*817466cbSJens Wiklander * Fix mpi_write_string() to write "00" as hex output for empty MPI (found 1041*817466cbSJens Wiklander by Hui Dong) 1042*817466cbSJens Wiklander 1043*817466cbSJens Wiklander= PolarSSL 1.3.7 released on 2014-05-02 1044*817466cbSJens WiklanderFeatures 1045*817466cbSJens Wiklander * debug_set_log_mode() added to determine raw or full logging 1046*817466cbSJens Wiklander * debug_set_threshold() added to ignore messages over threshold level 1047*817466cbSJens Wiklander * version_check_feature() added to check for compile-time options at 1048*817466cbSJens Wiklander run-time 1049*817466cbSJens Wiklander 1050*817466cbSJens WiklanderChanges 1051*817466cbSJens Wiklander * POLARSSL_CONFIG_OPTIONS has been removed. All values are individually 1052*817466cbSJens Wiklander checked and filled in the relevant module headers 1053*817466cbSJens Wiklander * Debug module only outputs full lines instead of parts 1054*817466cbSJens Wiklander * Better support for the different Attribute Types from IETF PKIX (RFC 5280) 1055*817466cbSJens Wiklander * AES-NI now compiles with "old" assemblers too 1056*817466cbSJens Wiklander * Ciphersuites based on RC4 now have the lowest priority by default 1057*817466cbSJens Wiklander 1058*817466cbSJens WiklanderBugfix 1059*817466cbSJens Wiklander * Only iterate over actual certificates in ssl_write_certificate_request() 1060*817466cbSJens Wiklander (found by Matthew Page) 1061*817466cbSJens Wiklander * Typos in platform.c and pkcs11.c (found by Daniel Phillips and Steffan 1062*817466cbSJens Wiklander Karger) 1063*817466cbSJens Wiklander * cert_write app should use subject of issuer certificate as issuer of cert 1064*817466cbSJens Wiklander * Fix false reject in padding check in ssl_decrypt_buf() for CBC 1065*817466cbSJens Wiklander ciphersuites, for full SSL frames of data. 1066*817466cbSJens Wiklander * Improve interoperability by not writing extension length in ClientHello / 1067*817466cbSJens Wiklander ServerHello when no extensions are present (found by Matthew Page) 1068*817466cbSJens Wiklander * rsa_check_pubkey() now allows an E up to N 1069*817466cbSJens Wiklander * On OpenBSD, use arc4random_buf() instead of rand() to prevent warnings 1070*817466cbSJens Wiklander * mpi_fill_random() was creating numbers larger than requested on 1071*817466cbSJens Wiklander big-endian platform when size was not an integer number of limbs 1072*817466cbSJens Wiklander * Fix dependencies issues in X.509 test suite. 1073*817466cbSJens Wiklander * Some parts of ssl_tls.c were compiled even when the module was disabled. 1074*817466cbSJens Wiklander * Fix detection of DragonflyBSD in net.c (found by Markus Pfeiffer) 1075*817466cbSJens Wiklander * Fix detection of Clang on some Apple platforms with CMake 1076*817466cbSJens Wiklander (found by Barry K. Nathan) 1077*817466cbSJens Wiklander 1078*817466cbSJens Wiklander= PolarSSL 1.3.6 released on 2014-04-11 1079*817466cbSJens Wiklander 1080*817466cbSJens WiklanderFeatures 1081*817466cbSJens Wiklander * Support for the ALPN SSL extension 1082*817466cbSJens Wiklander * Add option 'use_dev_random' to gen_key application 1083*817466cbSJens Wiklander * Enable verification of the keyUsage extension for CA and leaf 1084*817466cbSJens Wiklander certificates (POLARSSL_X509_CHECK_KEY_USAGE) 1085*817466cbSJens Wiklander * Enable verification of the extendedKeyUsage extension 1086*817466cbSJens Wiklander (POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE) 1087*817466cbSJens Wiklander 1088*817466cbSJens WiklanderChanges 1089*817466cbSJens Wiklander * x509_crt_info() now prints information about parsed extensions as well 1090*817466cbSJens Wiklander * pk_verify() now returns a specific error code when the signature is valid 1091*817466cbSJens Wiklander but shorter than the supplied length. 1092*817466cbSJens Wiklander * Use UTC time to check certificate validity. 1093*817466cbSJens Wiklander * Reject certificates with times not in UTC, per RFC 5280. 1094*817466cbSJens Wiklander 1095*817466cbSJens WiklanderSecurity 1096*817466cbSJens Wiklander * Avoid potential timing leak in ecdsa_sign() by blinding modular division. 1097*817466cbSJens Wiklander (Found by Watson Ladd.) 1098*817466cbSJens Wiklander * The notAfter date of some certificates was no longer checked since 1.3.5. 1099*817466cbSJens Wiklander This affects certificates in the user-supplied chain except the top 1100*817466cbSJens Wiklander certificate. If the user-supplied chain contains only one certificates, 1101*817466cbSJens Wiklander it is not affected (ie, its notAfter date is properly checked). 1102*817466cbSJens Wiklander * Prevent potential NULL pointer dereference in ssl_read_record() (found by 1103*817466cbSJens Wiklander TrustInSoft) 1104*817466cbSJens Wiklander 1105*817466cbSJens WiklanderBugfix 1106*817466cbSJens Wiklander * The length of various ClientKeyExchange messages was not properly checked. 1107*817466cbSJens Wiklander * Some example server programs were not sending the close_notify alert. 1108*817466cbSJens Wiklander * Potential memory leak in mpi_exp_mod() when error occurs during 1109*817466cbSJens Wiklander calculation of RR. 1110*817466cbSJens Wiklander * Fixed malloc/free default #define in platform.c (found by Gergely Budai). 1111*817466cbSJens Wiklander * Fixed type which made POLARSSL_ENTROPY_FORCE_SHA256 uneffective (found by 1112*817466cbSJens Wiklander Gergely Budai). 1113*817466cbSJens Wiklander * Fix #include path in ecdsa.h which wasn't accepted by some compilers. 1114*817466cbSJens Wiklander (found by Gergely Budai) 1115*817466cbSJens Wiklander * Fix compile errors when POLARSSL_ERROR_STRERROR_BC is undefined (found by 1116*817466cbSJens Wiklander Shuo Chen). 1117*817466cbSJens Wiklander * oid_get_numeric_string() used to truncate the output without returning an 1118*817466cbSJens Wiklander error if the output buffer was just 1 byte too small. 1119*817466cbSJens Wiklander * dhm_parse_dhm() (hence dhm_parse_dhmfile()) did not set dhm->len. 1120*817466cbSJens Wiklander * Calling pk_debug() on an RSA-alt key would segfault. 1121*817466cbSJens Wiklander * pk_get_size() and pk_get_len() were off by a factor 8 for RSA-alt keys. 1122*817466cbSJens Wiklander * Potential buffer overwrite in pem_write_buffer() because of low length 1123*817466cbSJens Wiklander indication (found by Thijs Alkemade) 1124*817466cbSJens Wiklander * EC curves constants, which should be only in ROM since 1.3.3, were also 1125*817466cbSJens Wiklander stored in RAM due to missing 'const's (found by Gergely Budai). 1126*817466cbSJens Wiklander 1127*817466cbSJens Wiklander= PolarSSL 1.3.5 released on 2014-03-26 1128*817466cbSJens WiklanderFeatures 1129*817466cbSJens Wiklander * HMAC-DRBG as a separate module 1130*817466cbSJens Wiklander * Option to set the Curve preference order (disabled by default) 1131*817466cbSJens Wiklander * Single Platform compatilibity layer (for memory / printf / fprintf) 1132*817466cbSJens Wiklander * Ability to provide alternate timing implementation 1133*817466cbSJens Wiklander * Ability to force the entropy module to use SHA-256 as its basis 1134*817466cbSJens Wiklander (POLARSSL_ENTROPY_FORCE_SHA256) 1135*817466cbSJens Wiklander * Testing script ssl-opt.sh added for testing 'live' ssl option 1136*817466cbSJens Wiklander interoperability against OpenSSL and PolarSSL 1137*817466cbSJens Wiklander * Support for reading EC keys that use SpecifiedECDomain in some cases. 1138*817466cbSJens Wiklander * Entropy module now supports seed writing and reading 1139*817466cbSJens Wiklander 1140*817466cbSJens WiklanderChanges 1141*817466cbSJens Wiklander * Deprecated the Memory layer 1142*817466cbSJens Wiklander * entropy_add_source(), entropy_update_manual() and entropy_gather() 1143*817466cbSJens Wiklander now thread-safe if POLARSSL_THREADING_C defined 1144*817466cbSJens Wiklander * Improvements to the CMake build system, contributed by Julian Ospald. 1145*817466cbSJens Wiklander * Work around a bug of the version of Clang shipped by Apple with Mavericks 1146*817466cbSJens Wiklander that prevented bignum.c from compiling. (Reported by Rafael Baptista.) 1147*817466cbSJens Wiklander * Revamped the compat.sh interoperatibility script to include support for 1148*817466cbSJens Wiklander testing against GnuTLS 1149*817466cbSJens Wiklander * Deprecated ssl_set_own_cert_rsa() and ssl_set_own_cert_rsa_alt() 1150*817466cbSJens Wiklander * Improvements to tests/Makefile, contributed by Oden Eriksson. 1151*817466cbSJens Wiklander 1152*817466cbSJens WiklanderSecurity 1153*817466cbSJens Wiklander * Forbid change of server certificate during renegotiation to prevent 1154*817466cbSJens Wiklander "triple handshake" attack when authentication mode is 'optional' (the 1155*817466cbSJens Wiklander attack was already impossible when authentication is required). 1156*817466cbSJens Wiklander * Check notBefore timestamp of certificates and CRLs from the future. 1157*817466cbSJens Wiklander * Forbid sequence number wrapping 1158*817466cbSJens Wiklander * Fixed possible buffer overflow with overlong PSK 1159*817466cbSJens Wiklander * Possible remotely-triggered out-of-bounds memory access fixed (found by 1160*817466cbSJens Wiklander TrustInSoft) 1161*817466cbSJens Wiklander 1162*817466cbSJens WiklanderBugfix 1163*817466cbSJens Wiklander * ecp_gen_keypair() does more tries to prevent failure because of 1164*817466cbSJens Wiklander statistics 1165*817466cbSJens Wiklander * Fixed bug in RSA PKCS#1 v1.5 "reversed" operations 1166*817466cbSJens Wiklander * Fixed testing with out-of-source builds using cmake 1167*817466cbSJens Wiklander * Fixed version-major intolerance in server 1168*817466cbSJens Wiklander * Fixed CMake symlinking on out-of-source builds 1169*817466cbSJens Wiklander * Fixed dependency issues in test suite 1170*817466cbSJens Wiklander * Programs rsa_sign_pss and rsa_verify_pss were not using PSS since 1.3.0 1171*817466cbSJens Wiklander * Bignum's MIPS-32 assembly was used on MIPS-64, causing chaos. (Found by 1172*817466cbSJens Wiklander Alex Wilson.) 1173*817466cbSJens Wiklander * ssl_cache was creating entries when max_entries=0 if TIMING_C was enabled. 1174*817466cbSJens Wiklander * m_sleep() was sleeping twice too long on most Unix platforms. 1175*817466cbSJens Wiklander * Fixed bug with session tickets and non-blocking I/O in the unlikely case 1176*817466cbSJens Wiklander send() would return an EAGAIN error when sending the ticket. 1177*817466cbSJens Wiklander * ssl_cache was leaking memory when reusing a timed out entry containing a 1178*817466cbSJens Wiklander client certificate. 1179*817466cbSJens Wiklander * ssl_srv was leaking memory when client presented a timed out ticket 1180*817466cbSJens Wiklander containing a client certificate 1181*817466cbSJens Wiklander * ssl_init() was leaving a dirty pointer in ssl_context if malloc of 1182*817466cbSJens Wiklander out_ctr failed 1183*817466cbSJens Wiklander * ssl_handshake_init() was leaving dirty pointers in subcontexts if malloc 1184*817466cbSJens Wiklander of one of them failed 1185*817466cbSJens Wiklander * Fix typo in rsa_copy() that impacted PKCS#1 v2 contexts 1186*817466cbSJens Wiklander * x509_get_current_time() uses localtime_r() to prevent thread issues 1187*817466cbSJens Wiklander 1188*817466cbSJens Wiklander= PolarSSL 1.3.4 released on 2014-01-27 1189*817466cbSJens WiklanderFeatures 1190*817466cbSJens Wiklander * Support for the Koblitz curves: secp192k1, secp224k1, secp256k1 1191*817466cbSJens Wiklander * Support for RIPEMD-160 1192*817466cbSJens Wiklander * Support for AES CFB8 mode 1193*817466cbSJens Wiklander * Support for deterministic ECDSA (RFC 6979) 1194*817466cbSJens Wiklander 1195*817466cbSJens WiklanderBugfix 1196*817466cbSJens Wiklander * Potential memory leak in bignum_selftest() 1197*817466cbSJens Wiklander * Replaced expired test certificate 1198*817466cbSJens Wiklander * ssl_mail_client now terminates lines with CRLF, instead of LF 1199*817466cbSJens Wiklander * net module handles timeouts on blocking sockets better (found by Tilman 1200*817466cbSJens Wiklander Sauerbeck) 1201*817466cbSJens Wiklander * Assembly format fixes in bn_mul.h 1202*817466cbSJens Wiklander 1203*817466cbSJens WiklanderSecurity 1204*817466cbSJens Wiklander * Missing MPI_CHK calls added around unguarded mpi calls (found by 1205*817466cbSJens Wiklander TrustInSoft) 1206*817466cbSJens Wiklander 1207*817466cbSJens Wiklander= PolarSSL 1.3.3 released on 2013-12-31 1208*817466cbSJens WiklanderFeatures 1209*817466cbSJens Wiklander * EC key generation support in gen_key app 1210*817466cbSJens Wiklander * Support for adhering to client ciphersuite order preference 1211*817466cbSJens Wiklander (POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE) 1212*817466cbSJens Wiklander * Support for Curve25519 1213*817466cbSJens Wiklander * Support for ECDH-RSA and ECDH-ECDSA key exchanges and ciphersuites 1214*817466cbSJens Wiklander * Support for IPv6 in the NET module 1215*817466cbSJens Wiklander * AES-NI support for AES, AES-GCM and AES key scheduling 1216*817466cbSJens Wiklander * SSL Pthread-based server example added (ssl_pthread_server) 1217*817466cbSJens Wiklander 1218*817466cbSJens WiklanderChanges 1219*817466cbSJens Wiklander * gen_prime() speedup 1220*817466cbSJens Wiklander * Speedup of ECP multiplication operation 1221*817466cbSJens Wiklander * Relaxed some SHA2 ciphersuite's version requirements 1222*817466cbSJens Wiklander * Dropped use of readdir_r() instead of readdir() with threading support 1223*817466cbSJens Wiklander * More constant-time checks in the RSA module 1224*817466cbSJens Wiklander * Split off curves from ecp.c into ecp_curves.c 1225*817466cbSJens Wiklander * Curves are now stored fully in ROM 1226*817466cbSJens Wiklander * Memory usage optimizations in ECP module 1227*817466cbSJens Wiklander * Removed POLARSSL_THREADING_DUMMY 1228*817466cbSJens Wiklander 1229*817466cbSJens WiklanderBugfix 1230*817466cbSJens Wiklander * Fixed bug in mpi_set_bit() on platforms where t_uint is wider than int 1231*817466cbSJens Wiklander * Fixed X.509 hostname comparison (with non-regular characters) 1232*817466cbSJens Wiklander * SSL now gracefully handles missing RNG 1233*817466cbSJens Wiklander * Missing defines / cases for RSA_PSK key exchange 1234*817466cbSJens Wiklander * crypt_and_hash app checks MAC before final decryption 1235*817466cbSJens Wiklander * Potential memory leak in ssl_ticket_keys_init() 1236*817466cbSJens Wiklander * Memory leak in benchmark application 1237*817466cbSJens Wiklander * Fixed x509_crt_parse_path() bug on Windows platforms 1238*817466cbSJens Wiklander * Added missing MPI_CHK() around some statements in mpi_div_mpi() (found by 1239*817466cbSJens Wiklander TrustInSoft) 1240*817466cbSJens Wiklander * Fixed potential overflow in certificate size verification in 1241*817466cbSJens Wiklander ssl_write_certificate() (found by TrustInSoft) 1242*817466cbSJens Wiklander 1243*817466cbSJens WiklanderSecurity 1244*817466cbSJens Wiklander * Possible remotely-triggered out-of-bounds memory access fixed (found by 1245*817466cbSJens Wiklander TrustInSoft) 1246*817466cbSJens Wiklander 1247*817466cbSJens Wiklander= PolarSSL 1.3.2 released on 2013-11-04 1248*817466cbSJens WiklanderFeatures 1249*817466cbSJens Wiklander * PK tests added to test framework 1250*817466cbSJens Wiklander * Added optional optimization for NIST MODP curves (POLARSSL_ECP_NIST_OPTIM) 1251*817466cbSJens Wiklander * Support for Camellia-GCM mode and ciphersuites 1252*817466cbSJens Wiklander 1253*817466cbSJens WiklanderChanges 1254*817466cbSJens Wiklander * Padding checks in cipher layer are now constant-time 1255*817466cbSJens Wiklander * Value comparisons in SSL layer are now constant-time 1256*817466cbSJens Wiklander * Support for serialNumber, postalAddress and postalCode in X509 names 1257*817466cbSJens Wiklander * SSL Renegotiation was refactored 1258*817466cbSJens Wiklander 1259*817466cbSJens WiklanderBugfix 1260*817466cbSJens Wiklander * More stringent checks in cipher layer 1261*817466cbSJens Wiklander * Server does not send out extensions not advertised by client 1262*817466cbSJens Wiklander * Prevent possible alignment warnings on casting from char * to 'aligned *' 1263*817466cbSJens Wiklander * Misc fixes and additions to dependency checks 1264*817466cbSJens Wiklander * Const correctness 1265*817466cbSJens Wiklander * cert_write with selfsign should use issuer_name as subject_name 1266*817466cbSJens Wiklander * Fix ECDSA corner case: missing reduction mod N (found by DualTachyon) 1267*817466cbSJens Wiklander * Defines to handle UEFI environment under MSVC 1268*817466cbSJens Wiklander * Server-side initiated renegotiations send HelloRequest 1269*817466cbSJens Wiklander 1270*817466cbSJens Wiklander= PolarSSL 1.3.1 released on 2013-10-15 1271*817466cbSJens WiklanderFeatures 1272*817466cbSJens Wiklander * Support for Brainpool curves and TLS ciphersuites (RFC 7027) 1273*817466cbSJens Wiklander * Support for ECDHE-PSK key-exchange and ciphersuites 1274*817466cbSJens Wiklander * Support for RSA-PSK key-exchange and ciphersuites 1275*817466cbSJens Wiklander 1276*817466cbSJens WiklanderChanges 1277*817466cbSJens Wiklander * RSA blinding locks for a smaller amount of time 1278*817466cbSJens Wiklander * TLS compression only allocates working buffer once 1279*817466cbSJens Wiklander * Introduced POLARSSL_HAVE_READDIR_R for systems without it 1280*817466cbSJens Wiklander * config.h is more script-friendly 1281*817466cbSJens Wiklander 1282*817466cbSJens WiklanderBugfix 1283*817466cbSJens Wiklander * Missing MSVC defines added 1284*817466cbSJens Wiklander * Compile errors with POLARSSL_RSA_NO_CRT 1285*817466cbSJens Wiklander * Header files with 'polarssl/' 1286*817466cbSJens Wiklander * Const correctness 1287*817466cbSJens Wiklander * Possible naming collision in dhm_context 1288*817466cbSJens Wiklander * Better support for MSVC 1289*817466cbSJens Wiklander * threading_set_alt() name 1290*817466cbSJens Wiklander * Added missing x509write_crt_set_version() 1291*817466cbSJens Wiklander 1292*817466cbSJens Wiklander= PolarSSL 1.3.0 released on 2013-10-01 1293*817466cbSJens WiklanderFeatures 1294*817466cbSJens Wiklander * Elliptic Curve Cryptography module added 1295*817466cbSJens Wiklander * Elliptic Curve Diffie Hellman module added 1296*817466cbSJens Wiklander * Ephemeral Elliptic Curve Diffie Hellman support for SSL/TLS 1297*817466cbSJens Wiklander (ECDHE-based ciphersuites) 1298*817466cbSJens Wiklander * Ephemeral Elliptic Curve Digital Signature Algorithm support for SSL/TLS 1299*817466cbSJens Wiklander (ECDSA-based ciphersuites) 1300*817466cbSJens Wiklander * Ability to specify allowed ciphersuites based on the protocol version. 1301*817466cbSJens Wiklander * PSK and DHE-PSK based ciphersuites added 1302*817466cbSJens Wiklander * Memory allocation abstraction layer added 1303*817466cbSJens Wiklander * Buffer-based memory allocator added (no malloc() / free() / HEAP usage) 1304*817466cbSJens Wiklander * Threading abstraction layer added (dummy / pthread / alternate) 1305*817466cbSJens Wiklander * Public Key abstraction layer added 1306*817466cbSJens Wiklander * Parsing Elliptic Curve keys 1307*817466cbSJens Wiklander * Parsing Elliptic Curve certificates 1308*817466cbSJens Wiklander * Support for max_fragment_length extension (RFC 6066) 1309*817466cbSJens Wiklander * Support for truncated_hmac extension (RFC 6066) 1310*817466cbSJens Wiklander * Support for zeros-and-length (ANSI X.923) padding, one-and-zeros 1311*817466cbSJens Wiklander (ISO/IEC 7816-4) padding and zero padding in the cipher layer 1312*817466cbSJens Wiklander * Support for session tickets (RFC 5077) 1313*817466cbSJens Wiklander * Certificate Request (CSR) generation with extensions (key_usage, 1314*817466cbSJens Wiklander ns_cert_type) 1315*817466cbSJens Wiklander * X509 Certificate writing with extensions (basic_constraints, 1316*817466cbSJens Wiklander issuer_key_identifier, etc) 1317*817466cbSJens Wiklander * Optional blinding for RSA, DHM and EC 1318*817466cbSJens Wiklander * Support for multiple active certificate / key pairs in SSL servers for 1319*817466cbSJens Wiklander the same host (Not to be confused with SNI!) 1320*817466cbSJens Wiklander 1321*817466cbSJens WiklanderChanges 1322*817466cbSJens Wiklander * Ability to enable / disable SSL v3 / TLS 1.0 / TLS 1.1 / TLS 1.2 1323*817466cbSJens Wiklander individually 1324*817466cbSJens Wiklander * Introduced separate SSL Ciphersuites module that is based on 1325*817466cbSJens Wiklander Cipher and MD information 1326*817466cbSJens Wiklander * Internals for SSL module adapted to have separate IV pointer that is 1327*817466cbSJens Wiklander dynamically set (Better support for hardware acceleration) 1328*817466cbSJens Wiklander * Moved all OID functionality to a separate module. RSA function 1329*817466cbSJens Wiklander prototypes for the RSA sign and verify functions changed as a result 1330*817466cbSJens Wiklander * Split up the GCM module into a starts/update/finish cycle 1331*817466cbSJens Wiklander * Client and server now filter sent and accepted ciphersuites on minimum 1332*817466cbSJens Wiklander and maximum protocol version 1333*817466cbSJens Wiklander * Ability to disable server_name extension (RFC 6066) 1334*817466cbSJens Wiklander * Renamed error_strerror() to the less conflicting polarssl_strerror() 1335*817466cbSJens Wiklander (Ability to keep old as well with POLARSSL_ERROR_STRERROR_BC) 1336*817466cbSJens Wiklander * SHA2 renamed to SHA256, SHA4 renamed to SHA512 and functions accordingly 1337*817466cbSJens Wiklander * All RSA operations require a random generator for blinding purposes 1338*817466cbSJens Wiklander * X509 core refactored 1339*817466cbSJens Wiklander * x509_crt_verify() now case insensitive for cn (RFC 6125 6.4) 1340*817466cbSJens Wiklander * Also compiles / runs without time-based functions (!POLARSSL_HAVE_TIME) 1341*817466cbSJens Wiklander * Support faulty X509 v1 certificates with extensions 1342*817466cbSJens Wiklander (POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3) 1343*817466cbSJens Wiklander 1344*817466cbSJens WiklanderBugfix 1345*817466cbSJens Wiklander * Fixed parse error in ssl_parse_certificate_request() 1346*817466cbSJens Wiklander * zlib compression/decompression skipped on empty blocks 1347*817466cbSJens Wiklander * Support for AIX header locations in net.c module 1348*817466cbSJens Wiklander * Fixed file descriptor leaks 1349*817466cbSJens Wiklander 1350*817466cbSJens WiklanderSecurity 1351*817466cbSJens Wiklander * RSA blinding on CRT operations to counter timing attacks 1352*817466cbSJens Wiklander (found by Cyril Arnaud and Pierre-Alain Fouque) 1353*817466cbSJens Wiklander 1354*817466cbSJens Wiklander 1355*817466cbSJens Wiklander= Version 1.2.14 released 2015-05-?? 1356*817466cbSJens Wiklander 1357*817466cbSJens WiklanderSecurity 1358*817466cbSJens Wiklander * Fix potential invalid memory read in the server, that allows a client to 1359*817466cbSJens Wiklander crash it remotely (found by Caj Larsson). 1360*817466cbSJens Wiklander * Fix potential invalid memory read in certificate parsing, that allows a 1361*817466cbSJens Wiklander client to crash the server remotely if client authentication is enabled 1362*817466cbSJens Wiklander (found using Codenomicon Defensics). 1363*817466cbSJens Wiklander * Add countermeasure against "Lucky 13 strikes back" cache-based attack, 1364*817466cbSJens Wiklander https://dl.acm.org/citation.cfm?id=2714625 1365*817466cbSJens Wiklander 1366*817466cbSJens WiklanderBugfix 1367*817466cbSJens Wiklander * Fix bug in Via Padlock support (found by Nikos Mavrogiannopoulos). 1368*817466cbSJens Wiklander * Fix hardclock() (only used in the benchmarking program) with some 1369*817466cbSJens Wiklander versions of mingw64 (found by kxjhlele). 1370*817466cbSJens Wiklander * Fix warnings from mingw64 in timing.c (found by kxjklele). 1371*817466cbSJens Wiklander * Fix potential unintended sign extension in asn1_get_len() on 64-bit 1372*817466cbSJens Wiklander platforms (found with Coverity Scan). 1373*817466cbSJens Wiklander 1374*817466cbSJens Wiklander= Version 1.2.13 released 2015-02-16 1375*817466cbSJens WiklanderNote: Although PolarSSL has been renamed to mbed TLS, no changes reflecting 1376*817466cbSJens Wiklander this will be made in the 1.2 branch at this point. 1377*817466cbSJens Wiklander 1378*817466cbSJens WiklanderSecurity 1379*817466cbSJens Wiklander * Fix remotely-triggerable uninitialised pointer dereference caused by 1380*817466cbSJens Wiklander crafted X.509 certificate (TLS server is not affected if it doesn't ask 1381*817466cbSJens Wiklander for a client certificate) (found using Codenomicon Defensics). 1382*817466cbSJens Wiklander * Fix remotely-triggerable memory leak caused by crafted X.509 certificates 1383*817466cbSJens Wiklander (TLS server is not affected if it doesn't ask for a client certificate) 1384*817466cbSJens Wiklander (found using Codenomicon Defensics). 1385*817466cbSJens Wiklander * Fix potential stack overflow while parsing crafted X.509 certificates 1386*817466cbSJens Wiklander (TLS server is not affected if it doesn't ask for a client certificate) 1387*817466cbSJens Wiklander found using Codenomicon Defensics). 1388*817466cbSJens Wiklander * Fix buffer overread of size 1 when parsing crafted X.509 certificates 1389*817466cbSJens Wiklander (TLS server is not affected if it doesn't ask for a client certificate). 1390*817466cbSJens Wiklander 1391*817466cbSJens WiklanderBugfix 1392*817466cbSJens Wiklander * Fix potential undefined behaviour in Camellia. 1393*817466cbSJens Wiklander * Fix memory leaks in PKCS#5 and PKCS#12. 1394*817466cbSJens Wiklander * Stack buffer overflow if ctr_drbg_update() is called with too large 1395*817466cbSJens Wiklander add_len (found by Jean-Philippe Aumasson) (not triggerable remotely). 1396*817466cbSJens Wiklander * Fix bug in MPI/bignum on s390/s390x (reported by Dan Horák) (introduced 1397*817466cbSJens Wiklander in 1.2.12). 1398*817466cbSJens Wiklander * Fix unchecked return code in x509_crt_parse_path() on Windows (found by 1399*817466cbSJens Wiklander Peter Vaskovic). 1400*817466cbSJens Wiklander * Fix assembly selection for MIPS64 (thanks to James Cowgill). 1401*817466cbSJens Wiklander * ssl_get_verify_result() now works even if the handshake was aborted due 1402*817466cbSJens Wiklander to a failed verification (found by Fredrik Axelsson). 1403*817466cbSJens Wiklander * Skip writing and parsing signature_algorithm extension if none of the 1404*817466cbSJens Wiklander key exchanges enabled needs certificates. This fixes a possible interop 1405*817466cbSJens Wiklander issue with some servers when a zero-length extension was sent. (Reported 1406*817466cbSJens Wiklander by Peter Dettman.) 1407*817466cbSJens Wiklander * On a 0-length input, base64_encode() did not correctly set output length 1408*817466cbSJens Wiklander (found by Hendrik van den Boogaard). 1409*817466cbSJens Wiklander 1410*817466cbSJens WiklanderChanges 1411*817466cbSJens Wiklander * Blind RSA private operations even when POLARSSL_RSA_NO_CRT is defined. 1412*817466cbSJens Wiklander * Forbid repeated extensions in X.509 certificates. 1413*817466cbSJens Wiklander * Add compile-time option POLARSSL_X509_MAX_INTERMEDIATE_CA to limit the 1414*817466cbSJens Wiklander length of an X.509 verification chain (default = 8). 1415*817466cbSJens Wiklander= Version 1.2.12 released 2014-10-24 1416*817466cbSJens Wiklander 1417*817466cbSJens WiklanderSecurity 1418*817466cbSJens Wiklander * Remotely-triggerable memory leak when parsing some X.509 certificates 1419*817466cbSJens Wiklander (server is not affected if it doesn't ask for a client certificate). 1420*817466cbSJens Wiklander (Found using Codenomicon Defensics.) 1421*817466cbSJens Wiklander 1422*817466cbSJens WiklanderBugfix 1423*817466cbSJens Wiklander * Fix potential bad read in parsing ServerHello (found by Adrien 1424*817466cbSJens Wiklander Vialletelle). 1425*817466cbSJens Wiklander * ssl_close_notify() could send more than one message in some circumstances 1426*817466cbSJens Wiklander with non-blocking I/O. 1427*817466cbSJens Wiklander * x509_crt_parse() did not increase total_failed on PEM error 1428*817466cbSJens Wiklander * Fix compiler warnings on iOS (found by Sander Niemeijer). 1429*817466cbSJens Wiklander * Don't print uninitialised buffer in ssl_mail_client (found by Marc Abel). 1430*817466cbSJens Wiklander * Fix net_accept() regarding non-blocking sockets (found by Luca Pesce). 1431*817466cbSJens Wiklander * ssl_read() could return non-application data records on server while 1432*817466cbSJens Wiklander renegotation was pending, and on client when a HelloRequest was received. 1433*817466cbSJens Wiklander * Fix warnings from Clang's scan-build (contributed by Alfred Klomp). 1434*817466cbSJens Wiklander 1435*817466cbSJens WiklanderChanges 1436*817466cbSJens Wiklander * X.509 certificates with more than one AttributeTypeAndValue per 1437*817466cbSJens Wiklander RelativeDistinguishedName are not accepted any more. 1438*817466cbSJens Wiklander * ssl_read() now returns POLARSSL_ERR_NET_WANT_READ rather than 1439*817466cbSJens Wiklander POLARSSL_ERR_SSL_UNEXPECTED_MESSAGE on harmless alerts. 1440*817466cbSJens Wiklander * Accept spaces at end of line or end of buffer in base64_decode(). 1441*817466cbSJens Wiklander 1442*817466cbSJens Wiklander= Version 1.2.11 released 2014-07-11 1443*817466cbSJens WiklanderFeatures 1444*817466cbSJens Wiklander * Entropy module now supports seed writing and reading 1445*817466cbSJens Wiklander 1446*817466cbSJens WiklanderChanges 1447*817466cbSJens Wiklander * Introduced POLARSSL_HAVE_READDIR_R for systems without it 1448*817466cbSJens Wiklander * Improvements to the CMake build system, contributed by Julian Ospald. 1449*817466cbSJens Wiklander * Work around a bug of the version of Clang shipped by Apple with Mavericks 1450*817466cbSJens Wiklander that prevented bignum.c from compiling. (Reported by Rafael Baptista.) 1451*817466cbSJens Wiklander * Improvements to tests/Makefile, contributed by Oden Eriksson. 1452*817466cbSJens Wiklander * Use UTC time to check certificate validity. 1453*817466cbSJens Wiklander * Reject certificates with times not in UTC, per RFC 5280. 1454*817466cbSJens Wiklander * Migrate zeroizing of data to polarssl_zeroize() instead of memset() 1455*817466cbSJens Wiklander against unwanted compiler optimizations 1456*817466cbSJens Wiklander 1457*817466cbSJens WiklanderSecurity 1458*817466cbSJens Wiklander * Forbid change of server certificate during renegotiation to prevent 1459*817466cbSJens Wiklander "triple handshake" attack when authentication mode is optional (the 1460*817466cbSJens Wiklander attack was already impossible when authentication is required). 1461*817466cbSJens Wiklander * Check notBefore timestamp of certificates and CRLs from the future. 1462*817466cbSJens Wiklander * Forbid sequence number wrapping 1463*817466cbSJens Wiklander * Prevent potential NULL pointer dereference in ssl_read_record() (found by 1464*817466cbSJens Wiklander TrustInSoft) 1465*817466cbSJens Wiklander * Fix length checking for AEAD ciphersuites (found by Codenomicon). 1466*817466cbSJens Wiklander It was possible to crash the server (and client) using crafted messages 1467*817466cbSJens Wiklander when a GCM suite was chosen. 1468*817466cbSJens Wiklander 1469*817466cbSJens WiklanderBugfix 1470*817466cbSJens Wiklander * Fixed X.509 hostname comparison (with non-regular characters) 1471*817466cbSJens Wiklander * SSL now gracefully handles missing RNG 1472*817466cbSJens Wiklander * crypt_and_hash app checks MAC before final decryption 1473*817466cbSJens Wiklander * Fixed x509_crt_parse_path() bug on Windows platforms 1474*817466cbSJens Wiklander * Added missing MPI_CHK() around some statements in mpi_div_mpi() (found by 1475*817466cbSJens Wiklander TrustInSoft) 1476*817466cbSJens Wiklander * Fixed potential overflow in certificate size verification in 1477*817466cbSJens Wiklander ssl_write_certificate() (found by TrustInSoft) 1478*817466cbSJens Wiklander * Fix ASM format in bn_mul.h 1479*817466cbSJens Wiklander * Potential memory leak in bignum_selftest() 1480*817466cbSJens Wiklander * Replaced expired test certificate 1481*817466cbSJens Wiklander * ssl_mail_client now terminates lines with CRLF, instead of LF 1482*817466cbSJens Wiklander * Fix bug in RSA PKCS#1 v1.5 "reversed" operations 1483*817466cbSJens Wiklander * Fixed testing with out-of-source builds using cmake 1484*817466cbSJens Wiklander * Fixed version-major intolerance in server 1485*817466cbSJens Wiklander * Fixed CMake symlinking on out-of-source builds 1486*817466cbSJens Wiklander * Bignum's MIPS-32 assembly was used on MIPS-64, causing chaos. (Found by 1487*817466cbSJens Wiklander Alex Wilson.) 1488*817466cbSJens Wiklander * ssl_init() was leaving a dirty pointer in ssl_context if malloc of 1489*817466cbSJens Wiklander out_ctr failed 1490*817466cbSJens Wiklander * ssl_handshake_init() was leaving dirty pointers in subcontexts if malloc 1491*817466cbSJens Wiklander of one of them failed 1492*817466cbSJens Wiklander * x509_get_current_time() uses localtime_r() to prevent thread issues 1493*817466cbSJens Wiklander * Some example server programs were not sending the close_notify alert. 1494*817466cbSJens Wiklander * Potential memory leak in mpi_exp_mod() when error occurs during 1495*817466cbSJens Wiklander calculation of RR. 1496*817466cbSJens Wiklander * Improve interoperability by not writing extension length in ClientHello 1497*817466cbSJens Wiklander when no extensions are present (found by Matthew Page) 1498*817466cbSJens Wiklander * rsa_check_pubkey() now allows an E up to N 1499*817466cbSJens Wiklander * On OpenBSD, use arc4random_buf() instead of rand() to prevent warnings 1500*817466cbSJens Wiklander * mpi_fill_random() was creating numbers larger than requested on 1501*817466cbSJens Wiklander big-endian platform when size was not an integer number of limbs 1502*817466cbSJens Wiklander * Fix detection of DragonflyBSD in net.c (found by Markus Pfeiffer) 1503*817466cbSJens Wiklander * Stricter check on SSL ClientHello internal sizes compared to actual packet 1504*817466cbSJens Wiklander size (found by TrustInSoft) 1505*817466cbSJens Wiklander * Fix preprocessor checks for bn_mul PPC asm (found by Barry K. Nathan). 1506*817466cbSJens Wiklander * Use \n\t rather than semicolons for bn_mul asm, since some assemblers 1507*817466cbSJens Wiklander interpret semicolons as comment delimiters (found by Barry K. Nathan). 1508*817466cbSJens Wiklander * Disable broken Sparc64 bn_mul assembly (found by Florian Obser). 1509*817466cbSJens Wiklander * Fix base64_decode() to return and check length correctly (in case of 1510*817466cbSJens Wiklander tight buffers) 1511*817466cbSJens Wiklander 1512*817466cbSJens Wiklander= Version 1.2.10 released 2013-10-07 1513*817466cbSJens WiklanderChanges 1514*817466cbSJens Wiklander * Changed RSA blinding to a slower but thread-safe version 1515*817466cbSJens Wiklander 1516*817466cbSJens WiklanderBugfix 1517*817466cbSJens Wiklander * Fixed memory leak in RSA as a result of introduction of blinding 1518*817466cbSJens Wiklander * Fixed ssl_pkcs11_decrypt() prototype 1519*817466cbSJens Wiklander * Fixed MSVC project files 1520*817466cbSJens Wiklander 1521*817466cbSJens Wiklander= Version 1.2.9 released 2013-10-01 1522*817466cbSJens WiklanderChanges 1523*817466cbSJens Wiklander * x509_verify() now case insensitive for cn (RFC 6125 6.4) 1524*817466cbSJens Wiklander 1525*817466cbSJens WiklanderBugfix 1526*817466cbSJens Wiklander * Fixed potential memory leak when failing to resume a session 1527*817466cbSJens Wiklander * Fixed potential file descriptor leaks (found by Remi Gacogne) 1528*817466cbSJens Wiklander * Minor fixes 1529*817466cbSJens Wiklander 1530*817466cbSJens WiklanderSecurity 1531*817466cbSJens Wiklander * Fixed potential heap buffer overflow on large hostname setting 1532*817466cbSJens Wiklander * Fixed potential negative value misinterpretation in load_file() 1533*817466cbSJens Wiklander * RSA blinding on CRT operations to counter timing attacks 1534*817466cbSJens Wiklander (found by Cyril Arnaud and Pierre-Alain Fouque) 1535*817466cbSJens Wiklander 1536*817466cbSJens Wiklander= Version 1.2.8 released 2013-06-19 1537*817466cbSJens WiklanderFeatures 1538*817466cbSJens Wiklander * Parsing of PKCS#8 encrypted private key files 1539*817466cbSJens Wiklander * PKCS#12 PBE and derivation functions 1540*817466cbSJens Wiklander * Centralized module option values in config.h to allow user-defined 1541*817466cbSJens Wiklander settings without editing header files by using POLARSSL_CONFIG_OPTIONS 1542*817466cbSJens Wiklander 1543*817466cbSJens WiklanderChanges 1544*817466cbSJens Wiklander * HAVEGE random generator disabled by default 1545*817466cbSJens Wiklander * Internally split up x509parse_key() into a (PEM) handler function 1546*817466cbSJens Wiklander and specific DER parser functions for the PKCS#1 and unencrypted 1547*817466cbSJens Wiklander PKCS#8 private key formats 1548*817466cbSJens Wiklander * Added mechanism to provide alternative implementations for all 1549*817466cbSJens Wiklander symmetric cipher and hash algorithms (e.g. POLARSSL_AES_ALT in 1550*817466cbSJens Wiklander config.h) 1551*817466cbSJens Wiklander * PKCS#5 module added. Moved PBKDF2 functionality inside and deprecated 1552*817466cbSJens Wiklander old PBKDF2 module 1553*817466cbSJens Wiklander 1554*817466cbSJens WiklanderBugfix 1555*817466cbSJens Wiklander * Secure renegotiation extension should only be sent in case client 1556*817466cbSJens Wiklander supports secure renegotiation 1557*817466cbSJens Wiklander * Fixed offset for cert_type list in ssl_parse_certificate_request() 1558*817466cbSJens Wiklander * Fixed const correctness issues that have no impact on the ABI 1559*817466cbSJens Wiklander * x509parse_crt() now better handles PEM error situations 1560*817466cbSJens Wiklander * ssl_parse_certificate() now calls x509parse_crt_der() directly 1561*817466cbSJens Wiklander instead of the x509parse_crt() wrapper that can also parse PEM 1562*817466cbSJens Wiklander certificates 1563*817466cbSJens Wiklander * x509parse_crtpath() is now reentrant and uses more portable stat() 1564*817466cbSJens Wiklander * Fixed bignum.c and bn_mul.h to support Thumb2 and LLVM compiler 1565*817466cbSJens Wiklander * Fixed values for 2-key Triple DES in cipher layer 1566*817466cbSJens Wiklander * ssl_write_certificate_request() can handle empty ca_chain 1567*817466cbSJens Wiklander 1568*817466cbSJens WiklanderSecurity 1569*817466cbSJens Wiklander * A possible DoS during the SSL Handshake, due to faulty parsing of 1570*817466cbSJens Wiklander PEM-encoded certificates has been fixed (found by Jack Lloyd) 1571*817466cbSJens Wiklander 1572*817466cbSJens Wiklander= Version 1.2.7 released 2013-04-13 1573*817466cbSJens WiklanderFeatures 1574*817466cbSJens Wiklander * Ability to specify allowed ciphersuites based on the protocol version. 1575*817466cbSJens Wiklander 1576*817466cbSJens WiklanderChanges 1577*817466cbSJens Wiklander * Default Blowfish keysize is now 128-bits 1578*817466cbSJens Wiklander * Test suites made smaller to accommodate Raspberry Pi 1579*817466cbSJens Wiklander 1580*817466cbSJens WiklanderBugfix 1581*817466cbSJens Wiklander * Fix for MPI assembly for ARM 1582*817466cbSJens Wiklander * GCM adapted to support sizes > 2^29 1583*817466cbSJens Wiklander 1584*817466cbSJens Wiklander= Version 1.2.6 released 2013-03-11 1585*817466cbSJens WiklanderBugfix 1586*817466cbSJens Wiklander * Fixed memory leak in ssl_free() and ssl_reset() for active session 1587*817466cbSJens Wiklander * Corrected GCM counter incrementation to use only 32-bits instead of 1588*817466cbSJens Wiklander 128-bits (found by Yawning Angel) 1589*817466cbSJens Wiklander * Fixes for 64-bit compilation with MS Visual Studio 1590*817466cbSJens Wiklander * Fixed net_bind() for specified IP addresses on little endian systems 1591*817466cbSJens Wiklander * Fixed assembly code for ARM (Thumb and regular) for some compilers 1592*817466cbSJens Wiklander 1593*817466cbSJens WiklanderChanges 1594*817466cbSJens Wiklander * Internally split up rsa_pkcs1_encrypt(), rsa_pkcs1_decrypt(), 1595*817466cbSJens Wiklander rsa_pkcs1_sign() and rsa_pkcs1_verify() to separate PKCS#1 v1.5 and 1596*817466cbSJens Wiklander PKCS#1 v2.1 functions 1597*817466cbSJens Wiklander * Added support for custom labels when using rsa_rsaes_oaep_encrypt() 1598*817466cbSJens Wiklander or rsa_rsaes_oaep_decrypt() 1599*817466cbSJens Wiklander * Re-added handling for SSLv2 Client Hello when the define 1600*817466cbSJens Wiklander POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is set 1601*817466cbSJens Wiklander * The SSL session cache module (ssl_cache) now also retains peer_cert 1602*817466cbSJens Wiklander information (not the entire chain) 1603*817466cbSJens Wiklander 1604*817466cbSJens WiklanderSecurity 1605*817466cbSJens Wiklander * Removed further timing differences during SSL message decryption in 1606*817466cbSJens Wiklander ssl_decrypt_buf() 1607*817466cbSJens Wiklander * Removed timing differences due to bad padding from 1608*817466cbSJens Wiklander rsa_rsaes_pkcs1_v15_decrypt() and rsa_pkcs1_decrypt() for PKCS#1 v1.5 1609*817466cbSJens Wiklander operations 1610*817466cbSJens Wiklander 1611*817466cbSJens Wiklander= Version 1.2.5 released 2013-02-02 1612*817466cbSJens WiklanderChanges 1613*817466cbSJens Wiklander * Allow enabling of dummy error_strerror() to support some use-cases 1614*817466cbSJens Wiklander * Debug messages about padding errors during SSL message decryption are 1615*817466cbSJens Wiklander disabled by default and can be enabled with POLARSSL_SSL_DEBUG_ALL 1616*817466cbSJens Wiklander * Sending of security-relevant alert messages that do not break 1617*817466cbSJens Wiklander interoperability can be switched on/off with the flag 1618*817466cbSJens Wiklander POLARSSL_SSL_ALL_ALERT_MESSAGES 1619*817466cbSJens Wiklander 1620*817466cbSJens WiklanderSecurity 1621*817466cbSJens Wiklander * Removed timing differences during SSL message decryption in 1622*817466cbSJens Wiklander ssl_decrypt_buf() due to badly formatted padding 1623*817466cbSJens Wiklander 1624*817466cbSJens Wiklander= Version 1.2.4 released 2013-01-25 1625*817466cbSJens WiklanderChanges 1626*817466cbSJens Wiklander * More advanced SSL ciphersuite representation and moved to more dynamic 1627*817466cbSJens Wiklander SSL core 1628*817466cbSJens Wiklander * Added ssl_handshake_step() to allow single stepping the handshake process 1629*817466cbSJens Wiklander 1630*817466cbSJens WiklanderBugfix 1631*817466cbSJens Wiklander * Memory leak when using RSA_PKCS_V21 operations fixed 1632*817466cbSJens Wiklander * Handle future version properly in ssl_write_certificate_request() 1633*817466cbSJens Wiklander * Correctly handle CertificateRequest message in client for <= TLS 1.1 1634*817466cbSJens Wiklander without DN list 1635*817466cbSJens Wiklander 1636*817466cbSJens Wiklander= Version 1.2.3 released 2012-11-26 1637*817466cbSJens WiklanderBugfix 1638*817466cbSJens Wiklander * Server not always sending correct CertificateRequest message 1639*817466cbSJens Wiklander 1640*817466cbSJens Wiklander= Version 1.2.2 released 2012-11-24 1641*817466cbSJens WiklanderChanges 1642*817466cbSJens Wiklander * Added p_hw_data to ssl_context for context specific hardware acceleration 1643*817466cbSJens Wiklander data 1644*817466cbSJens Wiklander * During verify trust-CA is only checked for expiration and CRL presence 1645*817466cbSJens Wiklander 1646*817466cbSJens WiklanderBugfixes 1647*817466cbSJens Wiklander * Fixed client authentication compatibility 1648*817466cbSJens Wiklander * Fixed dependency on POLARSSL_SHA4_C in SSL modules 1649*817466cbSJens Wiklander 1650*817466cbSJens Wiklander= Version 1.2.1 released 2012-11-20 1651*817466cbSJens WiklanderChanges 1652*817466cbSJens Wiklander * Depth that the certificate verify callback receives is now numbered 1653*817466cbSJens Wiklander bottom-up (Peer cert depth is 0) 1654*817466cbSJens Wiklander 1655*817466cbSJens WiklanderBugfixes 1656*817466cbSJens Wiklander * Fixes for MSVC6 1657*817466cbSJens Wiklander * Moved mpi_inv_mod() outside POLARSSL_GENPRIME 1658*817466cbSJens Wiklander * Allow R and A to point to same mpi in mpi_div_mpi (found by Manuel 1659*817466cbSJens Wiklander Pégourié-Gonnard) 1660*817466cbSJens Wiklander * Fixed possible segfault in mpi_shift_r() (found by Manuel 1661*817466cbSJens Wiklander Pégourié-Gonnard) 1662*817466cbSJens Wiklander * Added max length check for rsa_pkcs1_sign with PKCS#1 v2.1 1663*817466cbSJens Wiklander 1664*817466cbSJens Wiklander= Version 1.2.0 released 2012-10-31 1665*817466cbSJens WiklanderFeatures 1666*817466cbSJens Wiklander * Added support for NULL cipher (POLARSSL_CIPHER_NULL_CIPHER) and weak 1667*817466cbSJens Wiklander ciphersuites (POLARSSL_ENABLE_WEAK_CIPHERSUITES). They are disabled by 1668*817466cbSJens Wiklander default! 1669*817466cbSJens Wiklander * Added support for wildcard certificates 1670*817466cbSJens Wiklander * Added support for multi-domain certificates through the X509 Subject 1671*817466cbSJens Wiklander Alternative Name extension 1672*817466cbSJens Wiklander * Added preliminary ASN.1 buffer writing support 1673*817466cbSJens Wiklander * Added preliminary X509 Certificate Request writing support 1674*817466cbSJens Wiklander * Added key_app_writer example application 1675*817466cbSJens Wiklander * Added cert_req example application 1676*817466cbSJens Wiklander * Added base Galois Counter Mode (GCM) for AES 1677*817466cbSJens Wiklander * Added TLS 1.2 support (RFC 5246) 1678*817466cbSJens Wiklander * Added GCM suites to TLS 1.2 (RFC 5288) 1679*817466cbSJens Wiklander * Added commandline error code convertor (util/strerror) 1680*817466cbSJens Wiklander * Added support for Hardware Acceleration hooking in SSL/TLS 1681*817466cbSJens Wiklander * Added OpenSSL / PolarSSL compatibility script (tests/compat.sh) and 1682*817466cbSJens Wiklander example application (programs/ssl/o_p_test) (requires OpenSSL) 1683*817466cbSJens Wiklander * Added X509 CA Path support 1684*817466cbSJens Wiklander * Added Thumb assembly optimizations 1685*817466cbSJens Wiklander * Added DEFLATE compression support as per RFC3749 (requires zlib) 1686*817466cbSJens Wiklander * Added blowfish algorithm (Generic and cipher layer) 1687*817466cbSJens Wiklander * Added PKCS#5 PBKDF2 key derivation function 1688*817466cbSJens Wiklander * Added Secure Renegotiation (RFC 5746) 1689*817466cbSJens Wiklander * Added predefined DHM groups from RFC 5114 1690*817466cbSJens Wiklander * Added simple SSL session cache implementation 1691*817466cbSJens Wiklander * Added ServerName extension parsing (SNI) at server side 1692*817466cbSJens Wiklander * Added option to add minimum accepted SSL/TLS protocol version 1693*817466cbSJens Wiklander 1694*817466cbSJens WiklanderChanges 1695*817466cbSJens Wiklander * Removed redundant POLARSSL_DEBUG_MSG define 1696*817466cbSJens Wiklander * AES code only check for Padlock once 1697*817466cbSJens Wiklander * Fixed const-correctness mpi_get_bit() 1698*817466cbSJens Wiklander * Documentation for mpi_lsb() and mpi_msb() 1699*817466cbSJens Wiklander * Moved out_msg to out_hdr + 32 to support hardware acceleration 1700*817466cbSJens Wiklander * Changed certificate verify behaviour to comply with RFC 6125 section 6.3 1701*817466cbSJens Wiklander to not match CN if subjectAltName extension is present (Closes ticket #56) 1702*817466cbSJens Wiklander * Cipher layer cipher_mode_t POLARSSL_MODE_CFB128 is renamed to 1703*817466cbSJens Wiklander POLARSSL_MODE_CFB, to also handle different block size CFB modes. 1704*817466cbSJens Wiklander * Removed handling for SSLv2 Client Hello (as per RFC 5246 recommendation) 1705*817466cbSJens Wiklander * Revamped session resumption handling 1706*817466cbSJens Wiklander * Generalized external private key implementation handling (like PKCS#11) 1707*817466cbSJens Wiklander in SSL/TLS 1708*817466cbSJens Wiklander * Revamped x509_verify() and the SSL f_vrfy callback implementations 1709*817466cbSJens Wiklander * Moved from unsigned long to fixed width uint32_t types throughout code 1710*817466cbSJens Wiklander * Renamed ciphersuites naming scheme to IANA reserved names 1711*817466cbSJens Wiklander 1712*817466cbSJens WiklanderBugfix 1713*817466cbSJens Wiklander * Fixed handling error in mpi_cmp_mpi() on longer B values (found by 1714*817466cbSJens Wiklander Hui Dong) 1715*817466cbSJens Wiklander * Fixed potential heap corruption in x509_name allocation 1716*817466cbSJens Wiklander * Fixed single RSA test that failed on Big Endian systems (Closes ticket #54) 1717*817466cbSJens Wiklander * mpi_exp_mod() now correctly handles negative base numbers (Closes ticket 1718*817466cbSJens Wiklander #52) 1719*817466cbSJens Wiklander * Handle encryption with private key and decryption with public key as per 1720*817466cbSJens Wiklander RFC 2313 1721*817466cbSJens Wiklander * Handle empty certificate subject names 1722*817466cbSJens Wiklander * Prevent reading over buffer boundaries on X509 certificate parsing 1723*817466cbSJens Wiklander * mpi_add_abs() now correctly handles adding short numbers to long numbers 1724*817466cbSJens Wiklander with carry rollover (found by Ruslan Yushchenko) 1725*817466cbSJens Wiklander * Handle existence of OpenSSL Trust Extensions at end of X.509 DER blob 1726*817466cbSJens Wiklander * Fixed MPI assembly for SPARC64 platform 1727*817466cbSJens Wiklander 1728*817466cbSJens WiklanderSecurity 1729*817466cbSJens Wiklander * Fixed potential memory zeroization on miscrafted RSA key (found by Eloi 1730*817466cbSJens Wiklander Vanderbeken) 1731*817466cbSJens Wiklander 1732*817466cbSJens Wiklander= Version 1.1.8 released on 2013-10-01 1733*817466cbSJens WiklanderBugfix 1734*817466cbSJens Wiklander * Fixed potential memory leak when failing to resume a session 1735*817466cbSJens Wiklander * Fixed potential file descriptor leaks 1736*817466cbSJens Wiklander 1737*817466cbSJens WiklanderSecurity 1738*817466cbSJens Wiklander * Potential buffer-overflow for ssl_read_record() (independently found by 1739*817466cbSJens Wiklander both TrustInSoft and Paul Brodeur of Leviathan Security Group) 1740*817466cbSJens Wiklander * Potential negative value misinterpretation in load_file() 1741*817466cbSJens Wiklander * Potential heap buffer overflow on large hostname setting 1742*817466cbSJens Wiklander 1743*817466cbSJens Wiklander= Version 1.1.7 released on 2013-06-19 1744*817466cbSJens WiklanderChanges 1745*817466cbSJens Wiklander * HAVEGE random generator disabled by default 1746*817466cbSJens Wiklander 1747*817466cbSJens WiklanderBugfix 1748*817466cbSJens Wiklander * x509parse_crt() now better handles PEM error situations 1749*817466cbSJens Wiklander * ssl_parse_certificate() now calls x509parse_crt_der() directly 1750*817466cbSJens Wiklander instead of the x509parse_crt() wrapper that can also parse PEM 1751*817466cbSJens Wiklander certificates 1752*817466cbSJens Wiklander * Fixed values for 2-key Triple DES in cipher layer 1753*817466cbSJens Wiklander * ssl_write_certificate_request() can handle empty ca_chain 1754*817466cbSJens Wiklander 1755*817466cbSJens WiklanderSecurity 1756*817466cbSJens Wiklander * A possible DoS during the SSL Handshake, due to faulty parsing of 1757*817466cbSJens Wiklander PEM-encoded certificates has been fixed (found by Jack Lloyd) 1758*817466cbSJens Wiklander 1759*817466cbSJens Wiklander= Version 1.1.6 released on 2013-03-11 1760*817466cbSJens WiklanderBugfix 1761*817466cbSJens Wiklander * Fixed net_bind() for specified IP addresses on little endian systems 1762*817466cbSJens Wiklander 1763*817466cbSJens WiklanderChanges 1764*817466cbSJens Wiklander * Allow enabling of dummy error_strerror() to support some use-cases 1765*817466cbSJens Wiklander * Debug messages about padding errors during SSL message decryption are 1766*817466cbSJens Wiklander disabled by default and can be enabled with POLARSSL_SSL_DEBUG_ALL 1767*817466cbSJens Wiklander 1768*817466cbSJens WiklanderSecurity 1769*817466cbSJens Wiklander * Removed timing differences during SSL message decryption in 1770*817466cbSJens Wiklander ssl_decrypt_buf() 1771*817466cbSJens Wiklander * Removed timing differences due to bad padding from 1772*817466cbSJens Wiklander rsa_rsaes_pkcs1_v15_decrypt() and rsa_pkcs1_decrypt() for PKCS#1 v1.5 1773*817466cbSJens Wiklander operations 1774*817466cbSJens Wiklander 1775*817466cbSJens Wiklander= Version 1.1.5 released on 2013-01-16 1776*817466cbSJens WiklanderBugfix 1777*817466cbSJens Wiklander * Fixed MPI assembly for SPARC64 platform 1778*817466cbSJens Wiklander * Handle existence of OpenSSL Trust Extensions at end of X.509 DER blob 1779*817466cbSJens Wiklander * mpi_add_abs() now correctly handles adding short numbers to long numbers 1780*817466cbSJens Wiklander with carry rollover 1781*817466cbSJens Wiklander * Moved mpi_inv_mod() outside POLARSSL_GENPRIME 1782*817466cbSJens Wiklander * Prevent reading over buffer boundaries on X509 certificate parsing 1783*817466cbSJens Wiklander * mpi_exp_mod() now correctly handles negative base numbers (Closes ticket 1784*817466cbSJens Wiklander #52) 1785*817466cbSJens Wiklander * Fixed possible segfault in mpi_shift_r() (found by Manuel 1786*817466cbSJens Wiklander Pégourié-Gonnard) 1787*817466cbSJens Wiklander * Allow R and A to point to same mpi in mpi_div_mpi (found by Manuel 1788*817466cbSJens Wiklander Pégourié-Gonnard) 1789*817466cbSJens Wiklander * Added max length check for rsa_pkcs1_sign with PKCS#1 v2.1 1790*817466cbSJens Wiklander * Memory leak when using RSA_PKCS_V21 operations fixed 1791*817466cbSJens Wiklander * Handle encryption with private key and decryption with public key as per 1792*817466cbSJens Wiklander RFC 2313 1793*817466cbSJens Wiklander * Fixes for MSVC6 1794*817466cbSJens Wiklander 1795*817466cbSJens WiklanderSecurity 1796*817466cbSJens Wiklander * Fixed potential memory zeroization on miscrafted RSA key (found by Eloi 1797*817466cbSJens Wiklander Vanderbeken) 1798*817466cbSJens Wiklander 1799*817466cbSJens Wiklander= Version 1.1.4 released on 2012-05-31 1800*817466cbSJens WiklanderBugfix 1801*817466cbSJens Wiklander * Correctly handle empty SSL/TLS packets (Found by James Yonan) 1802*817466cbSJens Wiklander * Fixed potential heap corruption in x509_name allocation 1803*817466cbSJens Wiklander * Fixed single RSA test that failed on Big Endian systems (Closes ticket #54) 1804*817466cbSJens Wiklander 1805*817466cbSJens Wiklander= Version 1.1.3 released on 2012-04-29 1806*817466cbSJens WiklanderBugfix 1807*817466cbSJens Wiklander * Fixed random MPI generation to not generate more size than requested. 1808*817466cbSJens Wiklander 1809*817466cbSJens Wiklander= Version 1.1.2 released on 2012-04-26 1810*817466cbSJens WiklanderBugfix 1811*817466cbSJens Wiklander * Fixed handling error in mpi_cmp_mpi() on longer B values (found by 1812*817466cbSJens Wiklander Hui Dong) 1813*817466cbSJens Wiklander 1814*817466cbSJens WiklanderSecurity 1815*817466cbSJens Wiklander * Fixed potential memory corruption on miscrafted client messages (found by 1816*817466cbSJens Wiklander Frama-C team at CEA LIST) 1817*817466cbSJens Wiklander * Fixed generation of DHM parameters to correct length (found by Ruslan 1818*817466cbSJens Wiklander Yushchenko) 1819*817466cbSJens Wiklander 1820*817466cbSJens Wiklander= Version 1.1.1 released on 2012-01-23 1821*817466cbSJens WiklanderBugfix 1822*817466cbSJens Wiklander * Check for failed malloc() in ssl_set_hostname() and x509_get_entries() 1823*817466cbSJens Wiklander (Closes ticket #47, found by Hugo Leisink) 1824*817466cbSJens Wiklander * Fixed issues with Intel compiler on 64-bit systems (Closes ticket #50) 1825*817466cbSJens Wiklander * Fixed multiple compiler warnings for VS6 and armcc 1826*817466cbSJens Wiklander * Fixed bug in CTR_CRBG selftest 1827*817466cbSJens Wiklander 1828*817466cbSJens Wiklander= Version 1.1.0 released on 2011-12-22 1829*817466cbSJens WiklanderFeatures 1830*817466cbSJens Wiklander * Added ssl_session_reset() to allow better multi-connection pools of 1831*817466cbSJens Wiklander SSL contexts without needing to set all non-connection-specific 1832*817466cbSJens Wiklander data and pointers again. Adapted ssl_server to use this functionality. 1833*817466cbSJens Wiklander * Added ssl_set_max_version() to allow clients to offer a lower maximum 1834*817466cbSJens Wiklander supported version to a server to help buggy server implementations. 1835*817466cbSJens Wiklander (Closes ticket #36) 1836*817466cbSJens Wiklander * Added cipher_get_cipher_mode() and cipher_get_cipher_operation() 1837*817466cbSJens Wiklander introspection functions (Closes ticket #40) 1838*817466cbSJens Wiklander * Added CTR_DRBG based on AES-256-CTR (NIST SP 800-90) random generator 1839*817466cbSJens Wiklander * Added a generic entropy accumulator that provides support for adding 1840*817466cbSJens Wiklander custom entropy sources and added some generic and platform dependent 1841*817466cbSJens Wiklander entropy sources 1842*817466cbSJens Wiklander 1843*817466cbSJens WiklanderChanges 1844*817466cbSJens Wiklander * Documentation for AES and Camellia in modes CTR and CFB128 clarified. 1845*817466cbSJens Wiklander * Fixed rsa_encrypt and rsa_decrypt examples to use public key for 1846*817466cbSJens Wiklander encryption and private key for decryption. (Closes ticket #34) 1847*817466cbSJens Wiklander * Inceased maximum size of ASN1 length reads to 32-bits. 1848*817466cbSJens Wiklander * Added an EXPLICIT tag number parameter to x509_get_ext() 1849*817466cbSJens Wiklander * Added a separate CRL entry extension parsing function 1850*817466cbSJens Wiklander * Separated the ASN.1 parsing code from the X.509 specific parsing code. 1851*817466cbSJens Wiklander So now there is a module that is controlled with POLARSSL_ASN1_PARSE_C. 1852*817466cbSJens Wiklander * Changed the defined key-length of DES ciphers in cipher.h to include the 1853*817466cbSJens Wiklander parity bits, to prevent mistakes in copying data. (Closes ticket #33) 1854*817466cbSJens Wiklander * Loads of minimal changes to better support WINCE as a build target 1855*817466cbSJens Wiklander (Credits go to Marco Lizza) 1856*817466cbSJens Wiklander * Added POLARSSL_MPI_WINDOW_SIZE definition to allow easier time to memory 1857*817466cbSJens Wiklander trade-off 1858*817466cbSJens Wiklander * Introduced POLARSSL_MPI_MAX_SIZE and POLARSSL_MPI_MAX_BITS for MPI size 1859*817466cbSJens Wiklander management (Closes ticket #44) 1860*817466cbSJens Wiklander * Changed the used random function pointer to more flexible format. Renamed 1861*817466cbSJens Wiklander havege_rand() to havege_random() to prevent mistakes. Lots of changes as 1862*817466cbSJens Wiklander a consequence in library code and programs 1863*817466cbSJens Wiklander * Moved all examples programs to use the new entropy and CTR_DRBG 1864*817466cbSJens Wiklander * Added permissive certificate parsing to x509parse_crt() and 1865*817466cbSJens Wiklander x509parse_crtfile(). With permissive parsing the parsing does not stop on 1866*817466cbSJens Wiklander encountering a parse-error. Beware that the meaning of return values has 1867*817466cbSJens Wiklander changed! 1868*817466cbSJens Wiklander * All error codes are now negative. Even on mermory failures and IO errors. 1869*817466cbSJens Wiklander 1870*817466cbSJens WiklanderBugfix 1871*817466cbSJens Wiklander * Fixed faulty HMAC-MD2 implementation. Found by dibac. (Closes 1872*817466cbSJens Wiklander ticket #37) 1873*817466cbSJens Wiklander * Fixed a bug where the CRL parser expected an EXPLICIT ASN.1 tag 1874*817466cbSJens Wiklander before version numbers 1875*817466cbSJens Wiklander * Allowed X509 key usage parsing to accept 4 byte values instead of the 1876*817466cbSJens Wiklander standard 1 byte version sometimes used by Microsoft. (Closes ticket #38) 1877*817466cbSJens Wiklander * Fixed incorrect behaviour in case of RSASSA-PSS with a salt length 1878*817466cbSJens Wiklander smaller than the hash length. (Closes ticket #41) 1879*817466cbSJens Wiklander * If certificate serial is longer than 32 octets, serial number is now 1880*817466cbSJens Wiklander appended with '....' after first 28 octets 1881*817466cbSJens Wiklander * Improved build support for s390x and sparc64 in bignum.h 1882*817466cbSJens Wiklander * Fixed MS Visual C++ name clash with int64 in sha4.h 1883*817466cbSJens Wiklander * Corrected removal of leading "00:" in printing serial numbers in 1884*817466cbSJens Wiklander certificates and CRLs 1885*817466cbSJens Wiklander 1886*817466cbSJens Wiklander= Version 1.0.0 released on 2011-07-27 1887*817466cbSJens WiklanderFeatures 1888*817466cbSJens Wiklander * Expanded cipher layer with support for CFB128 and CTR mode 1889*817466cbSJens Wiklander * Added rsa_encrypt and rsa_decrypt simple example programs. 1890*817466cbSJens Wiklander 1891*817466cbSJens WiklanderChanges 1892*817466cbSJens Wiklander * The generic cipher and message digest layer now have normal error 1893*817466cbSJens Wiklander codes instead of integers 1894*817466cbSJens Wiklander 1895*817466cbSJens WiklanderBugfix 1896*817466cbSJens Wiklander * Undid faulty bug fix in ssl_write() when flushing old data (Ticket 1897*817466cbSJens Wiklander #18) 1898*817466cbSJens Wiklander 1899*817466cbSJens Wiklander= Version 0.99-pre5 released on 2011-05-26 1900*817466cbSJens WiklanderFeatures 1901*817466cbSJens Wiklander * Added additional Cipher Block Modes to symmetric ciphers 1902*817466cbSJens Wiklander (AES CTR, Camellia CTR, XTEA CBC) including the option to 1903*817466cbSJens Wiklander enable and disable individual modes when needed 1904*817466cbSJens Wiklander * Functions requiring File System functions can now be disabled 1905*817466cbSJens Wiklander by undefining POLARSSL_FS_IO 1906*817466cbSJens Wiklander * A error_strerror function() has been added to translate between 1907*817466cbSJens Wiklander error codes and their description. 1908*817466cbSJens Wiklander * Added mpi_get_bit() and mpi_set_bit() individual bit setter/getter 1909*817466cbSJens Wiklander functions. 1910*817466cbSJens Wiklander * Added ssl_mail_client and ssl_fork_server as example programs. 1911*817466cbSJens Wiklander 1912*817466cbSJens WiklanderChanges 1913*817466cbSJens Wiklander * Major argument / variable rewrite. Introduced use of size_t 1914*817466cbSJens Wiklander instead of int for buffer lengths and loop variables for 1915*817466cbSJens Wiklander better unsigned / signed use. Renamed internal bigint types 1916*817466cbSJens Wiklander t_int and t_dbl to t_uint and t_udbl in the process 1917*817466cbSJens Wiklander * mpi_init() and mpi_free() now only accept a single MPI 1918*817466cbSJens Wiklander argument and do not accept variable argument lists anymore. 1919*817466cbSJens Wiklander * The error codes have been remapped and combining error codes 1920*817466cbSJens Wiklander is now done with a PLUS instead of an OR as error codes 1921*817466cbSJens Wiklander used are negative. 1922*817466cbSJens Wiklander * Changed behaviour of net_read(), ssl_fetch_input() and ssl_recv(). 1923*817466cbSJens Wiklander net_recv() now returns 0 on EOF instead of 1924*817466cbSJens Wiklander POLARSSL_ERR_NET_CONN_RESET. ssl_fetch_input() returns 1925*817466cbSJens Wiklander POLARSSL_ERR_SSL_CONN_EOF on an EOF from its f_recv() function. 1926*817466cbSJens Wiklander ssl_read() returns 0 if a POLARSSL_ERR_SSL_CONN_EOF is received 1927*817466cbSJens Wiklander after the handshake. 1928*817466cbSJens Wiklander * Network functions now return POLARSSL_ERR_NET_WANT_READ or 1929*817466cbSJens Wiklander POLARSSL_ERR_NET_WANT_WRITE instead of the ambiguous 1930*817466cbSJens Wiklander POLARSSL_ERR_NET_TRY_AGAIN 1931*817466cbSJens Wiklander 1932*817466cbSJens Wiklander= Version 0.99-pre4 released on 2011-04-01 1933*817466cbSJens WiklanderFeatures 1934*817466cbSJens Wiklander * Added support for PKCS#1 v2.1 encoding and thus support 1935*817466cbSJens Wiklander for the RSAES-OAEP and RSASSA-PSS operations. 1936*817466cbSJens Wiklander * Reading of Public Key files incorporated into default x509 1937*817466cbSJens Wiklander functionality as well. 1938*817466cbSJens Wiklander * Added mpi_fill_random() for centralized filling of big numbers 1939*817466cbSJens Wiklander with random data (Fixed ticket #10) 1940*817466cbSJens Wiklander 1941*817466cbSJens WiklanderChanges 1942*817466cbSJens Wiklander * Debug print of MPI now removes leading zero octets and 1943*817466cbSJens Wiklander displays actual bit size of the value. 1944*817466cbSJens Wiklander * x509parse_key() (and as a consequence x509parse_keyfile()) 1945*817466cbSJens Wiklander does not zeroize memory in advance anymore. Use rsa_init() 1946*817466cbSJens Wiklander before parsing a key or keyfile! 1947*817466cbSJens Wiklander 1948*817466cbSJens WiklanderBugfix 1949*817466cbSJens Wiklander * Debug output of MPI's now the same independent of underlying 1950*817466cbSJens Wiklander platform (32-bit / 64-bit) (Fixes ticket #19, found by Mads 1951*817466cbSJens Wiklander Kiilerich and Mihai Militaru) 1952*817466cbSJens Wiklander * Fixed bug in ssl_write() when flushing old data (Fixed ticket 1953*817466cbSJens Wiklander #18, found by Nikolay Epifanov) 1954*817466cbSJens Wiklander * Fixed proper handling of RSASSA-PSS verification with variable 1955*817466cbSJens Wiklander length salt lengths 1956*817466cbSJens Wiklander 1957*817466cbSJens Wiklander= Version 0.99-pre3 released on 2011-02-28 1958*817466cbSJens WiklanderThis release replaces version 0.99-pre2 which had possible copyright issues. 1959*817466cbSJens WiklanderFeatures 1960*817466cbSJens Wiklander * Parsing PEM private keys encrypted with DES and AES 1961*817466cbSJens Wiklander are now supported as well (Fixes ticket #5) 1962*817466cbSJens Wiklander * Added crl_app program to allow easy reading and 1963*817466cbSJens Wiklander printing of X509 CRLs from file 1964*817466cbSJens Wiklander 1965*817466cbSJens WiklanderChanges 1966*817466cbSJens Wiklander * Parsing of PEM files moved to separate module (Fixes 1967*817466cbSJens Wiklander ticket #13). Also possible to remove PEM support for 1968*817466cbSJens Wiklander systems only using DER encoding 1969*817466cbSJens Wiklander 1970*817466cbSJens WiklanderBugfixes 1971*817466cbSJens Wiklander * Corrected parsing of UTCTime dates before 1990 and 1972*817466cbSJens Wiklander after 1950 1973*817466cbSJens Wiklander * Support more exotic OID's when parsing certificates 1974*817466cbSJens Wiklander (found by Mads Kiilerich) 1975*817466cbSJens Wiklander * Support more exotic name representations when parsing 1976*817466cbSJens Wiklander certificates (found by Mads Kiilerich) 1977*817466cbSJens Wiklander * Replaced the expired test certificates 1978*817466cbSJens Wiklander * Do not bail out if no client certificate specified. Try 1979*817466cbSJens Wiklander to negotiate anonymous connection (Fixes ticket #12, 1980*817466cbSJens Wiklander found by Boris Krasnovskiy) 1981*817466cbSJens Wiklander 1982*817466cbSJens WiklanderSecurity fixes 1983*817466cbSJens Wiklander * Fixed a possible Man-in-the-Middle attack on the 1984*817466cbSJens Wiklander Diffie Hellman key exchange (thanks to Larry Highsmith, 1985*817466cbSJens Wiklander Subreption LLC) 1986*817466cbSJens Wiklander 1987*817466cbSJens Wiklander= Version 0.99-pre1 released on 2011-01-30 1988*817466cbSJens WiklanderFeatures 1989*817466cbSJens WiklanderNote: Most of these features have been donated by Fox-IT 1990*817466cbSJens Wiklander * Added Doxygen source code documentation parts 1991*817466cbSJens Wiklander * Added reading of DHM context from memory and file 1992*817466cbSJens Wiklander * Improved X509 certificate parsing to include extended 1993*817466cbSJens Wiklander certificate fields, including Key Usage 1994*817466cbSJens Wiklander * Improved certificate verification and verification 1995*817466cbSJens Wiklander against the available CRLs 1996*817466cbSJens Wiklander * Detection for DES weak keys and parity bits added 1997*817466cbSJens Wiklander * Improvements to support integration in other 1998*817466cbSJens Wiklander applications: 1999*817466cbSJens Wiklander + Added generic message digest and cipher wrapper 2000*817466cbSJens Wiklander + Improved information about current capabilities, 2001*817466cbSJens Wiklander status, objects and configuration 2002*817466cbSJens Wiklander + Added verification callback on certificate chain 2003*817466cbSJens Wiklander verification to allow external blacklisting 2004*817466cbSJens Wiklander + Additional example programs to show usage 2005*817466cbSJens Wiklander * Added support for PKCS#11 through the use of the 2006*817466cbSJens Wiklander libpkcs11-helper library 2007*817466cbSJens Wiklander 2008*817466cbSJens WiklanderChanges 2009*817466cbSJens Wiklander * x509parse_time_expired() checks time in addition to 2010*817466cbSJens Wiklander the existing date check 2011*817466cbSJens Wiklander * The ciphers member of ssl_context and the cipher member 2012*817466cbSJens Wiklander of ssl_session have been renamed to ciphersuites and 2013*817466cbSJens Wiklander ciphersuite respectively. This clarifies the difference 2014*817466cbSJens Wiklander with the generic cipher layer and is better naming 2015*817466cbSJens Wiklander altogether 2016*817466cbSJens Wiklander 2017*817466cbSJens Wiklander= Version 0.14.0 released on 2010-08-16 2018*817466cbSJens WiklanderFeatures 2019*817466cbSJens Wiklander * Added support for SSL_EDH_RSA_AES_128_SHA and 2020*817466cbSJens Wiklander SSL_EDH_RSA_CAMELLIA_128_SHA ciphersuites 2021*817466cbSJens Wiklander * Added compile-time and run-time version information 2022*817466cbSJens Wiklander * Expanded ssl_client2 arguments for more flexibility 2023*817466cbSJens Wiklander * Added support for TLS v1.1 2024*817466cbSJens Wiklander 2025*817466cbSJens WiklanderChanges 2026*817466cbSJens Wiklander * Made Makefile cleaner 2027*817466cbSJens Wiklander * Removed dependency on rand() in rsa_pkcs1_encrypt(). 2028*817466cbSJens Wiklander Now using random fuction provided to function and 2029*817466cbSJens Wiklander changed the prototype of rsa_pkcs1_encrypt(), 2030*817466cbSJens Wiklander rsa_init() and rsa_gen_key(). 2031*817466cbSJens Wiklander * Some SSL defines were renamed in order to avoid 2032*817466cbSJens Wiklander future confusion 2033*817466cbSJens Wiklander 2034*817466cbSJens WiklanderBug fixes 2035*817466cbSJens Wiklander * Fixed CMake out of source build for tests (found by 2036*817466cbSJens Wiklander kkert) 2037*817466cbSJens Wiklander * rsa_check_private() now supports PKCS1v2 keys as well 2038*817466cbSJens Wiklander * Fixed deadlock in rsa_pkcs1_encrypt() on failing random 2039*817466cbSJens Wiklander generator 2040*817466cbSJens Wiklander 2041*817466cbSJens Wiklander= Version 0.13.1 released on 2010-03-24 2042*817466cbSJens WiklanderBug fixes 2043*817466cbSJens Wiklander * Fixed Makefile in library that was mistakenly merged 2044*817466cbSJens Wiklander * Added missing const string fixes 2045*817466cbSJens Wiklander 2046*817466cbSJens Wiklander= Version 0.13.0 released on 2010-03-21 2047*817466cbSJens WiklanderFeatures 2048*817466cbSJens Wiklander * Added option parsing for host and port selection to 2049*817466cbSJens Wiklander ssl_client2 2050*817466cbSJens Wiklander * Added support for GeneralizedTime in X509 parsing 2051*817466cbSJens Wiklander * Added cert_app program to allow easy reading and 2052*817466cbSJens Wiklander printing of X509 certificates from file or SSL 2053*817466cbSJens Wiklander connection. 2054*817466cbSJens Wiklander 2055*817466cbSJens WiklanderChanges 2056*817466cbSJens Wiklander * Added const correctness for main code base 2057*817466cbSJens Wiklander * X509 signature algorithm determination is now 2058*817466cbSJens Wiklander in a function to allow easy future expansion 2059*817466cbSJens Wiklander * Changed symmetric cipher functions to 2060*817466cbSJens Wiklander identical interface (returning int result values) 2061*817466cbSJens Wiklander * Changed ARC4 to use separate input/output buffer 2062*817466cbSJens Wiklander * Added reset function for HMAC context as speed-up 2063*817466cbSJens Wiklander for specific use-cases 2064*817466cbSJens Wiklander 2065*817466cbSJens WiklanderBug fixes 2066*817466cbSJens Wiklander * Fixed bug resulting in failure to send the last 2067*817466cbSJens Wiklander certificate in the chain in ssl_write_certificate() and 2068*817466cbSJens Wiklander ssl_write_certificate_request() (found by fatbob) 2069*817466cbSJens Wiklander * Added small fixes for compiler warnings on a Mac 2070*817466cbSJens Wiklander (found by Frank de Brabander) 2071*817466cbSJens Wiklander * Fixed algorithmic bug in mpi_is_prime() (found by 2072*817466cbSJens Wiklander Smbat Tonoyan) 2073*817466cbSJens Wiklander 2074*817466cbSJens Wiklander= Version 0.12.1 released on 2009-10-04 2075*817466cbSJens WiklanderChanges 2076*817466cbSJens Wiklander * Coverage test definitions now support 'depends_on' 2077*817466cbSJens Wiklander tagging system. 2078*817466cbSJens Wiklander * Tests requiring specific hashing algorithms now honor 2079*817466cbSJens Wiklander the defines. 2080*817466cbSJens Wiklander 2081*817466cbSJens WiklanderBug fixes 2082*817466cbSJens Wiklander * Changed typo in #ifdef in x509parse.c (found 2083*817466cbSJens Wiklander by Eduardo) 2084*817466cbSJens Wiklander 2085*817466cbSJens Wiklander= Version 0.12.0 released on 2009-07-28 2086*817466cbSJens WiklanderFeatures 2087*817466cbSJens Wiklander * Added CMake makefiles as alternative to regular Makefiles. 2088*817466cbSJens Wiklander * Added preliminary Code Coverage tests for AES, ARC4, 2089*817466cbSJens Wiklander Base64, MPI, SHA-family, MD-family, HMAC-SHA-family, 2090*817466cbSJens Wiklander Camellia, DES, 3-DES, RSA PKCS#1, XTEA, Diffie-Hellman 2091*817466cbSJens Wiklander and X509parse. 2092*817466cbSJens Wiklander 2093*817466cbSJens WiklanderChanges 2094*817466cbSJens Wiklander * Error codes are not (necessarily) negative. Keep 2095*817466cbSJens Wiklander this is mind when checking for errors. 2096*817466cbSJens Wiklander * RSA_RAW renamed to SIG_RSA_RAW for consistency. 2097*817466cbSJens Wiklander * Fixed typo in name of POLARSSL_ERR_RSA_OUTPUT_TOO_LARGE. 2098*817466cbSJens Wiklander * Changed interface for AES and Camellia setkey functions 2099*817466cbSJens Wiklander to indicate invalid key lengths. 2100*817466cbSJens Wiklander 2101*817466cbSJens WiklanderBug fixes 2102*817466cbSJens Wiklander * Fixed include location of endian.h on FreeBSD (found by 2103*817466cbSJens Wiklander Gabriel) 2104*817466cbSJens Wiklander * Fixed include location of endian.h and name clash on 2105*817466cbSJens Wiklander Apples (found by Martin van Hensbergen) 2106*817466cbSJens Wiklander * Fixed HMAC-MD2 by modifying md2_starts(), so that the 2107*817466cbSJens Wiklander required HMAC ipad and opad variables are not cleared. 2108*817466cbSJens Wiklander (found by code coverage tests) 2109*817466cbSJens Wiklander * Prevented use of long long in bignum if 2110*817466cbSJens Wiklander POLARSSL_HAVE_LONGLONG not defined (found by Giles 2111*817466cbSJens Wiklander Bathgate). 2112*817466cbSJens Wiklander * Fixed incorrect handling of negative strings in 2113*817466cbSJens Wiklander mpi_read_string() (found by code coverage tests). 2114*817466cbSJens Wiklander * Fixed segfault on handling empty rsa_context in 2115*817466cbSJens Wiklander rsa_check_pubkey() and rsa_check_privkey() (found by 2116*817466cbSJens Wiklander code coverage tests). 2117*817466cbSJens Wiklander * Fixed incorrect handling of one single negative input 2118*817466cbSJens Wiklander value in mpi_add_abs() (found by code coverage tests). 2119*817466cbSJens Wiklander * Fixed incorrect handling of negative first input 2120*817466cbSJens Wiklander value in mpi_sub_abs() (found by code coverage tests). 2121*817466cbSJens Wiklander * Fixed incorrect handling of negative first input 2122*817466cbSJens Wiklander value in mpi_mod_mpi() and mpi_mod_int(). Resulting 2123*817466cbSJens Wiklander change also affects mpi_write_string() (found by code 2124*817466cbSJens Wiklander coverage tests). 2125*817466cbSJens Wiklander * Corrected is_prime() results for 0, 1 and 2 (found by 2126*817466cbSJens Wiklander code coverage tests). 2127*817466cbSJens Wiklander * Fixed Camellia and XTEA for 64-bit Windows systems. 2128*817466cbSJens Wiklander 2129*817466cbSJens Wiklander= Version 0.11.1 released on 2009-05-17 2130*817466cbSJens Wiklander * Fixed missing functionality for SHA-224, SHA-256, SHA384, 2131*817466cbSJens Wiklander SHA-512 in rsa_pkcs1_sign() 2132*817466cbSJens Wiklander 2133*817466cbSJens Wiklander= Version 0.11.0 released on 2009-05-03 2134*817466cbSJens Wiklander * Fixed a bug in mpi_gcd() so that it also works when both 2135*817466cbSJens Wiklander input numbers are even and added testcases to check 2136*817466cbSJens Wiklander (found by Pierre Habouzit). 2137*817466cbSJens Wiklander * Added support for SHA-224, SHA-256, SHA-384 and SHA-512 2138*817466cbSJens Wiklander one way hash functions with the PKCS#1 v1.5 signing and 2139*817466cbSJens Wiklander verification. 2140*817466cbSJens Wiklander * Fixed minor bug regarding mpi_gcd located within the 2141*817466cbSJens Wiklander POLARSSL_GENPRIME block. 2142*817466cbSJens Wiklander * Fixed minor memory leak in x509parse_crt() and added better 2143*817466cbSJens Wiklander handling of 'full' certificate chains (found by Mathias 2144*817466cbSJens Wiklander Olsson). 2145*817466cbSJens Wiklander * Centralized file opening and reading for x509 files into 2146*817466cbSJens Wiklander load_file() 2147*817466cbSJens Wiklander * Made definition of net_htons() endian-clean for big endian 2148*817466cbSJens Wiklander systems (Found by Gernot). 2149*817466cbSJens Wiklander * Undefining POLARSSL_HAVE_ASM now also handles prevents asm in 2150*817466cbSJens Wiklander padlock and timing code. 2151*817466cbSJens Wiklander * Fixed an off-by-one buffer allocation in ssl_set_hostname() 2152*817466cbSJens Wiklander responsible for crashes and unwanted behaviour. 2153*817466cbSJens Wiklander * Added support for Certificate Revocation List (CRL) parsing. 2154*817466cbSJens Wiklander * Added support for CRL revocation to x509parse_verify() and 2155*817466cbSJens Wiklander SSL/TLS code. 2156*817466cbSJens Wiklander * Fixed compatibility of XTEA and Camellia on a 64-bit system 2157*817466cbSJens Wiklander (found by Felix von Leitner). 2158*817466cbSJens Wiklander 2159*817466cbSJens Wiklander= Version 0.10.0 released on 2009-01-12 2160*817466cbSJens Wiklander * Migrated XySSL to PolarSSL 2161*817466cbSJens Wiklander * Added XTEA symmetric cipher 2162*817466cbSJens Wiklander * Added Camellia symmetric cipher 2163*817466cbSJens Wiklander * Added support for ciphersuites: SSL_RSA_CAMELLIA_128_SHA, 2164*817466cbSJens Wiklander SSL_RSA_CAMELLIA_256_SHA and SSL_EDH_RSA_CAMELLIA_256_SHA 2165*817466cbSJens Wiklander * Fixed dangerous bug that can cause a heap overflow in 2166*817466cbSJens Wiklander rsa_pkcs1_decrypt (found by Christophe Devine) 2167*817466cbSJens Wiklander 2168*817466cbSJens Wiklander================================================================ 2169*817466cbSJens WiklanderXySSL ChangeLog 2170*817466cbSJens Wiklander 2171*817466cbSJens Wiklander= Version 0.9 released on 2008-03-16 2172*817466cbSJens Wiklander 2173*817466cbSJens Wiklander * Added support for ciphersuite: SSL_RSA_AES_128_SHA 2174*817466cbSJens Wiklander * Enabled support for large files by default in aescrypt2.c 2175*817466cbSJens Wiklander * Preliminary openssl wrapper contributed by David Barrett 2176*817466cbSJens Wiklander * Fixed a bug in ssl_write() that caused the same payload to 2177*817466cbSJens Wiklander be sent twice in non-blocking mode when send returns EAGAIN 2178*817466cbSJens Wiklander * Fixed ssl_parse_client_hello(): session id and challenge must 2179*817466cbSJens Wiklander not be swapped in the SSLv2 ClientHello (found by Greg Robson) 2180*817466cbSJens Wiklander * Added user-defined callback debug function (Krystian Kolodziej) 2181*817466cbSJens Wiklander * Before freeing a certificate, properly zero out all cert. data 2182*817466cbSJens Wiklander * Fixed the "mode" parameter so that encryption/decryption are 2183*817466cbSJens Wiklander not swapped on PadLock; also fixed compilation on older versions 2184*817466cbSJens Wiklander of gcc (bug reported by David Barrett) 2185*817466cbSJens Wiklander * Correctly handle the case in padlock_xcryptcbc() when input or 2186*817466cbSJens Wiklander ouput data is non-aligned by falling back to the software 2187*817466cbSJens Wiklander implementation, as VIA Nehemiah cannot handle non-aligned buffers 2188*817466cbSJens Wiklander * Fixed a memory leak in x509parse_crt() which was reported by Greg 2189*817466cbSJens Wiklander Robson-Garth; some x509write.c fixes by Pascal Vizeli, thanks to 2190*817466cbSJens Wiklander Matthew Page who reported several bugs 2191*817466cbSJens Wiklander * Fixed x509_get_ext() to accept some rare certificates which have 2192*817466cbSJens Wiklander an INTEGER instead of a BOOLEAN for BasicConstraints::cA. 2193*817466cbSJens Wiklander * Added support on the client side for the TLS "hostname" extension 2194*817466cbSJens Wiklander (patch contributed by David Patino) 2195*817466cbSJens Wiklander * Make x509parse_verify() return BADCERT_CN_MISMATCH when an empty 2196*817466cbSJens Wiklander string is passed as the CN (bug reported by spoofy) 2197*817466cbSJens Wiklander * Added an option to enable/disable the BN assembly code 2198*817466cbSJens Wiklander * Updated rsa_check_privkey() to verify that (D*E) = 1 % (P-1)*(Q-1) 2199*817466cbSJens Wiklander * Disabled obsolete hash functions by default (MD2, MD4); updated 2200*817466cbSJens Wiklander selftest and benchmark to not test ciphers that have been disabled 2201*817466cbSJens Wiklander * Updated x509parse_cert_info() to correctly display byte 0 of the 2202*817466cbSJens Wiklander serial number, setup correct server port in the ssl client example 2203*817466cbSJens Wiklander * Fixed a critical denial-of-service with X.509 cert. verification: 2204*817466cbSJens Wiklander peer may cause xyssl to loop indefinitely by sending a certificate 2205*817466cbSJens Wiklander for which the RSA signature check fails (bug reported by Benoit) 2206*817466cbSJens Wiklander * Added test vectors for: AES-CBC, AES-CFB, DES-CBC and 3DES-CBC, 2207*817466cbSJens Wiklander HMAC-MD5, HMAC-SHA1, HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 2208*817466cbSJens Wiklander * Fixed HMAC-SHA-384 and HMAC-SHA-512 (thanks to Josh Sinykin) 2209*817466cbSJens Wiklander * Modified ssl_parse_client_key_exchange() to protect against 2210*817466cbSJens Wiklander Daniel Bleichenbacher attack on PKCS#1 v1.5 padding, as well 2211*817466cbSJens Wiklander as the Klima-Pokorny-Rosa extension of Bleichenbacher's attack 2212*817466cbSJens Wiklander * Updated rsa_gen_key() so that ctx->N is always nbits in size 2213*817466cbSJens Wiklander * Fixed assembly PPC compilation errors on Mac OS X, thanks to 2214*817466cbSJens Wiklander David Barrett and Dusan Semen 2215*817466cbSJens Wiklander 2216*817466cbSJens Wiklander= Version 0.8 released on 2007-10-20 2217*817466cbSJens Wiklander 2218*817466cbSJens Wiklander * Modified the HMAC functions to handle keys larger 2219*817466cbSJens Wiklander than 64 bytes, thanks to Stephane Desneux and gary ng 2220*817466cbSJens Wiklander * Fixed ssl_read_record() to properly update the handshake 2221*817466cbSJens Wiklander message digests, which fixes IE6/IE7 client authentication 2222*817466cbSJens Wiklander * Cleaned up the XYSSL* #defines, suggested by Azriel Fasten 2223*817466cbSJens Wiklander * Fixed net_recv(), thanks to Lorenz Schori and Egon Kocjan 2224*817466cbSJens Wiklander * Added user-defined callbacks for handling I/O and sessions 2225*817466cbSJens Wiklander * Added lots of debugging output in the SSL/TLS functions 2226*817466cbSJens Wiklander * Added preliminary X.509 cert. writing by Pascal Vizeli 2227*817466cbSJens Wiklander * Added preliminary support for the VIA PadLock routines 2228*817466cbSJens Wiklander * Added AES-CFB mode of operation, contributed by chmike 2229*817466cbSJens Wiklander * Added an SSL/TLS stress testing program (ssl_test.c) 2230*817466cbSJens Wiklander * Updated the RSA PKCS#1 code to allow choosing between 2231*817466cbSJens Wiklander RSA_PUBLIC and RSA_PRIVATE, as suggested by David Barrett 2232*817466cbSJens Wiklander * Updated ssl_read() to skip 0-length records from OpenSSL 2233*817466cbSJens Wiklander * Fixed the make install target to comply with *BSD make 2234*817466cbSJens Wiklander * Fixed a bug in mpi_read_binary() on 64-bit platforms 2235*817466cbSJens Wiklander * mpi_is_prime() speedups, thanks to Kevin McLaughlin 2236*817466cbSJens Wiklander * Fixed a long standing memory leak in mpi_is_prime() 2237*817466cbSJens Wiklander * Replaced realloc with malloc in mpi_grow(), and set 2238*817466cbSJens Wiklander the sign of zero as positive in mpi_init() (reported 2239*817466cbSJens Wiklander by Jonathan M. McCune) 2240*817466cbSJens Wiklander 2241*817466cbSJens Wiklander= Version 0.7 released on 2007-07-07 2242*817466cbSJens Wiklander 2243*817466cbSJens Wiklander * Added support for the MicroBlaze soft-core processor 2244*817466cbSJens Wiklander * Fixed a bug in ssl_tls.c which sometimes prevented SSL 2245*817466cbSJens Wiklander connections from being established with non-blocking I/O 2246*817466cbSJens Wiklander * Fixed a couple bugs in the VS6 and UNIX Makefiles 2247*817466cbSJens Wiklander * Fixed the "PIC register ebx clobbered in asm" bug 2248*817466cbSJens Wiklander * Added HMAC starts/update/finish support functions 2249*817466cbSJens Wiklander * Added the SHA-224, SHA-384 and SHA-512 hash functions 2250*817466cbSJens Wiklander * Fixed the net_set_*block routines, thanks to Andreas 2251*817466cbSJens Wiklander * Added a few demonstration programs: md5sum, sha1sum, 2252*817466cbSJens Wiklander dh_client, dh_server, rsa_genkey, rsa_sign, rsa_verify 2253*817466cbSJens Wiklander * Added new bignum import and export helper functions 2254*817466cbSJens Wiklander * Rewrote README.txt in program/ssl/ca to better explain 2255*817466cbSJens Wiklander how to create a test PKI 2256*817466cbSJens Wiklander 2257*817466cbSJens Wiklander= Version 0.6 released on 2007-04-01 2258*817466cbSJens Wiklander 2259*817466cbSJens Wiklander * Ciphers used in SSL/TLS can now be disabled at compile 2260*817466cbSJens Wiklander time, to reduce the memory footprint on embedded systems 2261*817466cbSJens Wiklander * Added multiply assembly code for the TriCore and modified 2262*817466cbSJens Wiklander havege_struct for this processor, thanks to David Patiño 2263*817466cbSJens Wiklander * Added multiply assembly code for 64-bit PowerPCs, 2264*817466cbSJens Wiklander thanks to Peking University and the OSU Open Source Lab 2265*817466cbSJens Wiklander * Added experimental support of Quantum Cryptography 2266*817466cbSJens Wiklander * Added support for autoconf, contributed by Arnaud Cornet 2267*817466cbSJens Wiklander * Fixed "long long" compilation issues on IA-64 and PPC64 2268*817466cbSJens Wiklander * Fixed a bug introduced in xyssl-0.5/timing.c: hardclock 2269*817466cbSJens Wiklander was not being correctly defined on ARM and MIPS 2270*817466cbSJens Wiklander 2271*817466cbSJens Wiklander= Version 0.5 released on 2007-03-01 2272*817466cbSJens Wiklander 2273*817466cbSJens Wiklander * Added multiply assembly code for SPARC and Alpha 2274*817466cbSJens Wiklander * Added (beta) support for non-blocking I/O operations 2275*817466cbSJens Wiklander * Implemented session resuming and client authentication 2276*817466cbSJens Wiklander * Fixed some portability issues on WinCE, MINIX 3, Plan9 2277*817466cbSJens Wiklander (thanks to Benjamin Newman), HP-UX, FreeBSD and Solaris 2278*817466cbSJens Wiklander * Improved the performance of the EDH key exchange 2279*817466cbSJens Wiklander * Fixed a bug that caused valid packets with a payload 2280*817466cbSJens Wiklander size of 16384 bytes to be rejected 2281*817466cbSJens Wiklander 2282*817466cbSJens Wiklander= Version 0.4 released on 2007-02-01 2283*817466cbSJens Wiklander 2284*817466cbSJens Wiklander * Added support for Ephemeral Diffie-Hellman key exchange 2285*817466cbSJens Wiklander * Added multiply asm code for SSE2, ARM, PPC, MIPS and M68K 2286*817466cbSJens Wiklander * Various improvement to the modular exponentiation code 2287*817466cbSJens Wiklander * Rewrote the headers to generate the API docs with doxygen 2288*817466cbSJens Wiklander * Fixed a bug in ssl_encrypt_buf (incorrect padding was 2289*817466cbSJens Wiklander generated) and in ssl_parse_client_hello (max. client 2290*817466cbSJens Wiklander version was not properly set), thanks to Didier Rebeix 2291*817466cbSJens Wiklander * Fixed another bug in ssl_parse_client_hello: clients with 2292*817466cbSJens Wiklander cipherlists larger than 96 bytes were incorrectly rejected 2293*817466cbSJens Wiklander * Fixed a couple memory leak in x509_read.c 2294*817466cbSJens Wiklander 2295*817466cbSJens Wiklander= Version 0.3 released on 2007-01-01 2296*817466cbSJens Wiklander 2297*817466cbSJens Wiklander * Added server-side SSLv3 and TLSv1.0 support 2298*817466cbSJens Wiklander * Multiple fixes to enhance the compatibility with g++, 2299*817466cbSJens Wiklander thanks to Xosé Antón Otero Ferreira 2300*817466cbSJens Wiklander * Fixed a bug in the CBC code, thanks to dowst; also, 2301*817466cbSJens Wiklander the bignum code is no longer dependent on long long 2302*817466cbSJens Wiklander * Updated rsa_pkcs1_sign to handle arbitrary large inputs 2303*817466cbSJens Wiklander * Updated timing.c for improved compatibility with i386 2304*817466cbSJens Wiklander and 486 processors, thanks to Arnaud Cornet 2305*817466cbSJens Wiklander 2306*817466cbSJens Wiklander= Version 0.2 released on 2006-12-01 2307*817466cbSJens Wiklander 2308*817466cbSJens Wiklander * Updated timing.c to support ARM and MIPS arch 2309*817466cbSJens Wiklander * Updated the MPI code to support 8086 on MSVC 1.5 2310*817466cbSJens Wiklander * Added the copyright notice at the top of havege.h 2311*817466cbSJens Wiklander * Fixed a bug in sha2_hmac, thanks to newsoft/Wenfang Zhang 2312*817466cbSJens Wiklander * Fixed a bug reported by Adrian Rüegsegger in x509_read_key 2313*817466cbSJens Wiklander * Fixed a bug reported by Torsten Lauter in ssl_read_record 2314*817466cbSJens Wiklander * Fixed a bug in rsa_check_privkey that would wrongly cause 2315*817466cbSJens Wiklander valid RSA keys to be dismissed (thanks to oldwolf) 2316*817466cbSJens Wiklander * Fixed a bug in mpi_is_prime that caused some primes to fail 2317*817466cbSJens Wiklander the Miller-Rabin primality test 2318*817466cbSJens Wiklander 2319*817466cbSJens Wiklander I'd also like to thank Younès Hafri for the CRUX linux port, 2320*817466cbSJens Wiklander Khalil Petit who added XySSL into pkgsrc and Arnaud Cornet 2321*817466cbSJens Wiklander who maintains the Debian package :-) 2322*817466cbSJens Wiklander 2323*817466cbSJens Wiklander= Version 0.1 released on 2006-11-01 2324