1OpenSSL CHANGES 2=============== 3 4This is a detailed breakdown of significant changes. For a high-level overview 5of changes in each release, see [NEWS.md](./NEWS.md). 6 7For a full list of changes, see the [git commit log][log] and pick the 8appropriate release branch. 9 10 [log]: https://github.com/openssl/openssl/commits/ 11 12OpenSSL Releases 13---------------- 14 15 - [OpenSSL 3.5](#openssl-35) 16 - [OpenSSL 3.4](#openssl-34) 17 - [OpenSSL 3.3](#openssl-33) 18 - [OpenSSL 3.2](#openssl-32) 19 - [OpenSSL 3.1](#openssl-31) 20 - [OpenSSL 3.0](#openssl-30) 21 - [OpenSSL 1.1.1](#openssl-111) 22 - [OpenSSL 1.1.0](#openssl-110) 23 - [OpenSSL 1.0.2](#openssl-102) 24 - [OpenSSL 1.0.1](#openssl-101) 25 - [OpenSSL 1.0.0](#openssl-100) 26 - [OpenSSL 0.9.x](#openssl-09x) 27 28OpenSSL 3.5 29----------- 30 31### Changes between 3.5.0 and 3.5.1 [1 Jul 2025] 32 33 * Fix x509 application adds trusted use instead of rejected use. 34 35 Issue summary: Use of -addreject option with the openssl x509 application adds 36 a trusted use instead of a rejected use for a certificate. 37 38 Impact summary: If a user intends to make a trusted certificate rejected for 39 a particular use it will be instead marked as trusted for that use. 40 41 ([CVE-2025-4575]) 42 43 *Tomas Mraz* 44 45 * Aligned the behaviour of TLS and DTLS in the event of a no_renegotiation 46 alert being received. Older versions of OpenSSL failed with DTLS if a 47 no_renegotiation alert was received. All versions of OpenSSL do this for TLS. 48 From 3.2 a bug was exposed that meant that DTLS ignored no_rengotiation. We 49 have now restored the original behaviour and brought DTLS back into line with 50 TLS. 51 52 *Matt Caswell* 53 54### Changes between 3.4 and 3.5.0 [8 Apr 2025] 55 56 * Added server side support for QUIC 57 58 *Hugo Landau, Matt Caswell, Tomáš Mráz, Neil Horman, Sasha Nedvedicky, Andrew Dinh* 59 60 * Tolerate PKCS#8 version 2 with optional public keys. The public key data 61 is currently ignored. 62 63 *Viktor Dukhovni* 64 65 * Signature schemes without an explicit signing digest in CMS are now supported. 66 Examples of such schemes are ED25519 or ML-DSA. 67 68 *Michael Schroeder* 69 70 * The TLS Signature algorithms defaults now include all three ML-DSA variants as 71 first algorithms. 72 73 *Viktor Dukhovni* 74 75 * Added a `no-tls-deprecated-ec` configuration option. 76 77 The `no-tls-deprecated-ec` option disables support for TLS elliptic curve 78 groups deprecated in RFC8422 at compile time. This does not affect use of 79 the associated curves outside TLS. By default support for these groups is 80 compiled in, but, as before, they are not included in the default run-time 81 list of supported groups. 82 83 With the `enable-tls-deprecated-ec` option these TLS groups remain enabled at 84 compile time even if the default configuration is changed, provided the 85 underlying EC curves remain implemented. 86 87 *Viktor Dukhovni* 88 89 * Added new API to enable 0-RTT for 3rd party QUIC stacks. 90 91 *Cheng Zhang* 92 93 * Added support for a new callback registration `SSL_CTX_set_new_pending_conn_cb`, 94 which allows for application notification of new connection SSL object 95 creation, which occurs independently of calls to `SSL_accept_connection()`. 96 Note: QUIC objects passed through SSL callbacks should not have their state 97 mutated via calls back into the SSL api until such time as they have been 98 received via a call to `SSL_accept_connection()`. 99 100 *Neil Horman* 101 102 * Add SLH-DSA as specified in FIPS 205. 103 104 *Shane Lontis and Dr Paul Dale* 105 106 * ML-KEM as specified in FIPS 203. 107 108 Based on the original implementation in BoringSSL, ported from C++ to C, 109 refactored, and integrated into the OpenSSL default and FIPS providers. 110 Including also the X25519MLKEM768, SecP256r1MLKEM768, SecP384r1MLKEM1024 111 TLS hybrid key post-quantum/classical key agreement schemes. 112 113 *Michael Baentsch, Viktor Dukhovni, Shane Lontis and Paul Dale* 114 115 * Add ML-DSA as specified in FIPS 204. 116 117 The base code was derived from BoringSSL C++ code. 118 119 *Shane Lontis, Viktor Dukhovni and Paul Dale* 120 121 * Added new API calls to enable 3rd party QUIC stacks to use the OpenSSL TLS 122 implementation. 123 124 *Matt Caswell* 125 126 * The default DRBG implementations have been changed to prefer to fetch 127 algorithm implementations from the default provider (the provider the 128 DRBG implementation is built in) regardless of the default properties 129 set in the configuration file. The code will still fallback to find 130 an implementation, as done previously, if needed. 131 132 *Simo Sorce* 133 134 * Initial support for opaque symmetric keys objects (EVP_SKEY). These 135 replace the ad-hoc byte arrays that are pervasive throughout the library. 136 137 *Dmitry Belyavskiy and Simo Sorce* 138 139 * The default TLS group list setting is now set to: 140 `?*X25519MLKEM768 / ?*X25519:?secp256r1 / ?X448:?secp384r1:?secp521r1 / ?ffdhe2048:?ffdhe3072` 141 142 This means two key shares (X25519MLKEM768 and X25519) will be sent by 143 default by the TLS client. GOST groups and FFDHE groups larger than 3072 144 bits are no longer enabled by default. 145 146 The group names in the group list setting are now also case insensitive. 147 148 *Viktor Dukhovni* 149 150 * For TLSv1.3: Add capability for a client to send multiple key shares. 151 Extend the scope of `SSL_OP_CIPHER_SERVER_PREFERENCE` to cover 152 server-side key exchange group selection. 153 154 Extend the server-side key exchange group selection algorithm and related 155 group list syntax to support multiple group priorities, e.g. to prioritize 156 (hybrid-)KEMs. 157 158 *David Kelsey*, *Martin Schmatz* 159 160 * A new random generation API has been introduced which modifies all 161 of the L<RAND_bytes(3)> family of calls so they are routed through a 162 specific named provider instead of being resolved via the normal DRBG 163 chaining. In a future OpenSSL release, this will obsolete RAND_METHOD. 164 165 *Dr Paul Dale* 166 167 * New inline functions were added to support loads and stores of unsigned 168 16-bit, 32-bit and 64-bit integers in either little-endian or big-endian 169 form, regardless of the host byte-order. See the `OPENSSL_load_u16_le(3)` 170 manpage for details. 171 172 *Viktor Dukhovni* 173 174 * All the `BIO_meth_get_*()` functions allowing reuse of the internal OpenSSL 175 BIO method implementations were deprecated. The reuse is unsafe due to 176 dependency on the code of the internal methods not changing. 177 178 *Tomáš Mráz* 179 180 * Support DEFAULT keyword and '-' prefix in `SSL_CTX_set1_groups_list()`. 181 `SSL_CTX_set1_groups_list()` now supports the DEFAULT keyword which sets the 182 available groups to the default selection. The '-' prefix allows the calling 183 application to remove a group from the selection. 184 185 *Frederik Wedel-Heinen* 186 187 * Updated the default encryption cipher for the `req`, `cms`, and `smime` applications 188 from `des-ede3-cbc` to `aes-256-cbc`. 189 190 AES-256 provides a stronger 256-bit key encryption than legacy 3DES. 191 192 *Aditya* 193 194 * Enhanced PKCS#7 inner contents verification. 195 In the `PKCS7_verify()` function, the BIO *indata parameter refers to the 196 signed data if the content is detached from p7. Otherwise, indata should be 197 NULL, and then the signed data must be in p7. 198 199 The previous OpenSSL implementation only supported MIME inner content 200 [RFC 5652, section 5.2]. 201 202 The added functionality now enables support for PKCS#7 inner content 203 [RFC 2315, section 7]. 204 205 *Małgorzata Olszówka* 206 207 * The `-rawin` option of the `pkeyutl` command is now implied (and thus no 208 longer required) when using `-digest` or when signing or verifying with an 209 Ed25519 or Ed448 key. 210 The `-digest` and `-rawin` option may only be given with `-sign` or `verify`. 211 212 *David von Oheimb* 213 214 * `X509_PURPOSE_add()` has been modified 215 to take `sname` instead of `id` as the primary purpose identifier. 216 For its convenient use, `X509_PURPOSE_get_unused_id()` has been added. 217 218 This work was sponsored by Siemens AG. 219 220 *David von Oheimb* 221 222 * Added support for central key generation in CMP. 223 224 This work was sponsored by Siemens AG. 225 226 *Rajeev Ranjan* 227 228 * Optionally allow the FIPS provider to use the `JITTER` entropy source. 229 Note that using this option will require the resulting FIPS provider 230 to undergo entropy source validation [ESV] by the [CMVP], without this 231 the FIPS provider will not be FIPS compliant. Enable this using the 232 configuration option `enable-fips-jitter`. 233 234 *Paul Dale* 235 236 * Extended `OPENSSL_ia32cap` support to accommodate additional `CPUID` 237 feature/capability bits in leaf `0x7` (Extended Feature Flags) as well 238 as leaf `0x24` (Converged Vector ISA). 239 240 *Dan Zimmerman, Alina Elizarova* 241 242 * Cipher pipelining support for provided ciphers with new API functions 243 EVP_CIPHER_can_pipeline(), EVP_CipherPipelineEncryptInit(), 244 EVP_CipherPipelineDecryptInit(), EVP_CipherPipelineUpdate(), 245 and EVP_CipherPipelineFinal(). Cipher pipelining support allows application to 246 submit multiple chunks of data in one cipher update call, thereby allowing the 247 provided implementation to take advantage of parallel computing. There are 248 currently no built-in ciphers that support pipelining. This new API replaces 249 the legacy pipeline API [SSL_CTX_set_max_pipelines](https://docs.openssl.org/3.3/man3/SSL_CTX_set_split_send_fragment/) used with Engines. 250 251 *Ramkumar* 252 253 * Add CMS_NO_SIGNING_TIME flag to CMS_sign(), CMS_add1_signer() 254 255 Previously there was no way to create a CMS SignedData signature without a 256 signing time attribute, because CMS_SignerInfo_sign added it unconditionally. 257 However, there is a use case (PAdES signatures [ETSI EN 319 142-1](https://www.etsi.org/deliver/etsi_en/319100_319199/31914201/01.01.01_60/en_31914201v010101p.pdf) ) 258 where this attribute is not allowed, so a new flag was added to the CMS API 259 that causes this attribute to be omitted at signing time. 260 261 The new `-no_signing_time` option of the `cms` command enables this flag. 262 263 *Juhász Péter* 264 265 * Parallel dual-prime 1024/1536/2048-bit modular exponentiation for 266 AVX_IFMA capable processors (Intel Sierra Forest and its successor). 267 268 This optimization brings performance enhancement, ranging from 1.8 to 2.2 269 times, for the sign/decryption operations of rsaz-2k/3k/4k (`openssl speed rsa`) 270 on the Intel Sierra Forest. 271 272 *Zhiguo Zhou, Wangyang Guo (Intel Corp)* 273 274 * VAES/AVX-512 support for AES-XTS. 275 276 For capable processors (>= Intel Icelake), this provides a 277 vectorized implementation of AES-XTS with a throughput improvement 278 between 1.3x to 2x, depending on the block size. 279 280 *Pablo De Lara Guarch, Dan Pittman* 281 282 * Fixed EVP_DecodeUpdate() to not write padding zeros to the decoded output. 283 284 According to the documentation, for every 4 valid base64 bytes processed 285 (ignoring whitespace, carriage returns and line feeds), EVP_DecodeUpdate() 286 produces 3 bytes of binary output data (except at the end of data 287 terminated with one or two padding characters). However, the function 288 behaved like an EVP_DecodeBlock(). It produced exactly 3 output bytes for 289 every 4 input bytes. Such behaviour could cause writes to a non-allocated 290 output buffer if a user allocates its size based on the documentation and 291 knowing the padding size. 292 293 The fix makes EVP_DecodeUpdate() produce exactly as many output bytes as 294 in the initial non-encoded message. 295 296 *Valerii Krygin* 297 298 * Added support for aAissuingDistributionPoint, allowedAttributeAssignments, 299 timeSpecification, attributeDescriptor, roleSpecCertIdentifier, 300 authorityAttributeIdentifier and attributeMappings X.509v3 extensions. 301 302 *Jonathan M. Wilbur* 303 304 * Added a new CLI option `-provparam` and API functions for setting of 305 provider configuration parameters. 306 307 *Viktor Dukhovni* 308 309 * Added a new trace category for PROVIDER calls and added new tracing calls 310 in provider and algorithm fetching API functions. 311 312 *Neil Horman* 313 314 * Fixed benchmarking for AEAD ciphers in the `openssl speed` utility. 315 316 *Mohammed Alhabib* 317 318 * Added a build configuration option `enable-sslkeylog` for enabling support 319 for SSLKEYLOGFILE environment variable to log TLS connection secrets. 320 321 *Neil Horman* 322 323 * Added EVP_get_default_properties() function to retrieve the current default 324 property query string. 325 326 *Dmitry Belyavskiy* 327 328OpenSSL 3.4 329----------- 330 331### Changes between 3.4.1 and 3.4.2 [xx XXX xxxx] 332 333 * When displaying distinguished names in the openssl application escape control 334 characters by default. 335 336 *Tomáš Mráz* 337 338### Changes between 3.4.0 and 3.4.1 [11 Feb 2025] 339 340 * Fixed RFC7250 handshakes with unauthenticated servers don't abort as expected. 341 342 Clients using RFC7250 Raw Public Keys (RPKs) to authenticate a 343 server may fail to notice that the server was not authenticated, because 344 handshakes don't abort as expected when the SSL_VERIFY_PEER verification mode 345 is set. 346 347 ([CVE-2024-12797]) 348 349 *Viktor Dukhovni* 350 351 * Fixed timing side-channel in ECDSA signature computation. 352 353 There is a timing signal of around 300 nanoseconds when the top word of 354 the inverted ECDSA nonce value is zero. This can happen with significant 355 probability only for some of the supported elliptic curves. In particular 356 the NIST P-521 curve is affected. To be able to measure this leak, the 357 attacker process must either be located in the same physical computer or 358 must have a very fast network connection with low latency. 359 360 ([CVE-2024-13176]) 361 362 *Tomáš Mráz* 363 364 * Reverted the behavior change of CMS_get1_certs() and CMS_get1_crls() 365 that happened in the 3.4.0 release. These functions now return NULL 366 again if there are no certs or crls in the CMS object. 367 368 *Tomáš Mráz* 369 370### Changes between 3.3 and 3.4.0 [22 Oct 2024] 371 372 * For the FIPS provider only, replaced the primary DRBG with a continuous 373 health check module. This also removes the now forbidden DRBG chaining. 374 375 *Paul Dale* 376 377 * Improved base64 BIO correctness and error reporting. 378 379 *Viktor Dukhovni* 380 381 * Added support for directly fetched composite signature algorithms such as 382 RSA-SHA2-256 including new API functions in the EVP_PKEY_sign, 383 EVP_PKEY_verify and EVP_PKEY_verify_recover groups. 384 385 *Richard Levitte* 386 387 * XOF Digest API improvements 388 389 EVP_MD_CTX_get_size() and EVP_MD_CTX_size are macros that were aliased to 390 EVP_MD_get_size which returns a constant value. XOF Digests such as SHAKE 391 have an output size that is not fixed, so calling EVP_MD_get_size() is not 392 sufficent. The existing macros now point to the new function 393 EVP_MD_CTX_get_size_ex() which will retrieve the "size" for a XOF digest, 394 otherwise it falls back to calling EVP_MD_get_size(). Note that the SHAKE 395 implementation did not have a context getter previously, so the "size" will 396 only be able to be retrieved with new providers. 397 398 Also added a EVP_xof() helper. 399 400 *Shane Lontis* 401 402 * Added FIPS indicators to the FIPS provider. 403 404 FIPS 140-3 requires indicators to be used if the FIPS provider allows 405 non-approved algorithms. An algorithm is approved if it passes all 406 required checks such as minimum key size. By default an error will 407 occur if any check fails. For backwards compatibility individual 408 algorithms may override the checks by using either an option in the 409 FIPS configuration OR in code using an algorithm context setter. 410 Overriding the check means that the algorithm is not FIPS compliant. 411 OSSL_INDICATOR_set_callback() can be called to register a callback 412 to log unapproved algorithms. At the end of any algorithm operation 413 the approved status can be queried using an algorithm context getter. 414 FIPS provider configuration options are set using 'openssl fipsinstall'. 415 416 Note that new FIPS 140-3 restrictions have been enforced such as 417 RSA Encryption using PKCS1 padding is no longer approved. 418 Documentation related to the changes can be found on the [fips_module(7)] 419 manual page. 420 421 [fips_module(7)]: https://docs.openssl.org/master/man7/fips_module/#FIPS indicators 422 423 *Shane Lontis, Paul Dale, Po-Hsing Wu and Dimitri John Ledkov* 424 425 * Added support for hardware acceleration for HMAC on S390x architecture. 426 427 *Ingo Franzki* 428 429 * Added debuginfo Makefile target for unix platforms to produce 430 a separate DWARF info file from the corresponding shared libs. 431 432 *Neil Horman* 433 434 * Added support for encapsulation and decapsulation operations in the 435 pkeyutl command. 436 437 *Dmitry Belyavskiy* 438 439 * Added implementation of RFC 9579 (PBMAC1) in PKCS#12. 440 441 *Dmitry Belyavskiy* 442 443 * Add a new random seed source RNG `JITTER` using a statically linked 444 jitterentropy library. 445 446 *Dimitri John Ledkov* 447 448 * Added a feature to retrieve configured TLS signature algorithms, 449 e.g., via the openssl list command. 450 451 *Michael Baentsch* 452 453 * Deprecated TS_VERIFY_CTX_set_* functions and added replacement 454 TS_VERIFY_CTX_set0_* functions with improved semantics. 455 456 *Tobias Erbsland* 457 458 * Redesigned Windows use of OPENSSLDIR/ENGINESDIR/MODULESDIR such that 459 what were formerly build time locations can now be defined at run time 460 with registry keys. See NOTES-WINDOWS.md. 461 462 *Neil Horman* 463 464 * Added options `-not_before` and `-not_after` for explicit setting 465 start and end dates of certificates created with the `req` and `x509` 466 commands. Added the same options also to `ca` command as alias for 467 `-startdate` and `-enddate` options. 468 469 *Stephan Wurm* 470 471 * The X25519 and X448 key exchange implementation in the FIPS provider 472 is unapproved and has `fips=no` property. 473 474 *Tomáš Mráz* 475 476 * SHAKE-128 and SHAKE-256 implementations have no default digest length 477 anymore. That means these algorithms cannot be used with 478 EVP_DigestFinal/_ex() unless the `xoflen` param is set before. 479 480 This change was necessary because the preexisting default lengths were 481 half the size necessary for full collision resistance supported by these 482 algorithms. 483 484 *Tomáš Mráz* 485 486 * Setting `config_diagnostics=1` in the config file will cause errors to 487 be returned from SSL_CTX_new() and SSL_CTX_new_ex() if there is an error 488 in the ssl module configuration. 489 490 *Tomáš Mráz* 491 492 * An empty renegotiate extension will be used in TLS client hellos instead 493 of the empty renegotiation SCSV, for all connections with a minimum TLS 494 version > 1.0. 495 496 *Tim Perry* 497 498 * Added support for integrity-only cipher suites TLS_SHA256_SHA256 and 499 TLS_SHA384_SHA384 in TLS 1.3, as defined in RFC 9150. 500 501 This work was sponsored by Siemens AG. 502 503 *Rajeev Ranjan* 504 505 * Added support for retrieving certificate request templates and CRLs in CMP, 506 with the respective CLI options `-template`, 507 `-crlcert`, `-oldcrl`, `-crlout`, `-crlform>`, and `-rsp_crl`. 508 509 This work was sponsored by Siemens AG. 510 511 *Rajeev Ranjan* 512 513 * Added support for issuedOnBehalfOf, auditIdentity, basicAttConstraints, 514 userNotice, acceptablePrivilegePolicies, acceptableCertPolicies, 515 subjectDirectoryAttributes, associatedInformation, delegatedNameConstraints, 516 holderNameConstraints and targetingInformation X.509v3 extensions. 517 518 *Jonathan M. Wilbur* 519 520 * Added Attribute Certificate (RFC 5755) support. Attribute 521 Certificates can be created, parsed, modified and printed via the 522 public API. There is no command-line tool support at this time. 523 524 *Damian Hobson-Garcia* 525 526 * Added support to build Position Independent Executables (PIE). Configuration 527 option `enable-pie` configures the cflag '-fPIE' and ldflag '-pie' to 528 support Address Space Layout Randomization (ASLR) in the openssl executable, 529 removes reliance on external toolchain configurations. 530 531 *Craig Lorentzen* 532 533 * SSL_SESSION_get_time()/SSL_SESSION_set_time()/SSL_CTX_flush_sessions() have 534 been deprecated in favour of their respective ..._ex() replacement functions 535 which are Y2038-safe. 536 537 *Alexander Kanavin* 538 539 * ECC groups may now customize their initialization to save CPU by using 540 precomputed values. This is used by the P-256 implementation. 541 542 *Watson Ladd* 543 544OpenSSL 3.3 545----------- 546 547### Changes between 3.3.2 and 3.3.3 [xx XXX xxxx] 548 549 * Fixed possible OOB memory access with invalid low-level GF(2^m) elliptic 550 curve parameters. 551 552 Use of the low-level GF(2^m) elliptic curve APIs with untrusted 553 explicit values for the field polynomial can lead to out-of-bounds memory 554 reads or writes. 555 Applications working with "exotic" explicit binary (GF(2^m)) curve 556 parameters, that make it possible to represent invalid field polynomials 557 with a zero constant term, via the above or similar APIs, may terminate 558 abruptly as a result of reading or writing outside of array bounds. Remote 559 code execution cannot easily be ruled out. 560 561 ([CVE-2024-9143]) 562 563 *Viktor Dukhovni* 564 565### Changes between 3.3.1 and 3.3.2 [3 Sep 2024] 566 567 * Fixed possible denial of service in X.509 name checks. 568 569 Applications performing certificate name checks (e.g., TLS clients checking 570 server certificates) may attempt to read an invalid memory address when 571 comparing the expected name with an `otherName` subject alternative name of 572 an X.509 certificate. This may result in an exception that terminates the 573 application program. 574 575 ([CVE-2024-6119]) 576 577 *Viktor Dukhovni* 578 579 * Fixed possible buffer overread in SSL_select_next_proto(). 580 581 Calling the OpenSSL API function SSL_select_next_proto with an empty 582 supported client protocols buffer may cause a crash or memory contents 583 to be sent to the peer. 584 585 ([CVE-2024-5535]) 586 587 *Matt Caswell* 588 589### Changes between 3.3.0 and 3.3.1 [4 Jun 2024] 590 591 * Fixed potential use after free after SSL_free_buffers() is called. 592 593 The SSL_free_buffers function is used to free the internal OpenSSL 594 buffer used when processing an incoming record from the network. 595 The call is only expected to succeed if the buffer is not currently 596 in use. However, two scenarios have been identified where the buffer 597 is freed even when still in use. 598 599 The first scenario occurs where a record header has been received 600 from the network and processed by OpenSSL, but the full record body 601 has not yet arrived. In this case calling SSL_free_buffers will succeed 602 even though a record has only been partially processed and the buffer 603 is still in use. 604 605 The second scenario occurs where a full record containing application 606 data has been received and processed by OpenSSL but the application has 607 only read part of this data. Again a call to SSL_free_buffers will 608 succeed even though the buffer is still in use. 609 610 ([CVE-2024-4741]) 611 612 *Matt Caswell* 613 614 * Fixed an issue where checking excessively long DSA keys or parameters may 615 be very slow. 616 617 Applications that use the functions EVP_PKEY_param_check() or 618 EVP_PKEY_public_check() to check a DSA public key or DSA parameters may 619 experience long delays. Where the key or parameters that are being checked 620 have been obtained from an untrusted source this may lead to a Denial of 621 Service. 622 623 To resolve this issue DSA keys larger than OPENSSL_DSA_MAX_MODULUS_BITS 624 will now fail the check immediately with a DSA_R_MODULUS_TOO_LARGE error 625 reason. 626 627 ([CVE-2024-4603]) 628 629 *Tomáš Mráz* 630 631 * Improved EC/DSA nonce generation routines to avoid bias and timing 632 side channel leaks. 633 634 Thanks to Florian Sieck from Universität zu Lübeck and George Pantelakis 635 and Hubert Kario from Red Hat for reporting the issues. 636 637 *Tomáš Mráz and Paul Dale* 638 639### Changes between 3.2 and 3.3.0 [9 Apr 2024] 640 641 * The `-verify` option to the `openssl crl` and `openssl req` will make 642 the program exit with 1 on failure. 643 644 *Vladimír Kotal* 645 646 * The BIO_get_new_index() function can only be called 127 times before it 647 reaches its upper bound of BIO_TYPE_MASK. It will now correctly return an 648 error of -1 once it is exhausted. Users may need to reserve using this 649 function for cases where BIO_find_type() is required. Either BIO_TYPE_NONE 650 or BIO_get_new_index() can be used to supply a type to BIO_meth_new(). 651 652 *Shane Lontis* 653 654 * Added API functions SSL_SESSION_get_time_ex(), SSL_SESSION_set_time_ex() 655 using time_t which is Y2038 safe on 32 bit systems when 64 bit time 656 is enabled (e.g via setting glibc macro _TIME_BITS=64). 657 658 *Ijtaba Hussain* 659 660 * The d2i_ASN1_GENERALIZEDTIME(), d2i_ASN1_UTCTIME(), ASN1_TIME_check(), and 661 related functions have been augmented to check for a minimum length of 662 the input string, in accordance with ITU-T X.690 section 11.7 and 11.8. 663 664 *Job Snijders* 665 666 * Unknown entries in TLS SignatureAlgorithms, ClientSignatureAlgorithms 667 config options and the respective calls to SSL[_CTX]_set1_sigalgs() and 668 SSL[_CTX]_set1_client_sigalgs() that start with `?` character are 669 ignored and the configuration will still be used. 670 671 Similarly unknown entries that start with `?` character in a TLS 672 Groups config option or set with SSL[_CTX]_set1_groups_list() are ignored 673 and the configuration will still be used. 674 675 In both cases if the resulting list is empty, an error is returned. 676 677 *Tomáš Mráz* 678 679 * The EVP_PKEY_fromdata function has been augmented to allow for the derivation 680 of CRT (Chinese Remainder Theorem) parameters when requested. See the 681 OSSL_PKEY_PARAM_RSA_DERIVE_FROM_PQ param in the EVP_PKEY-RSA documentation. 682 683 *Neil Horman* 684 685 * The activate and soft_load configuration settings for providers in 686 openssl.cnf have been updated to require a value of [1|yes|true|on] 687 (in lower or UPPER case) to enable the setting. Conversely a value 688 of [0|no|false|off] will disable the setting. All other values, or the 689 omission of a value for these settings will result in an error. 690 691 *Neil Horman* 692 693 * Added `-set_issuer` and `-set_subject` options to `openssl x509` to 694 override the Issuer and Subject when creating a certificate. The `-subj` 695 option now is an alias for `-set_subject`. 696 697 *Job Snijders, George Michaelson* 698 699 * OPENSSL_sk_push() and sk_<TYPE>_push() functions now return 0 instead of -1 700 if called with a NULL stack argument. 701 702 *Tomáš Mráz* 703 704 * In `openssl speed`, changed the default hash function used with `hmac` from 705 `md5` to `sha256`. 706 707 *James Muir* 708 709 * Added several new features of CMPv3 defined in RFC 9480 and RFC 9483: 710 - `certProfile` request message header and respective `-profile` CLI option 711 - support for delayed delivery of all types of response messages 712 713 This work was sponsored by Siemens AG. 714 715 *David von Oheimb* 716 717 * The build of exporters (such as `.pc` files for pkg-config) cleaned up to 718 be less hard coded in the build file templates, and to allow easier 719 addition of more exporters. With that, an exporter for CMake is also 720 added. 721 722 *Richard Levitte* 723 724 * The BLAKE2s hash algorithm matches BLAKE2b's support 725 for configurable output length. 726 727 *Ahelenia Ziemiańska* 728 729 * New option `SSL_OP_PREFER_NO_DHE_KEX`, which allows configuring a TLS1.3 730 server to prefer session resumption using PSK-only key exchange over PSK 731 with DHE, if both are available. 732 733 *Markus Minichmayr, Tapkey GmbH* 734 735 * New API `SSL_write_ex2`, which can be used to send an end-of-stream (FIN) 736 condition in an optimised way when using QUIC. 737 738 *Hugo Landau* 739 740 * New atexit configuration switch, which controls whether the OPENSSL_cleanup 741 is registered when libcrypto is unloaded. This is turned off on NonStop 742 configurations because of loader differences on that platform compared to 743 Linux. 744 745 *Randall S. Becker* 746 747 * Support for qlog for tracing QUIC connections has been added. 748 749 The qlog output from OpenSSL currently uses a pre-standard draft version of 750 qlog. The output from OpenSSL will change in incompatible ways in future 751 releases, and is not subject to any format stability or compatibility 752 guarantees at this time. This functionality can be 753 disabled with the build-time option `no-unstable-qlog`. See the 754 openssl-qlog(7) manpage for details. 755 756 *Hugo Landau* 757 758 * Added APIs to allow configuring the negotiated idle timeout for QUIC 759 connections, and to allow determining the number of additional streams 760 that can currently be created for a QUIC connection. 761 762 *Hugo Landau* 763 764 * Added APIs to allow disabling implicit QUIC event processing for 765 QUIC SSL objects, allowing applications to control when event handling 766 occurs. Refer to the SSL_get_value_uint(3) manpage for details. 767 768 *Hugo Landau* 769 770 * Limited support for polling of QUIC connection and stream objects in a 771 non-blocking manner. Refer to the SSL_poll(3) manpage for details. 772 773 *Hugo Landau* 774 775 * Added APIs to allow querying the size and utilisation of a QUIC stream's 776 write buffer. Refer to the SSL_get_value_uint(3) manpage for details. 777 778 *Hugo Landau* 779 780 * New limit on HTTP response headers is introduced to HTTP client. The 781 default limit is set to 256 header lines. If limit is exceeded the 782 response processing stops with error HTTP_R_RESPONSE_TOO_MANY_HDRLINES. 783 Application may call OSSL_HTTP_REQ_CTX_set_max_response_hdr_lines(3) 784 to change the default. Setting the value to 0 disables the limit. 785 786 *Alexandr Nedvedicky* 787 788 * Applied AES-GCM unroll8 optimisation to Microsoft Azure Cobalt 100 789 790 *Tom Cosgrove* 791 792 * Added X509_STORE_get1_objects to avoid issues with the existing 793 X509_STORE_get0_objects API in multi-threaded applications. Refer to the 794 documentation for details. 795 796 *David Benjamin* 797 798 * Added assembly implementation for md5 on loongarch64 799 800 *Min Zhou* 801 802 * Optimized AES-CTR for ARM Neoverse V1 and V2 803 804 *Fisher Yu* 805 806 * Enable AES and SHA3 optimisations on Apple Silicon M3-based MacOS systems 807 similar to M1/M2. 808 809 *Tom Cosgrove* 810 811 * Added a new EVP_DigestSqueeze() API. This allows SHAKE to squeeze multiple 812 times with different output sizes. 813 814 *Shane Lontis, Holger Dengler* 815 816 * Various optimizations for cryptographic routines using RISC-V vector crypto 817 extensions 818 819 *Christoph Müllner, Charalampos Mitrodimas, Ard Biesheuvel, Phoebe Chen, 820 Jerry Shih* 821 822 * Accept longer context for TLS 1.2 exporters 823 824 While RFC 5705 implies that the maximum length of a context for exporters is 825 65535 bytes as the length is embedded in uint16, the previous implementation 826 enforced a much smaller limit, which is less than 1024 bytes. This 827 restriction has been removed. 828 829 *Daiki Ueno* 830 831OpenSSL 3.2 832----------- 833 834### Changes between 3.2.1 and 3.2.2 [xx XXX xxxx] 835 836 * Fixed an issue where some non-default TLS server configurations can cause 837 unbounded memory growth when processing TLSv1.3 sessions. An attacker may 838 exploit certain server configurations to trigger unbounded memory growth that 839 would lead to a Denial of Service 840 841 This problem can occur in TLSv1.3 if the non-default SSL_OP_NO_TICKET option 842 is being used (but not if early_data is also configured and the default 843 anti-replay protection is in use). In this case, under certain conditions, 844 the session cache can get into an incorrect state and it will fail to flush 845 properly as it fills. The session cache will continue to grow in an unbounded 846 manner. A malicious client could deliberately create the scenario for this 847 failure to force a Denial of Service. It may also happen by accident in 848 normal operation. 849 850 ([CVE-2024-2511]) 851 852 *Matt Caswell* 853 854 * Fixed bug where SSL_export_keying_material() could not be used with QUIC 855 connections. (#23560) 856 857 *Hugo Landau* 858 859### Changes between 3.2.0 and 3.2.1 [30 Jan 2024] 860 861 * A file in PKCS12 format can contain certificates and keys and may come from 862 an untrusted source. The PKCS12 specification allows certain fields to be 863 NULL, but OpenSSL did not correctly check for this case. A fix has been 864 applied to prevent a NULL pointer dereference that results in OpenSSL 865 crashing. If an application processes PKCS12 files from an untrusted source 866 using the OpenSSL APIs then that application will be vulnerable to this 867 issue prior to this fix. 868 869 OpenSSL APIs that were vulnerable to this are: PKCS12_parse(), 870 PKCS12_unpack_p7data(), PKCS12_unpack_p7encdata(), PKCS12_unpack_authsafes() 871 and PKCS12_newpass(). 872 873 We have also fixed a similar issue in SMIME_write_PKCS7(). However since this 874 function is related to writing data we do not consider it security 875 significant. 876 877 ([CVE-2024-0727]) 878 879 *Matt Caswell* 880 881 * When function EVP_PKEY_public_check() is called on RSA public keys, 882 a computation is done to confirm that the RSA modulus, n, is composite. 883 For valid RSA keys, n is a product of two or more large primes and this 884 computation completes quickly. However, if n is an overly large prime, 885 then this computation would take a long time. 886 887 An application that calls EVP_PKEY_public_check() and supplies an RSA key 888 obtained from an untrusted source could be vulnerable to a Denial of Service 889 attack. 890 891 The function EVP_PKEY_public_check() is not called from other OpenSSL 892 functions however it is called from the OpenSSL pkey command line 893 application. For that reason that application is also vulnerable if used 894 with the "-pubin" and "-check" options on untrusted data. 895 896 To resolve this issue RSA keys larger than OPENSSL_RSA_MAX_MODULUS_BITS will 897 now fail the check immediately with an RSA_R_MODULUS_TOO_LARGE error reason. 898 899 ([CVE-2023-6237]) 900 901 *Tomáš Mráz* 902 903 * Restore the encoding of SM2 PrivateKeyInfo and SubjectPublicKeyInfo to 904 have the contained AlgorithmIdentifier.algorithm set to id-ecPublicKey 905 rather than SM2. 906 907 *Richard Levitte* 908 909 * The POLY1305 MAC (message authentication code) implementation in OpenSSL 910 for PowerPC CPUs saves the contents of vector registers in different 911 order than they are restored. Thus the contents of some of these vector 912 registers is corrupted when returning to the caller. The vulnerable code is 913 used only on newer PowerPC processors supporting the PowerISA 2.07 914 instructions. 915 916 The consequences of this kind of internal application state corruption can 917 be various - from no consequences, if the calling application does not 918 depend on the contents of non-volatile XMM registers at all, to the worst 919 consequences, where the attacker could get complete control of the 920 application process. However unless the compiler uses the vector registers 921 for storing pointers, the most likely consequence, if any, would be an 922 incorrect result of some application dependent calculations or a crash 923 leading to a denial of service. 924 925 ([CVE-2023-6129]) 926 927 *Rohan McLure* 928 929 * Disable building QUIC server utility when OpenSSL is configured with 930 `no-apps`. 931 932 *Vitalii Koshura* 933 934### Changes between 3.1 and 3.2.0 [23 Nov 2023] 935 936 * Fix excessive time spent in DH check / generation with large Q parameter 937 value. 938 939 Applications that use the functions DH_generate_key() to generate an 940 X9.42 DH key may experience long delays. Likewise, applications that use 941 DH_check_pub_key(), DH_check_pub_key_ex() or EVP_PKEY_public_check() 942 to check an X9.42 DH key or X9.42 DH parameters may experience long delays. 943 Where the key or parameters that are being checked have been obtained from 944 an untrusted source this may lead to a Denial of Service. 945 946 ([CVE-2023-5678]) 947 948 *Richard Levitte* 949 950 * The BLAKE2b hash algorithm supports a configurable output length 951 by setting the "size" parameter. 952 953 *Čestmír Kalina and Tomáš Mráz* 954 955 * Enable extra Arm64 optimization on Windows for GHASH, RAND and AES. 956 957 *Evgeny Karpov* 958 959 * Added a function to delete objects from store by URI - OSSL_STORE_delete() 960 and the corresponding provider-storemgmt API function 961 OSSL_FUNC_store_delete(). 962 963 *Dmitry Belyavskiy* 964 965 * Added OSSL_FUNC_store_open_ex() provider-storemgmt API function to pass 966 a passphrase callback when opening a store. 967 968 *Simo Sorce* 969 970 * Changed the default salt length used by PBES2 KDF's (PBKDF2 and scrypt) 971 from 8 bytes to 16 bytes. 972 The PKCS5 (RFC 8018) standard uses a 64 bit salt length for PBE, and 973 recommends a minimum of 64 bits for PBES2. For FIPS compliance PBKDF2 974 requires a salt length of 128 bits. This affects OpenSSL command line 975 applications such as "genrsa" and "pkcs8" and API's such as 976 PEM_write_bio_PrivateKey() that are reliant on the default value. 977 The additional commandline option 'saltlen' has been added to the 978 OpenSSL command line applications for "pkcs8" and "enc" to allow the 979 salt length to be set to a non default value. 980 981 *Shane Lontis* 982 983 * Changed the default value of the `ess_cert_id_alg` configuration 984 option which is used to calculate the TSA's public key certificate 985 identifier. The default algorithm is updated to be sha256 instead 986 of sha1. 987 988 *Małgorzata Olszówka* 989 990 * Added optimization for SM2 algorithm on aarch64. It uses a huge precomputed 991 table for point multiplication of the base point, which increases the size of 992 libcrypto from 4.4 MB to 4.9 MB. A new configure option `no-sm2-precomp` has 993 been added to disable the precomputed table. 994 995 *Xu Yizhou* 996 997 * Added client side support for QUIC 998 999 *Hugo Landau, Matt Caswell, Paul Dale, Tomáš Mráz, Richard Levitte* 1000 1001 * Added multiple tutorials on the OpenSSL library and in particular 1002 on writing various clients (using TLS and QUIC protocols) with libssl. 1003 1004 *Matt Caswell* 1005 1006 * Added secp384r1 implementation using Solinas' reduction to improve 1007 speed of the NIST P-384 elliptic curve. To enable the implementation 1008 the build option `enable-ec_nistp_64_gcc_128` must be used. 1009 1010 *Rohan McLure* 1011 1012 * Improved RFC7468 compliance of the asn1parse command. 1013 1014 *Matthias St. Pierre* 1015 1016 * Added SHA256/192 algorithm support. 1017 1018 *Fergus Dall* 1019 1020 * Improved contention on global write locks by using more read locks where 1021 appropriate. 1022 1023 *Matt Caswell* 1024 1025 * Improved performance of OSSL_PARAM lookups in performance critical 1026 provider functions. 1027 1028 *Paul Dale* 1029 1030 * Added the SSL_get0_group_name() function to provide access to the 1031 name of the group used for the TLS key exchange. 1032 1033 *Alex Bozarth* 1034 1035 * Provide a new configure option `no-http` that can be used to disable the 1036 HTTP support. Provide new configure options `no-apps` and `no-docs` to 1037 disable building the openssl command line application and the documentation. 1038 1039 *Vladimír Kotal* 1040 1041 * Provide a new configure option `no-ecx` that can be used to disable the 1042 X25519, X448, and EdDSA support. 1043 1044 *Yi Li* 1045 1046 * When multiple OSSL_KDF_PARAM_INFO parameters are passed to 1047 the EVP_KDF_CTX_set_params() function they are now concatenated not just 1048 for the HKDF algorithm but also for SSKDF and X9.63 KDF algorithms. 1049 1050 *Paul Dale* 1051 1052 * Added OSSL_FUNC_keymgmt_im/export_types_ex() provider functions that get 1053 the provider context as a parameter. 1054 1055 *Ingo Franzki* 1056 1057 * TLS round-trip time calculation was added by a Brigham Young University 1058 Capstone team partnering with Sandia National Laboratories. A new function 1059 in ssl_lib titled SSL_get_handshake_rtt will calculate and retrieve this 1060 value. 1061 1062 *Jairus Christensen* 1063 1064 * Added the "-quic" option to s_client to enable connectivity to QUIC servers. 1065 QUIC requires the use of ALPN, so this must be specified via the "-alpn" 1066 option. Use of the "advanced" s_client command command via the "-adv" option 1067 is recommended. 1068 1069 *Matt Caswell* 1070 1071 * Added an "advanced" command mode to s_client. Use this with the "-adv" 1072 option. The old "basic" command mode recognises certain letters that must 1073 always appear at the start of a line and cannot be escaped. The advanced 1074 command mode enables commands to be entered anywhere and there is an 1075 escaping mechanism. After starting s_client with "-adv" type "{help}" 1076 to show a list of available commands. 1077 1078 *Matt Caswell* 1079 1080 * Add Raw Public Key (RFC7250) support. Authentication is supported 1081 by matching keys against either local policy (TLSA records synthesised 1082 from the expected keys) or DANE (TLSA records obtained by the 1083 application from DNS). TLSA records will also match the same key in 1084 the server certificate, should RPK use not happen to be negotiated. 1085 1086 *Todd Short* 1087 1088 * Added support for modular exponentiation and CRT offloading for the 1089 S390x architecture. 1090 1091 *Juergen Christ* 1092 1093 * Added further assembler code for the RISC-V architecture. 1094 1095 *Christoph Müllner* 1096 1097 * Added EC_GROUP_to_params() which creates an OSSL_PARAM array 1098 from a given EC_GROUP. 1099 1100 *Oliver Mihatsch* 1101 1102 * Improved support for non-default library contexts and property queries 1103 when parsing PKCS#12 files. 1104 1105 *Shane Lontis* 1106 1107 * Implemented support for all five instances of EdDSA from RFC8032: 1108 Ed25519, Ed25519ctx, Ed25519ph, Ed448, and Ed448ph. 1109 The streaming is not yet supported for the HashEdDSA variants 1110 (Ed25519ph and Ed448ph). 1111 1112 *James Muir* 1113 1114 * Added SM4 optimization for ARM processors using ASIMD and AES HW 1115 instructions. 1116 1117 *Xu Yizhou* 1118 1119 * Implemented SM4-XTS support. 1120 1121 *Xu Yizhou* 1122 1123 * Added platform-agnostic OSSL_sleep() function. 1124 1125 *Richard Levitte* 1126 1127 * Implemented deterministic ECDSA signatures (RFC6979) support. 1128 1129 *Shane Lontis* 1130 1131 * Implemented AES-GCM-SIV (RFC8452) support. 1132 1133 *Todd Short* 1134 1135 * Added support for pluggable (provider-based) TLS signature algorithms. 1136 This enables TLS 1.3 authentication operations with algorithms embedded 1137 in providers not included by default in OpenSSL. In combination with 1138 the already available pluggable KEM and X.509 support, this enables 1139 for example suitable providers to deliver post-quantum or quantum-safe 1140 cryptography to OpenSSL users. 1141 1142 *Michael Baentsch* 1143 1144 * Added support for pluggable (provider-based) CMS signature algorithms. 1145 This enables CMS sign and verify operations with algorithms embedded 1146 in providers not included by default in OpenSSL. 1147 1148 *Michael Baentsch* 1149 1150 * Added support for Hybrid Public Key Encryption (HPKE) as defined 1151 in RFC9180. HPKE is required for TLS Encrypted ClientHello (ECH), 1152 Message Layer Security (MLS) and other IETF specifications. 1153 HPKE can also be used by other applications that require 1154 encrypting "to" an ECDH public key. External APIs are defined in 1155 include/openssl/hpke.h and documented in doc/man3/OSSL_HPKE_CTX_new.pod 1156 1157 *Stephen Farrell* 1158 1159 * Implemented HPKE DHKEM support in providers used by HPKE (RFC9180) 1160 API. 1161 1162 *Shane Lontis* 1163 1164 * Add support for certificate compression (RFC8879), including 1165 library support for Brotli and Zstandard compression. 1166 1167 *Todd Short* 1168 1169 * Add the ability to add custom attributes to PKCS12 files. Add a new API 1170 PKCS12_create_ex2, identical to the existing PKCS12_create_ex but allows 1171 for a user specified callback and optional argument. 1172 Added a new PKCS12_SAFEBAG_set0_attr, which allows for a new attr to be 1173 added to the existing STACK_OF attrs. 1174 1175 *Graham Woodward* 1176 1177 * Major refactor of the libssl record layer. 1178 1179 *Matt Caswell* 1180 1181 * Add a mac salt length option for the pkcs12 command. 1182 1183 *Xinping Chen* 1184 1185 * Add more SRTP protection profiles from RFC8723 and RFC8269. 1186 1187 *Kijin Kim* 1188 1189 * Extended Kernel TLS (KTLS) to support TLS 1.3 receive offload. 1190 1191 *Daiki Ueno, John Baldwin and Dmitry Podgorny* 1192 1193 * Add support for TCP Fast Open (RFC7413) to macOS, Linux, and FreeBSD where 1194 supported and enabled. 1195 1196 *Todd Short* 1197 1198 * Add ciphersuites based on DHE_PSK (RFC 4279) and ECDHE_PSK (RFC 5489) 1199 to the list of ciphersuites providing Perfect Forward Secrecy as 1200 required by SECLEVEL >= 3. 1201 1202 *Dmitry Belyavskiy, Nicola Tuveri* 1203 1204 * Add new SSL APIs to aid in efficiently implementing TLS/SSL fingerprinting. 1205 The SSL_CTRL_GET_IANA_GROUPS control code, exposed as the 1206 SSL_get0_iana_groups() function-like macro, retrieves the list of 1207 supported groups sent by the peer. 1208 The function SSL_client_hello_get_extension_order() populates 1209 a caller-supplied array with the list of extension types present in the 1210 ClientHello, in order of appearance. 1211 1212 *Phus Lu* 1213 1214 * Fixed PEM_write_bio_PKCS8PrivateKey() and PEM_write_bio_PKCS8PrivateKey_nid() 1215 to make it possible to use empty passphrase strings. 1216 1217 *Darshan Sen* 1218 1219 * The PKCS12_parse() function now supports MAC-less PKCS12 files. 1220 1221 *Daniel Fiala* 1222 1223 * Added ASYNC_set_mem_functions() and ASYNC_get_mem_functions() calls to be able 1224 to change functions used for allocating the memory of asynchronous call stack. 1225 1226 *Arran Cudbard-Bell* 1227 1228 * Added support for signed BIGNUMs in the OSSL_PARAM APIs. 1229 1230 *Richard Levitte* 1231 1232 * A failure exit code is returned when using the openssl x509 command to check 1233 certificate attributes and the checks fail. 1234 1235 *Rami Khaldi* 1236 1237 * The default SSL/TLS security level has been changed from 1 to 2. RSA, 1238 DSA and DH keys of 1024 bits and above and less than 2048 bits and ECC keys 1239 of 160 bits and above and less than 224 bits were previously accepted by 1240 default but are now no longer allowed. By default TLS compression was 1241 already disabled in previous OpenSSL versions. At security level 2 it cannot 1242 be enabled. 1243 1244 *Matt Caswell* 1245 1246 * The SSL_CTX_set_cipher_list family functions now accept ciphers using their 1247 IANA standard names. 1248 1249 *Erik Lax* 1250 1251 * The PVK key derivation function has been moved from b2i_PVK_bio_ex() into 1252 the legacy crypto provider as an EVP_KDF. Applications requiring this KDF 1253 will need to load the legacy crypto provider. 1254 1255 *Paul Dale* 1256 1257 * CCM8 cipher suites in TLS have been downgraded to security level zero 1258 because they use a short authentication tag which lowers their strength. 1259 1260 *Paul Dale* 1261 1262 * Subject or issuer names in X.509 objects are now displayed as UTF-8 strings 1263 by default. Also spaces surrounding `=` in DN output are removed. 1264 1265 *Dmitry Belyavskiy* 1266 1267 * Add X.509 certificate codeSigning purpose and related checks on key usage and 1268 extended key usage of the leaf certificate according to the CA/Browser Forum. 1269 1270 * Lutz Jänicke* 1271 1272 * The `x509`, `ca`, and `req` commands now produce X.509 v3 certificates. 1273 The `-x509v1` option of `req` prefers generation of X.509 v1 certificates. 1274 `X509_sign()` and `X509_sign_ctx()` make sure that the certificate has 1275 X.509 version 3 if the certificate information includes X.509 extensions. 1276 1277 *David von Oheimb* 1278 1279 * Fix and extend certificate handling and the commands `x509`, `verify` etc. 1280 such as adding a trace facility for debugging certificate chain building. 1281 1282 *David von Oheimb* 1283 1284 * Various fixes and extensions to the CMP+CRMF implementation and the `cmp` app 1285 in particular supporting various types of genm/genp exchanges such as getting 1286 CA certificates and root CA cert updates defined in CMP Updates [RFC 9480], 1287 as well as the `-srvcertout` and `-serial` CLI options. 1288 1289 This work was sponsored by Siemens AG. 1290 1291 *David von Oheimb* 1292 1293 * Fixes and extensions to the HTTP client and to the HTTP server in `apps/` 1294 like correcting the TLS and proxy support and adding tracing for debugging. 1295 1296 *David von Oheimb* 1297 1298 * Extended the CMS API for handling `CMS_SignedData` and `CMS_EnvelopedData`. 1299 1300 *David von Oheimb* 1301 1302 * `CMS_add0_cert()` and `CMS_add1_cert()` no longer throw an error if 1303 a certificate to be added is already present. `CMS_sign_ex()` and 1304 `CMS_sign()` now ignore any duplicate certificates in their `certs` argument 1305 and no longer throw an error for them. 1306 1307 *David von Oheimb* 1308 1309 * Fixed and extended `util/check-format.pl` for checking adherence to the 1310 coding style <https://www.openssl.org/policies/technical/coding-style.html>. 1311 The checks are meanwhile more complete and yield fewer false positives. 1312 1313 *David von Oheimb* 1314 1315 * Added BIO_s_dgram_pair() and BIO_s_dgram_mem() that provide memory-based 1316 BIOs with datagram semantics and support for BIO_sendmmsg() and BIO_recvmmsg() 1317 calls. They can be used as the transport BIOs for QUIC. 1318 1319 *Hugo Landau, Matt Caswell and Tomáš Mráz* 1320 1321 * Add new BIO_sendmmsg() and BIO_recvmmsg() BIO methods which allow 1322 sending and receiving multiple messages in a single call. An implementation 1323 is provided for BIO_dgram. For further details, see BIO_sendmmsg(3). 1324 1325 *Hugo Landau* 1326 1327 * Support for loading root certificates from the Windows certificate store 1328 has been added. The support is in the form of a store which recognises the 1329 URI string of `org.openssl.winstore://`. This URI scheme currently takes no 1330 arguments. This store is built by default and can be disabled using the new 1331 compile-time option `no-winstore`. This store is not currently used by 1332 default and must be loaded explicitly using the above store URI. It is 1333 expected to be loaded by default in the future. 1334 1335 *Hugo Landau* 1336 1337 * Enable KTLS with the TLS 1.3 CCM mode ciphersuites. Note that some linux 1338 kernel versions that support KTLS have a known bug in CCM processing. That 1339 has been fixed in stable releases starting from 5.4.164, 5.10.84, 5.15.7, 1340 and all releases since 5.16. KTLS with CCM ciphersuites should be only used 1341 on these releases. 1342 1343 *Tianjia Zhang* 1344 1345 * Added `-ktls` option to `s_server` and `s_client` commands to enable the 1346 KTLS support. 1347 1348 *Tianjia Zhang* 1349 1350 * Zerocopy KTLS sendfile() support on Linux. 1351 1352 *Maxim Mikityanskiy* 1353 1354 * The OBJ_ calls are now thread safe using a global lock. 1355 1356 *Paul Dale* 1357 1358 * New parameter `-digest` for openssl cms command allowing signing 1359 pre-computed digests and new CMS API functions supporting that 1360 functionality. 1361 1362 *Viktor Söderqvist* 1363 1364 * OPENSSL_malloc() and other allocation functions now raise errors on 1365 allocation failures. The callers do not need to explicitly raise errors 1366 unless they want to for tracing purposes. 1367 1368 *David von Oheimb* 1369 1370 * Added and enabled by default implicit rejection in RSA PKCS#1 v1.5 1371 decryption as a protection against Bleichenbacher-like attacks. 1372 The RSA decryption API will now return a randomly generated deterministic 1373 message instead of an error in case it detects an error when checking 1374 padding during PKCS#1 v1.5 decryption. This is a general protection against 1375 issues like CVE-2020-25659 and CVE-2020-25657. This protection can be 1376 disabled by calling 1377 `EVP_PKEY_CTX_ctrl_str(ctx, "rsa_pkcs1_implicit_rejection". "0")` 1378 on the RSA decryption context. 1379 1380 *Hubert Kario* 1381 1382 * Added support for Brainpool curves in TLS-1.3. 1383 1384 *Bernd Edlinger and Matt Caswell* 1385 1386 * Added OpenBSD specific build targets. 1387 1388 *David Carlier* 1389 1390 * Support for Argon2d, Argon2i, Argon2id KDFs has been added along with 1391 a basic thread pool implementation for select platforms. 1392 1393 *Čestmír Kalina* 1394 1395OpenSSL 3.1 1396----------- 1397 1398### Changes between 3.1.3 and 3.1.4 [24 Oct 2023] 1399 1400 * Fix incorrect key and IV resizing issues when calling EVP_EncryptInit_ex2(), 1401 EVP_DecryptInit_ex2() or EVP_CipherInit_ex2() with OSSL_PARAM parameters 1402 that alter the key or IV length ([CVE-2023-5363]). 1403 1404 *Paul Dale* 1405 1406### Changes between 3.1.2 and 3.1.3 [19 Sep 2023] 1407 1408 * Fix POLY1305 MAC implementation corrupting XMM registers on Windows. 1409 1410 The POLY1305 MAC (message authentication code) implementation in OpenSSL 1411 does not save the contents of non-volatile XMM registers on Windows 64 1412 platform when calculating the MAC of data larger than 64 bytes. Before 1413 returning to the caller all the XMM registers are set to zero rather than 1414 restoring their previous content. The vulnerable code is used only on newer 1415 x86_64 processors supporting the AVX512-IFMA instructions. 1416 1417 The consequences of this kind of internal application state corruption can 1418 be various - from no consequences, if the calling application does not 1419 depend on the contents of non-volatile XMM registers at all, to the worst 1420 consequences, where the attacker could get complete control of the 1421 application process. However given the contents of the registers are just 1422 zeroized so the attacker cannot put arbitrary values inside, the most likely 1423 consequence, if any, would be an incorrect result of some application 1424 dependent calculations or a crash leading to a denial of service. 1425 1426 ([CVE-2023-4807]) 1427 1428 *Bernd Edlinger* 1429 1430### Changes between 3.1.1 and 3.1.2 [1 Aug 2023] 1431 1432 * Fix excessive time spent checking DH q parameter value. 1433 1434 The function DH_check() performs various checks on DH parameters. After 1435 fixing CVE-2023-3446 it was discovered that a large q parameter value can 1436 also trigger an overly long computation during some of these checks. 1437 A correct q value, if present, cannot be larger than the modulus p 1438 parameter, thus it is unnecessary to perform these checks if q is larger 1439 than p. 1440 1441 If DH_check() is called with such q parameter value, 1442 DH_CHECK_INVALID_Q_VALUE return flag is set and the computationally 1443 intensive checks are skipped. 1444 1445 ([CVE-2023-3817]) 1446 1447 *Tomáš Mráz* 1448 1449 * Fix DH_check() excessive time with over sized modulus. 1450 1451 The function DH_check() performs various checks on DH parameters. One of 1452 those checks confirms that the modulus ("p" parameter) is not too large. 1453 Trying to use a very large modulus is slow and OpenSSL will not normally use 1454 a modulus which is over 10,000 bits in length. 1455 1456 However the DH_check() function checks numerous aspects of the key or 1457 parameters that have been supplied. Some of those checks use the supplied 1458 modulus value even if it has already been found to be too large. 1459 1460 A new limit has been added to DH_check of 32,768 bits. Supplying a 1461 key/parameters with a modulus over this size will simply cause DH_check() to 1462 fail. 1463 1464 ([CVE-2023-3446]) 1465 1466 *Matt Caswell* 1467 1468 * Do not ignore empty associated data entries with AES-SIV. 1469 1470 The AES-SIV algorithm allows for authentication of multiple associated 1471 data entries along with the encryption. To authenticate empty data the 1472 application has to call `EVP_EncryptUpdate()` (or `EVP_CipherUpdate()`) 1473 with NULL pointer as the output buffer and 0 as the input buffer length. 1474 The AES-SIV implementation in OpenSSL just returns success for such call 1475 instead of performing the associated data authentication operation. 1476 The empty data thus will not be authenticated. ([CVE-2023-2975]) 1477 1478 Thanks to Juerg Wullschleger (Google) for discovering the issue. 1479 1480 The fix changes the authentication tag value and the ciphertext for 1481 applications that use empty associated data entries with AES-SIV. 1482 To decrypt data encrypted with previous versions of OpenSSL the application 1483 has to skip calls to `EVP_DecryptUpdate()` for empty associated data 1484 entries. 1485 1486 *Tomáš Mráz* 1487 1488 * When building with the `enable-fips` option and using the resulting 1489 FIPS provider, TLS 1.2 will, by default, mandate the use of an extended 1490 master secret (FIPS 140-3 IG G.Q) and the Hash and HMAC DRBGs will 1491 not operate with truncated digests (FIPS 140-3 IG G.R). 1492 1493 *Paul Dale* 1494 1495### Changes between 3.1.0 and 3.1.1 [30 May 2023] 1496 1497 * Mitigate for the time it takes for `OBJ_obj2txt` to translate gigantic 1498 OBJECT IDENTIFIER sub-identifiers to canonical numeric text form. 1499 1500 OBJ_obj2txt() would translate any size OBJECT IDENTIFIER to canonical 1501 numeric text form. For gigantic sub-identifiers, this would take a very 1502 long time, the time complexity being O(n^2) where n is the size of that 1503 sub-identifier. ([CVE-2023-2650]) 1504 1505 To mitigitate this, `OBJ_obj2txt()` will only translate an OBJECT 1506 IDENTIFIER to canonical numeric text form if the size of that OBJECT 1507 IDENTIFIER is 586 bytes or less, and fail otherwise. 1508 1509 The basis for this restriction is [RFC 2578 (STD 58), section 3.5]. OBJECT 1510 IDENTIFIER values, which stipulates that OBJECT IDENTIFIERS may have at 1511 most 128 sub-identifiers, and that the maximum value that each sub- 1512 identifier may have is 2^32-1 (4294967295 decimal). 1513 1514 For each byte of every sub-identifier, only the 7 lower bits are part of 1515 the value, so the maximum amount of bytes that an OBJECT IDENTIFIER with 1516 these restrictions may occupy is 32 * 128 / 7, which is approximately 586 1517 bytes. 1518 1519 *Richard Levitte* 1520 1521 * Multiple algorithm implementation fixes for ARM BE platforms. 1522 1523 *Liu-ErMeng* 1524 1525 * Added a -pedantic option to fipsinstall that adjusts the various 1526 settings to ensure strict FIPS compliance rather than backwards 1527 compatibility. 1528 1529 *Paul Dale* 1530 1531 * Fixed buffer overread in AES-XTS decryption on ARM 64 bit platforms which 1532 happens if the buffer size is 4 mod 5 in 16 byte AES blocks. This can 1533 trigger a crash of an application using AES-XTS decryption if the memory 1534 just after the buffer being decrypted is not mapped. 1535 Thanks to Anton Romanov (Amazon) for discovering the issue. 1536 ([CVE-2023-1255]) 1537 1538 *Nevine Ebeid* 1539 1540 * Reworked the Fix for the Timing Oracle in RSA Decryption ([CVE-2022-4304]). 1541 The previous fix for this timing side channel turned out to cause 1542 a severe 2-3x performance regression in the typical use case 1543 compared to 3.0.7. The new fix uses existing constant time 1544 code paths, and restores the previous performance level while 1545 fully eliminating all existing timing side channels. 1546 The fix was developed by Bernd Edlinger with testing support 1547 by Hubert Kario. 1548 1549 *Bernd Edlinger* 1550 1551 * Add FIPS provider configuration option to disallow the use of 1552 truncated digests with Hash and HMAC DRBGs (q.v. FIPS 140-3 IG D.R.). 1553 The option '-no_drbg_truncated_digests' can optionally be 1554 supplied to 'openssl fipsinstall'. 1555 1556 *Paul Dale* 1557 1558 * Corrected documentation of X509_VERIFY_PARAM_add0_policy() to mention 1559 that it does not enable policy checking. Thanks to David Benjamin for 1560 discovering this issue. 1561 ([CVE-2023-0466]) 1562 1563 *Tomáš Mráz* 1564 1565 * Fixed an issue where invalid certificate policies in leaf certificates are 1566 silently ignored by OpenSSL and other certificate policy checks are skipped 1567 for that certificate. A malicious CA could use this to deliberately assert 1568 invalid certificate policies in order to circumvent policy checking on the 1569 certificate altogether. 1570 ([CVE-2023-0465]) 1571 1572 *Matt Caswell* 1573 1574 * Limited the number of nodes created in a policy tree to mitigate 1575 against CVE-2023-0464. The default limit is set to 1000 nodes, which 1576 should be sufficient for most installations. If required, the limit 1577 can be adjusted by setting the OPENSSL_POLICY_TREE_NODES_MAX build 1578 time define to a desired maximum number of nodes or zero to allow 1579 unlimited growth. 1580 ([CVE-2023-0464]) 1581 1582 *Paul Dale* 1583 1584### Changes between 3.0 and 3.1.0 [14 Mar 2023] 1585 1586 * Add FIPS provider configuration option to enforce the 1587 Extended Master Secret (EMS) check during the TLS1_PRF KDF. 1588 The option '-ems_check' can optionally be supplied to 1589 'openssl fipsinstall'. 1590 1591 *Shane Lontis* 1592 1593 * The FIPS provider includes a few non-approved algorithms for 1594 backward compatibility purposes and the "fips=yes" property query 1595 must be used for all algorithm fetches to ensure FIPS compliance. 1596 1597 The algorithms that are included but not approved are Triple DES ECB, 1598 Triple DES CBC and EdDSA. 1599 1600 *Paul Dale* 1601 1602 * Added support for KMAC in KBKDF. 1603 1604 *Shane Lontis* 1605 1606 * RNDR and RNDRRS support in provider functions to provide 1607 random number generation for Arm CPUs (aarch64). 1608 1609 *Orr Toledano* 1610 1611 * `s_client` and `s_server` commands now explicitly say when the TLS version 1612 does not include the renegotiation mechanism. This avoids confusion 1613 between that scenario versus when the TLS version includes secure 1614 renegotiation but the peer lacks support for it. 1615 1616 *Felipe Gasper* 1617 1618 * AES-GCM enabled with AVX512 vAES and vPCLMULQDQ. 1619 1620 *Tomasz Kantecki, Andrey Matyukov* 1621 1622 * The various OBJ_* functions have been made thread safe. 1623 1624 *Paul Dale* 1625 1626 * Parallel dual-prime 1536/2048-bit modular exponentiation for 1627 AVX512_IFMA capable processors. 1628 1629 *Sergey Kirillov, Andrey Matyukov (Intel Corp)* 1630 1631 * The functions `OPENSSL_LH_stats`, `OPENSSL_LH_node_stats`, 1632 `OPENSSL_LH_node_usage_stats`, `OPENSSL_LH_stats_bio`, 1633 `OPENSSL_LH_node_stats_bio` and `OPENSSL_LH_node_usage_stats_bio` are now 1634 marked deprecated from OpenSSL 3.1 onwards and can be disabled by defining 1635 `OPENSSL_NO_DEPRECATED_3_1`. 1636 1637 The macro `DEFINE_LHASH_OF` is now deprecated in favour of the macro 1638 `DEFINE_LHASH_OF_EX`, which omits the corresponding type-specific function 1639 definitions for these functions regardless of whether 1640 `OPENSSL_NO_DEPRECATED_3_1` is defined. 1641 1642 Users of `DEFINE_LHASH_OF` may start receiving deprecation warnings for these 1643 functions regardless of whether they are using them. It is recommended that 1644 users transition to the new macro, `DEFINE_LHASH_OF_EX`. 1645 1646 *Hugo Landau* 1647 1648 * When generating safe-prime DH parameters set the recommended private key 1649 length equivalent to minimum key lengths as in RFC 7919. 1650 1651 *Tomáš Mráz* 1652 1653 * Change the default salt length for PKCS#1 RSASSA-PSS signatures to the 1654 maximum size that is smaller or equal to the digest length to comply with 1655 FIPS 186-4 section 5. This is implemented by a new option 1656 `OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX` ("auto-digestmax") for the 1657 `rsa_pss_saltlen` parameter, which is now the default. Signature 1658 verification is not affected by this change and continues to work as before. 1659 1660 *Clemens Lang* 1661 1662OpenSSL 3.0 1663----------- 1664 1665For OpenSSL 3.0 a [Migration guide][] has been added, so the CHANGES entries 1666listed here are only a brief description. 1667The migration guide contains more detailed information related to new features, 1668breaking changes, and mappings for the large list of deprecated functions. 1669 1670[Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod 1671 1672### Changes between 3.0.7 and 3.0.8 [7 Feb 2023] 1673 1674 * Fixed NULL dereference during PKCS7 data verification. 1675 1676 A NULL pointer can be dereferenced when signatures are being 1677 verified on PKCS7 signed or signedAndEnveloped data. In case the hash 1678 algorithm used for the signature is known to the OpenSSL library but 1679 the implementation of the hash algorithm is not available the digest 1680 initialization will fail. There is a missing check for the return 1681 value from the initialization function which later leads to invalid 1682 usage of the digest API most likely leading to a crash. 1683 ([CVE-2023-0401]) 1684 1685 PKCS7 data is processed by the SMIME library calls and also by the 1686 time stamp (TS) library calls. The TLS implementation in OpenSSL does 1687 not call these functions however third party applications would be 1688 affected if they call these functions to verify signatures on untrusted 1689 data. 1690 1691 *Tomáš Mráz* 1692 1693 * Fixed X.400 address type confusion in X.509 GeneralName. 1694 1695 There is a type confusion vulnerability relating to X.400 address processing 1696 inside an X.509 GeneralName. X.400 addresses were parsed as an ASN1_STRING 1697 but the public structure definition for GENERAL_NAME incorrectly specified 1698 the type of the x400Address field as ASN1_TYPE. This field is subsequently 1699 interpreted by the OpenSSL function GENERAL_NAME_cmp as an ASN1_TYPE rather 1700 than an ASN1_STRING. 1701 1702 When CRL checking is enabled (i.e. the application sets the 1703 X509_V_FLAG_CRL_CHECK flag), this vulnerability may allow an attacker to 1704 pass arbitrary pointers to a memcmp call, enabling them to read memory 1705 contents or enact a denial of service. 1706 ([CVE-2023-0286]) 1707 1708 *Hugo Landau* 1709 1710 * Fixed NULL dereference validating DSA public key. 1711 1712 An invalid pointer dereference on read can be triggered when an 1713 application tries to check a malformed DSA public key by the 1714 EVP_PKEY_public_check() function. This will most likely lead 1715 to an application crash. This function can be called on public 1716 keys supplied from untrusted sources which could allow an attacker 1717 to cause a denial of service attack. 1718 1719 The TLS implementation in OpenSSL does not call this function 1720 but applications might call the function if there are additional 1721 security requirements imposed by standards such as FIPS 140-3. 1722 ([CVE-2023-0217]) 1723 1724 *Shane Lontis, Tomáš Mráz* 1725 1726 * Fixed Invalid pointer dereference in d2i_PKCS7 functions. 1727 1728 An invalid pointer dereference on read can be triggered when an 1729 application tries to load malformed PKCS7 data with the 1730 d2i_PKCS7(), d2i_PKCS7_bio() or d2i_PKCS7_fp() functions. 1731 1732 The result of the dereference is an application crash which could 1733 lead to a denial of service attack. The TLS implementation in OpenSSL 1734 does not call this function however third party applications might 1735 call these functions on untrusted data. 1736 ([CVE-2023-0216]) 1737 1738 *Tomáš Mráz* 1739 1740 * Fixed Use-after-free following BIO_new_NDEF. 1741 1742 The public API function BIO_new_NDEF is a helper function used for 1743 streaming ASN.1 data via a BIO. It is primarily used internally to OpenSSL 1744 to support the SMIME, CMS and PKCS7 streaming capabilities, but may also 1745 be called directly by end user applications. 1746 1747 The function receives a BIO from the caller, prepends a new BIO_f_asn1 1748 filter BIO onto the front of it to form a BIO chain, and then returns 1749 the new head of the BIO chain to the caller. Under certain conditions, 1750 for example if a CMS recipient public key is invalid, the new filter BIO 1751 is freed and the function returns a NULL result indicating a failure. 1752 However, in this case, the BIO chain is not properly cleaned up and the 1753 BIO passed by the caller still retains internal pointers to the previously 1754 freed filter BIO. If the caller then goes on to call BIO_pop() on the BIO 1755 then a use-after-free will occur. This will most likely result in a crash. 1756 ([CVE-2023-0215]) 1757 1758 *Viktor Dukhovni, Matt Caswell* 1759 1760 * Fixed Double free after calling PEM_read_bio_ex. 1761 1762 The function PEM_read_bio_ex() reads a PEM file from a BIO and parses and 1763 decodes the "name" (e.g. "CERTIFICATE"), any header data and the payload 1764 data. If the function succeeds then the "name_out", "header" and "data" 1765 arguments are populated with pointers to buffers containing the relevant 1766 decoded data. The caller is responsible for freeing those buffers. It is 1767 possible to construct a PEM file that results in 0 bytes of payload data. 1768 In this case PEM_read_bio_ex() will return a failure code but will populate 1769 the header argument with a pointer to a buffer that has already been freed. 1770 If the caller also frees this buffer then a double free will occur. This 1771 will most likely lead to a crash. 1772 1773 The functions PEM_read_bio() and PEM_read() are simple wrappers around 1774 PEM_read_bio_ex() and therefore these functions are also directly affected. 1775 1776 These functions are also called indirectly by a number of other OpenSSL 1777 functions including PEM_X509_INFO_read_bio_ex() and 1778 SSL_CTX_use_serverinfo_file() which are also vulnerable. Some OpenSSL 1779 internal uses of these functions are not vulnerable because the caller does 1780 not free the header argument if PEM_read_bio_ex() returns a failure code. 1781 ([CVE-2022-4450]) 1782 1783 *Kurt Roeckx, Matt Caswell* 1784 1785 * Fixed Timing Oracle in RSA Decryption. 1786 1787 A timing based side channel exists in the OpenSSL RSA Decryption 1788 implementation which could be sufficient to recover a plaintext across 1789 a network in a Bleichenbacher style attack. To achieve a successful 1790 decryption an attacker would have to be able to send a very large number 1791 of trial messages for decryption. The vulnerability affects all RSA padding 1792 modes: PKCS#1 v1.5, RSA-OEAP and RSASVE. 1793 ([CVE-2022-4304]) 1794 1795 *Dmitry Belyavsky, Hubert Kario* 1796 1797 * Fixed X.509 Name Constraints Read Buffer Overflow. 1798 1799 A read buffer overrun can be triggered in X.509 certificate verification, 1800 specifically in name constraint checking. The read buffer overrun might 1801 result in a crash which could lead to a denial of service attack. 1802 In a TLS client, this can be triggered by connecting to a malicious 1803 server. In a TLS server, this can be triggered if the server requests 1804 client authentication and a malicious client connects. 1805 ([CVE-2022-4203]) 1806 1807 *Viktor Dukhovni* 1808 1809 * Fixed X.509 Policy Constraints Double Locking security issue. 1810 1811 If an X.509 certificate contains a malformed policy constraint and 1812 policy processing is enabled, then a write lock will be taken twice 1813 recursively. On some operating systems (most widely: Windows) this 1814 results in a denial of service when the affected process hangs. Policy 1815 processing being enabled on a publicly facing server is not considered 1816 to be a common setup. 1817 ([CVE-2022-3996]) 1818 1819 *Paul Dale* 1820 1821 * Our provider implementations of `OSSL_FUNC_KEYMGMT_EXPORT` and 1822 `OSSL_FUNC_KEYMGMT_GET_PARAMS` for EC and SM2 keys now honor 1823 `OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT` as set (and 1824 default to `POINT_CONVERSION_UNCOMPRESSED`) when exporting 1825 `OSSL_PKEY_PARAM_PUB_KEY`, instead of unconditionally using 1826 `POINT_CONVERSION_COMPRESSED` as in previous 3.x releases. 1827 For symmetry, our implementation of `EVP_PKEY_ASN1_METHOD->export_to` 1828 for legacy EC and SM2 keys is also changed similarly to honor the 1829 equivalent conversion format flag as specified in the underlying 1830 `EC_KEY` object being exported to a provider, when this function is 1831 called through `EVP_PKEY_export()`. 1832 1833 *Nicola Tuveri* 1834 1835### Changes between 3.0.6 and 3.0.7 [1 Nov 2022] 1836 1837 * Fixed two buffer overflows in punycode decoding functions. 1838 1839 A buffer overrun can be triggered in X.509 certificate verification, 1840 specifically in name constraint checking. Note that this occurs after 1841 certificate chain signature verification and requires either a CA to 1842 have signed the malicious certificate or for the application to continue 1843 certificate verification despite failure to construct a path to a trusted 1844 issuer. 1845 1846 In a TLS client, this can be triggered by connecting to a malicious 1847 server. In a TLS server, this can be triggered if the server requests 1848 client authentication and a malicious client connects. 1849 1850 An attacker can craft a malicious email address to overflow 1851 an arbitrary number of bytes containing the `.` character (decimal 46) 1852 on the stack. This buffer overflow could result in a crash (causing a 1853 denial of service). 1854 ([CVE-2022-3786]) 1855 1856 An attacker can craft a malicious email address to overflow four 1857 attacker-controlled bytes on the stack. This buffer overflow could 1858 result in a crash (causing a denial of service) or potentially remote code 1859 execution depending on stack layout for any given platform/compiler. 1860 ([CVE-2022-3602]) 1861 1862 *Paul Dale* 1863 1864 * Removed all references to invalid OSSL_PKEY_PARAM_RSA names for CRT 1865 parameters in OpenSSL code. 1866 Applications should not use the names OSSL_PKEY_PARAM_RSA_FACTOR, 1867 OSSL_PKEY_PARAM_RSA_EXPONENT and OSSL_PKEY_PARAM_RSA_COEFFICIENT. 1868 Use the numbered names such as OSSL_PKEY_PARAM_RSA_FACTOR1 instead. 1869 Using these invalid names may cause algorithms to use slower methods 1870 that ignore the CRT parameters. 1871 1872 *Shane Lontis* 1873 1874 * Fixed a regression introduced in 3.0.6 version raising errors on some stack 1875 operations. 1876 1877 *Tomáš Mráz* 1878 1879 * Fixed a regression introduced in 3.0.6 version not refreshing the certificate 1880 data to be signed before signing the certificate. 1881 1882 *Gibeom Gwon* 1883 1884 * Added RIPEMD160 to the default provider. 1885 1886 *Paul Dale* 1887 1888 * Ensured that the key share group sent or accepted for the key exchange 1889 is allowed for the protocol version. 1890 1891 *Matt Caswell* 1892 1893### Changes between 3.0.5 and 3.0.6 [11 Oct 2022] 1894 1895 * OpenSSL supports creating a custom cipher via the legacy 1896 EVP_CIPHER_meth_new() function and associated function calls. This function 1897 was deprecated in OpenSSL 3.0 and application authors are instead encouraged 1898 to use the new provider mechanism in order to implement custom ciphers. 1899 1900 OpenSSL versions 3.0.0 to 3.0.5 incorrectly handle legacy custom ciphers 1901 passed to the EVP_EncryptInit_ex2(), EVP_DecryptInit_ex2() and 1902 EVP_CipherInit_ex2() functions (as well as other similarly named encryption 1903 and decryption initialisation functions). Instead of using the custom cipher 1904 directly it incorrectly tries to fetch an equivalent cipher from the 1905 available providers. An equivalent cipher is found based on the NID passed to 1906 EVP_CIPHER_meth_new(). This NID is supposed to represent the unique NID for a 1907 given cipher. However it is possible for an application to incorrectly pass 1908 NID_undef as this value in the call to EVP_CIPHER_meth_new(). When NID_undef 1909 is used in this way the OpenSSL encryption/decryption initialisation function 1910 will match the NULL cipher as being equivalent and will fetch this from the 1911 available providers. This will succeed if the default provider has been 1912 loaded (or if a third party provider has been loaded that offers this 1913 cipher). Using the NULL cipher means that the plaintext is emitted as the 1914 ciphertext. 1915 1916 Applications are only affected by this issue if they call 1917 EVP_CIPHER_meth_new() using NID_undef and subsequently use it in a call to an 1918 encryption/decryption initialisation function. Applications that only use 1919 SSL/TLS are not impacted by this issue. 1920 ([CVE-2022-3358]) 1921 1922 *Matt Caswell* 1923 1924 * Fix LLVM vs Apple LLVM version numbering confusion that caused build failures 1925 on MacOS 10.11 1926 1927 *Richard Levitte* 1928 1929 * Fixed the linux-mips64 Configure target which was missing the 1930 SIXTY_FOUR_BIT bn_ops flag. This was causing heap corruption on that 1931 platform. 1932 1933 *Adam Joseph* 1934 1935 * Fix handling of a ticket key callback that returns 0 in TLSv1.3 to not send a 1936 ticket 1937 1938 *Matt Caswell* 1939 1940 * Correctly handle a retransmitted ClientHello in DTLS 1941 1942 *Matt Caswell* 1943 1944 * Fixed detection of ktls support in cross-compile environment on Linux 1945 1946 *Tomas Mraz* 1947 1948 * Fixed some regressions and test failures when running the 3.0.0 FIPS provider 1949 against 3.0.x 1950 1951 *Paul Dale* 1952 1953 * Fixed SSL_pending() and SSL_has_pending() with DTLS which were failing to 1954 report correct results in some cases 1955 1956 *Matt Caswell* 1957 1958 * Fix UWP builds by defining VirtualLock 1959 1960 *Charles Milette* 1961 1962 * For known safe primes use the minimum key length according to RFC 7919. 1963 Longer private key sizes unnecessarily raise the cycles needed to compute the 1964 shared secret without any increase of the real security. This fixes a 1965 regression from 1.1.1 where these shorter keys were generated for the known 1966 safe primes. 1967 1968 *Tomas Mraz* 1969 1970 * Added the loongarch64 target 1971 1972 *Shi Pujin* 1973 1974 * Fixed EC ASM flag passing. Flags for ASM implementations of EC curves were 1975 only passed to the FIPS provider and not to the default or legacy provider. 1976 1977 *Juergen Christ* 1978 1979 * Fixed reported performance degradation on aarch64. Restored the 1980 implementation prior to commit 2621751 ("aes/asm/aesv8-armx.pl: avoid 1981 32-bit lane assignment in CTR mode") for 64bit targets only, since it is 1982 reportedly 2-17% slower and the silicon errata only affects 32bit targets. 1983 The new algorithm is still used for 32 bit targets. 1984 1985 *Bernd Edlinger* 1986 1987 * Added a missing header for memcmp that caused compilation failure on some 1988 platforms 1989 1990 *Gregor Jasny* 1991 1992### Changes between 3.0.4 and 3.0.5 [5 Jul 2022] 1993 1994 * The OpenSSL 3.0.4 release introduced a serious bug in the RSA 1995 implementation for X86_64 CPUs supporting the AVX512IFMA instructions. 1996 This issue makes the RSA implementation with 2048 bit private keys 1997 incorrect on such machines and memory corruption will happen during 1998 the computation. As a consequence of the memory corruption an attacker 1999 may be able to trigger a remote code execution on the machine performing 2000 the computation. 2001 2002 SSL/TLS servers or other servers using 2048 bit RSA private keys running 2003 on machines supporting AVX512IFMA instructions of the X86_64 architecture 2004 are affected by this issue. 2005 ([CVE-2022-2274]) 2006 2007 *Xi Ruoyao* 2008 2009 * AES OCB mode for 32-bit x86 platforms using the AES-NI assembly optimised 2010 implementation would not encrypt the entirety of the data under some 2011 circumstances. This could reveal sixteen bytes of data that was 2012 preexisting in the memory that wasn't written. In the special case of 2013 "in place" encryption, sixteen bytes of the plaintext would be revealed. 2014 2015 Since OpenSSL does not support OCB based cipher suites for TLS and DTLS, 2016 they are both unaffected. 2017 ([CVE-2022-2097]) 2018 2019 *Alex Chernyakhovsky, David Benjamin, Alejandro Sedeño* 2020 2021### Changes between 3.0.3 and 3.0.4 [21 Jun 2022] 2022 2023 * In addition to the c_rehash shell command injection identified in 2024 CVE-2022-1292, further bugs where the c_rehash script does not 2025 properly sanitise shell metacharacters to prevent command injection have been 2026 fixed. 2027 2028 When the CVE-2022-1292 was fixed it was not discovered that there 2029 are other places in the script where the file names of certificates 2030 being hashed were possibly passed to a command executed through the shell. 2031 2032 This script is distributed by some operating systems in a manner where 2033 it is automatically executed. On such operating systems, an attacker 2034 could execute arbitrary commands with the privileges of the script. 2035 2036 Use of the c_rehash script is considered obsolete and should be replaced 2037 by the OpenSSL rehash command line tool. 2038 (CVE-2022-2068) 2039 2040 *Daniel Fiala, Tomáš Mráz* 2041 2042 * Case insensitive string comparison no longer uses locales. It has instead 2043 been directly implemented. 2044 2045 *Paul Dale* 2046 2047### Changes between 3.0.2 and 3.0.3 [3 May 2022] 2048 2049 * Case insensitive string comparison is reimplemented via new locale-agnostic 2050 comparison functions OPENSSL_str[n]casecmp always using the POSIX locale for 2051 comparison. The previous implementation had problems when the Turkish locale 2052 was used. 2053 2054 *Dmitry Belyavskiy* 2055 2056 * Fixed a bug in the c_rehash script which was not properly sanitising shell 2057 metacharacters to prevent command injection. This script is distributed by 2058 some operating systems in a manner where it is automatically executed. On 2059 such operating systems, an attacker could execute arbitrary commands with the 2060 privileges of the script. 2061 2062 Use of the c_rehash script is considered obsolete and should be replaced 2063 by the OpenSSL rehash command line tool. 2064 (CVE-2022-1292) 2065 2066 *Tomáš Mráz* 2067 2068 * Fixed a bug in the function `OCSP_basic_verify` that verifies the signer 2069 certificate on an OCSP response. The bug caused the function in the case 2070 where the (non-default) flag OCSP_NOCHECKS is used to return a postivie 2071 response (meaning a successful verification) even in the case where the 2072 response signing certificate fails to verify. 2073 2074 It is anticipated that most users of `OCSP_basic_verify` will not use the 2075 OCSP_NOCHECKS flag. In this case the `OCSP_basic_verify` function will return 2076 a negative value (indicating a fatal error) in the case of a certificate 2077 verification failure. The normal expected return value in this case would be 2078 0. 2079 2080 This issue also impacts the command line OpenSSL "ocsp" application. When 2081 verifying an ocsp response with the "-no_cert_checks" option the command line 2082 application will report that the verification is successful even though it 2083 has in fact failed. In this case the incorrect successful response will also 2084 be accompanied by error messages showing the failure and contradicting the 2085 apparently successful result. 2086 ([CVE-2022-1343]) 2087 2088 *Matt Caswell* 2089 2090 * Fixed a bug where the RC4-MD5 ciphersuite incorrectly used the 2091 AAD data as the MAC key. This made the MAC key trivially predictable. 2092 2093 An attacker could exploit this issue by performing a man-in-the-middle attack 2094 to modify data being sent from one endpoint to an OpenSSL 3.0 recipient such 2095 that the modified data would still pass the MAC integrity check. 2096 2097 Note that data sent from an OpenSSL 3.0 endpoint to a non-OpenSSL 3.0 2098 endpoint will always be rejected by the recipient and the connection will 2099 fail at that point. Many application protocols require data to be sent from 2100 the client to the server first. Therefore, in such a case, only an OpenSSL 2101 3.0 server would be impacted when talking to a non-OpenSSL 3.0 client. 2102 2103 If both endpoints are OpenSSL 3.0 then the attacker could modify data being 2104 sent in both directions. In this case both clients and servers could be 2105 affected, regardless of the application protocol. 2106 2107 Note that in the absence of an attacker this bug means that an OpenSSL 3.0 2108 endpoint communicating with a non-OpenSSL 3.0 endpoint will fail to complete 2109 the handshake when using this ciphersuite. 2110 2111 The confidentiality of data is not impacted by this issue, i.e. an attacker 2112 cannot decrypt data that has been encrypted using this ciphersuite - they can 2113 only modify it. 2114 2115 In order for this attack to work both endpoints must legitimately negotiate 2116 the RC4-MD5 ciphersuite. This ciphersuite is not compiled by default in 2117 OpenSSL 3.0, and is not available within the default provider or the default 2118 ciphersuite list. This ciphersuite will never be used if TLSv1.3 has been 2119 negotiated. In order for an OpenSSL 3.0 endpoint to use this ciphersuite the 2120 following must have occurred: 2121 2122 1) OpenSSL must have been compiled with the (non-default) compile time option 2123 enable-weak-ssl-ciphers 2124 2125 2) OpenSSL must have had the legacy provider explicitly loaded (either 2126 through application code or via configuration) 2127 2128 3) The ciphersuite must have been explicitly added to the ciphersuite list 2129 2130 4) The libssl security level must have been set to 0 (default is 1) 2131 2132 5) A version of SSL/TLS below TLSv1.3 must have been negotiated 2133 2134 6) Both endpoints must negotiate the RC4-MD5 ciphersuite in preference to any 2135 others that both endpoints have in common 2136 (CVE-2022-1434) 2137 2138 *Matt Caswell* 2139 2140 * Fix a bug in the OPENSSL_LH_flush() function that breaks reuse of the memory 2141 occupied by the removed hash table entries. 2142 2143 This function is used when decoding certificates or keys. If a long lived 2144 process periodically decodes certificates or keys its memory usage will 2145 expand without bounds and the process might be terminated by the operating 2146 system causing a denial of service. Also traversing the empty hash table 2147 entries will take increasingly more time. 2148 2149 Typically such long lived processes might be TLS clients or TLS servers 2150 configured to accept client certificate authentication. 2151 (CVE-2022-1473) 2152 2153 *Hugo Landau, Aliaksei Levin* 2154 2155 * The functions `OPENSSL_LH_stats` and `OPENSSL_LH_stats_bio` now only report 2156 the `num_items`, `num_nodes` and `num_alloc_nodes` statistics. All other 2157 statistics are no longer supported. For compatibility, these statistics are 2158 still listed in the output but are now always reported as zero. 2159 2160 *Hugo Landau* 2161 2162### Changes between 3.0.1 and 3.0.2 [15 Mar 2022] 2163 2164 * Fixed a bug in the BN_mod_sqrt() function that can cause it to loop forever 2165 for non-prime moduli. 2166 2167 Internally this function is used when parsing certificates that contain 2168 elliptic curve public keys in compressed form or explicit elliptic curve 2169 parameters with a base point encoded in compressed form. 2170 2171 It is possible to trigger the infinite loop by crafting a certificate that 2172 has invalid explicit curve parameters. 2173 2174 Since certificate parsing happens prior to verification of the certificate 2175 signature, any process that parses an externally supplied certificate may thus 2176 be subject to a denial of service attack. The infinite loop can also be 2177 reached when parsing crafted private keys as they can contain explicit 2178 elliptic curve parameters. 2179 2180 Thus vulnerable situations include: 2181 2182 - TLS clients consuming server certificates 2183 - TLS servers consuming client certificates 2184 - Hosting providers taking certificates or private keys from customers 2185 - Certificate authorities parsing certification requests from subscribers 2186 - Anything else which parses ASN.1 elliptic curve parameters 2187 2188 Also any other applications that use the BN_mod_sqrt() where the attacker 2189 can control the parameter values are vulnerable to this DoS issue. 2190 ([CVE-2022-0778]) 2191 2192 *Tomáš Mráz* 2193 2194 * Add ciphersuites based on DHE_PSK (RFC 4279) and ECDHE_PSK (RFC 5489) 2195 to the list of ciphersuites providing Perfect Forward Secrecy as 2196 required by SECLEVEL >= 3. 2197 2198 *Dmitry Belyavskiy, Nicola Tuveri* 2199 2200 * Made the AES constant time code for no-asm configurations 2201 optional due to the resulting 95% performance degradation. 2202 The AES constant time code can be enabled, for no assembly 2203 builds, with: ./config no-asm -DOPENSSL_AES_CONST_TIME 2204 2205 *Paul Dale* 2206 2207 * Fixed PEM_write_bio_PKCS8PrivateKey() to make it possible to use empty 2208 passphrase strings. 2209 2210 *Darshan Sen* 2211 2212 * The negative return value handling of the certificate verification callback 2213 was reverted. The replacement is to set the verification retry state with 2214 the SSL_set_retry_verify() function. 2215 2216 *Tomáš Mráz* 2217 2218### Changes between 3.0.0 and 3.0.1 [14 Dec 2021] 2219 2220 * Fixed invalid handling of X509_verify_cert() internal errors in libssl 2221 Internally libssl in OpenSSL calls X509_verify_cert() on the client side to 2222 verify a certificate supplied by a server. That function may return a 2223 negative return value to indicate an internal error (for example out of 2224 memory). Such a negative return value is mishandled by OpenSSL and will cause 2225 an IO function (such as SSL_connect() or SSL_do_handshake()) to not indicate 2226 success and a subsequent call to SSL_get_error() to return the value 2227 SSL_ERROR_WANT_RETRY_VERIFY. This return value is only supposed to be 2228 returned by OpenSSL if the application has previously called 2229 SSL_CTX_set_cert_verify_callback(). Since most applications do not do this 2230 the SSL_ERROR_WANT_RETRY_VERIFY return value from SSL_get_error() will be 2231 totally unexpected and applications may not behave correctly as a result. The 2232 exact behaviour will depend on the application but it could result in 2233 crashes, infinite loops or other similar incorrect responses. 2234 2235 This issue is made more serious in combination with a separate bug in OpenSSL 2236 3.0 that will cause X509_verify_cert() to indicate an internal error when 2237 processing a certificate chain. This will occur where a certificate does not 2238 include the Subject Alternative Name extension but where a Certificate 2239 Authority has enforced name constraints. This issue can occur even with valid 2240 chains. 2241 ([CVE-2021-4044]) 2242 2243 *Matt Caswell* 2244 2245 * Corrected a few file name and file reference bugs in the build, 2246 installation and setup scripts, which lead to installation verification 2247 failures. Slightly enhanced the installation verification script. 2248 2249 *Richard Levitte* 2250 2251 * Fixed EVP_PKEY_eq() to make it possible to use it with strictly private 2252 keys. 2253 2254 *Richard Levitte* 2255 2256 * Fixed PVK encoder to properly query for the passphrase. 2257 2258 *Tomáš Mráz* 2259 2260 * Multiple fixes in the OSSL_HTTP API functions. 2261 2262 *David von Oheimb* 2263 2264 * Allow sign extension in OSSL_PARAM_allocate_from_text() for the 2265 OSSL_PARAM_INTEGER data type and return error on negative numbers 2266 used with the OSSL_PARAM_UNSIGNED_INTEGER data type. Make 2267 OSSL_PARAM_BLD_push_BN{,_pad}() return an error on negative numbers. 2268 2269 *Richard Levitte* 2270 2271 * Allow copying uninitialized digest contexts with EVP_MD_CTX_copy_ex. 2272 2273 *Tomáš Mráz* 2274 2275 * Fixed detection of ARMv7 and ARM64 CPU features on FreeBSD. 2276 2277 *Allan Jude* 2278 2279 * Multiple threading fixes. 2280 2281 *Matt Caswell* 2282 2283 * Added NULL digest implementation to keep compatibility with 1.1.1 version. 2284 2285 *Tomáš Mráz* 2286 2287 * Allow fetching an operation from the provider that owns an unexportable key 2288 as a fallback if that is still allowed by the property query. 2289 2290 *Richard Levitte* 2291 2292### Changes between 1.1.1 and 3.0.0 [7 Sep 2021] 2293 2294 * TLS_MAX_VERSION, DTLS_MAX_VERSION and DTLS_MIN_VERSION constants are now 2295 deprecated. 2296 2297 *Matt Caswell* 2298 2299 * The `OPENSSL_s390xcap` environment variable can be used to set bits in the 2300 S390X capability vector to zero. This simplifies testing of different code 2301 paths on S390X architecture. 2302 2303 *Patrick Steuer* 2304 2305 * Encrypting more than 2^64 TLS records with AES-GCM is disallowed 2306 as per FIPS 140-2 IG A.5 "Key/IV Pair Uniqueness Requirements from 2307 SP 800-38D". The communication will fail at this point. 2308 2309 *Paul Dale* 2310 2311 * The EC_GROUP_clear_free() function is deprecated as there is nothing 2312 confidential in EC_GROUP data. 2313 2314 *Nicola Tuveri* 2315 2316 * The byte order mark (BOM) character is ignored if encountered at the 2317 beginning of a PEM-formatted file. 2318 2319 *Dmitry Belyavskiy* 2320 2321 * Added CMS support for the Russian GOST algorithms. 2322 2323 *Dmitry Belyavskiy* 2324 2325 * Due to move of the implementation of cryptographic operations 2326 to the providers, validation of various operation parameters can 2327 be postponed until the actual operation is executed where previously 2328 it happened immediately when an operation parameter was set. 2329 2330 For example when setting an unsupported curve with 2331 EVP_PKEY_CTX_set_ec_paramgen_curve_nid() this function call will not 2332 fail but later keygen operations with the EVP_PKEY_CTX will fail. 2333 2334 *OpenSSL team members and many third party contributors* 2335 2336 * The EVP_get_cipherbyname() function will return NULL for algorithms such as 2337 "AES-128-SIV", "AES-128-CBC-CTS" and "CAMELLIA-128-CBC-CTS" which were 2338 previously only accessible via low-level interfaces. Use EVP_CIPHER_fetch() 2339 instead to retrieve these algorithms from a provider. 2340 2341 *Shane Lontis* 2342 2343 * On build targets where the multilib postfix is set in the build 2344 configuration the libdir directory was changing based on whether 2345 the lib directory with the multilib postfix exists on the system 2346 or not. This unpredictable behavior was removed and eventual 2347 multilib postfix is now always added to the default libdir. Use 2348 `--libdir=lib` to override the libdir if adding the postfix is 2349 undesirable. 2350 2351 *Jan Lána* 2352 2353 * The triple DES key wrap functionality now conforms to RFC 3217 but is 2354 no longer interoperable with OpenSSL 1.1.1. 2355 2356 *Paul Dale* 2357 2358 * The ERR_GET_FUNC() function was removed. With the loss of meaningful 2359 function codes, this function can only cause problems for calling 2360 applications. 2361 2362 *Paul Dale* 2363 2364 * Add a configurable flag to output date formats as ISO 8601. Does not 2365 change the default date format. 2366 2367 *William Edmisten* 2368 2369 * Version of MSVC earlier than 1300 could get link warnings, which could 2370 be suppressed if the undocumented -DI_CAN_LIVE_WITH_LNK4049 was set. 2371 Support for this flag has been removed. 2372 2373 *Rich Salz* 2374 2375 * Rework and make DEBUG macros consistent. Remove unused -DCONF_DEBUG, 2376 -DBN_CTX_DEBUG, and REF_PRINT. Add a new tracing category and use it for 2377 printing reference counts. Rename -DDEBUG_UNUSED to -DUNUSED_RESULT_DEBUG 2378 Fix BN_DEBUG_RAND so it compiles and, when set, force DEBUG_RAND to be set 2379 also. Rename engine_debug_ref to be ENGINE_REF_PRINT also for consistency. 2380 2381 *Rich Salz* 2382 2383 * The signatures of the functions to get and set options on SSL and 2384 SSL_CTX objects changed from "unsigned long" to "uint64_t" type. 2385 Some source code changes may be required. 2386 2387 *Rich Salz* 2388 2389 * The public definitions of conf_method_st and conf_st have been 2390 deprecated. They will be made opaque in a future release. 2391 2392 *Rich Salz and Tomáš Mráz* 2393 2394 * Client-initiated renegotiation is disabled by default. To allow it, use 2395 the -client_renegotiation option, the SSL_OP_ALLOW_CLIENT_RENEGOTIATION 2396 flag, or the "ClientRenegotiation" config parameter as appropriate. 2397 2398 *Rich Salz* 2399 2400 * Add "abspath" and "includedir" pragma's to config files, to prevent, 2401 or modify relative pathname inclusion. 2402 2403 *Rich Salz* 2404 2405 * OpenSSL includes a cryptographic module that is intended to be FIPS 140-2 2406 validated. Please consult the README-FIPS and 2407 README-PROVIDERS files, as well as the migration guide. 2408 2409 *OpenSSL team members and many third party contributors* 2410 2411 * For the key types DH and DHX the allowed settable parameters are now different. 2412 2413 *Shane Lontis* 2414 2415 * The openssl commands that read keys, certificates, and CRLs now 2416 automatically detect the PEM or DER format of the input files. 2417 2418 *David von Oheimb, Richard Levitte, and Tomáš Mráz* 2419 2420 * Added enhanced PKCS#12 APIs which accept a library context. 2421 2422 *Jon Spillett* 2423 2424 * The default manual page suffix ($MANSUFFIX) has been changed to "ossl" 2425 2426 *Matt Caswell* 2427 2428 * Added support for Kernel TLS (KTLS). 2429 2430 *Boris Pismenny, John Baldwin and Andrew Gallatin* 2431 2432 * Support for RFC 5746 secure renegotiation is now required by default for 2433 SSL or TLS connections to succeed. 2434 2435 *Benjamin Kaduk* 2436 2437 * The signature of the `copy` functional parameter of the 2438 EVP_PKEY_meth_set_copy() function has changed so its `src` argument is 2439 now `const EVP_PKEY_CTX *` instead of `EVP_PKEY_CTX *`. Similarly 2440 the signature of the `pub_decode` functional parameter of the 2441 EVP_PKEY_asn1_set_public() function has changed so its `pub` argument is 2442 now `const X509_PUBKEY *` instead of `X509_PUBKEY *`. 2443 2444 *David von Oheimb* 2445 2446 * The error return values from some control calls (ctrl) have changed. 2447 2448 *Paul Dale* 2449 2450 * A public key check is now performed during EVP_PKEY_derive_set_peer(). 2451 2452 *Shane Lontis* 2453 2454 * Many functions in the EVP_ namespace that are getters of values from 2455 implementations or contexts were renamed to include get or get0 in their 2456 names. Old names are provided as macro aliases for compatibility and 2457 are not deprecated. 2458 2459 *Tomáš Mráz* 2460 2461 * The EVP_PKEY_CTRL_PKCS7_ENCRYPT, EVP_PKEY_CTRL_PKCS7_DECRYPT, 2462 EVP_PKEY_CTRL_PKCS7_SIGN, EVP_PKEY_CTRL_CMS_ENCRYPT, 2463 EVP_PKEY_CTRL_CMS_DECRYPT, and EVP_PKEY_CTRL_CMS_SIGN control operations 2464 are deprecated. 2465 2466 *Tomáš Mráz* 2467 2468 * The EVP_PKEY_public_check() and EVP_PKEY_param_check() functions now work for 2469 more key types. 2470 2471 * The output from the command line applications may have minor 2472 changes. 2473 2474 *Paul Dale* 2475 2476 * The output from numerous "printing" may have minor changes. 2477 2478 *David von Oheimb* 2479 2480 * Windows thread synchronization uses read/write primitives (SRWLock) when 2481 supported by the OS, otherwise CriticalSection continues to be used. 2482 2483 *Vincent Drake* 2484 2485 * Add filter BIO BIO_f_readbuffer() that allows BIO_tell() and BIO_seek() to 2486 work on read only BIO source/sinks that do not support these functions. 2487 This allows piping or redirection of a file BIO using stdin to be buffered 2488 into memory. This is used internally in OSSL_DECODER_from_bio(). 2489 2490 *Shane Lontis* 2491 2492 * OSSL_STORE_INFO_get_type() may now return an additional value. In 1.1.1 2493 this function would return one of the values OSSL_STORE_INFO_NAME, 2494 OSSL_STORE_INFO_PKEY, OSSL_STORE_INFO_PARAMS, OSSL_STORE_INFO_CERT or 2495 OSSL_STORE_INFO_CRL. Decoded public keys would previously have been reported 2496 as type OSSL_STORE_INFO_PKEY in 1.1.1. In 3.0 decoded public keys are now 2497 reported as having the new type OSSL_STORE_INFO_PUBKEY. Applications 2498 using this function should be amended to handle the changed return value. 2499 2500 *Richard Levitte* 2501 2502 * Improved adherence to Enhanced Security Services (ESS, RFC 2634 and RFC 5035) 2503 for the TSP and CMS Advanced Electronic Signatures (CAdES) implementations. 2504 As required by RFC 5035 check both ESSCertID and ESSCertIDv2 if both present. 2505 Correct the semantics of checking the validation chain in case ESSCertID{,v2} 2506 contains more than one certificate identifier: This means that all 2507 certificates referenced there MUST be part of the validation chain. 2508 2509 *David von Oheimb* 2510 2511 * The implementation of older EVP ciphers related to CAST, IDEA, SEED, RC2, RC4, 2512 RC5, DESX and DES have been moved to the legacy provider. 2513 2514 *Matt Caswell* 2515 2516 * The implementation of the EVP digests MD2, MD4, MDC2, WHIRLPOOL and 2517 RIPEMD-160 have been moved to the legacy provider. 2518 2519 *Matt Caswell* 2520 2521 * The deprecated function EVP_PKEY_get0() now returns NULL being called for a 2522 provided key. 2523 2524 *Dmitry Belyavskiy* 2525 2526 * The deprecated functions EVP_PKEY_get0_RSA(), 2527 EVP_PKEY_get0_DSA(), EVP_PKEY_get0_EC_KEY(), EVP_PKEY_get0_DH(), 2528 EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and EVP_PKEY_get0_siphash() as 2529 well as the similarly named "get1" functions behave differently in 2530 OpenSSL 3.0. 2531 2532 *Matt Caswell* 2533 2534 * A number of functions handling low-level keys or engines were deprecated 2535 including EVP_PKEY_set1_engine(), EVP_PKEY_get0_engine(), EVP_PKEY_assign(), 2536 EVP_PKEY_get0(), EVP_PKEY_get0_hmac(), EVP_PKEY_get0_poly1305() and 2537 EVP_PKEY_get0_siphash(). 2538 2539 *Matt Caswell* 2540 2541 * PKCS#5 PBKDF1 key derivation has been moved from PKCS5_PBE_keyivgen() into 2542 the legacy crypto provider as an EVP_KDF. Applications requiring this KDF 2543 will need to load the legacy crypto provider. This includes these PBE 2544 algorithms which use this KDF: 2545 - NID_pbeWithMD2AndDES_CBC 2546 - NID_pbeWithMD5AndDES_CBC 2547 - NID_pbeWithSHA1AndRC2_CBC 2548 - NID_pbeWithMD2AndRC2_CBC 2549 - NID_pbeWithMD5AndRC2_CBC 2550 - NID_pbeWithSHA1AndDES_CBC 2551 2552 *Jon Spillett* 2553 2554 * Deprecated obsolete BIO_set_callback(), BIO_get_callback(), and 2555 BIO_debug_callback() functions. 2556 2557 *Tomáš Mráz* 2558 2559 * Deprecated obsolete EVP_PKEY_CTX_get0_dh_kdf_ukm() and 2560 EVP_PKEY_CTX_get0_ecdh_kdf_ukm() functions. 2561 2562 *Tomáš Mráz* 2563 2564 * The RAND_METHOD APIs have been deprecated. 2565 2566 *Paul Dale* 2567 2568 * The SRP APIs have been deprecated. 2569 2570 *Matt Caswell* 2571 2572 * Add a compile time option to prevent the caching of provider fetched 2573 algorithms. This is enabled by including the no-cached-fetch option 2574 at configuration time. 2575 2576 *Paul Dale* 2577 2578 * pkcs12 now uses defaults of PBKDF2, AES and SHA-256, with a MAC iteration 2579 count of PKCS12_DEFAULT_ITER. 2580 2581 *Tomáš Mráz and Sahana Prasad* 2582 2583 * The openssl speed command does not use low-level API calls anymore. 2584 2585 *Tomáš Mráz* 2586 2587 * Parallel dual-prime 1024-bit modular exponentiation for AVX512_IFMA 2588 capable processors. 2589 2590 *Ilya Albrekht, Sergey Kirillov, Andrey Matyukov (Intel Corp)* 2591 2592 * Combining the Configure options no-ec and no-dh no longer disables TLSv1.3. 2593 2594 *Matt Caswell* 2595 2596 * Implemented support for fully "pluggable" TLSv1.3 groups. This means that 2597 providers may supply their own group implementations (using either the "key 2598 exchange" or the "key encapsulation" methods) which will automatically be 2599 detected and used by libssl. 2600 2601 *Matt Caswell, Nicola Tuveri* 2602 2603 * The undocumented function X509_certificate_type() has been deprecated; 2604 2605 *Rich Salz* 2606 2607 * Deprecated the obsolete BN_pseudo_rand() and BN_pseudo_rand_range(). 2608 2609 *Tomáš Mráz* 2610 2611 * Removed RSA padding mode for SSLv23 (which was only used for 2612 SSLv2). This includes the functions RSA_padding_check_SSLv23() and 2613 RSA_padding_add_SSLv23() and the `-ssl` option in the deprecated 2614 `rsautl` command. 2615 2616 *Rich Salz* 2617 2618 * Deprecated the obsolete X9.31 RSA key generation related functions. 2619 2620 * While a callback function set via `SSL_CTX_set_cert_verify_callback()` 2621 is not allowed to return a value > 1, this is no more taken as failure. 2622 2623 *Viktor Dukhovni and David von Oheimb* 2624 2625 * Deprecated the obsolete X9.31 RSA key generation related functions 2626 BN_X931_generate_Xpq(), BN_X931_derive_prime_ex(), and 2627 BN_X931_generate_prime_ex(). 2628 2629 *Tomáš Mráz* 2630 2631 * The default key generation method for the regular 2-prime RSA keys was 2632 changed to the FIPS 186-4 B.3.6 method. 2633 2634 *Shane Lontis* 2635 2636 * Deprecated the BN_is_prime_ex() and BN_is_prime_fasttest_ex() functions. 2637 2638 *Kurt Roeckx* 2639 2640 * Deprecated EVP_MD_CTX_set_update_fn() and EVP_MD_CTX_update_fn(). 2641 2642 *Rich Salz* 2643 2644 * Deprecated the type OCSP_REQ_CTX and the functions OCSP_REQ_CTX_*() and 2645 replaced with OSSL_HTTP_REQ_CTX and the functions OSSL_HTTP_REQ_CTX_*(). 2646 2647 *Rich Salz, Richard Levitte, and David von Oheimb* 2648 2649 * Deprecated `X509_http_nbio()` and `X509_CRL_http_nbio()`. 2650 2651 *David von Oheimb* 2652 2653 * Deprecated `OCSP_parse_url()`. 2654 2655 *David von Oheimb* 2656 2657 * Validation of SM2 keys has been separated from the validation of regular EC 2658 keys. 2659 2660 *Nicola Tuveri* 2661 2662 * Behavior of the `pkey` command is changed, 2663 when using the `-check` or `-pubcheck` 2664 switches: a validation failure triggers an early exit, returning a failure 2665 exit status to the parent process. 2666 2667 *Nicola Tuveri* 2668 2669 * Changed behavior of SSL_CTX_set_ciphersuites() and SSL_set_ciphersuites() 2670 to ignore unknown ciphers. 2671 2672 *Otto Hollmann* 2673 2674 * The `-cipher-commands` and `-digest-commands` options 2675 of the command line utility `list` have been deprecated. 2676 Instead use the `-cipher-algorithms` and `-digest-algorithms` options. 2677 2678 *Dmitry Belyavskiy* 2679 2680 * Added convenience functions for generating asymmetric key pairs: 2681 The 'quick' one-shot (yet somewhat limited) function L<EVP_PKEY_Q_keygen(3)> 2682 and macros for the most common cases: <EVP_RSA_gen(3)> and L<EVP_EC_gen(3)>. 2683 2684 *David von Oheimb* 2685 2686 * All of the low-level EC_KEY functions have been deprecated. 2687 2688 *Shane Lontis, Paul Dale, Richard Levitte, and Tomáš Mráz* 2689 2690 * Deprecated all the libcrypto and libssl error string loading 2691 functions. 2692 2693 *Richard Levitte* 2694 2695 * The functions SSL_CTX_set_tmp_dh_callback and SSL_set_tmp_dh_callback, as 2696 well as the macros SSL_CTX_set_tmp_dh() and SSL_set_tmp_dh() have been 2697 deprecated. 2698 2699 *Matt Caswell* 2700 2701 * The `-crypt` option to the `passwd` command line tool has been removed. 2702 2703 *Paul Dale* 2704 2705 * The -C option to the `x509`, `dhparam`, `dsaparam`, and `ecparam` commands 2706 were removed. 2707 2708 *Rich Salz* 2709 2710 * Add support for AES Key Wrap inverse ciphers to the EVP layer. 2711 2712 *Shane Lontis* 2713 2714 * Deprecated EVP_PKEY_set1_tls_encodedpoint() and 2715 EVP_PKEY_get1_tls_encodedpoint(). 2716 2717 *Matt Caswell* 2718 2719 * The security callback, which can be customised by application code, supports 2720 the security operation SSL_SECOP_TMP_DH. One location of the "other" parameter 2721 was incorrectly passing a DH object. It now passed an EVP_PKEY in all cases. 2722 2723 *Matt Caswell* 2724 2725 * Add PKCS7_get_octet_string() and PKCS7_type_is_other() to the public 2726 interface. Their functionality remains unchanged. 2727 2728 *Jordan Montgomery* 2729 2730 * Added new option for 'openssl list', '-providers', which will display the 2731 list of loaded providers, their names, version and status. It optionally 2732 displays their gettable parameters. 2733 2734 *Paul Dale* 2735 2736 * Removed EVP_PKEY_set_alias_type(). 2737 2738 *Richard Levitte* 2739 2740 * Deprecated `EVP_PKEY_CTX_set_rsa_keygen_pubexp()` and introduced 2741 `EVP_PKEY_CTX_set1_rsa_keygen_pubexp()`, which is now preferred. 2742 2743 *Jeremy Walch* 2744 2745 * Changed all "STACK" functions to be macros instead of inline functions. Macro 2746 parameters are still checked for type safety at compile time via helper 2747 inline functions. 2748 2749 *Matt Caswell* 2750 2751 * Remove the RAND_DRBG API 2752 2753 *Paul Dale and Matthias St. Pierre* 2754 2755 * Allow `SSL_set1_host()` and `SSL_add1_host()` to take IP literal addresses 2756 as well as actual hostnames. 2757 2758 *David Woodhouse* 2759 2760 * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently 2761 ignore TLS protocol version bounds when configuring DTLS-based contexts, and 2762 conversely, silently ignore DTLS protocol version bounds when configuring 2763 TLS-based contexts. The commands can be repeated to set bounds of both 2764 types. The same applies with the corresponding "min_protocol" and 2765 "max_protocol" command-line switches, in case some application uses both TLS 2766 and DTLS. 2767 2768 SSL_CTX instances that are created for a fixed protocol version (e.g. 2769 `TLSv1_server_method()`) also silently ignore version bounds. Previously 2770 attempts to apply bounds to these protocol versions would result in an 2771 error. Now only the "version-flexible" SSL_CTX instances are subject to 2772 limits in configuration files in command-line options. 2773 2774 *Viktor Dukhovni* 2775 2776 * Deprecated the `ENGINE` API. Engines should be replaced with providers 2777 going forward. 2778 2779 *Paul Dale* 2780 2781 * Reworked the recorded ERR codes to make better space for system errors. 2782 To distinguish them, the macro `ERR_SYSTEM_ERROR()` indicates if the 2783 given code is a system error (true) or an OpenSSL error (false). 2784 2785 *Richard Levitte* 2786 2787 * Reworked the test perl framework to better allow parallel testing. 2788 2789 *Nicola Tuveri and David von Oheimb* 2790 2791 * Added ciphertext stealing algorithms AES-128-CBC-CTS, AES-192-CBC-CTS and 2792 AES-256-CBC-CTS to the providers. CS1, CS2 and CS3 variants are supported. 2793 2794 *Shane Lontis* 2795 2796 * 'Configure' has been changed to figure out the configuration target if 2797 none is given on the command line. Consequently, the 'config' script is 2798 now only a mere wrapper. All documentation is changed to only mention 2799 'Configure'. 2800 2801 *Rich Salz and Richard Levitte* 2802 2803 * Added a library context `OSSL_LIB_CTX` that applications as well as 2804 other libraries can use to form a separate context within which 2805 libcrypto operations are performed. 2806 2807 *Richard Levitte* 2808 2809 * Added various `_ex` functions to the OpenSSL API that support using 2810 a non-default `OSSL_LIB_CTX`. 2811 2812 *OpenSSL team* 2813 2814 * Handshake now fails if Extended Master Secret extension is dropped 2815 on renegotiation. 2816 2817 *Tomáš Mráz* 2818 2819 * Dropped interactive mode from the `openssl` program. 2820 2821 *Richard Levitte* 2822 2823 * Deprecated `EVP_PKEY_cmp()` and `EVP_PKEY_cmp_parameters()`. 2824 2825 *David von Oheimb and Shane Lontis* 2826 2827 * Deprecated `EC_METHOD_get_field_type()`. 2828 2829 *Billy Bob Brumley* 2830 2831 * Deprecated EC_GFp_simple_method(), EC_GFp_mont_method(), 2832 EC_GF2m_simple_method(), EC_GFp_nist_method(), EC_GFp_nistp224_method() 2833 EC_GFp_nistp256_method(), and EC_GFp_nistp521_method(). 2834 2835 *Billy Bob Brumley* 2836 2837 * Deprecated EC_GROUP_new(), EC_GROUP_method_of(), and EC_POINT_method_of(). 2838 2839 *Billy Bob Brumley* 2840 2841 * Add CAdES-BES signature verification support, mostly derived 2842 from ESSCertIDv2 TS (RFC 5816) contribution by Marek Klein. 2843 2844 *Filipe Raimundo da Silva* 2845 2846 * Add CAdES-BES signature scheme and attributes support (RFC 5126) to CMS API. 2847 2848 *Antonio Iacono* 2849 2850 * Added the AuthEnvelopedData content type structure (RFC 5083) with AES-GCM 2851 parameter (RFC 5084) for the Cryptographic Message Syntax (CMS). 2852 2853 *Jakub Zelenka* 2854 2855 * Deprecated EC_POINT_make_affine() and EC_POINTs_make_affine(). 2856 2857 *Billy Bob Brumley* 2858 2859 * Deprecated EC_GROUP_precompute_mult(), EC_GROUP_have_precompute_mult(), and 2860 EC_KEY_precompute_mult(). 2861 2862 *Billy Bob Brumley* 2863 2864 * Deprecated EC_POINTs_mul(). 2865 2866 *Billy Bob Brumley* 2867 2868 * Removed FIPS_mode() and FIPS_mode_set(). 2869 2870 *Shane Lontis* 2871 2872 * The SSL option SSL_OP_IGNORE_UNEXPECTED_EOF is introduced. 2873 2874 *Dmitry Belyavskiy* 2875 2876 * Deprecated EC_POINT_set_Jprojective_coordinates_GFp() and 2877 EC_POINT_get_Jprojective_coordinates_GFp(). 2878 2879 *Billy Bob Brumley* 2880 2881 * Added OSSL_PARAM_BLD to the public interface. This allows OSSL_PARAM 2882 arrays to be more easily constructed via a series of utility functions. 2883 Create a parameter builder using OSSL_PARAM_BLD_new(), add parameters using 2884 the various push functions and finally convert to a passable OSSL_PARAM 2885 array using OSSL_PARAM_BLD_to_param(). 2886 2887 *Paul Dale* 2888 2889 * The security strength of SHA1 and MD5 based signatures in TLS has been 2890 reduced. 2891 2892 *Kurt Roeckx* 2893 2894 * Added EVP_PKEY_set_type_by_keymgmt(), to initialise an EVP_PKEY to 2895 contain a provider side internal key. 2896 2897 *Richard Levitte* 2898 2899 * ASN1_verify(), ASN1_digest() and ASN1_sign() have been deprecated. 2900 2901 *Richard Levitte* 2902 2903 * Project text documents not yet having a proper file name extension 2904 (`HACKING`, `LICENSE`, `NOTES*`, `README*`, `VERSION`) have been renamed to 2905 `*.md` as far as reasonable, else `*.txt`, for better use with file managers. 2906 2907 *David von Oheimb* 2908 2909 * The main project documents (README, NEWS, CHANGES, INSTALL, SUPPORT) 2910 have been converted to Markdown with the goal to produce documents 2911 which not only look pretty when viewed online in the browser, but 2912 remain well readable inside a plain text editor. 2913 2914 To achieve this goal, a 'minimalistic' Markdown style has been applied 2915 which avoids formatting elements that interfere too much with the 2916 reading flow in the text file. For example, it 2917 2918 * avoids [ATX headings][] and uses [setext headings][] instead 2919 (which works for `<h1>` and `<h2>` headings only). 2920 * avoids [inline links][] and uses [reference links][] instead. 2921 * avoids [fenced code blocks][] and uses [indented code blocks][] instead. 2922 2923 [ATX headings]: https://github.github.com/gfm/#atx-headings 2924 [setext headings]: https://github.github.com/gfm/#setext-headings 2925 [inline links]: https://github.github.com/gfm/#inline-link 2926 [reference links]: https://github.github.com/gfm/#reference-link 2927 [fenced code blocks]: https://github.github.com/gfm/#fenced-code-blocks 2928 [indented code blocks]: https://github.github.com/gfm/#indented-code-blocks 2929 2930 *Matthias St. Pierre* 2931 2932 * The test suite is changed to preserve results of each test recipe. 2933 A new directory test-runs/ with subdirectories named like the 2934 test recipes are created in the build tree for this purpose. 2935 2936 *Richard Levitte* 2937 2938 * Added an implementation of CMP and CRMF (RFC 4210, RFC 4211 RFC 6712). 2939 This adds `crypto/cmp/`, `crpyto/crmf/`, `apps/cmp.c`, and `test/cmp_*`. 2940 See L<openssl-cmp(1)> and L<OSSL_CMP_exec_IR_ses(3)> as starting points. 2941 2942 *David von Oheimb, Martin Peylo* 2943 2944 * Generalized the HTTP client code from `crypto/ocsp/` into `crpyto/http/`. 2945 It supports arbitrary request and response content types, GET redirection, 2946 TLS, connections via HTTP(S) proxies, connections and exchange via 2947 user-defined BIOs (allowing implicit connections), persistent connections, 2948 and timeout checks. See L<OSSL_HTTP_transfer(3)> etc. for details. 2949 The legacy OCSP-focused (and only partly documented) API 2950 is retained for backward compatibility, while most of it is deprecated. 2951 2952 *David von Oheimb* 2953 2954 * Added `util/check-format.pl`, a tool for checking adherence to the 2955 OpenSSL coding style <https://www.openssl.org/policies/codingstyle.html>. 2956 The checks performed are incomplete and yield some false positives. 2957 Still the tool should be useful for detecting most typical glitches. 2958 2959 *David von Oheimb* 2960 2961 * `BIO_do_connect()` and `BIO_do_handshake()` have been extended: 2962 If domain name resolution yields multiple IP addresses all of them are tried 2963 after `connect()` failures. 2964 2965 *David von Oheimb* 2966 2967 * All of the low-level RSA functions have been deprecated. 2968 2969 *Paul Dale* 2970 2971 * X509 certificates signed using SHA1 are no longer allowed at security 2972 level 1 and above. 2973 2974 *Kurt Roeckx* 2975 2976 * The command line utilities dhparam, dsa, gendsa and dsaparam have been 2977 modified to use PKEY APIs. These commands are now in maintenance mode 2978 and no new features will be added to them. 2979 2980 *Paul Dale* 2981 2982 * The command line utility rsautl has been deprecated. 2983 2984 *Paul Dale* 2985 2986 * The command line utilities genrsa and rsa have been modified to use PKEY 2987 APIs. They now write PKCS#8 keys by default. These commands are now in 2988 maintenance mode and no new features will be added to them. 2989 2990 *Paul Dale* 2991 2992 * All of the low-level DH functions have been deprecated. 2993 2994 *Paul Dale and Matt Caswell* 2995 2996 * All of the low-level DSA functions have been deprecated. 2997 2998 *Paul Dale* 2999 3000 * Reworked the treatment of EC EVP_PKEYs with the SM2 curve to 3001 automatically become EVP_PKEY_SM2 rather than EVP_PKEY_EC. 3002 3003 *Richard Levitte* 3004 3005 * Deprecated low-level ECDH and ECDSA functions. 3006 3007 *Paul Dale* 3008 3009 * Deprecated EVP_PKEY_decrypt_old() and EVP_PKEY_encrypt_old(). 3010 3011 *Richard Levitte* 3012 3013 * Enhanced the documentation of EVP_PKEY_get_size(), EVP_PKEY_get_bits() 3014 and EVP_PKEY_get_security_bits(). Especially EVP_PKEY_get_size() needed 3015 a new formulation to include all the things it can be used for, 3016 as well as words of caution. 3017 3018 *Richard Levitte* 3019 3020 * The SSL_CTX_set_tlsext_ticket_key_cb(3) function has been deprecated. 3021 3022 *Paul Dale* 3023 3024 * All of the low-level HMAC functions have been deprecated. 3025 3026 *Paul Dale and David von Oheimb* 3027 3028 * Over two thousand fixes were made to the documentation, including: 3029 - Common options (such as -rand/-writerand, TLS version control, etc) 3030 were refactored and point to newly-enhanced descriptions in openssl.pod. 3031 - Added style conformance for all options (with help from Richard Levitte), 3032 documented all reported missing options, added a CI build to check 3033 that all options are documented and that no unimplemented options 3034 are documented. 3035 - Documented some internals, such as all use of environment variables. 3036 - Addressed all internal broken L<> references. 3037 3038 *Rich Salz* 3039 3040 * All of the low-level CMAC functions have been deprecated. 3041 3042 *Paul Dale* 3043 3044 * The low-level MD2, MD4, MD5, MDC2, RIPEMD160 and Whirlpool digest 3045 functions have been deprecated. 3046 3047 *Paul Dale and David von Oheimb* 3048 3049 * Corrected the documentation of the return values from the `EVP_DigestSign*` 3050 set of functions. The documentation mentioned negative values for some 3051 errors, but this was never the case, so the mention of negative values 3052 was removed. 3053 3054 Code that followed the documentation and thereby check with something 3055 like `EVP_DigestSignInit(...) <= 0` will continue to work undisturbed. 3056 3057 *Richard Levitte* 3058 3059 * All of the low-level cipher functions have been deprecated. 3060 3061 *Matt Caswell and Paul Dale* 3062 3063 * Removed include/openssl/opensslconf.h.in and replaced it with 3064 include/openssl/configuration.h.in, which differs in not including 3065 <openssl/macros.h>. A short header include/openssl/opensslconf.h 3066 was added to include both. 3067 3068 This allows internal hacks where one might need to modify the set 3069 of configured macros, for example this if deprecated symbols are 3070 still supposed to be available internally: 3071 3072 #include <openssl/configuration.h> 3073 3074 #undef OPENSSL_NO_DEPRECATED 3075 #define OPENSSL_SUPPRESS_DEPRECATED 3076 3077 #include <openssl/macros.h> 3078 3079 This should not be used by applications that use the exported 3080 symbols, as that will lead to linking errors. 3081 3082 *Richard Levitte* 3083 3084 * Fixed an overflow bug in the x64_64 Montgomery squaring procedure 3085 used in exponentiation with 512-bit moduli. No EC algorithms are 3086 affected. Analysis suggests that attacks against 2-prime RSA1024, 3087 3-prime RSA1536, and DSA1024 as a result of this defect would be very 3088 difficult to perform and are not believed likely. Attacks against DH512 3089 are considered just feasible. However, for an attack the target would 3090 have to reuse the DH512 private key, which is not recommended anyway. 3091 Also applications directly using the low-level API BN_mod_exp may be 3092 affected if they use BN_FLG_CONSTTIME. 3093 ([CVE-2019-1551]) 3094 3095 *Andy Polyakov* 3096 3097 * Most memory-debug features have been deprecated, and the functionality 3098 replaced with no-ops. 3099 3100 *Rich Salz* 3101 3102 * Added documentation for the STACK API. 3103 3104 *Rich Salz* 3105 3106 * Introduced a new method type and API, OSSL_ENCODER, to represent 3107 generic encoders. These do the same sort of job that PEM writers 3108 and d2i functions do, but with support for methods supplied by 3109 providers, and the possibility for providers to support other 3110 formats as well. 3111 3112 *Richard Levitte* 3113 3114 * Introduced a new method type and API, OSSL_DECODER, to represent 3115 generic decoders. These do the same sort of job that PEM readers 3116 and i2d functions do, but with support for methods supplied by 3117 providers, and the possibility for providers to support other 3118 formats as well. 3119 3120 *Richard Levitte* 3121 3122 * Added a .pragma directive to the syntax of configuration files, to 3123 allow varying behavior in a supported and predictable manner. 3124 Currently added pragma: 3125 3126 .pragma dollarid:on 3127 3128 This allows dollar signs to be a keyword character unless it's 3129 followed by a opening brace or parenthesis. This is useful for 3130 platforms where dollar signs are commonly used in names, such as 3131 volume names and system directory names on VMS. 3132 3133 *Richard Levitte* 3134 3135 * Added functionality to create an EVP_PKEY from user data. 3136 3137 *Richard Levitte* 3138 3139 * Change the interpretation of the '--api' configuration option to 3140 mean that this is a desired API compatibility level with no 3141 further meaning. The previous interpretation, that this would 3142 also mean to remove all deprecated symbols up to and including 3143 the given version, no requires that 'no-deprecated' is also used 3144 in the configuration. 3145 3146 When building applications, the desired API compatibility level 3147 can be set with the OPENSSL_API_COMPAT macro like before. For 3148 API compatibility version below 3.0, the old style numerical 3149 value is valid as before, such as -DOPENSSL_API_COMPAT=0x10100000L. 3150 For version 3.0 and on, the value is expected to be the decimal 3151 value calculated from the major and minor version like this: 3152 3153 MAJOR * 10000 + MINOR * 100 3154 3155 Examples: 3156 3157 -DOPENSSL_API_COMPAT=30000 For 3.0 3158 -DOPENSSL_API_COMPAT=30200 For 3.2 3159 3160 To hide declarations that are deprecated up to and including the 3161 given API compatibility level, -DOPENSSL_NO_DEPRECATED must be 3162 given when building the application as well. 3163 3164 *Richard Levitte* 3165 3166 * Added the X509_LOOKUP_METHOD called X509_LOOKUP_store, to allow 3167 access to certificate and CRL stores via URIs and OSSL_STORE 3168 loaders. 3169 3170 This adds the following functions: 3171 3172 - X509_LOOKUP_store() 3173 - X509_STORE_load_file() 3174 - X509_STORE_load_path() 3175 - X509_STORE_load_store() 3176 - SSL_add_store_cert_subjects_to_stack() 3177 - SSL_CTX_set_default_verify_store() 3178 - SSL_CTX_load_verify_file() 3179 - SSL_CTX_load_verify_dir() 3180 - SSL_CTX_load_verify_store() 3181 3182 *Richard Levitte* 3183 3184 * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY. 3185 The presence of this system service is determined at run-time. 3186 3187 *Richard Levitte* 3188 3189 * Added functionality to create an EVP_PKEY context based on data 3190 for methods from providers. This takes an algorithm name and a 3191 property query string and simply stores them, with the intent 3192 that any operation that uses this context will use those strings 3193 to fetch the needed methods implicitly, thereby making the port 3194 of application written for pre-3.0 OpenSSL easier. 3195 3196 *Richard Levitte* 3197 3198 * The undocumented function NCONF_WIN32() has been deprecated; for 3199 conversion details see the HISTORY section of doc/man5/config.pod 3200 3201 *Rich Salz* 3202 3203 * Introduced the new functions EVP_DigestSignInit_ex() and 3204 EVP_DigestVerifyInit_ex(). The macros EVP_DigestSignUpdate() and 3205 EVP_DigestVerifyUpdate() have been converted to functions. See the man 3206 pages for further details. 3207 3208 *Matt Caswell* 3209 3210 * Over two thousand fixes were made to the documentation, including: 3211 adding missing command flags, better style conformance, documentation 3212 of internals, etc. 3213 3214 *Rich Salz, Richard Levitte* 3215 3216 * s390x assembly pack: add hardware-support for P-256, P-384, P-521, 3217 X25519, X448, Ed25519 and Ed448. 3218 3219 *Patrick Steuer* 3220 3221 * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just 3222 the first value. 3223 3224 *Jon Spillett* 3225 3226 * Deprecated the public definition of `ERR_STATE` as well as the function 3227 `ERR_get_state()`. This is done in preparation of making `ERR_STATE` an 3228 opaque type. 3229 3230 *Richard Levitte* 3231 3232 * Added ERR functionality to give callers access to the stored function 3233 names that have replaced the older function code based functions. 3234 3235 New functions are ERR_peek_error_func(), ERR_peek_last_error_func(), 3236 ERR_peek_error_data(), ERR_peek_last_error_data(), ERR_get_error_all(), 3237 ERR_peek_error_all() and ERR_peek_last_error_all(). 3238 3239 Deprecate ERR functions ERR_get_error_line(), ERR_get_error_line_data(), 3240 ERR_peek_error_line_data(), ERR_peek_last_error_line_data() and 3241 ERR_func_error_string(). 3242 3243 *Richard Levitte* 3244 3245 * Extended testing to be verbose for failing tests only. The make variables 3246 VERBOSE_FAILURE or VF can be used to enable this: 3247 3248 $ make VF=1 test # Unix 3249 $ mms /macro=(VF=1) test ! OpenVMS 3250 $ nmake VF=1 test # Windows 3251 3252 *Richard Levitte* 3253 3254 * Added the `-copy_extensions` option to the `x509` command for use with 3255 `-req` and `-x509toreq`. When given with the `copy` or `copyall` argument, 3256 all extensions in the request are copied to the certificate or vice versa. 3257 3258 *David von Oheimb*, *Kirill Stefanenkov <kirill_stefanenkov@rambler.ru>* 3259 3260 * Added the `-copy_extensions` option to the `req` command for use with 3261 `-x509`. When given with the `copy` or `copyall` argument, 3262 all extensions in the certification request are copied to the certificate. 3263 3264 *David von Oheimb* 3265 3266 * The `x509`, `req`, and `ca` commands now make sure that X.509v3 certificates 3267 they generate are by default RFC 5280 compliant in the following sense: 3268 There is a subjectKeyIdentifier extension with a hash value of the public key 3269 and for not self-signed certs there is an authorityKeyIdentifier extension 3270 with a keyIdentifier field or issuer information identifying the signing key. 3271 This is done unless some configuration overrides the new default behavior, 3272 such as `subjectKeyIdentifier = none` and `authorityKeyIdentifier = none`. 3273 3274 *David von Oheimb* 3275 3276 * Added several checks to `X509_verify_cert()` according to requirements in 3277 RFC 5280 in case `X509_V_FLAG_X509_STRICT` is set 3278 (which may be done by using the CLI option `-x509_strict`): 3279 * The basicConstraints of CA certificates must be marked critical. 3280 * CA certificates must explicitly include the keyUsage extension. 3281 * If a pathlenConstraint is given the key usage keyCertSign must be allowed. 3282 * The issuer name of any certificate must not be empty. 3283 * The subject name of CA certs, certs with keyUsage crlSign, 3284 and certs without subjectAlternativeName must not be empty. 3285 * If a subjectAlternativeName extension is given it must not be empty. 3286 * The signatureAlgorithm field and the cert signature must be consistent. 3287 * Any given authorityKeyIdentifier and any given subjectKeyIdentifier 3288 must not be marked critical. 3289 * The authorityKeyIdentifier must be given for X.509v3 certs 3290 unless they are self-signed. 3291 * The subjectKeyIdentifier must be given for all X.509v3 CA certs. 3292 3293 *David von Oheimb* 3294 3295 * Certificate verification using `X509_verify_cert()` meanwhile rejects EC keys 3296 with explicit curve parameters (specifiedCurve) as required by RFC 5480. 3297 3298 *Tomáš Mráz* 3299 3300 * For built-in EC curves, ensure an EC_GROUP built from the curve name is 3301 used even when parsing explicit parameters, when loading a encoded key 3302 or calling `EC_GROUP_new_from_ecpkparameters()`/ 3303 `EC_GROUP_new_from_ecparameters()`. 3304 This prevents bypass of security hardening and performance gains, 3305 especially for curves with specialized EC_METHODs. 3306 By default, if a key encoded with explicit parameters is loaded and later 3307 encoded, the output is still encoded with explicit parameters, even if 3308 internally a "named" EC_GROUP is used for computation. 3309 3310 *Nicola Tuveri* 3311 3312 * Compute ECC cofactors if not provided during EC_GROUP construction. Before 3313 this change, EC_GROUP_set_generator would accept order and/or cofactor as 3314 NULL. After this change, only the cofactor parameter can be NULL. It also 3315 does some minimal sanity checks on the passed order. 3316 ([CVE-2019-1547]) 3317 3318 *Billy Bob Brumley* 3319 3320 * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey. 3321 An attack is simple, if the first CMS_recipientInfo is valid but the 3322 second CMS_recipientInfo is chosen ciphertext. If the second 3323 recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct 3324 encryption key will be replaced by garbage, and the message cannot be 3325 decoded, but if the RSA decryption fails, the correct encryption key is 3326 used and the recipient will not notice the attack. 3327 As a work around for this potential attack the length of the decrypted 3328 key must be equal to the cipher default key length, in case the 3329 certificate is not given and all recipientInfo are tried out. 3330 The old behaviour can be re-enabled in the CMS code by setting the 3331 CMS_DEBUG_DECRYPT flag. 3332 3333 *Bernd Edlinger* 3334 3335 * Early start up entropy quality from the DEVRANDOM seed source has been 3336 improved for older Linux systems. The RAND subsystem will wait for 3337 /dev/random to be producing output before seeding from /dev/urandom. 3338 The seeded state is stored for future library initialisations using 3339 a system global shared memory segment. The shared memory identifier 3340 can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to 3341 the desired value. The default identifier is 114. 3342 3343 *Paul Dale* 3344 3345 * Revised BN_generate_prime_ex to not avoid factors 2..17863 in p-1 3346 when primes for RSA keys are computed. 3347 Since we previously always generated primes == 2 (mod 3) for RSA keys, 3348 the 2-prime and 3-prime RSA modules were easy to distinguish, since 3349 `N = p*q = 1 (mod 3)`, but `N = p*q*r = 2 (mod 3)`. Therefore, fingerprinting 3350 2-prime vs. 3-prime RSA keys was possible by computing N mod 3. 3351 This avoids possible fingerprinting of newly generated RSA modules. 3352 3353 *Bernd Edlinger* 3354 3355 * Correct the extended master secret constant on EBCDIC systems. Without this 3356 fix TLS connections between an EBCDIC system and a non-EBCDIC system that 3357 negotiate EMS will fail. Unfortunately this also means that TLS connections 3358 between EBCDIC systems with this fix, and EBCDIC systems without this 3359 fix will fail if they negotiate EMS. 3360 3361 *Matt Caswell* 3362 3363 * Changed the library initialisation so that the config file is now loaded 3364 by default. This was already the case for libssl. It now occurs for both 3365 libcrypto and libssl. Use the OPENSSL_INIT_NO_LOAD_CONFIG option to 3366 `OPENSSL_init_crypto()` to suppress automatic loading of a config file. 3367 3368 *Matt Caswell* 3369 3370 * Introduced new error raising macros, `ERR_raise()` and `ERR_raise_data()`, 3371 where the former acts as a replacement for `ERR_put_error()`, and the 3372 latter replaces the combination `ERR_put_error()` + `ERR_add_error_data()`. 3373 `ERR_raise_data()` adds more flexibility by taking a format string and 3374 an arbitrary number of arguments following it, to be processed with 3375 `BIO_snprintf()`. 3376 3377 *Richard Levitte* 3378 3379 * Introduced a new function, `OSSL_PROVIDER_available()`, which can be used 3380 to check if a named provider is loaded and available. When called, it 3381 will also activate all fallback providers if such are still present. 3382 3383 *Richard Levitte* 3384 3385 * Enforce a minimum DH modulus size of 512 bits. 3386 3387 *Bernd Edlinger* 3388 3389 * Changed DH parameters to generate the order q subgroup instead of 2q. 3390 Previously generated DH parameters are still accepted by DH_check 3391 but DH_generate_key works around that by clearing bit 0 of the 3392 private key for those. This avoids leaking bit 0 of the private key. 3393 3394 *Bernd Edlinger* 3395 3396 * Significantly reduce secure memory usage by the randomness pools. 3397 3398 *Paul Dale* 3399 3400 * `{CRYPTO,OPENSSL}_mem_debug_{push,pop}` are now no-ops and have been 3401 deprecated. 3402 3403 *Rich Salz* 3404 3405 * A new type, EVP_KEYEXCH, has been introduced to represent key exchange 3406 algorithms. An implementation of a key exchange algorithm can be obtained 3407 by using the function EVP_KEYEXCH_fetch(). An EVP_KEYEXCH algorithm can be 3408 used in a call to EVP_PKEY_derive_init_ex() which works in a similar way to 3409 the older EVP_PKEY_derive_init() function. See the man pages for the new 3410 functions for further details. 3411 3412 *Matt Caswell* 3413 3414 * The EVP_PKEY_CTX_set_dh_pad() macro has now been converted to a function. 3415 3416 *Matt Caswell* 3417 3418 * Removed the function names from error messages and deprecated the 3419 xxx_F_xxx define's. 3420 3421 *Richard Levitte* 3422 3423 * Removed NextStep support and the macro OPENSSL_UNISTD 3424 3425 *Rich Salz* 3426 3427 * Removed DES_check_key. Also removed OPENSSL_IMPLEMENT_GLOBAL, 3428 OPENSSL_GLOBAL_REF, OPENSSL_DECLARE_GLOBAL. 3429 Also removed "export var as function" capability; we do not export 3430 variables, only functions. 3431 3432 *Rich Salz* 3433 3434 * RC5_32_set_key has been changed to return an int type, with 0 indicating 3435 an error and 1 indicating success. In previous versions of OpenSSL this 3436 was a void type. If a key was set longer than the maximum possible this 3437 would crash. 3438 3439 *Matt Caswell* 3440 3441 * Support SM2 signing and verification schemes with X509 certificate. 3442 3443 *Paul Yang* 3444 3445 * Use SHA256 as the default digest for TS query in the `ts` app. 3446 3447 *Tomáš Mráz* 3448 3449 * Change PBKDF2 to conform to SP800-132 instead of the older PKCS5 RFC2898. 3450 3451 *Shane Lontis* 3452 3453 * Default cipher lists/suites are now available via a function, the 3454 #defines are deprecated. 3455 3456 *Todd Short* 3457 3458 * Add target VC-WIN32-UWP, VC-WIN64A-UWP, VC-WIN32-ARM-UWP and 3459 VC-WIN64-ARM-UWP in Windows OneCore target for making building libraries 3460 for Windows Store apps easier. Also, the "no-uplink" option has been added. 3461 3462 *Kenji Mouri* 3463 3464 * Join the directories crypto/x509 and crypto/x509v3 3465 3466 *Richard Levitte* 3467 3468 * Added command 'openssl kdf' that uses the EVP_KDF API. 3469 3470 *Shane Lontis* 3471 3472 * Added command 'openssl mac' that uses the EVP_MAC API. 3473 3474 *Shane Lontis* 3475 3476 * Added OPENSSL_info() to get diverse built-in OpenSSL data, such 3477 as default directories. Also added the command 'openssl info' 3478 for scripting purposes. 3479 3480 *Richard Levitte* 3481 3482 * The functions AES_ige_encrypt() and AES_bi_ige_encrypt() have been 3483 deprecated. 3484 3485 *Matt Caswell* 3486 3487 * Add prediction resistance to the DRBG reseeding process. 3488 3489 *Paul Dale* 3490 3491 * Limit the number of blocks in a data unit for AES-XTS to 2^20 as 3492 mandated by IEEE Std 1619-2018. 3493 3494 *Paul Dale* 3495 3496 * Added newline escaping functionality to a filename when using openssl dgst. 3497 This output format is to replicate the output format found in the `*sum` 3498 checksum programs. This aims to preserve backward compatibility. 3499 3500 *Matt Eaton, Richard Levitte, and Paul Dale* 3501 3502 * Removed the heartbeat message in DTLS feature, as it has very 3503 little usage and doesn't seem to fulfill a valuable purpose. 3504 The configuration option is now deprecated. 3505 3506 *Richard Levitte* 3507 3508 * Changed the output of 'openssl {digestname} < file' to display the 3509 digest name in its output. 3510 3511 *Richard Levitte* 3512 3513 * Added a new generic trace API which provides support for enabling 3514 instrumentation through trace output. 3515 3516 *Richard Levitte & Matthias St. Pierre* 3517 3518 * Added build tests for C++. These are generated files that only do one 3519 thing, to include one public OpenSSL head file each. This tests that 3520 the public header files can be usefully included in a C++ application. 3521 3522 This test isn't enabled by default. It can be enabled with the option 3523 'enable-buildtest-c++'. 3524 3525 *Richard Levitte* 3526 3527 * Added KB KDF (EVP_KDF_KB) to EVP_KDF. 3528 3529 *Robbie Harwood* 3530 3531 * Added SSH KDF (EVP_KDF_SSHKDF) and KRB5 KDF (EVP_KDF_KRB5KDF) to EVP_KDF. 3532 3533 *Simo Sorce* 3534 3535 * Added Single Step KDF (EVP_KDF_SS), X963 KDF, and X942 KDF to EVP_KDF. 3536 3537 *Shane Lontis* 3538 3539 * Added KMAC to EVP_MAC. 3540 3541 *Shane Lontis* 3542 3543 * Added property based algorithm implementation selection framework to 3544 the core. 3545 3546 *Paul Dale* 3547 3548 * Added SCA hardening for modular field inversion in EC_GROUP through 3549 a new dedicated field_inv() pointer in EC_METHOD. 3550 This also addresses a leakage affecting conversions from projective 3551 to affine coordinates. 3552 3553 *Billy Bob Brumley, Nicola Tuveri* 3554 3555 * Added EVP_KDF, an EVP layer KDF API, to simplify adding KDF and PRF 3556 implementations. This includes an EVP_PKEY to EVP_KDF bridge for 3557 those algorithms that were already supported through the EVP_PKEY API 3558 (scrypt, TLS1 PRF and HKDF). The low-level KDF functions for PBKDF2 3559 and scrypt are now wrappers that call EVP_KDF. 3560 3561 *David Makepeace* 3562 3563 * Build devcrypto engine as a dynamic engine. 3564 3565 *Eneas U de Queiroz* 3566 3567 * Add keyed BLAKE2 to EVP_MAC. 3568 3569 *Antoine Salon* 3570 3571 * Fix a bug in the computation of the endpoint-pair shared secret used 3572 by DTLS over SCTP. This breaks interoperability with older versions 3573 of OpenSSL like OpenSSL 1.1.0 and OpenSSL 1.0.2. There is a runtime 3574 switch SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG (off by default) enabling 3575 interoperability with such broken implementations. However, enabling 3576 this switch breaks interoperability with correct implementations. 3577 3578 * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a 3579 reused X509_PUBKEY object if the second PUBKEY is malformed. 3580 3581 *Bernd Edlinger* 3582 3583 * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). 3584 3585 *Richard Levitte* 3586 3587 * Changed the license to the Apache License v2.0. 3588 3589 *Richard Levitte* 3590 3591 * Switch to a new version scheme using three numbers MAJOR.MINOR.PATCH. 3592 3593 - Major releases (indicated by incrementing the MAJOR release number) 3594 may introduce incompatible API/ABI changes. 3595 - Minor releases (indicated by incrementing the MINOR release number) 3596 may introduce new features but retain API/ABI compatibility. 3597 - Patch releases (indicated by incrementing the PATCH number) 3598 are intended for bug fixes and other improvements of existing 3599 features only (like improving performance or adding documentation) 3600 and retain API/ABI compatibility. 3601 3602 *Richard Levitte* 3603 3604 * Add support for RFC5297 SIV mode (siv128), including AES-SIV. 3605 3606 *Todd Short* 3607 3608 * Remove the 'dist' target and add a tarball building script. The 3609 'dist' target has fallen out of use, and it shouldn't be 3610 necessary to configure just to create a source distribution. 3611 3612 *Richard Levitte* 3613 3614 * Recreate the OS390-Unix config target. It no longer relies on a 3615 special script like it did for OpenSSL pre-1.1.0. 3616 3617 *Richard Levitte* 3618 3619 * Instead of having the source directories listed in Configure, add 3620 a 'build.info' keyword SUBDIRS to indicate what sub-directories to 3621 look into. 3622 3623 *Richard Levitte* 3624 3625 * Add GMAC to EVP_MAC. 3626 3627 *Paul Dale* 3628 3629 * Ported the HMAC, CMAC and SipHash EVP_PKEY_METHODs to EVP_MAC. 3630 3631 *Richard Levitte* 3632 3633 * Added EVP_MAC, an EVP layer MAC API, to simplify adding MAC 3634 implementations. This includes a generic EVP_PKEY to EVP_MAC bridge, 3635 to facilitate the continued use of MACs through raw private keys in 3636 functionality such as `EVP_DigestSign*` and `EVP_DigestVerify*`. 3637 3638 *Richard Levitte* 3639 3640 * Deprecate ECDH_KDF_X9_62(). 3641 3642 *Antoine Salon* 3643 3644 * Added EVP_PKEY_ECDH_KDF_X9_63 and ecdh_KDF_X9_63() as replacements for 3645 the EVP_PKEY_ECDH_KDF_X9_62 KDF type and ECDH_KDF_X9_62(). The old names 3646 are retained for backwards compatibility. 3647 3648 *Antoine Salon* 3649 3650 * AES-XTS mode now enforces that its two keys are different to mitigate 3651 the attacked described in "Efficient Instantiations of Tweakable 3652 Blockciphers and Refinements to Modes OCB and PMAC" by Phillip Rogaway. 3653 Details of this attack can be obtained from: 3654 <http://web.cs.ucdavis.edu/%7Erogaway/papers/offsets.pdf> 3655 3656 *Paul Dale* 3657 3658 * Rename the object files, i.e. give them other names than in previous 3659 versions. Their names now include the name of the final product, as 3660 well as its type mnemonic (bin, lib, shlib). 3661 3662 *Richard Levitte* 3663 3664 * Added new option for 'openssl list', '-objects', which will display the 3665 list of built in objects, i.e. OIDs with names. 3666 3667 *Richard Levitte* 3668 3669 * Added the options `-crl_lastupdate` and `-crl_nextupdate` to `openssl ca`, 3670 allowing the `lastUpdate` and `nextUpdate` fields in the generated CRL to 3671 be set explicitly. 3672 3673 *Chris Novakovic* 3674 3675 * Added support for Linux Kernel TLS data-path. The Linux Kernel data-path 3676 improves application performance by removing data copies and providing 3677 applications with zero-copy system calls such as sendfile and splice. 3678 3679 *Boris Pismenny* 3680 3681 * The SSL option SSL_OP_CLEANSE_PLAINTEXT is introduced. 3682 3683 *Martin Elshuber* 3684 3685 * `PKCS12_parse` now maintains the order of the parsed certificates 3686 when outputting them via `*ca` (rather than reversing it). 3687 3688 *David von Oheimb* 3689 3690 * Deprecated pthread fork support methods. 3691 3692 *Randall S. Becker* 3693 3694 * Added support for FFDHE key exchange in TLS 1.3. 3695 3696 *Raja Ashok* 3697 3698 * Added a new concept for OpenSSL plugability: providers. This 3699 functionality is designed to replace the ENGINE API and ENGINE 3700 implementations, and to be much more dynamic, allowing provider 3701 authors to introduce new algorithms among other things, as long as 3702 there's an API that supports the algorithm type. 3703 3704 With this concept comes a new core API for interaction between 3705 libcrypto and provider implementations. Public libcrypto functions 3706 that want to use providers do so through this core API. 3707 3708 The main documentation for this core API is found in 3709 doc/man7/provider.pod, doc/man7/provider-base.pod, and they in turn 3710 refer to other manuals describing the API specific for supported 3711 algorithm types (also called operations). 3712 3713 *The OpenSSL team* 3714 3715OpenSSL 1.1.1 3716------------- 3717 3718### Changes between 1.1.1m and 1.1.1n [xx XXX xxxx] 3719 3720### Changes between 1.1.1l and 1.1.1m [14 Dec 2021] 3721 3722 * Avoid loading of a dynamic engine twice. 3723 3724 *Bernd Edlinger* 3725 3726 * Prioritise DANE TLSA issuer certs over peer certs 3727 3728 *Viktor Dukhovni* 3729 3730 * Fixed random API for MacOS prior to 10.12 3731 3732 These MacOS versions don't support the CommonCrypto APIs 3733 3734 *Lenny Primak* 3735 3736### Changes between 1.1.1k and 1.1.1l [24 Aug 2021] 3737 3738 * Fixed an SM2 Decryption Buffer Overflow. 3739 3740 In order to decrypt SM2 encrypted data an application is expected to 3741 call the API function EVP_PKEY_decrypt(). Typically an application will 3742 call this function twice. The first time, on entry, the "out" parameter 3743 can be NULL and, on exit, the "outlen" parameter is populated with the 3744 buffer size required to hold the decrypted plaintext. The application 3745 can then allocate a sufficiently sized buffer and call EVP_PKEY_decrypt() 3746 again, but this time passing a non-NULL value for the "out" parameter. 3747 3748 A bug in the implementation of the SM2 decryption code means that the 3749 calculation of the buffer size required to hold the plaintext returned 3750 by the first call to EVP_PKEY_decrypt() can be smaller than the actual 3751 size required by the second call. This can lead to a buffer overflow 3752 when EVP_PKEY_decrypt() is called by the application a second time with 3753 a buffer that is too small. 3754 3755 A malicious attacker who is able present SM2 content for decryption to 3756 an application could cause attacker chosen data to overflow the buffer 3757 by up to a maximum of 62 bytes altering the contents of other data held 3758 after the buffer, possibly changing application behaviour or causing 3759 the application to crash. The location of the buffer is application 3760 dependent but is typically heap allocated. 3761 ([CVE-2021-3711]) 3762 3763 *Matt Caswell* 3764 3765 * Fixed various read buffer overruns processing ASN.1 strings 3766 3767 ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING 3768 structure which contains a buffer holding the string data and a field 3769 holding the buffer length. This contrasts with normal C strings which 3770 are represented as a buffer for the string data which is terminated 3771 with a NUL (0) byte. 3772 3773 Although not a strict requirement, ASN.1 strings that are parsed using 3774 OpenSSL's own "d2i" functions (and other similar parsing functions) as 3775 well as any string whose value has been set with the ASN1_STRING_set() 3776 function will additionally NUL terminate the byte array in the 3777 ASN1_STRING structure. 3778 3779 However, it is possible for applications to directly construct valid 3780 ASN1_STRING structures which do not NUL terminate the byte array by 3781 directly setting the "data" and "length" fields in the ASN1_STRING 3782 array. This can also happen by using the ASN1_STRING_set0() function. 3783 3784 Numerous OpenSSL functions that print ASN.1 data have been found to 3785 assume that the ASN1_STRING byte array will be NUL terminated, even 3786 though this is not guaranteed for strings that have been directly 3787 constructed. Where an application requests an ASN.1 structure to be 3788 printed, and where that ASN.1 structure contains ASN1_STRINGs that have 3789 been directly constructed by the application without NUL terminating 3790 the "data" field, then a read buffer overrun can occur. 3791 3792 The same thing can also occur during name constraints processing 3793 of certificates (for example if a certificate has been directly 3794 constructed by the application instead of loading it via the OpenSSL 3795 parsing functions, and the certificate contains non NUL terminated 3796 ASN1_STRING structures). It can also occur in the X509_get1_email(), 3797 X509_REQ_get1_email() and X509_get1_ocsp() functions. 3798 3799 If a malicious actor can cause an application to directly construct an 3800 ASN1_STRING and then process it through one of the affected OpenSSL 3801 functions then this issue could be hit. This might result in a crash 3802 (causing a Denial of Service attack). It could also result in the 3803 disclosure of private memory contents (such as private keys, or 3804 sensitive plaintext). 3805 ([CVE-2021-3712]) 3806 3807 *Matt Caswell* 3808 3809### Changes between 1.1.1j and 1.1.1k [25 Mar 2021] 3810 3811 * Fixed a problem with verifying a certificate chain when using the 3812 X509_V_FLAG_X509_STRICT flag. This flag enables additional security checks of 3813 the certificates present in a certificate chain. It is not set by default. 3814 3815 Starting from OpenSSL version 1.1.1h a check to disallow certificates in 3816 the chain that have explicitly encoded elliptic curve parameters was added 3817 as an additional strict check. 3818 3819 An error in the implementation of this check meant that the result of a 3820 previous check to confirm that certificates in the chain are valid CA 3821 certificates was overwritten. This effectively bypasses the check 3822 that non-CA certificates must not be able to issue other certificates. 3823 3824 If a "purpose" has been configured then there is a subsequent opportunity 3825 for checks that the certificate is a valid CA. All of the named "purpose" 3826 values implemented in libcrypto perform this check. Therefore, where 3827 a purpose is set the certificate chain will still be rejected even when the 3828 strict flag has been used. A purpose is set by default in libssl client and 3829 server certificate verification routines, but it can be overridden or 3830 removed by an application. 3831 3832 In order to be affected, an application must explicitly set the 3833 X509_V_FLAG_X509_STRICT verification flag and either not set a purpose 3834 for the certificate verification or, in the case of TLS client or server 3835 applications, override the default purpose. 3836 ([CVE-2021-3450]) 3837 3838 *Tomáš Mráz* 3839 3840 * Fixed an issue where an OpenSSL TLS server may crash if sent a maliciously 3841 crafted renegotiation ClientHello message from a client. If a TLSv1.2 3842 renegotiation ClientHello omits the signature_algorithms extension (where it 3843 was present in the initial ClientHello), but includes a 3844 signature_algorithms_cert extension then a NULL pointer dereference will 3845 result, leading to a crash and a denial of service attack. 3846 3847 A server is only vulnerable if it has TLSv1.2 and renegotiation enabled 3848 (which is the default configuration). OpenSSL TLS clients are not impacted by 3849 this issue. 3850 ([CVE-2021-3449]) 3851 3852 *Peter Kästle and Samuel Sapalski* 3853 3854### Changes between 1.1.1i and 1.1.1j [16 Feb 2021] 3855 3856 * Fixed the X509_issuer_and_serial_hash() function. It attempts to 3857 create a unique hash value based on the issuer and serial number data 3858 contained within an X509 certificate. However, it was failing to correctly 3859 handle any errors that may occur while parsing the issuer field (which might 3860 occur if the issuer field is maliciously constructed). This may subsequently 3861 result in a NULL pointer deref and a crash leading to a potential denial of 3862 service attack. 3863 ([CVE-2021-23841]) 3864 3865 *Matt Caswell* 3866 3867 * Fixed the RSA_padding_check_SSLv23() function and the RSA_SSLV23_PADDING 3868 padding mode to correctly check for rollback attacks. This is considered a 3869 bug in OpenSSL 1.1.1 because it does not support SSLv2. In 1.0.2 this is 3870 CVE-2021-23839. 3871 3872 *Matt Caswell* 3873 3874 Fixed the EVP_CipherUpdate, EVP_EncryptUpdate and EVP_DecryptUpdate 3875 functions. Previously they could overflow the output length argument in some 3876 cases where the input length is close to the maximum permissible length for 3877 an integer on the platform. In such cases the return value from the function 3878 call would be 1 (indicating success), but the output length value would be 3879 negative. This could cause applications to behave incorrectly or crash. 3880 ([CVE-2021-23840]) 3881 3882 *Matt Caswell* 3883 3884 * Fixed SRP_Calc_client_key so that it runs in constant time. The previous 3885 implementation called BN_mod_exp without setting BN_FLG_CONSTTIME. This 3886 could be exploited in a side channel attack to recover the password. Since 3887 the attack is local host only this is outside of the current OpenSSL 3888 threat model and therefore no CVE is assigned. 3889 3890 Thanks to Mohammed Sabt and Daniel De Almeida Braga for reporting this 3891 issue. 3892 3893 *Matt Caswell* 3894 3895### Changes between 1.1.1h and 1.1.1i [8 Dec 2020] 3896 3897 * Fixed NULL pointer deref in the GENERAL_NAME_cmp function 3898 This function could crash if both GENERAL_NAMEs contain an EDIPARTYNAME. 3899 If an attacker can control both items being compared then this could lead 3900 to a possible denial of service attack. OpenSSL itself uses the 3901 GENERAL_NAME_cmp function for two purposes: 3902 1) Comparing CRL distribution point names between an available CRL and a 3903 CRL distribution point embedded in an X509 certificate 3904 2) When verifying that a timestamp response token signer matches the 3905 timestamp authority name (exposed via the API functions 3906 TS_RESP_verify_response and TS_RESP_verify_token) 3907 ([CVE-2020-1971]) 3908 3909 *Matt Caswell* 3910 3911### Changes between 1.1.1g and 1.1.1h [22 Sep 2020] 3912 3913 * Certificates with explicit curve parameters are now disallowed in 3914 verification chains if the X509_V_FLAG_X509_STRICT flag is used. 3915 3916 *Tomáš Mráz* 3917 3918 * The 'MinProtocol' and 'MaxProtocol' configuration commands now silently 3919 ignore TLS protocol version bounds when configuring DTLS-based contexts, and 3920 conversely, silently ignore DTLS protocol version bounds when configuring 3921 TLS-based contexts. The commands can be repeated to set bounds of both 3922 types. The same applies with the corresponding "min_protocol" and 3923 "max_protocol" command-line switches, in case some application uses both TLS 3924 and DTLS. 3925 3926 SSL_CTX instances that are created for a fixed protocol version (e.g. 3927 TLSv1_server_method()) also silently ignore version bounds. Previously 3928 attempts to apply bounds to these protocol versions would result in an 3929 error. Now only the "version-flexible" SSL_CTX instances are subject to 3930 limits in configuration files in command-line options. 3931 3932 *Viktor Dukhovni* 3933 3934 * Handshake now fails if Extended Master Secret extension is dropped 3935 on renegotiation. 3936 3937 *Tomáš Mráz* 3938 3939 * The Oracle Developer Studio compiler will start reporting deprecated APIs 3940 3941### Changes between 1.1.1f and 1.1.1g [21 Apr 2020] 3942 3943 * Fixed segmentation fault in SSL_check_chain() 3944 Server or client applications that call the SSL_check_chain() function 3945 during or after a TLS 1.3 handshake may crash due to a NULL pointer 3946 dereference as a result of incorrect handling of the 3947 "signature_algorithms_cert" TLS extension. The crash occurs if an invalid 3948 or unrecognised signature algorithm is received from the peer. This could 3949 be exploited by a malicious peer in a Denial of Service attack. 3950 ([CVE-2020-1967]) 3951 3952 *Benjamin Kaduk* 3953 3954 * Added AES consttime code for no-asm configurations 3955 an optional constant time support for AES was added 3956 when building openssl for no-asm. 3957 Enable with: ./config no-asm -DOPENSSL_AES_CONST_TIME 3958 Disable with: ./config no-asm -DOPENSSL_NO_AES_CONST_TIME 3959 At this time this feature is by default disabled. 3960 It will be enabled by default in 3.0. 3961 3962 *Bernd Edlinger* 3963 3964### Changes between 1.1.1e and 1.1.1f [31 Mar 2020] 3965 3966 * Revert the change of EOF detection while reading in libssl to avoid 3967 regressions in applications depending on the current way of reporting 3968 the EOF. As the existing method is not fully accurate the change to 3969 reporting the EOF via SSL_ERROR_SSL is kept on the current development 3970 branch and will be present in the 3.0 release. 3971 3972 *Tomáš Mráz* 3973 3974 * Revised BN_generate_prime_ex to not avoid factors 3..17863 in p-1 3975 when primes for RSA keys are computed. 3976 Since we previously always generated primes == 2 (mod 3) for RSA keys, 3977 the 2-prime and 3-prime RSA modules were easy to distinguish, since 3978 N = p*q = 1 (mod 3), but N = p*q*r = 2 (mod 3). Therefore, fingerprinting 3979 2-prime vs. 3-prime RSA keys was possible by computing N mod 3. 3980 This avoids possible fingerprinting of newly generated RSA modules. 3981 3982 *Bernd Edlinger* 3983 3984### Changes between 1.1.1d and 1.1.1e [17 Mar 2020] 3985 3986 * Properly detect EOF while reading in libssl. Previously if we hit an EOF 3987 while reading in libssl then we would report an error back to the 3988 application (SSL_ERROR_SYSCALL) but errno would be 0. We now add 3989 an error to the stack (which means we instead return SSL_ERROR_SSL) and 3990 therefore give a hint as to what went wrong. 3991 3992 *Matt Caswell* 3993 3994 * Check that ed25519 and ed448 are allowed by the security level. Previously 3995 signature algorithms not using an MD were not being checked that they were 3996 allowed by the security level. 3997 3998 *Kurt Roeckx* 3999 4000 * Fixed SSL_get_servername() behaviour. The behaviour of SSL_get_servername() 4001 was not quite right. The behaviour was not consistent between resumption 4002 and normal handshakes, and also not quite consistent with historical 4003 behaviour. The behaviour in various scenarios has been clarified and 4004 it has been updated to make it match historical behaviour as closely as 4005 possible. 4006 4007 *Matt Caswell* 4008 4009 * *[VMS only]* The header files that the VMS compilers include automatically, 4010 `__DECC_INCLUDE_PROLOGUE.H` and `__DECC_INCLUDE_EPILOGUE.H`, use pragmas 4011 that the C++ compiler doesn't understand. This is a shortcoming in the 4012 compiler, but can be worked around with `__cplusplus` guards. 4013 4014 C++ applications that use OpenSSL libraries must be compiled using the 4015 qualifier `/NAMES=(AS_IS,SHORTENED)` to be able to use all the OpenSSL 4016 functions. Otherwise, only functions with symbols of less than 31 4017 characters can be used, as the linker will not be able to successfully 4018 resolve symbols with longer names. 4019 4020 *Richard Levitte* 4021 4022 * Added a new method to gather entropy on VMS, based on SYS$GET_ENTROPY. 4023 The presence of this system service is determined at run-time. 4024 4025 *Richard Levitte* 4026 4027 * Print all values for a PKCS#12 attribute with 'openssl pkcs12', not just 4028 the first value. 4029 4030 *Jon Spillett* 4031 4032### Changes between 1.1.1c and 1.1.1d [10 Sep 2019] 4033 4034 * Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random 4035 number generator (RNG). This was intended to include protection in the 4036 event of a fork() system call in order to ensure that the parent and child 4037 processes did not share the same RNG state. However, this protection was not 4038 being used in the default case. 4039 4040 A partial mitigation for this issue is that the output from a high 4041 precision timer is mixed into the RNG state so the likelihood of a parent 4042 and child process sharing state is significantly reduced. 4043 4044 If an application already calls OPENSSL_init_crypto() explicitly using 4045 OPENSSL_INIT_ATFORK then this problem does not occur at all. 4046 ([CVE-2019-1549]) 4047 4048 *Matthias St. Pierre* 4049 4050 * For built-in EC curves, ensure an EC_GROUP built from the curve name is 4051 used even when parsing explicit parameters, when loading a encoded key 4052 or calling `EC_GROUP_new_from_ecpkparameters()`/ 4053 `EC_GROUP_new_from_ecparameters()`. 4054 This prevents bypass of security hardening and performance gains, 4055 especially for curves with specialized EC_METHODs. 4056 By default, if a key encoded with explicit parameters is loaded and later 4057 encoded, the output is still encoded with explicit parameters, even if 4058 internally a "named" EC_GROUP is used for computation. 4059 4060 *Nicola Tuveri* 4061 4062 * Compute ECC cofactors if not provided during EC_GROUP construction. Before 4063 this change, EC_GROUP_set_generator would accept order and/or cofactor as 4064 NULL. After this change, only the cofactor parameter can be NULL. It also 4065 does some minimal sanity checks on the passed order. 4066 ([CVE-2019-1547]) 4067 4068 *Billy Bob Brumley* 4069 4070 * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey. 4071 An attack is simple, if the first CMS_recipientInfo is valid but the 4072 second CMS_recipientInfo is chosen ciphertext. If the second 4073 recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct 4074 encryption key will be replaced by garbage, and the message cannot be 4075 decoded, but if the RSA decryption fails, the correct encryption key is 4076 used and the recipient will not notice the attack. 4077 As a work around for this potential attack the length of the decrypted 4078 key must be equal to the cipher default key length, in case the 4079 certificate is not given and all recipientInfo are tried out. 4080 The old behaviour can be re-enabled in the CMS code by setting the 4081 CMS_DEBUG_DECRYPT flag. 4082 ([CVE-2019-1563]) 4083 4084 *Bernd Edlinger* 4085 4086 * Early start up entropy quality from the DEVRANDOM seed source has been 4087 improved for older Linux systems. The RAND subsystem will wait for 4088 /dev/random to be producing output before seeding from /dev/urandom. 4089 The seeded state is stored for future library initialisations using 4090 a system global shared memory segment. The shared memory identifier 4091 can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to 4092 the desired value. The default identifier is 114. 4093 4094 *Paul Dale* 4095 4096 * Correct the extended master secret constant on EBCDIC systems. Without this 4097 fix TLS connections between an EBCDIC system and a non-EBCDIC system that 4098 negotiate EMS will fail. Unfortunately this also means that TLS connections 4099 between EBCDIC systems with this fix, and EBCDIC systems without this 4100 fix will fail if they negotiate EMS. 4101 4102 *Matt Caswell* 4103 4104 * Use Windows installation paths in the mingw builds 4105 4106 Mingw isn't a POSIX environment per se, which means that Windows 4107 paths should be used for installation. 4108 ([CVE-2019-1552]) 4109 4110 *Richard Levitte* 4111 4112 * Changed DH_check to accept parameters with order q and 2q subgroups. 4113 With order 2q subgroups the bit 0 of the private key is not secret 4114 but DH_generate_key works around that by clearing bit 0 of the 4115 private key for those. This avoids leaking bit 0 of the private key. 4116 4117 *Bernd Edlinger* 4118 4119 * Significantly reduce secure memory usage by the randomness pools. 4120 4121 *Paul Dale* 4122 4123 * Revert the DEVRANDOM_WAIT feature for Linux systems 4124 4125 The DEVRANDOM_WAIT feature added a select() call to wait for the 4126 /dev/random device to become readable before reading from the 4127 /dev/urandom device. 4128 4129 It turned out that this change had negative side effects on 4130 performance which were not acceptable. After some discussion it 4131 was decided to revert this feature and leave it up to the OS 4132 resp. the platform maintainer to ensure a proper initialization 4133 during early boot time. 4134 4135 *Matthias St. Pierre* 4136 4137### Changes between 1.1.1b and 1.1.1c [28 May 2019] 4138 4139 * Add build tests for C++. These are generated files that only do one 4140 thing, to include one public OpenSSL head file each. This tests that 4141 the public header files can be usefully included in a C++ application. 4142 4143 This test isn't enabled by default. It can be enabled with the option 4144 'enable-buildtest-c++'. 4145 4146 *Richard Levitte* 4147 4148 * Enable SHA3 pre-hashing for ECDSA and DSA. 4149 4150 *Patrick Steuer* 4151 4152 * Change the default RSA, DSA and DH size to 2048 bit instead of 1024. 4153 This changes the size when using the `genpkey` command when no size is given. 4154 It fixes an omission in earlier changes that changed all RSA, DSA and DH 4155 generation commands to use 2048 bits by default. 4156 4157 *Kurt Roeckx* 4158 4159 * Reorganize the manual pages to consistently have RETURN VALUES, 4160 EXAMPLES, SEE ALSO and HISTORY come in that order, and adjust 4161 util/fix-doc-nits accordingly. 4162 4163 *Paul Yang, Joshua Lock* 4164 4165 * Add the missing accessor EVP_PKEY_get0_engine() 4166 4167 *Matt Caswell* 4168 4169 * Have commands like `s_client` and `s_server` output the signature scheme 4170 along with other cipher suite parameters when debugging. 4171 4172 *Lorinczy Zsigmond* 4173 4174 * Make OPENSSL_config() error agnostic again. 4175 4176 *Richard Levitte* 4177 4178 * Do the error handling in RSA decryption constant time. 4179 4180 *Bernd Edlinger* 4181 4182 * Prevent over long nonces in ChaCha20-Poly1305. 4183 4184 ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input 4185 for every encryption operation. RFC 7539 specifies that the nonce value 4186 (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length 4187 and front pads the nonce with 0 bytes if it is less than 12 4188 bytes. However it also incorrectly allows a nonce to be set of up to 16 4189 bytes. In this case only the last 12 bytes are significant and any 4190 additional leading bytes are ignored. 4191 4192 It is a requirement of using this cipher that nonce values are 4193 unique. Messages encrypted using a reused nonce value are susceptible to 4194 serious confidentiality and integrity attacks. If an application changes 4195 the default nonce length to be longer than 12 bytes and then makes a 4196 change to the leading bytes of the nonce expecting the new value to be a 4197 new unique nonce then such an application could inadvertently encrypt 4198 messages with a reused nonce. 4199 4200 Additionally the ignored bytes in a long nonce are not covered by the 4201 integrity guarantee of this cipher. Any application that relies on the 4202 integrity of these ignored leading bytes of a long nonce may be further 4203 affected. Any OpenSSL internal use of this cipher, including in SSL/TLS, 4204 is safe because no such use sets such a long nonce value. However user 4205 applications that use this cipher directly and set a non-default nonce 4206 length to be longer than 12 bytes may be vulnerable. 4207 4208 This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk 4209 Greef of Ronomon. 4210 ([CVE-2019-1543]) 4211 4212 *Matt Caswell* 4213 4214 * Add DEVRANDOM_WAIT feature for Linux systems 4215 4216 On older Linux systems where the getrandom() system call is not available, 4217 OpenSSL normally uses the /dev/urandom device for seeding its CSPRNG. 4218 Contrary to getrandom(), the /dev/urandom device will not block during 4219 early boot when the kernel CSPRNG has not been seeded yet. 4220 4221 To mitigate this known weakness, use select() to wait for /dev/random to 4222 become readable before reading from /dev/urandom. 4223 4224 * Ensure that SM2 only uses SM3 as digest algorithm 4225 4226 *Paul Yang* 4227 4228### Changes between 1.1.1a and 1.1.1b [26 Feb 2019] 4229 4230 * Change the info callback signals for the start and end of a post-handshake 4231 message exchange in TLSv1.3. In 1.1.1/1.1.1a we used SSL_CB_HANDSHAKE_START 4232 and SSL_CB_HANDSHAKE_DONE. Experience has shown that many applications get 4233 confused by this and assume that a TLSv1.2 renegotiation has started. This 4234 can break KeyUpdate handling. Instead we no longer signal the start and end 4235 of a post handshake message exchange (although the messages themselves are 4236 still signalled). This could break some applications that were expecting 4237 the old signals. However without this KeyUpdate is not usable for many 4238 applications. 4239 4240 *Matt Caswell* 4241 4242### Changes between 1.1.1 and 1.1.1a [20 Nov 2018] 4243 4244 * Timing vulnerability in DSA signature generation 4245 4246 The OpenSSL DSA signature algorithm has been shown to be vulnerable to a 4247 timing side channel attack. An attacker could use variations in the signing 4248 algorithm to recover the private key. 4249 4250 This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser. 4251 ([CVE-2018-0734]) 4252 4253 *Paul Dale* 4254 4255 * Timing vulnerability in ECDSA signature generation 4256 4257 The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a 4258 timing side channel attack. An attacker could use variations in the signing 4259 algorithm to recover the private key. 4260 4261 This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser. 4262 ([CVE-2018-0735]) 4263 4264 *Paul Dale* 4265 4266 * Fixed the issue that RAND_add()/RAND_seed() silently discards random input 4267 if its length exceeds 4096 bytes. The limit has been raised to a buffer size 4268 of two gigabytes and the error handling improved. 4269 4270 This issue was reported to OpenSSL by Dr. Falko Strenzke. It has been 4271 categorized as a normal bug, not a security issue, because the DRBG reseeds 4272 automatically and is fully functional even without additional randomness 4273 provided by the application. 4274 4275### Changes between 1.1.0i and 1.1.1 [11 Sep 2018] 4276 4277 * Add a new ClientHello callback. Provides a callback interface that gives 4278 the application the ability to adjust the nascent SSL object at the 4279 earliest stage of ClientHello processing, immediately after extensions have 4280 been collected but before they have been processed. In particular, this 4281 callback can adjust the supported TLS versions in response to the contents 4282 of the ClientHello 4283 4284 *Benjamin Kaduk* 4285 4286 * Add SM2 base algorithm support. 4287 4288 *Jack Lloyd* 4289 4290 * s390x assembly pack: add (improved) hardware-support for the following 4291 cryptographic primitives: sha3, shake, aes-gcm, aes-ccm, aes-ctr, aes-ofb, 4292 aes-cfb/cfb8, aes-ecb. 4293 4294 *Patrick Steuer* 4295 4296 * Make EVP_PKEY_asn1_new() a bit stricter about its input. A NULL pem_str 4297 parameter is no longer accepted, as it leads to a corrupt table. NULL 4298 pem_str is reserved for alias entries only. 4299 4300 *Richard Levitte* 4301 4302 * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder 4303 step for prime curves. The new implementation is based on formulae from 4304 differential addition-and-doubling in homogeneous projective coordinates 4305 from Izu-Takagi "A fast parallel elliptic curve multiplication resistant 4306 against side channel attacks" and Brier-Joye "Weierstrass Elliptic Curves 4307 and Side-Channel Attacks" Eq. (8) for y-coordinate recovery, modified 4308 to work in projective coordinates. 4309 4310 *Billy Bob Brumley, Nicola Tuveri* 4311 4312 * Change generating and checking of primes so that the error rate of not 4313 being prime depends on the intended use based on the size of the input. 4314 For larger primes this will result in more rounds of Miller-Rabin. 4315 The maximal error rate for primes with more than 1080 bits is lowered 4316 to 2^-128. 4317 4318 *Kurt Roeckx, Annie Yousar* 4319 4320 * Increase the number of Miller-Rabin rounds for DSA key generating to 64. 4321 4322 *Kurt Roeckx* 4323 4324 * The 'tsget' script is renamed to 'tsget.pl', to avoid confusion when 4325 moving between systems, and to avoid confusion when a Windows build is 4326 done with mingw vs with MSVC. For POSIX installs, there's still a 4327 symlink or copy named 'tsget' to avoid that confusion as well. 4328 4329 *Richard Levitte* 4330 4331 * Revert blinding in ECDSA sign and instead make problematic addition 4332 length-invariant. Switch even to fixed-length Montgomery multiplication. 4333 4334 *Andy Polyakov* 4335 4336 * Use the new ec_scalar_mul_ladder scaffold to implement a specialized ladder 4337 step for binary curves. The new implementation is based on formulae from 4338 differential addition-and-doubling in mixed Lopez-Dahab projective 4339 coordinates, modified to independently blind the operands. 4340 4341 *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri* 4342 4343 * Add a scaffold to optionally enhance the Montgomery ladder implementation 4344 for `ec_scalar_mul_ladder` (formerly `ec_mul_consttime`) allowing 4345 EC_METHODs to implement their own specialized "ladder step", to take 4346 advantage of more favorable coordinate systems or more efficient 4347 differential addition-and-doubling algorithms. 4348 4349 *Billy Bob Brumley, Sohaib ul Hassan, Nicola Tuveri* 4350 4351 * Modified the random device based seed sources to keep the relevant 4352 file descriptors open rather than reopening them on each access. 4353 This allows such sources to operate in a chroot() jail without 4354 the associated device nodes being available. This behaviour can be 4355 controlled using RAND_keep_random_devices_open(). 4356 4357 *Paul Dale* 4358 4359 * Numerous side-channel attack mitigations have been applied. This may have 4360 performance impacts for some algorithms for the benefit of improved 4361 security. Specific changes are noted in this change log by their respective 4362 authors. 4363 4364 *Matt Caswell* 4365 4366 * AIX shared library support overhaul. Switch to AIX "natural" way of 4367 handling shared libraries, which means collecting shared objects of 4368 different versions and bitnesses in one common archive. This allows to 4369 mitigate conflict between 1.0 and 1.1 side-by-side installations. It 4370 doesn't affect the way 3rd party applications are linked, only how 4371 multi-version installation is managed. 4372 4373 *Andy Polyakov* 4374 4375 * Make ec_group_do_inverse_ord() more robust and available to other 4376 EC cryptosystems, so that irrespective of BN_FLG_CONSTTIME, SCA 4377 mitigations are applied to the fallback BN_mod_inverse(). 4378 When using this function rather than BN_mod_inverse() directly, new 4379 EC cryptosystem implementations are then safer-by-default. 4380 4381 *Billy Bob Brumley* 4382 4383 * Add coordinate blinding for EC_POINT and implement projective 4384 coordinate blinding for generic prime curves as a countermeasure to 4385 chosen point SCA attacks. 4386 4387 *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley* 4388 4389 * Add blinding to ECDSA and DSA signatures to protect against side channel 4390 attacks discovered by Keegan Ryan (NCC Group). 4391 4392 *Matt Caswell* 4393 4394 * Enforce checking in the `pkeyutl` command to ensure that the input 4395 length does not exceed the maximum supported digest length when performing 4396 a sign, verify or verifyrecover operation. 4397 4398 *Matt Caswell* 4399 4400 * SSL_MODE_AUTO_RETRY is enabled by default. Applications that use blocking 4401 I/O in combination with something like select() or poll() will hang. This 4402 can be turned off again using SSL_CTX_clear_mode(). 4403 Many applications do not properly handle non-application data records, and 4404 TLS 1.3 sends more of such records. Setting SSL_MODE_AUTO_RETRY works 4405 around the problems in those applications, but can also break some. 4406 It's recommended to read the manpages about SSL_read(), SSL_write(), 4407 SSL_get_error(), SSL_shutdown(), SSL_CTX_set_mode() and 4408 SSL_CTX_set_read_ahead() again. 4409 4410 *Kurt Roeckx* 4411 4412 * When unlocking a pass phrase protected PEM file or PKCS#8 container, we 4413 now allow empty (zero character) pass phrases. 4414 4415 *Richard Levitte* 4416 4417 * Apply blinding to binary field modular inversion and remove patent 4418 pending (OPENSSL_SUN_GF2M_DIV) BN_GF2m_mod_div implementation. 4419 4420 *Billy Bob Brumley* 4421 4422 * Deprecate ec2_mult.c and unify scalar multiplication code paths for 4423 binary and prime elliptic curves. 4424 4425 *Billy Bob Brumley* 4426 4427 * Remove ECDSA nonce padding: EC_POINT_mul is now responsible for 4428 constant time fixed point multiplication. 4429 4430 *Billy Bob Brumley* 4431 4432 * Revise elliptic curve scalar multiplication with timing attack 4433 defenses: ec_wNAF_mul redirects to a constant time implementation 4434 when computing fixed point and variable point multiplication (which 4435 in OpenSSL are mostly used with secret scalars in keygen, sign, 4436 ECDH derive operations). 4437 *Billy Bob Brumley, Nicola Tuveri, Cesar Pereida García, 4438 Sohaib ul Hassan* 4439 4440 * Updated CONTRIBUTING 4441 4442 *Rich Salz* 4443 4444 * Updated DRBG / RAND to request nonce and additional low entropy 4445 randomness from the system. 4446 4447 *Matthias St. Pierre* 4448 4449 * Updated 'openssl rehash' to use OpenSSL consistent default. 4450 4451 *Richard Levitte* 4452 4453 * Moved the load of the ssl_conf module to libcrypto, which helps 4454 loading engines that libssl uses before libssl is initialised. 4455 4456 *Matt Caswell* 4457 4458 * Added EVP_PKEY_sign() and EVP_PKEY_verify() for EdDSA 4459 4460 *Matt Caswell* 4461 4462 * Fixed X509_NAME_ENTRY_set to get multi-valued RDNs right in all cases. 4463 4464 *Ingo Schwarze, Rich Salz* 4465 4466 * Added output of accepting IP address and port for 'openssl s_server' 4467 4468 *Richard Levitte* 4469 4470 * Added a new API for TLSv1.3 ciphersuites: 4471 SSL_CTX_set_ciphersuites() 4472 SSL_set_ciphersuites() 4473 4474 *Matt Caswell* 4475 4476 * Memory allocation failures consistently add an error to the error 4477 stack. 4478 4479 *Rich Salz* 4480 4481 * Don't use OPENSSL_ENGINES and OPENSSL_CONF environment values 4482 in libcrypto when run as setuid/setgid. 4483 4484 *Bernd Edlinger* 4485 4486 * Load any config file by default when libssl is used. 4487 4488 *Matt Caswell* 4489 4490 * Added new public header file <openssl/rand_drbg.h> and documentation 4491 for the RAND_DRBG API. See manual page RAND_DRBG(7) for an overview. 4492 4493 *Matthias St. Pierre* 4494 4495 * QNX support removed (cannot find contributors to get their approval 4496 for the license change). 4497 4498 *Rich Salz* 4499 4500 * TLSv1.3 replay protection for early data has been implemented. See the 4501 SSL_read_early_data() man page for further details. 4502 4503 *Matt Caswell* 4504 4505 * Separated TLSv1.3 ciphersuite configuration out from TLSv1.2 ciphersuite 4506 configuration. TLSv1.3 ciphersuites are not compatible with TLSv1.2 and 4507 below. Similarly TLSv1.2 ciphersuites are not compatible with TLSv1.3. 4508 In order to avoid issues where legacy TLSv1.2 ciphersuite configuration 4509 would otherwise inadvertently disable all TLSv1.3 ciphersuites the 4510 configuration has been separated out. See the ciphers man page or the 4511 SSL_CTX_set_ciphersuites() man page for more information. 4512 4513 *Matt Caswell* 4514 4515 * On POSIX (BSD, Linux, ...) systems the ocsp(1) command running 4516 in responder mode now supports the new "-multi" option, which 4517 spawns the specified number of child processes to handle OCSP 4518 requests. The "-timeout" option now also limits the OCSP 4519 responder's patience to wait to receive the full client request 4520 on a newly accepted connection. Child processes are respawned 4521 as needed, and the CA index file is automatically reloaded 4522 when changed. This makes it possible to run the "ocsp" responder 4523 as a long-running service, making the OpenSSL CA somewhat more 4524 feature-complete. In this mode, most diagnostic messages logged 4525 after entering the event loop are logged via syslog(3) rather than 4526 written to stderr. 4527 4528 *Viktor Dukhovni* 4529 4530 * Added support for X448 and Ed448. Heavily based on original work by 4531 Mike Hamburg. 4532 4533 *Matt Caswell* 4534 4535 * Extend OSSL_STORE with capabilities to search and to narrow the set of 4536 objects loaded. This adds the functions OSSL_STORE_expect() and 4537 OSSL_STORE_find() as well as needed tools to construct searches and 4538 get the search data out of them. 4539 4540 *Richard Levitte* 4541 4542 * Support for TLSv1.3 added. Note that users upgrading from an earlier 4543 version of OpenSSL should review their configuration settings to ensure 4544 that they are still appropriate for TLSv1.3. For further information see: 4545 <https://github.com/openssl/openssl/wiki/TLS1.3> 4546 4547 *Matt Caswell* 4548 4549 * Grand redesign of the OpenSSL random generator 4550 4551 The default RAND method now utilizes an AES-CTR DRBG according to 4552 NIST standard SP 800-90Ar1. The new random generator is essentially 4553 a port of the default random generator from the OpenSSL FIPS 2.0 4554 object module. It is a hybrid deterministic random bit generator 4555 using an AES-CTR bit stream and which seeds and reseeds itself 4556 automatically using trusted system entropy sources. 4557 4558 Some of its new features are: 4559 - Support for multiple DRBG instances with seed chaining. 4560 - The default RAND method makes use of a DRBG. 4561 - There is a public and private DRBG instance. 4562 - The DRBG instances are fork-safe. 4563 - Keep all global DRBG instances on the secure heap if it is enabled. 4564 - The public and private DRBG instance are per thread for lock free 4565 operation 4566 4567 *Paul Dale, Benjamin Kaduk, Kurt Roeckx, Rich Salz, Matthias St. Pierre* 4568 4569 * Changed Configure so it only says what it does and doesn't dump 4570 so much data. Instead, ./configdata.pm should be used as a script 4571 to display all sorts of configuration data. 4572 4573 *Richard Levitte* 4574 4575 * Added processing of "make variables" to Configure. 4576 4577 *Richard Levitte* 4578 4579 * Added SHA512/224 and SHA512/256 algorithm support. 4580 4581 *Paul Dale* 4582 4583 * The last traces of Netware support, first removed in 1.1.0, have 4584 now been removed. 4585 4586 *Rich Salz* 4587 4588 * Get rid of Makefile.shared, and in the process, make the processing 4589 of certain files (rc.obj, or the .def/.map/.opt files produced from 4590 the ordinal files) more visible and hopefully easier to trace and 4591 debug (or make silent). 4592 4593 *Richard Levitte* 4594 4595 * Make it possible to have environment variable assignments as 4596 arguments to config / Configure. 4597 4598 *Richard Levitte* 4599 4600 * Add multi-prime RSA (RFC 8017) support. 4601 4602 *Paul Yang* 4603 4604 * Add SM3 implemented according to GB/T 32905-2016 4605 *Jack Lloyd <jack.lloyd@ribose.com>,* 4606 *Ronald Tse <ronald.tse@ribose.com>,* 4607 *Erick Borsboom <erick.borsboom@ribose.com>* 4608 4609 * Add 'Maximum Fragment Length' TLS extension negotiation and support 4610 as documented in RFC6066. 4611 Based on a patch from Tomasz Moń 4612 4613 *Filipe Raimundo da Silva* 4614 4615 * Add SM4 implemented according to GB/T 32907-2016. 4616 *Jack Lloyd <jack.lloyd@ribose.com>,* 4617 *Ronald Tse <ronald.tse@ribose.com>,* 4618 *Erick Borsboom <erick.borsboom@ribose.com>* 4619 4620 * Reimplement -newreq-nodes and ERR_error_string_n; the 4621 original author does not agree with the license change. 4622 4623 *Rich Salz* 4624 4625 * Add ARIA AEAD TLS support. 4626 4627 *Jon Spillett* 4628 4629 * Some macro definitions to support VS6 have been removed. Visual 4630 Studio 6 has not worked since 1.1.0 4631 4632 *Rich Salz* 4633 4634 * Add ERR_clear_last_mark(), to allow callers to clear the last mark 4635 without clearing the errors. 4636 4637 *Richard Levitte* 4638 4639 * Add "atfork" functions. If building on a system that without 4640 pthreads, see doc/man3/OPENSSL_fork_prepare.pod for application 4641 requirements. The RAND facility now uses/requires this. 4642 4643 *Rich Salz* 4644 4645 * Add SHA3. 4646 4647 *Andy Polyakov* 4648 4649 * The UI API becomes a permanent and integral part of libcrypto, i.e. 4650 not possible to disable entirely. However, it's still possible to 4651 disable the console reading UI method, UI_OpenSSL() (use UI_null() 4652 as a fallback). 4653 4654 To disable, configure with 'no-ui-console'. 'no-ui' is still 4655 possible to use as an alias. Check at compile time with the 4656 macro OPENSSL_NO_UI_CONSOLE. The macro OPENSSL_NO_UI is still 4657 possible to check and is an alias for OPENSSL_NO_UI_CONSOLE. 4658 4659 *Richard Levitte* 4660 4661 * Add a STORE module, which implements a uniform and URI based reader of 4662 stores that can contain keys, certificates, CRLs and numerous other 4663 objects. The main API is loosely based on a few stdio functions, 4664 and includes OSSL_STORE_open, OSSL_STORE_load, OSSL_STORE_eof, 4665 OSSL_STORE_error and OSSL_STORE_close. 4666 The implementation uses backends called "loaders" to implement arbitrary 4667 URI schemes. There is one built in "loader" for the 'file' scheme. 4668 4669 *Richard Levitte* 4670 4671 * Add devcrypto engine. This has been implemented against cryptodev-linux, 4672 then adjusted to work on FreeBSD 8.4 as well. 4673 Enable by configuring with 'enable-devcryptoeng'. This is done by default 4674 on BSD implementations, as cryptodev.h is assumed to exist on all of them. 4675 4676 *Richard Levitte* 4677 4678 * Module names can prefixed with OSSL_ or OPENSSL_. This affects 4679 util/mkerr.pl, which is adapted to allow those prefixes, leading to 4680 error code calls like this: 4681 4682 OSSL_FOOerr(OSSL_FOO_F_SOMETHING, OSSL_FOO_R_WHATEVER); 4683 4684 With this change, we claim the namespaces OSSL and OPENSSL in a manner 4685 that can be encoded in C. For the foreseeable future, this will only 4686 affect new modules. 4687 4688 *Richard Levitte and Tim Hudson* 4689 4690 * Removed BSD cryptodev engine. 4691 4692 *Rich Salz* 4693 4694 * Add a build target 'build_all_generated', to build all generated files 4695 and only that. This can be used to prepare everything that requires 4696 things like perl for a system that lacks perl and then move everything 4697 to that system and do the rest of the build there. 4698 4699 *Richard Levitte* 4700 4701 * In the UI interface, make it possible to duplicate the user data. This 4702 can be used by engines that need to retain the data for a longer time 4703 than just the call where this user data is passed. 4704 4705 *Richard Levitte* 4706 4707 * Ignore the '-named_curve auto' value for compatibility of applications 4708 with OpenSSL 1.0.2. 4709 4710 *Tomáš Mráz <tmraz@fedoraproject.org>* 4711 4712 * Fragmented SSL/TLS alerts are no longer accepted. An alert message is 2 4713 bytes long. In theory it is permissible in SSLv3 - TLSv1.2 to fragment such 4714 alerts across multiple records (some of which could be empty). In practice 4715 it make no sense to send an empty alert record, or to fragment one. TLSv1.3 4716 prohibits this altogether and other libraries (BoringSSL, NSS) do not 4717 support this at all. Supporting it adds significant complexity to the 4718 record layer, and its removal is unlikely to cause interoperability 4719 issues. 4720 4721 *Matt Caswell* 4722 4723 * Add the ASN.1 types INT32, UINT32, INT64, UINT64 and variants prefixed 4724 with Z. These are meant to replace LONG and ZLONG and to be size safe. 4725 The use of LONG and ZLONG is discouraged and scheduled for deprecation 4726 in OpenSSL 1.2.0. 4727 4728 *Richard Levitte* 4729 4730 * Add the 'z' and 'j' modifiers to BIO_printf() et al formatting string, 4731 'z' is to be used for [s]size_t, and 'j' - with [u]int64_t. 4732 4733 *Richard Levitte, Andy Polyakov* 4734 4735 * Add EC_KEY_get0_engine(), which does for EC_KEY what RSA_get0_engine() 4736 does for RSA, etc. 4737 4738 *Richard Levitte* 4739 4740 * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target 4741 platform rather than 'mingw'. 4742 4743 *Richard Levitte* 4744 4745 * The functions X509_STORE_add_cert and X509_STORE_add_crl return 4746 success if they are asked to add an object which already exists 4747 in the store. This change cascades to other functions which load 4748 certificates and CRLs. 4749 4750 *Paul Dale* 4751 4752 * x86_64 assembly pack: annotate code with DWARF CFI directives to 4753 facilitate stack unwinding even from assembly subroutines. 4754 4755 *Andy Polyakov* 4756 4757 * Remove VAX C specific definitions of OPENSSL_EXPORT, OPENSSL_EXTERN. 4758 Also remove OPENSSL_GLOBAL entirely, as it became a no-op. 4759 4760 *Richard Levitte* 4761 4762 * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c. 4763 VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1, 4764 which is the minimum version we support. 4765 4766 *Richard Levitte* 4767 4768 * Certificate time validation (X509_cmp_time) enforces stricter 4769 compliance with RFC 5280. Fractional seconds and timezone offsets 4770 are no longer allowed. 4771 4772 *Emilia Käsper* 4773 4774 * Add support for ARIA 4775 4776 *Paul Dale* 4777 4778 * s_client will now send the Server Name Indication (SNI) extension by 4779 default unless the new "-noservername" option is used. The server name is 4780 based on the host provided to the "-connect" option unless overridden by 4781 using "-servername". 4782 4783 *Matt Caswell* 4784 4785 * Add support for SipHash 4786 4787 *Todd Short* 4788 4789 * OpenSSL now fails if it receives an unrecognised record type in TLS1.0 4790 or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to 4791 prevent issues where no progress is being made and the peer continually 4792 sends unrecognised record types, using up resources processing them. 4793 4794 *Matt Caswell* 4795 4796 * 'openssl passwd' can now produce SHA256 and SHA512 based output, 4797 using the algorithm defined in 4798 <https://www.akkadia.org/drepper/SHA-crypt.txt> 4799 4800 *Richard Levitte* 4801 4802 * Heartbeat support has been removed; the ABI is changed for now. 4803 4804 *Richard Levitte, Rich Salz* 4805 4806 * Support for SSL_OP_NO_ENCRYPT_THEN_MAC in SSL_CONF_cmd. 4807 4808 *Emilia Käsper* 4809 4810 * The RSA "null" method, which was partially supported to avoid patent 4811 issues, has been replaced to always returns NULL. 4812 4813 *Rich Salz* 4814 4815OpenSSL 1.1.0 4816------------- 4817 4818### Changes between 1.1.0k and 1.1.0l [10 Sep 2019] 4819 4820 * For built-in EC curves, ensure an EC_GROUP built from the curve name is 4821 used even when parsing explicit parameters, when loading a encoded key 4822 or calling `EC_GROUP_new_from_ecpkparameters()`/ 4823 `EC_GROUP_new_from_ecparameters()`. 4824 This prevents bypass of security hardening and performance gains, 4825 especially for curves with specialized EC_METHODs. 4826 By default, if a key encoded with explicit parameters is loaded and later 4827 encoded, the output is still encoded with explicit parameters, even if 4828 internally a "named" EC_GROUP is used for computation. 4829 4830 *Nicola Tuveri* 4831 4832 * Compute ECC cofactors if not provided during EC_GROUP construction. Before 4833 this change, EC_GROUP_set_generator would accept order and/or cofactor as 4834 NULL. After this change, only the cofactor parameter can be NULL. It also 4835 does some minimal sanity checks on the passed order. 4836 ([CVE-2019-1547]) 4837 4838 *Billy Bob Brumley* 4839 4840 * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey. 4841 An attack is simple, if the first CMS_recipientInfo is valid but the 4842 second CMS_recipientInfo is chosen ciphertext. If the second 4843 recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct 4844 encryption key will be replaced by garbage, and the message cannot be 4845 decoded, but if the RSA decryption fails, the correct encryption key is 4846 used and the recipient will not notice the attack. 4847 As a work around for this potential attack the length of the decrypted 4848 key must be equal to the cipher default key length, in case the 4849 certificate is not given and all recipientInfo are tried out. 4850 The old behaviour can be re-enabled in the CMS code by setting the 4851 CMS_DEBUG_DECRYPT flag. 4852 ([CVE-2019-1563]) 4853 4854 *Bernd Edlinger* 4855 4856 * Use Windows installation paths in the mingw builds 4857 4858 Mingw isn't a POSIX environment per se, which means that Windows 4859 paths should be used for installation. 4860 ([CVE-2019-1552]) 4861 4862 *Richard Levitte* 4863 4864### Changes between 1.1.0j and 1.1.0k [28 May 2019] 4865 4866 * Change the default RSA, DSA and DH size to 2048 bit instead of 1024. 4867 This changes the size when using the `genpkey` command when no size is given. 4868 It fixes an omission in earlier changes that changed all RSA, DSA and DH 4869 generation commands to use 2048 bits by default. 4870 4871 *Kurt Roeckx* 4872 4873 * Prevent over long nonces in ChaCha20-Poly1305. 4874 4875 ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input 4876 for every encryption operation. RFC 7539 specifies that the nonce value 4877 (IV) should be 96 bits (12 bytes). OpenSSL allows a variable nonce length 4878 and front pads the nonce with 0 bytes if it is less than 12 4879 bytes. However it also incorrectly allows a nonce to be set of up to 16 4880 bytes. In this case only the last 12 bytes are significant and any 4881 additional leading bytes are ignored. 4882 4883 It is a requirement of using this cipher that nonce values are 4884 unique. Messages encrypted using a reused nonce value are susceptible to 4885 serious confidentiality and integrity attacks. If an application changes 4886 the default nonce length to be longer than 12 bytes and then makes a 4887 change to the leading bytes of the nonce expecting the new value to be a 4888 new unique nonce then such an application could inadvertently encrypt 4889 messages with a reused nonce. 4890 4891 Additionally the ignored bytes in a long nonce are not covered by the 4892 integrity guarantee of this cipher. Any application that relies on the 4893 integrity of these ignored leading bytes of a long nonce may be further 4894 affected. Any OpenSSL internal use of this cipher, including in SSL/TLS, 4895 is safe because no such use sets such a long nonce value. However user 4896 applications that use this cipher directly and set a non-default nonce 4897 length to be longer than 12 bytes may be vulnerable. 4898 4899 This issue was reported to OpenSSL on 16th of March 2019 by Joran Dirk 4900 Greef of Ronomon. 4901 ([CVE-2019-1543]) 4902 4903 *Matt Caswell* 4904 4905 * Added SCA hardening for modular field inversion in EC_GROUP through 4906 a new dedicated field_inv() pointer in EC_METHOD. 4907 This also addresses a leakage affecting conversions from projective 4908 to affine coordinates. 4909 4910 *Billy Bob Brumley, Nicola Tuveri* 4911 4912 * Fix a use after free bug in d2i_X509_PUBKEY when overwriting a 4913 reused X509_PUBKEY object if the second PUBKEY is malformed. 4914 4915 *Bernd Edlinger* 4916 4917 * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). 4918 4919 *Richard Levitte* 4920 4921 * Remove the 'dist' target and add a tarball building script. The 4922 'dist' target has fallen out of use, and it shouldn't be 4923 necessary to configure just to create a source distribution. 4924 4925 *Richard Levitte* 4926 4927### Changes between 1.1.0i and 1.1.0j [20 Nov 2018] 4928 4929 * Timing vulnerability in DSA signature generation 4930 4931 The OpenSSL DSA signature algorithm has been shown to be vulnerable to a 4932 timing side channel attack. An attacker could use variations in the signing 4933 algorithm to recover the private key. 4934 4935 This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser. 4936 ([CVE-2018-0734]) 4937 4938 *Paul Dale* 4939 4940 * Timing vulnerability in ECDSA signature generation 4941 4942 The OpenSSL ECDSA signature algorithm has been shown to be vulnerable to a 4943 timing side channel attack. An attacker could use variations in the signing 4944 algorithm to recover the private key. 4945 4946 This issue was reported to OpenSSL on 25th October 2018 by Samuel Weiser. 4947 ([CVE-2018-0735]) 4948 4949 *Paul Dale* 4950 4951 * Add coordinate blinding for EC_POINT and implement projective 4952 coordinate blinding for generic prime curves as a countermeasure to 4953 chosen point SCA attacks. 4954 4955 *Sohaib ul Hassan, Nicola Tuveri, Billy Bob Brumley* 4956 4957### Changes between 1.1.0h and 1.1.0i [14 Aug 2018] 4958 4959 * Client DoS due to large DH parameter 4960 4961 During key agreement in a TLS handshake using a DH(E) based ciphersuite a 4962 malicious server can send a very large prime value to the client. This will 4963 cause the client to spend an unreasonably long period of time generating a 4964 key for this prime resulting in a hang until the client has finished. This 4965 could be exploited in a Denial Of Service attack. 4966 4967 This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken 4968 ([CVE-2018-0732]) 4969 4970 *Guido Vranken* 4971 4972 * Cache timing vulnerability in RSA Key Generation 4973 4974 The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to 4975 a cache timing side channel attack. An attacker with sufficient access to 4976 mount cache timing attacks during the RSA key generation process could 4977 recover the private key. 4978 4979 This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera 4980 Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia. 4981 ([CVE-2018-0737]) 4982 4983 *Billy Brumley* 4984 4985 * Make EVP_PKEY_asn1_new() a bit stricter about its input. A NULL pem_str 4986 parameter is no longer accepted, as it leads to a corrupt table. NULL 4987 pem_str is reserved for alias entries only. 4988 4989 *Richard Levitte* 4990 4991 * Revert blinding in ECDSA sign and instead make problematic addition 4992 length-invariant. Switch even to fixed-length Montgomery multiplication. 4993 4994 *Andy Polyakov* 4995 4996 * Change generating and checking of primes so that the error rate of not 4997 being prime depends on the intended use based on the size of the input. 4998 For larger primes this will result in more rounds of Miller-Rabin. 4999 The maximal error rate for primes with more than 1080 bits is lowered 5000 to 2^-128. 5001 5002 *Kurt Roeckx, Annie Yousar* 5003 5004 * Increase the number of Miller-Rabin rounds for DSA key generating to 64. 5005 5006 *Kurt Roeckx* 5007 5008 * Add blinding to ECDSA and DSA signatures to protect against side channel 5009 attacks discovered by Keegan Ryan (NCC Group). 5010 5011 *Matt Caswell* 5012 5013 * When unlocking a pass phrase protected PEM file or PKCS#8 container, we 5014 now allow empty (zero character) pass phrases. 5015 5016 *Richard Levitte* 5017 5018 * Certificate time validation (X509_cmp_time) enforces stricter 5019 compliance with RFC 5280. Fractional seconds and timezone offsets 5020 are no longer allowed. 5021 5022 *Emilia Käsper* 5023 5024 * Fixed a text canonicalisation bug in CMS 5025 5026 Where a CMS detached signature is used with text content the text goes 5027 through a canonicalisation process first prior to signing or verifying a 5028 signature. This process strips trailing space at the end of lines, converts 5029 line terminators to CRLF and removes additional trailing line terminators 5030 at the end of a file. A bug in the canonicalisation process meant that 5031 some characters, such as form-feed, were incorrectly treated as whitespace 5032 and removed. This is contrary to the specification (RFC5485). This fix 5033 could mean that detached text data signed with an earlier version of 5034 OpenSSL 1.1.0 may fail to verify using the fixed version, or text data 5035 signed with a fixed OpenSSL may fail to verify with an earlier version of 5036 OpenSSL 1.1.0. A workaround is to only verify the canonicalised text data 5037 and use the "-binary" flag (for the "cms" command line application) or set 5038 the SMIME_BINARY/PKCS7_BINARY/CMS_BINARY flags (if using CMS_verify()). 5039 5040 *Matt Caswell* 5041 5042### Changes between 1.1.0g and 1.1.0h [27 Mar 2018] 5043 5044 * Constructed ASN.1 types with a recursive definition could exceed the stack 5045 5046 Constructed ASN.1 types with a recursive definition (such as can be found 5047 in PKCS7) could eventually exceed the stack given malicious input with 5048 excessive recursion. This could result in a Denial Of Service attack. There 5049 are no such structures used within SSL/TLS that come from untrusted sources 5050 so this is considered safe. 5051 5052 This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz 5053 project. 5054 ([CVE-2018-0739]) 5055 5056 *Matt Caswell* 5057 5058 * Incorrect CRYPTO_memcmp on HP-UX PA-RISC 5059 5060 Because of an implementation bug the PA-RISC CRYPTO_memcmp function is 5061 effectively reduced to only comparing the least significant bit of each 5062 byte. This allows an attacker to forge messages that would be considered as 5063 authenticated in an amount of tries lower than that guaranteed by the 5064 security claims of the scheme. The module can only be compiled by the 5065 HP-UX assembler, so that only HP-UX PA-RISC targets are affected. 5066 5067 This issue was reported to OpenSSL on 2nd March 2018 by Peter Waltenberg 5068 (IBM). 5069 ([CVE-2018-0733]) 5070 5071 *Andy Polyakov* 5072 5073 * Add a build target 'build_all_generated', to build all generated files 5074 and only that. This can be used to prepare everything that requires 5075 things like perl for a system that lacks perl and then move everything 5076 to that system and do the rest of the build there. 5077 5078 *Richard Levitte* 5079 5080 * Backport SSL_OP_NO_RENGOTIATION 5081 5082 OpenSSL 1.0.2 and below had the ability to disable renegotiation using the 5083 (undocumented) SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS flag. Due to the opacity 5084 changes this is no longer possible in 1.1.0. Therefore, the new 5085 SSL_OP_NO_RENEGOTIATION option from 1.1.1-dev has been backported to 5086 1.1.0 to provide equivalent functionality. 5087 5088 Note that if an application built against 1.1.0h headers (or above) is run 5089 using an older version of 1.1.0 (prior to 1.1.0h) then the option will be 5090 accepted but nothing will happen, i.e. renegotiation will not be prevented. 5091 5092 *Matt Caswell* 5093 5094 * Removed the OS390-Unix config target. It relied on a script that doesn't 5095 exist. 5096 5097 *Rich Salz* 5098 5099 * rsaz_1024_mul_avx2 overflow bug on x86_64 5100 5101 There is an overflow bug in the AVX2 Montgomery multiplication procedure 5102 used in exponentiation with 1024-bit moduli. No EC algorithms are affected. 5103 Analysis suggests that attacks against RSA and DSA as a result of this 5104 defect would be very difficult to perform and are not believed likely. 5105 Attacks against DH1024 are considered just feasible, because most of the 5106 work necessary to deduce information about a private key may be performed 5107 offline. The amount of resources required for such an attack would be 5108 significant. However, for an attack on TLS to be meaningful, the server 5109 would have to share the DH1024 private key among multiple clients, which is 5110 no longer an option since CVE-2016-0701. 5111 5112 This only affects processors that support the AVX2 but not ADX extensions 5113 like Intel Haswell (4th generation). 5114 5115 This issue was reported to OpenSSL by David Benjamin (Google). The issue 5116 was originally found via the OSS-Fuzz project. 5117 ([CVE-2017-3738]) 5118 5119 *Andy Polyakov* 5120 5121### Changes between 1.1.0f and 1.1.0g [2 Nov 2017] 5122 5123 * bn_sqrx8x_internal carry bug on x86_64 5124 5125 There is a carry propagating bug in the x86_64 Montgomery squaring 5126 procedure. No EC algorithms are affected. Analysis suggests that attacks 5127 against RSA and DSA as a result of this defect would be very difficult to 5128 perform and are not believed likely. Attacks against DH are considered just 5129 feasible (although very difficult) because most of the work necessary to 5130 deduce information about a private key may be performed offline. The amount 5131 of resources required for such an attack would be very significant and 5132 likely only accessible to a limited number of attackers. An attacker would 5133 additionally need online access to an unpatched system using the target 5134 private key in a scenario with persistent DH parameters and a private 5135 key that is shared between multiple clients. 5136 5137 This only affects processors that support the BMI1, BMI2 and ADX extensions 5138 like Intel Broadwell (5th generation) and later or AMD Ryzen. 5139 5140 This issue was reported to OpenSSL by the OSS-Fuzz project. 5141 ([CVE-2017-3736]) 5142 5143 *Andy Polyakov* 5144 5145 * Malformed X.509 IPAddressFamily could cause OOB read 5146 5147 If an X.509 certificate has a malformed IPAddressFamily extension, 5148 OpenSSL could do a one-byte buffer overread. The most likely result 5149 would be an erroneous display of the certificate in text format. 5150 5151 This issue was reported to OpenSSL by the OSS-Fuzz project. 5152 ([CVE-2017-3735]) 5153 5154 *Rich Salz* 5155 5156### Changes between 1.1.0e and 1.1.0f [25 May 2017] 5157 5158 * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target 5159 platform rather than 'mingw'. 5160 5161 *Richard Levitte* 5162 5163 * Remove the VMS-specific reimplementation of gmtime from crypto/o_times.c. 5164 VMS C's RTL has a fully up to date gmtime() and gmtime_r() since V7.1, 5165 which is the minimum version we support. 5166 5167 *Richard Levitte* 5168 5169### Changes between 1.1.0d and 1.1.0e [16 Feb 2017] 5170 5171 * Encrypt-Then-Mac renegotiation crash 5172 5173 During a renegotiation handshake if the Encrypt-Then-Mac extension is 5174 negotiated where it was not in the original handshake (or vice-versa) then 5175 this can cause OpenSSL to crash (dependent on ciphersuite). Both clients 5176 and servers are affected. 5177 5178 This issue was reported to OpenSSL by Joe Orton (Red Hat). 5179 ([CVE-2017-3733]) 5180 5181 *Matt Caswell* 5182 5183### Changes between 1.1.0c and 1.1.0d [26 Jan 2017] 5184 5185 * Truncated packet could crash via OOB read 5186 5187 If one side of an SSL/TLS path is running on a 32-bit host and a specific 5188 cipher is being used, then a truncated packet can cause that host to 5189 perform an out-of-bounds read, usually resulting in a crash. 5190 5191 This issue was reported to OpenSSL by Robert Święcki of Google. 5192 ([CVE-2017-3731]) 5193 5194 *Andy Polyakov* 5195 5196 * Bad (EC)DHE parameters cause a client crash 5197 5198 If a malicious server supplies bad parameters for a DHE or ECDHE key 5199 exchange then this can result in the client attempting to dereference a 5200 NULL pointer leading to a client crash. This could be exploited in a Denial 5201 of Service attack. 5202 5203 This issue was reported to OpenSSL by Guido Vranken. 5204 ([CVE-2017-3730]) 5205 5206 *Matt Caswell* 5207 5208 * BN_mod_exp may produce incorrect results on x86_64 5209 5210 There is a carry propagating bug in the x86_64 Montgomery squaring 5211 procedure. No EC algorithms are affected. Analysis suggests that attacks 5212 against RSA and DSA as a result of this defect would be very difficult to 5213 perform and are not believed likely. Attacks against DH are considered just 5214 feasible (although very difficult) because most of the work necessary to 5215 deduce information about a private key may be performed offline. The amount 5216 of resources required for such an attack would be very significant and 5217 likely only accessible to a limited number of attackers. An attacker would 5218 additionally need online access to an unpatched system using the target 5219 private key in a scenario with persistent DH parameters and a private 5220 key that is shared between multiple clients. For example this can occur by 5221 default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very 5222 similar to CVE-2015-3193 but must be treated as a separate problem. 5223 5224 This issue was reported to OpenSSL by the OSS-Fuzz project. 5225 ([CVE-2017-3732]) 5226 5227 *Andy Polyakov* 5228 5229### Changes between 1.1.0b and 1.1.0c [10 Nov 2016] 5230 5231 * ChaCha20/Poly1305 heap-buffer-overflow 5232 5233 TLS connections using `*-CHACHA20-POLY1305` ciphersuites are susceptible to 5234 a DoS attack by corrupting larger payloads. This can result in an OpenSSL 5235 crash. This issue is not considered to be exploitable beyond a DoS. 5236 5237 This issue was reported to OpenSSL by Robert Święcki (Google Security Team) 5238 ([CVE-2016-7054]) 5239 5240 *Richard Levitte* 5241 5242 * CMS Null dereference 5243 5244 Applications parsing invalid CMS structures can crash with a NULL pointer 5245 dereference. This is caused by a bug in the handling of the ASN.1 CHOICE 5246 type in OpenSSL 1.1.0 which can result in a NULL value being passed to the 5247 structure callback if an attempt is made to free certain invalid encodings. 5248 Only CHOICE structures using a callback which do not handle NULL value are 5249 affected. 5250 5251 This issue was reported to OpenSSL by Tyler Nighswander of ForAllSecure. 5252 ([CVE-2016-7053]) 5253 5254 *Stephen Henson* 5255 5256 * Montgomery multiplication may produce incorrect results 5257 5258 There is a carry propagating bug in the Broadwell-specific Montgomery 5259 multiplication procedure that handles input lengths divisible by, but 5260 longer than 256 bits. Analysis suggests that attacks against RSA, DSA 5261 and DH private keys are impossible. This is because the subroutine in 5262 question is not used in operations with the private key itself and an input 5263 of the attacker's direct choice. Otherwise the bug can manifest itself as 5264 transient authentication and key negotiation failures or reproducible 5265 erroneous outcome of public-key operations with specially crafted input. 5266 Among EC algorithms only Brainpool P-512 curves are affected and one 5267 presumably can attack ECDH key negotiation. Impact was not analyzed in 5268 detail, because pre-requisites for attack are considered unlikely. Namely 5269 multiple clients have to choose the curve in question and the server has to 5270 share the private key among them, neither of which is default behaviour. 5271 Even then only clients that chose the curve will be affected. 5272 5273 This issue was publicly reported as transient failures and was not 5274 initially recognized as a security issue. Thanks to Richard Morgan for 5275 providing reproducible case. 5276 ([CVE-2016-7055]) 5277 5278 *Andy Polyakov* 5279 5280 * Removed automatic addition of RPATH in shared libraries and executables, 5281 as this was a remainder from OpenSSL 1.0.x and isn't needed any more. 5282 5283 *Richard Levitte* 5284 5285### Changes between 1.1.0a and 1.1.0b [26 Sep 2016] 5286 5287 * Fix Use After Free for large message sizes 5288 5289 The patch applied to address CVE-2016-6307 resulted in an issue where if a 5290 message larger than approx 16k is received then the underlying buffer to 5291 store the incoming message is reallocated and moved. Unfortunately a 5292 dangling pointer to the old location is left which results in an attempt to 5293 write to the previously freed location. This is likely to result in a 5294 crash, however it could potentially lead to execution of arbitrary code. 5295 5296 This issue only affects OpenSSL 1.1.0a. 5297 5298 This issue was reported to OpenSSL by Robert Święcki. 5299 ([CVE-2016-6309]) 5300 5301 *Matt Caswell* 5302 5303### Changes between 1.1.0 and 1.1.0a [22 Sep 2016] 5304 5305 * OCSP Status Request extension unbounded memory growth 5306 5307 A malicious client can send an excessively large OCSP Status Request 5308 extension. If that client continually requests renegotiation, sending a 5309 large OCSP Status Request extension each time, then there will be unbounded 5310 memory growth on the server. This will eventually lead to a Denial Of 5311 Service attack through memory exhaustion. Servers with a default 5312 configuration are vulnerable even if they do not support OCSP. Builds using 5313 the "no-ocsp" build time option are not affected. 5314 5315 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 5316 ([CVE-2016-6304]) 5317 5318 *Matt Caswell* 5319 5320 * SSL_peek() hang on empty record 5321 5322 OpenSSL 1.1.0 SSL/TLS will hang during a call to SSL_peek() if the peer 5323 sends an empty record. This could be exploited by a malicious peer in a 5324 Denial Of Service attack. 5325 5326 This issue was reported to OpenSSL by Alex Gaynor. 5327 ([CVE-2016-6305]) 5328 5329 *Matt Caswell* 5330 5331 * Excessive allocation of memory in tls_get_message_header() and 5332 dtls1_preprocess_fragment() 5333 5334 A (D)TLS message includes 3 bytes for its length in the header for the 5335 message. This would allow for messages up to 16Mb in length. Messages of 5336 this length are excessive and OpenSSL includes a check to ensure that a 5337 peer is sending reasonably sized messages in order to avoid too much memory 5338 being consumed to service a connection. A flaw in the logic of version 5339 1.1.0 means that memory for the message is allocated too early, prior to 5340 the excessive message length check. Due to way memory is allocated in 5341 OpenSSL this could mean an attacker could force up to 21Mb to be allocated 5342 to service a connection. This could lead to a Denial of Service through 5343 memory exhaustion. However, the excessive message length check still takes 5344 place, and this would cause the connection to immediately fail. Assuming 5345 that the application calls SSL_free() on the failed connection in a timely 5346 manner then the 21Mb of allocated memory will then be immediately freed 5347 again. Therefore, the excessive memory allocation will be transitory in 5348 nature. This then means that there is only a security impact if: 5349 5350 1) The application does not call SSL_free() in a timely manner in the event 5351 that the connection fails 5352 or 5353 2) The application is working in a constrained environment where there is 5354 very little free memory 5355 or 5356 3) The attacker initiates multiple connection attempts such that there are 5357 multiple connections in a state where memory has been allocated for the 5358 connection; SSL_free() has not yet been called; and there is insufficient 5359 memory to service the multiple requests. 5360 5361 Except in the instance of (1) above any Denial Of Service is likely to be 5362 transitory because as soon as the connection fails the memory is 5363 subsequently freed again in the SSL_free() call. However there is an 5364 increased risk during this period of application crashes due to the lack of 5365 memory - which would then mean a more serious Denial of Service. 5366 5367 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 5368 (CVE-2016-6307 and CVE-2016-6308) 5369 5370 *Matt Caswell* 5371 5372 * solaris-x86-cc, i.e. 32-bit configuration with vendor compiler, 5373 had to be removed. Primary reason is that vendor assembler can't 5374 assemble our modules with -KPIC flag. As result it, assembly 5375 support, was not even available as option. But its lack means 5376 lack of side-channel resistant code, which is incompatible with 5377 security by todays standards. Fortunately gcc is readily available 5378 prepackaged option, which we firmly point at... 5379 5380 *Andy Polyakov* 5381 5382### Changes between 1.0.2h and 1.1.0 [25 Aug 2016] 5383 5384 * Windows command-line tool supports UTF-8 opt-in option for arguments 5385 and console input. Setting OPENSSL_WIN32_UTF8 environment variable 5386 (to any value) allows Windows user to access PKCS#12 file generated 5387 with Windows CryptoAPI and protected with non-ASCII password, as well 5388 as files generated under UTF-8 locale on Linux also protected with 5389 non-ASCII password. 5390 5391 *Andy Polyakov* 5392 5393 * To mitigate the SWEET32 attack ([CVE-2016-2183]), 3DES cipher suites 5394 have been disabled by default and removed from DEFAULT, just like RC4. 5395 See the RC4 item below to re-enable both. 5396 5397 *Rich Salz* 5398 5399 * The method for finding the storage location for the Windows RAND seed file 5400 has changed. First we check %RANDFILE%. If that is not set then we check 5401 the directories %HOME%, %USERPROFILE% and %SYSTEMROOT% in that order. If 5402 all else fails we fall back to C:\. 5403 5404 *Matt Caswell* 5405 5406 * The EVP_EncryptUpdate() function has had its return type changed from void 5407 to int. A return of 0 indicates and error while a return of 1 indicates 5408 success. 5409 5410 *Matt Caswell* 5411 5412 * The flags RSA_FLAG_NO_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME and 5413 DH_FLAG_NO_EXP_CONSTTIME which previously provided the ability to switch 5414 off the constant time implementation for RSA, DSA and DH have been made 5415 no-ops and deprecated. 5416 5417 *Matt Caswell* 5418 5419 * Windows RAND implementation was simplified to only get entropy by 5420 calling CryptGenRandom(). Various other RAND-related tickets 5421 were also closed. 5422 5423 *Joseph Wylie Yandle, Rich Salz* 5424 5425 * The stack and lhash API's were renamed to start with `OPENSSL_SK_` 5426 and `OPENSSL_LH_`, respectively. The old names are available 5427 with API compatibility. They new names are now completely documented. 5428 5429 *Rich Salz* 5430 5431 * Unify TYPE_up_ref(obj) methods signature. 5432 SSL_CTX_up_ref(), SSL_up_ref(), X509_up_ref(), EVP_PKEY_up_ref(), 5433 X509_CRL_up_ref(), X509_OBJECT_up_ref_count() methods are now returning an 5434 int (instead of void) like all others TYPE_up_ref() methods. 5435 So now these methods also check the return value of CRYPTO_atomic_add(), 5436 and the validity of object reference counter. 5437 5438 *fdasilvayy@gmail.com* 5439 5440 * With Windows Visual Studio builds, the .pdb files are installed 5441 alongside the installed libraries and executables. For a static 5442 library installation, ossl_static.pdb is the associate compiler 5443 generated .pdb file to be used when linking programs. 5444 5445 *Richard Levitte* 5446 5447 * Remove openssl.spec. Packaging files belong with the packagers. 5448 5449 *Richard Levitte* 5450 5451 * Automatic Darwin/OSX configuration has had a refresh, it will now 5452 recognise x86_64 architectures automatically. You can still decide 5453 to build for a different bitness with the environment variable 5454 KERNEL_BITS (can be 32 or 64), for example: 5455 5456 KERNEL_BITS=32 ./config 5457 5458 *Richard Levitte* 5459 5460 * Change default algorithms in pkcs8 utility to use PKCS#5 v2.0, 5461 256 bit AES and HMAC with SHA256. 5462 5463 *Steve Henson* 5464 5465 * Remove support for MIPS o32 ABI on IRIX (and IRIX only). 5466 5467 *Andy Polyakov* 5468 5469 * Triple-DES ciphers have been moved from HIGH to MEDIUM. 5470 5471 *Rich Salz* 5472 5473 * To enable users to have their own config files and build file templates, 5474 Configure looks in the directory indicated by the environment variable 5475 OPENSSL_LOCAL_CONFIG_DIR as well as the in-source Configurations/ 5476 directory. On VMS, OPENSSL_LOCAL_CONFIG_DIR is expected to be a logical 5477 name and is used as is. 5478 5479 *Richard Levitte* 5480 5481 * The following datatypes were made opaque: X509_OBJECT, X509_STORE_CTX, 5482 X509_STORE, X509_LOOKUP, and X509_LOOKUP_METHOD. The unused type 5483 X509_CERT_FILE_CTX was removed. 5484 5485 *Rich Salz* 5486 5487 * "shared" builds are now the default. To create only static libraries use 5488 the "no-shared" Configure option. 5489 5490 *Matt Caswell* 5491 5492 * Remove the no-aes, no-hmac, no-rsa, no-sha and no-md5 Configure options. 5493 All of these option have not worked for some while and are fundamental 5494 algorithms. 5495 5496 *Matt Caswell* 5497 5498 * Make various cleanup routines no-ops and mark them as deprecated. Most 5499 global cleanup functions are no longer required because they are handled 5500 via auto-deinit (see OPENSSL_init_crypto and OPENSSL_init_ssl man pages). 5501 Explicitly de-initing can cause problems (e.g. where a library that uses 5502 OpenSSL de-inits, but an application is still using it). The affected 5503 functions are CONF_modules_free(), ENGINE_cleanup(), OBJ_cleanup(), 5504 EVP_cleanup(), BIO_sock_cleanup(), CRYPTO_cleanup_all_ex_data(), 5505 RAND_cleanup(), SSL_COMP_free_compression_methods(), ERR_free_strings() and 5506 COMP_zlib_cleanup(). 5507 5508 *Matt Caswell* 5509 5510 * --strict-warnings no longer enables runtime debugging options 5511 such as REF_DEBUG. Instead, debug options are automatically 5512 enabled with '--debug' builds. 5513 5514 *Andy Polyakov, Emilia Käsper* 5515 5516 * Made DH and DH_METHOD opaque. The structures for managing DH objects 5517 have been moved out of the public header files. New functions for managing 5518 these have been added. 5519 5520 *Matt Caswell* 5521 5522 * Made RSA and RSA_METHOD opaque. The structures for managing RSA 5523 objects have been moved out of the public header files. New 5524 functions for managing these have been added. 5525 5526 *Richard Levitte* 5527 5528 * Made DSA and DSA_METHOD opaque. The structures for managing DSA objects 5529 have been moved out of the public header files. New functions for managing 5530 these have been added. 5531 5532 *Matt Caswell* 5533 5534 * Made BIO and BIO_METHOD opaque. The structures for managing BIOs have been 5535 moved out of the public header files. New functions for managing these 5536 have been added. 5537 5538 *Matt Caswell* 5539 5540 * Removed no-rijndael as a config option. Rijndael is an old name for AES. 5541 5542 *Matt Caswell* 5543 5544 * Removed the mk1mf build scripts. 5545 5546 *Richard Levitte* 5547 5548 * Headers are now wrapped, if necessary, with OPENSSL_NO_xxx, so 5549 it is always safe to #include a header now. 5550 5551 *Rich Salz* 5552 5553 * Removed the aged BC-32 config and all its supporting scripts 5554 5555 *Richard Levitte* 5556 5557 * Removed support for Ultrix, Netware, and OS/2. 5558 5559 *Rich Salz* 5560 5561 * Add support for HKDF. 5562 5563 *Alessandro Ghedini* 5564 5565 * Add support for blake2b and blake2s 5566 5567 *Bill Cox* 5568 5569 * Added support for "pipelining". Ciphers that have the 5570 EVP_CIPH_FLAG_PIPELINE flag set have a capability to process multiple 5571 encryptions/decryptions simultaneously. There are currently no built-in 5572 ciphers with this property but the expectation is that engines will be able 5573 to offer it to significantly improve throughput. Support has been extended 5574 into libssl so that multiple records for a single connection can be 5575 processed in one go (for >=TLS 1.1). 5576 5577 *Matt Caswell* 5578 5579 * Added the AFALG engine. This is an async capable engine which is able to 5580 offload work to the Linux kernel. In this initial version it only supports 5581 AES128-CBC. The kernel must be version 4.1.0 or greater. 5582 5583 *Catriona Lucey* 5584 5585 * OpenSSL now uses a new threading API. It is no longer necessary to 5586 set locking callbacks to use OpenSSL in a multi-threaded environment. There 5587 are two supported threading models: pthreads and windows threads. It is 5588 also possible to configure OpenSSL at compile time for "no-threads". The 5589 old threading API should no longer be used. The functions have been 5590 replaced with "no-op" compatibility macros. 5591 5592 *Alessandro Ghedini, Matt Caswell* 5593 5594 * Modify behavior of ALPN to invoke callback after SNI/servername 5595 callback, such that updates to the SSL_CTX affect ALPN. 5596 5597 *Todd Short* 5598 5599 * Add SSL_CIPHER queries for authentication and key-exchange. 5600 5601 *Todd Short* 5602 5603 * Changes to the DEFAULT cipherlist: 5604 - Prefer (EC)DHE handshakes over plain RSA. 5605 - Prefer AEAD ciphers over legacy ciphers. 5606 - Prefer ECDSA over RSA when both certificates are available. 5607 - Prefer TLSv1.2 ciphers/PRF. 5608 - Remove DSS, SEED, IDEA, CAMELLIA, and AES-CCM from the 5609 default cipherlist. 5610 5611 *Emilia Käsper* 5612 5613 * Change the ECC default curve list to be this, in order: x25519, 5614 secp256r1, secp521r1, secp384r1. 5615 5616 *Rich Salz* 5617 5618 * RC4 based libssl ciphersuites are now classed as "weak" ciphers and are 5619 disabled by default. They can be re-enabled using the 5620 enable-weak-ssl-ciphers option to Configure. 5621 5622 *Matt Caswell* 5623 5624 * If the server has ALPN configured, but supports no protocols that the 5625 client advertises, send a fatal "no_application_protocol" alert. 5626 This behaviour is SHALL in RFC 7301, though it isn't universally 5627 implemented by other servers. 5628 5629 *Emilia Käsper* 5630 5631 * Add X25519 support. 5632 Add ASN.1 and EVP_PKEY methods for X25519. This includes support 5633 for public and private key encoding using the format documented in 5634 draft-ietf-curdle-pkix-02. The corresponding EVP_PKEY method supports 5635 key generation and key derivation. 5636 5637 TLS support complies with draft-ietf-tls-rfc4492bis-08 and uses 5638 X25519(29). 5639 5640 *Steve Henson* 5641 5642 * Deprecate SRP_VBASE_get_by_user. 5643 SRP_VBASE_get_by_user had inconsistent memory management behaviour. 5644 In order to fix an unavoidable memory leak ([CVE-2016-0798]), 5645 SRP_VBASE_get_by_user was changed to ignore the "fake user" SRP 5646 seed, even if the seed is configured. 5647 5648 Users should use SRP_VBASE_get1_by_user instead. Note that in 5649 SRP_VBASE_get1_by_user, caller must free the returned value. Note 5650 also that even though configuring the SRP seed attempts to hide 5651 invalid usernames by continuing the handshake with fake 5652 credentials, this behaviour is not constant time and no strong 5653 guarantees are made that the handshake is indistinguishable from 5654 that of a valid user. 5655 5656 *Emilia Käsper* 5657 5658 * Configuration change; it's now possible to build dynamic engines 5659 without having to build shared libraries and vice versa. This 5660 only applies to the engines in `engines/`, those in `crypto/engine/` 5661 will always be built into libcrypto (i.e. "static"). 5662 5663 Building dynamic engines is enabled by default; to disable, use 5664 the configuration option "disable-dynamic-engine". 5665 5666 The only requirements for building dynamic engines are the 5667 presence of the DSO module and building with position independent 5668 code, so they will also automatically be disabled if configuring 5669 with "disable-dso" or "disable-pic". 5670 5671 The macros OPENSSL_NO_STATIC_ENGINE and OPENSSL_NO_DYNAMIC_ENGINE 5672 are also taken away from openssl/opensslconf.h, as they are 5673 irrelevant. 5674 5675 *Richard Levitte* 5676 5677 * Configuration change; if there is a known flag to compile 5678 position independent code, it will always be applied on the 5679 libcrypto and libssl object files, and never on the application 5680 object files. This means other libraries that use routines from 5681 libcrypto / libssl can be made into shared libraries regardless 5682 of how OpenSSL was configured. 5683 5684 If this isn't desirable, the configuration options "disable-pic" 5685 or "no-pic" can be used to disable the use of PIC. This will 5686 also disable building shared libraries and dynamic engines. 5687 5688 *Richard Levitte* 5689 5690 * Removed JPAKE code. It was experimental and has no wide use. 5691 5692 *Rich Salz* 5693 5694 * The INSTALL_PREFIX Makefile variable has been renamed to 5695 DESTDIR. That makes for less confusion on what this variable 5696 is for. Also, the configuration option --install_prefix is 5697 removed. 5698 5699 *Richard Levitte* 5700 5701 * Heartbeat for TLS has been removed and is disabled by default 5702 for DTLS; configure with enable-heartbeats. Code that uses the 5703 old #define's might need to be updated. 5704 5705 *Emilia Käsper, Rich Salz* 5706 5707 * Rename REF_CHECK to REF_DEBUG. 5708 5709 *Rich Salz* 5710 5711 * New "unified" build system 5712 5713 The "unified" build system is aimed to be a common system for all 5714 platforms we support. With it comes new support for VMS. 5715 5716 This system builds supports building in a different directory tree 5717 than the source tree. It produces one Makefile (for unix family 5718 or lookalikes), or one descrip.mms (for VMS). 5719 5720 The source of information to make the Makefile / descrip.mms is 5721 small files called 'build.info', holding the necessary 5722 information for each directory with source to compile, and a 5723 template in Configurations, like unix-Makefile.tmpl or 5724 descrip.mms.tmpl. 5725 5726 With this change, the library names were also renamed on Windows 5727 and on VMS. They now have names that are closer to the standard 5728 on Unix, and include the major version number, and in certain 5729 cases, the architecture they are built for. See "Notes on shared 5730 libraries" in INSTALL. 5731 5732 We rely heavily on the perl module Text::Template. 5733 5734 *Richard Levitte* 5735 5736 * Added support for auto-initialisation and de-initialisation of the library. 5737 OpenSSL no longer requires explicit init or deinit routines to be called, 5738 except in certain circumstances. See the OPENSSL_init_crypto() and 5739 OPENSSL_init_ssl() man pages for further information. 5740 5741 *Matt Caswell* 5742 5743 * The arguments to the DTLSv1_listen function have changed. Specifically the 5744 "peer" argument is now expected to be a BIO_ADDR object. 5745 5746 * Rewrite of BIO networking library. The BIO library lacked consistent 5747 support of IPv6, and adding it required some more extensive 5748 modifications. This introduces the BIO_ADDR and BIO_ADDRINFO types, 5749 which hold all types of addresses and chains of address information. 5750 It also introduces a new API, with functions like BIO_socket, 5751 BIO_connect, BIO_listen, BIO_lookup and a rewrite of BIO_accept. 5752 The source/sink BIOs BIO_s_connect, BIO_s_accept and BIO_s_datagram 5753 have been adapted accordingly. 5754 5755 *Richard Levitte* 5756 5757 * RSA_padding_check_PKCS1_type_1 now accepts inputs with and without 5758 the leading 0-byte. 5759 5760 *Emilia Käsper* 5761 5762 * CRIME protection: disable compression by default, even if OpenSSL is 5763 compiled with zlib enabled. Applications can still enable compression 5764 by calling SSL_CTX_clear_options(ctx, SSL_OP_NO_COMPRESSION), or by 5765 using the SSL_CONF library to configure compression. 5766 5767 *Emilia Käsper* 5768 5769 * The signature of the session callback configured with 5770 SSL_CTX_sess_set_get_cb was changed. The read-only input buffer 5771 was explicitly marked as `const unsigned char*` instead of 5772 `unsigned char*`. 5773 5774 *Emilia Käsper* 5775 5776 * Always DPURIFY. Remove the use of uninitialized memory in the 5777 RNG, and other conditional uses of DPURIFY. This makes -DPURIFY a no-op. 5778 5779 *Emilia Käsper* 5780 5781 * Removed many obsolete configuration items, including 5782 DES_PTR, DES_RISC1, DES_RISC2, DES_INT 5783 MD2_CHAR, MD2_INT, MD2_LONG 5784 BF_PTR, BF_PTR2 5785 IDEA_SHORT, IDEA_LONG 5786 RC2_SHORT, RC2_LONG, RC4_LONG, RC4_CHUNK, RC4_INDEX 5787 5788 *Rich Salz, with advice from Andy Polyakov* 5789 5790 * Many BN internals have been moved to an internal header file. 5791 5792 *Rich Salz with help from Andy Polyakov* 5793 5794 * Configuration and writing out the results from it has changed. 5795 Files such as Makefile include/openssl/opensslconf.h and are now 5796 produced through general templates, such as Makefile.in and 5797 crypto/opensslconf.h.in and some help from the perl module 5798 Text::Template. 5799 5800 Also, the center of configuration information is no longer 5801 Makefile. Instead, Configure produces a perl module in 5802 configdata.pm which holds most of the config data (in the hash 5803 table %config), the target data that comes from the target 5804 configuration in one of the `Configurations/*.conf` files (in 5805 %target). 5806 5807 *Richard Levitte* 5808 5809 * To clarify their intended purposes, the Configure options 5810 --prefix and --openssldir change their semantics, and become more 5811 straightforward and less interdependent. 5812 5813 --prefix shall be used exclusively to give the location INSTALLTOP 5814 where programs, scripts, libraries, include files and manuals are 5815 going to be installed. The default is now /usr/local. 5816 5817 --openssldir shall be used exclusively to give the default 5818 location OPENSSLDIR where certificates, private keys, CRLs are 5819 managed. This is also where the default openssl.cnf gets 5820 installed. 5821 If the directory given with this option is a relative path, the 5822 values of both the --prefix value and the --openssldir value will 5823 be combined to become OPENSSLDIR. 5824 The default for --openssldir is INSTALLTOP/ssl. 5825 5826 Anyone who uses --openssldir to specify where OpenSSL is to be 5827 installed MUST change to use --prefix instead. 5828 5829 *Richard Levitte* 5830 5831 * The GOST engine was out of date and therefore it has been removed. An up 5832 to date GOST engine is now being maintained in an external repository. 5833 See: <https://github.com/openssl/openssl/wiki/Binaries>. Libssl still retains 5834 support for GOST ciphersuites (these are only activated if a GOST engine 5835 is present). 5836 5837 *Matt Caswell* 5838 5839 * EGD is no longer supported by default; use enable-egd when 5840 configuring. 5841 5842 *Ben Kaduk and Rich Salz* 5843 5844 * The distribution now has Makefile.in files, which are used to 5845 create Makefile's when Configure is run. *Configure must be run 5846 before trying to build now.* 5847 5848 *Rich Salz* 5849 5850 * The return value for SSL_CIPHER_description() for error conditions 5851 has changed. 5852 5853 *Rich Salz* 5854 5855 * Support for RFC6698/RFC7671 DANE TLSA peer authentication. 5856 5857 Obtaining and performing DNSSEC validation of TLSA records is 5858 the application's responsibility. The application provides 5859 the TLSA records of its choice to OpenSSL, and these are then 5860 used to authenticate the peer. 5861 5862 The TLSA records need not even come from DNS. They can, for 5863 example, be used to implement local end-entity certificate or 5864 trust-anchor "pinning", where the "pin" data takes the form 5865 of TLSA records, which can augment or replace verification 5866 based on the usual WebPKI public certification authorities. 5867 5868 *Viktor Dukhovni* 5869 5870 * Revert default OPENSSL_NO_DEPRECATED setting. Instead OpenSSL 5871 continues to support deprecated interfaces in default builds. 5872 However, applications are strongly advised to compile their 5873 source files with -DOPENSSL_API_COMPAT=0x10100000L, which hides 5874 the declarations of all interfaces deprecated in 0.9.8, 1.0.0 5875 or the 1.1.0 releases. 5876 5877 In environments in which all applications have been ported to 5878 not use any deprecated interfaces OpenSSL's Configure script 5879 should be used with the --api=1.1.0 option to entirely remove 5880 support for the deprecated features from the library and 5881 unconditionally disable them in the installed headers. 5882 Essentially the same effect can be achieved with the "no-deprecated" 5883 argument to Configure, except that this will always restrict 5884 the build to just the latest API, rather than a fixed API 5885 version. 5886 5887 As applications are ported to future revisions of the API, 5888 they should update their compile-time OPENSSL_API_COMPAT define 5889 accordingly, but in most cases should be able to continue to 5890 compile with later releases. 5891 5892 The OPENSSL_API_COMPAT versions for 1.0.0, and 0.9.8 are 5893 0x10000000L and 0x00908000L, respectively. However those 5894 versions did not support the OPENSSL_API_COMPAT feature, and 5895 so applications are not typically tested for explicit support 5896 of just the undeprecated features of either release. 5897 5898 *Viktor Dukhovni* 5899 5900 * Add support for setting the minimum and maximum supported protocol. 5901 It can bet set via the SSL_set_min_proto_version() and 5902 SSL_set_max_proto_version(), or via the SSL_CONF's MinProtocol and 5903 MaxProtocol. It's recommended to use the new APIs to disable 5904 protocols instead of disabling individual protocols using 5905 SSL_set_options() or SSL_CONF's Protocol. This change also 5906 removes support for disabling TLS 1.2 in the OpenSSL TLS 5907 client at compile time by defining OPENSSL_NO_TLS1_2_CLIENT. 5908 5909 *Kurt Roeckx* 5910 5911 * Support for ChaCha20 and Poly1305 added to libcrypto and libssl. 5912 5913 *Andy Polyakov* 5914 5915 * New EC_KEY_METHOD, this replaces the older ECDSA_METHOD and ECDH_METHOD 5916 and integrates ECDSA and ECDH functionality into EC. Implementations can 5917 now redirect key generation and no longer need to convert to or from 5918 ECDSA_SIG format. 5919 5920 Note: the ecdsa.h and ecdh.h headers are now no longer needed and just 5921 include the ec.h header file instead. 5922 5923 *Steve Henson* 5924 5925 * Remove support for all 40 and 56 bit ciphers. This includes all the export 5926 ciphers who are no longer supported and drops support the ephemeral RSA key 5927 exchange. The LOW ciphers currently doesn't have any ciphers in it. 5928 5929 *Kurt Roeckx* 5930 5931 * Made EVP_MD_CTX, EVP_MD, EVP_CIPHER_CTX, EVP_CIPHER and HMAC_CTX 5932 opaque. For HMAC_CTX, the following constructors and destructors 5933 were added: 5934 5935 HMAC_CTX *HMAC_CTX_new(void); 5936 void HMAC_CTX_free(HMAC_CTX *ctx); 5937 5938 For EVP_MD and EVP_CIPHER, complete APIs to create, fill and 5939 destroy such methods has been added. See EVP_MD_meth_new(3) and 5940 EVP_CIPHER_meth_new(3) for documentation. 5941 5942 Additional changes: 5943 1) `EVP_MD_CTX_cleanup()`, `EVP_CIPHER_CTX_cleanup()` and 5944 `HMAC_CTX_cleanup()` were removed. `HMAC_CTX_reset()` and 5945 `EVP_MD_CTX_reset()` should be called instead to reinitialise 5946 an already created structure. 5947 2) For consistency with the majority of our object creators and 5948 destructors, `EVP_MD_CTX_(create|destroy)` were renamed to 5949 `EVP_MD_CTX_(new|free)`. The old names are retained as macros 5950 for deprecated builds. 5951 5952 *Richard Levitte* 5953 5954 * Added ASYNC support. Libcrypto now includes the async sub-library to enable 5955 cryptographic operations to be performed asynchronously as long as an 5956 asynchronous capable engine is used. See the ASYNC_start_job() man page for 5957 further details. Libssl has also had this capability integrated with the 5958 introduction of the new mode SSL_MODE_ASYNC and associated error 5959 SSL_ERROR_WANT_ASYNC. See the SSL_CTX_set_mode() and SSL_get_error() man 5960 pages. This work was developed in partnership with Intel Corp. 5961 5962 *Matt Caswell* 5963 5964 * SSL_{CTX_}set_ecdh_auto() has been removed and ECDH is support is 5965 always enabled now. If you want to disable the support you should 5966 exclude it using the list of supported ciphers. This also means that the 5967 "-no_ecdhe" option has been removed from s_server. 5968 5969 *Kurt Roeckx* 5970 5971 * SSL_{CTX}_set_tmp_ecdh() which can set 1 EC curve now internally calls 5972 SSL_{CTX_}set1_curves() which can set a list. 5973 5974 *Kurt Roeckx* 5975 5976 * Remove support for SSL_{CTX_}set_tmp_ecdh_callback(). You should set the 5977 curve you want to support using SSL_{CTX_}set1_curves(). 5978 5979 *Kurt Roeckx* 5980 5981 * State machine rewrite. The state machine code has been significantly 5982 refactored in order to remove much duplication of code and solve issues 5983 with the old code (see [ssl/statem/README.md](ssl/statem/README.md) for 5984 further details). This change does have some associated API changes. 5985 Notably the SSL_state() function has been removed and replaced by 5986 SSL_get_state which now returns an "OSSL_HANDSHAKE_STATE" instead of an int. 5987 SSL_set_state() has been removed altogether. The previous handshake states 5988 defined in ssl.h and ssl3.h have also been removed. 5989 5990 *Matt Caswell* 5991 5992 * All instances of the string "ssleay" in the public API were replaced 5993 with OpenSSL (case-matching; e.g., OPENSSL_VERSION for #define's) 5994 Some error codes related to internal RSA_eay API's were renamed. 5995 5996 *Rich Salz* 5997 5998 * The demo files in crypto/threads were moved to demo/threads. 5999 6000 *Rich Salz* 6001 6002 * Removed obsolete engines: 4758cca, aep, atalla, cswift, nuron, gmp, 6003 sureware and ubsec. 6004 6005 *Matt Caswell, Rich Salz* 6006 6007 * New ASN.1 embed macro. 6008 6009 New ASN.1 macro ASN1_EMBED. This is the same as ASN1_SIMPLE except the 6010 structure is not allocated: it is part of the parent. That is instead of 6011 6012 FOO *x; 6013 6014 it must be: 6015 6016 FOO x; 6017 6018 This reduces memory fragmentation and make it impossible to accidentally 6019 set a mandatory field to NULL. 6020 6021 This currently only works for some fields specifically a SEQUENCE, CHOICE, 6022 or ASN1_STRING type which is part of a parent SEQUENCE. Since it is 6023 equivalent to ASN1_SIMPLE it cannot be tagged, OPTIONAL, SET OF or 6024 SEQUENCE OF. 6025 6026 *Steve Henson* 6027 6028 * Remove EVP_CHECK_DES_KEY, a compile-time option that never compiled. 6029 6030 *Emilia Käsper* 6031 6032 * Removed DES and RC4 ciphersuites from DEFAULT. Also removed RC2 although 6033 in 1.0.2 EXPORT was already removed and the only RC2 ciphersuite is also 6034 an EXPORT one. COMPLEMENTOFDEFAULT has been updated accordingly to add 6035 DES and RC4 ciphersuites. 6036 6037 *Matt Caswell* 6038 6039 * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs. 6040 This changes the decoding behaviour for some invalid messages, 6041 though the change is mostly in the more lenient direction, and 6042 legacy behaviour is preserved as much as possible. 6043 6044 *Emilia Käsper* 6045 6046 * Fix no-stdio build. 6047 *David Woodhouse <David.Woodhouse@intel.com> and also* 6048 *Ivan Nestlerode <ivan.nestlerode@sonos.com>* 6049 6050 * New testing framework 6051 The testing framework has been largely rewritten and is now using 6052 perl and the perl modules Test::Harness and an extended variant of 6053 Test::More called OpenSSL::Test to do its work. All test scripts in 6054 test/ have been rewritten into test recipes, and all direct calls to 6055 executables in test/Makefile have become individual recipes using the 6056 simplified testing OpenSSL::Test::Simple. 6057 6058 For documentation on our testing modules, do: 6059 6060 perldoc test/testlib/OpenSSL/Test/Simple.pm 6061 perldoc test/testlib/OpenSSL/Test.pm 6062 6063 *Richard Levitte* 6064 6065 * Revamped memory debug; only -DCRYPTO_MDEBUG and -DCRYPTO_MDEBUG_ABORT 6066 are used; the latter aborts on memory leaks (usually checked on exit). 6067 Some undocumented "set malloc, etc., hooks" functions were removed 6068 and others were changed. All are now documented. 6069 6070 *Rich Salz* 6071 6072 * In DSA_generate_parameters_ex, if the provided seed is too short, 6073 return an error 6074 6075 *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>* 6076 6077 * Rewrite PSK to support ECDHE_PSK, DHE_PSK and RSA_PSK. Add ciphersuites 6078 from RFC4279, RFC4785, RFC5487, RFC5489. 6079 6080 Thanks to Christian J. Dietrich and Giuseppe D'Angelo for the 6081 original RSA_PSK patch. 6082 6083 *Steve Henson* 6084 6085 * Dropped support for the SSL3_FLAGS_DELAY_CLIENT_FINISHED flag. This SSLeay 6086 era flag was never set throughout the codebase (only read). Also removed 6087 SSL3_FLAGS_POP_BUFFER which was only used if 6088 SSL3_FLAGS_DELAY_CLIENT_FINISHED was also set. 6089 6090 *Matt Caswell* 6091 6092 * Changed the default name options in the "ca", "crl", "req" and "x509" 6093 to be "oneline" instead of "compat". 6094 6095 *Richard Levitte* 6096 6097 * Remove SSL_OP_TLS_BLOCK_PADDING_BUG. This is SSLeay legacy, we're 6098 not aware of clients that still exhibit this bug, and the workaround 6099 hasn't been working properly for a while. 6100 6101 *Emilia Käsper* 6102 6103 * The return type of BIO_number_read() and BIO_number_written() as well as 6104 the corresponding num_read and num_write members in the BIO structure has 6105 changed from unsigned long to uint64_t. On platforms where an unsigned 6106 long is 32 bits (e.g. Windows) these counters could overflow if >4Gb is 6107 transferred. 6108 6109 *Matt Caswell* 6110 6111 * Given the pervasive nature of TLS extensions it is inadvisable to run 6112 OpenSSL without support for them. It also means that maintaining 6113 the OPENSSL_NO_TLSEXT option within the code is very invasive (and probably 6114 not well tested). Therefore, the OPENSSL_NO_TLSEXT option has been removed. 6115 6116 *Matt Caswell* 6117 6118 * Removed support for the two export grade static DH ciphersuites 6119 EXP-DH-RSA-DES-CBC-SHA and EXP-DH-DSS-DES-CBC-SHA. These two ciphersuites 6120 were newly added (along with a number of other static DH ciphersuites) to 6121 1.0.2. However the two export ones have *never* worked since they were 6122 introduced. It seems strange in any case to be adding new export 6123 ciphersuites, and given "logjam" it also does not seem correct to fix them. 6124 6125 *Matt Caswell* 6126 6127 * Version negotiation has been rewritten. In particular SSLv23_method(), 6128 SSLv23_client_method() and SSLv23_server_method() have been deprecated, 6129 and turned into macros which simply call the new preferred function names 6130 TLS_method(), TLS_client_method() and TLS_server_method(). All new code 6131 should use the new names instead. Also as part of this change the ssl23.h 6132 header file has been removed. 6133 6134 *Matt Caswell* 6135 6136 * Support for Kerberos ciphersuites in TLS (RFC2712) has been removed. This 6137 code and the associated standard is no longer considered fit-for-purpose. 6138 6139 *Matt Caswell* 6140 6141 * RT2547 was closed. When generating a private key, try to make the 6142 output file readable only by the owner. This behavior change might 6143 be noticeable when interacting with other software. 6144 6145 * Documented all exdata functions. Added CRYPTO_free_ex_index. 6146 Added a test. 6147 6148 *Rich Salz* 6149 6150 * Added HTTP GET support to the ocsp command. 6151 6152 *Rich Salz* 6153 6154 * Changed default digest for the dgst and enc commands from MD5 to 6155 sha256 6156 6157 *Rich Salz* 6158 6159 * RAND_pseudo_bytes has been deprecated. Users should use RAND_bytes instead. 6160 6161 *Matt Caswell* 6162 6163 * Added support for TLS extended master secret from 6164 draft-ietf-tls-session-hash-03.txt. Thanks for Alfredo Pironti for an 6165 initial patch which was a great help during development. 6166 6167 *Steve Henson* 6168 6169 * All libssl internal structures have been removed from the public header 6170 files, and the OPENSSL_NO_SSL_INTERN option has been removed (since it is 6171 now redundant). Users should not attempt to access internal structures 6172 directly. Instead they should use the provided API functions. 6173 6174 *Matt Caswell* 6175 6176 * config has been changed so that by default OPENSSL_NO_DEPRECATED is used. 6177 Access to deprecated functions can be re-enabled by running config with 6178 "enable-deprecated". In addition applications wishing to use deprecated 6179 functions must define OPENSSL_USE_DEPRECATED. Note that this new behaviour 6180 will, by default, disable some transitive includes that previously existed 6181 in the header files (e.g. ec.h will no longer, by default, include bn.h) 6182 6183 *Matt Caswell* 6184 6185 * Added support for OCB mode. OpenSSL has been granted a patent license 6186 compatible with the OpenSSL license for use of OCB. Details are available 6187 at <https://www.openssl.org/source/OCB-patent-grant-OpenSSL.pdf>. Support 6188 for OCB can be removed by calling config with no-ocb. 6189 6190 *Matt Caswell* 6191 6192 * SSLv2 support has been removed. It still supports receiving an SSLv2 6193 compatible client hello. 6194 6195 *Kurt Roeckx* 6196 6197 * Increased the minimal RSA keysize from 256 to 512 bits [Rich Salz], 6198 done while fixing the error code for the key-too-small case. 6199 6200 *Annie Yousar <a.yousar@informatik.hu-berlin.de>* 6201 6202 * CA.sh has been removed; use CA.pl instead. 6203 6204 *Rich Salz* 6205 6206 * Removed old DES API. 6207 6208 *Rich Salz* 6209 6210 * Remove various unsupported platforms: 6211 Sony NEWS4 6212 BEOS and BEOS_R5 6213 NeXT 6214 SUNOS 6215 MPE/iX 6216 Sinix/ReliantUNIX RM400 6217 DGUX 6218 NCR 6219 Tandem 6220 Cray 6221 16-bit platforms such as WIN16 6222 6223 *Rich Salz* 6224 6225 * Clean up OPENSSL_NO_xxx #define's 6226 - Use setbuf() and remove OPENSSL_NO_SETVBUF_IONBF 6227 - Rename OPENSSL_SYSNAME_xxx to OPENSSL_SYS_xxx 6228 - OPENSSL_NO_EC{DH,DSA} merged into OPENSSL_NO_EC 6229 - OPENSSL_NO_RIPEMD160, OPENSSL_NO_RIPEMD merged into OPENSSL_NO_RMD160 6230 - OPENSSL_NO_FP_API merged into OPENSSL_NO_STDIO 6231 - Remove OPENSSL_NO_BIO OPENSSL_NO_BUFFER OPENSSL_NO_CHAIN_VERIFY 6232 OPENSSL_NO_EVP OPENSSL_NO_FIPS_ERR OPENSSL_NO_HASH_COMP 6233 OPENSSL_NO_LHASH OPENSSL_NO_OBJECT OPENSSL_NO_SPEED OPENSSL_NO_STACK 6234 OPENSSL_NO_X509 OPENSSL_NO_X509_VERIFY 6235 - Remove MS_STATIC; it's a relic from platforms <32 bits. 6236 6237 *Rich Salz* 6238 6239 * Cleaned up dead code 6240 Remove all but one '#ifdef undef' which is to be looked at. 6241 6242 *Rich Salz* 6243 6244 * Clean up calling of xxx_free routines. 6245 Just like free(), fix most of the xxx_free routines to accept 6246 NULL. Remove the non-null checks from callers. Save much code. 6247 6248 *Rich Salz* 6249 6250 * Add secure heap for storage of private keys (when possible). 6251 Add BIO_s_secmem(), CBIGNUM, etc. 6252 Contributed by Akamai Technologies under our Corporate CLA. 6253 6254 *Rich Salz* 6255 6256 * Experimental support for a new, fast, unbiased prime candidate generator, 6257 bn_probable_prime_dh_coprime(). Not currently used by any prime generator. 6258 6259 *Felix Laurie von Massenbach <felix@erbridge.co.uk>* 6260 6261 * New output format NSS in the sess_id command line tool. This allows 6262 exporting the session id and the master key in NSS keylog format. 6263 6264 *Martin Kaiser <martin@kaiser.cx>* 6265 6266 * Harmonize version and its documentation. -f flag is used to display 6267 compilation flags. 6268 6269 *mancha <mancha1@zoho.com>* 6270 6271 * Fix eckey_priv_encode so it immediately returns an error upon a failure 6272 in i2d_ECPrivateKey. Thanks to Ted Unangst for feedback on this issue. 6273 6274 *mancha <mancha1@zoho.com>* 6275 6276 * Fix some double frees. These are not thought to be exploitable. 6277 6278 *mancha <mancha1@zoho.com>* 6279 6280 * A missing bounds check in the handling of the TLS heartbeat extension 6281 can be used to reveal up to 64k of memory to a connected client or 6282 server. 6283 6284 Thanks for Neel Mehta of Google Security for discovering this bug and to 6285 Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for 6286 preparing the fix ([CVE-2014-0160]) 6287 6288 *Adam Langley, Bodo Moeller* 6289 6290 * Fix for the attack described in the paper "Recovering OpenSSL 6291 ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack" 6292 by Yuval Yarom and Naomi Benger. Details can be obtained from: 6293 <http://eprint.iacr.org/2014/140> 6294 6295 Thanks to Yuval Yarom and Naomi Benger for discovering this 6296 flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076]) 6297 6298 *Yuval Yarom and Naomi Benger* 6299 6300 * Use algorithm specific chains in SSL_CTX_use_certificate_chain_file(): 6301 this fixes a limitation in previous versions of OpenSSL. 6302 6303 *Steve Henson* 6304 6305 * Experimental encrypt-then-mac support. 6306 6307 Experimental support for encrypt then mac from 6308 draft-gutmann-tls-encrypt-then-mac-02.txt 6309 6310 To enable it set the appropriate extension number (0x42 for the test 6311 server) using e.g. -DTLSEXT_TYPE_encrypt_then_mac=0x42 6312 6313 For non-compliant peers (i.e. just about everything) this should have no 6314 effect. 6315 6316 WARNING: EXPERIMENTAL, SUBJECT TO CHANGE. 6317 6318 *Steve Henson* 6319 6320 * Add EVP support for key wrapping algorithms, to avoid problems with 6321 existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in 6322 the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap 6323 algorithms and include tests cases. 6324 6325 *Steve Henson* 6326 6327 * Extend CMS code to support RSA-PSS signatures and RSA-OAEP for 6328 enveloped data. 6329 6330 *Steve Henson* 6331 6332 * Extended RSA OAEP support via EVP_PKEY API. Options to specify digest, 6333 MGF1 digest and OAEP label. 6334 6335 *Steve Henson* 6336 6337 * Make openssl verify return errors. 6338 6339 *Chris Palmer <palmer@google.com> and Ben Laurie* 6340 6341 * New function ASN1_TIME_diff to calculate the difference between two 6342 ASN1_TIME structures or one structure and the current time. 6343 6344 *Steve Henson* 6345 6346 * Update fips_test_suite to support multiple command line options. New 6347 test to induce all self test errors in sequence and check expected 6348 failures. 6349 6350 *Steve Henson* 6351 6352 * Add FIPS_{rsa,dsa,ecdsa}_{sign,verify} functions which digest and 6353 sign or verify all in one operation. 6354 6355 *Steve Henson* 6356 6357 * Add fips_algvs: a multicall fips utility incorporating all the algorithm 6358 test programs and fips_test_suite. Includes functionality to parse 6359 the minimal script output of fipsalgest.pl directly. 6360 6361 *Steve Henson* 6362 6363 * Add authorisation parameter to FIPS_module_mode_set(). 6364 6365 *Steve Henson* 6366 6367 * Add FIPS selftest for ECDH algorithm using P-224 and B-233 curves. 6368 6369 *Steve Henson* 6370 6371 * Use separate DRBG fields for internal and external flags. New function 6372 FIPS_drbg_health_check() to perform on demand health checking. Add 6373 generation tests to fips_test_suite with reduced health check interval to 6374 demonstrate periodic health checking. Add "nodh" option to 6375 fips_test_suite to skip very slow DH test. 6376 6377 *Steve Henson* 6378 6379 * New function FIPS_get_cipherbynid() to lookup FIPS supported ciphers 6380 based on NID. 6381 6382 *Steve Henson* 6383 6384 * More extensive health check for DRBG checking many more failure modes. 6385 New function FIPS_selftest_drbg_all() to handle every possible DRBG 6386 combination: call this in fips_test_suite. 6387 6388 *Steve Henson* 6389 6390 * Add support for canonical generation of DSA parameter 'g'. See 6391 FIPS 186-3 A.2.3. 6392 6393 * Add support for HMAC DRBG from SP800-90. Update DRBG algorithm test and 6394 POST to handle HMAC cases. 6395 6396 *Steve Henson* 6397 6398 * Add functions FIPS_module_version() and FIPS_module_version_text() 6399 to return numerical and string versions of the FIPS module number. 6400 6401 *Steve Henson* 6402 6403 * Rename FIPS_mode_set and FIPS_mode to FIPS_module_mode_set and 6404 FIPS_module_mode. FIPS_mode and FIPS_mode_set will be implemented 6405 outside the validated module in the FIPS capable OpenSSL. 6406 6407 *Steve Henson* 6408 6409 * Minor change to DRBG entropy callback semantics. In some cases 6410 there is no multiple of the block length between min_len and 6411 max_len. Allow the callback to return more than max_len bytes 6412 of entropy but discard any extra: it is the callback's responsibility 6413 to ensure that the extra data discarded does not impact the 6414 requested amount of entropy. 6415 6416 *Steve Henson* 6417 6418 * Add PRNG security strength checks to RSA, DSA and ECDSA using 6419 information in FIPS186-3, SP800-57 and SP800-131A. 6420 6421 *Steve Henson* 6422 6423 * CCM support via EVP. Interface is very similar to GCM case except we 6424 must supply all data in one chunk (i.e. no update, final) and the 6425 message length must be supplied if AAD is used. Add algorithm test 6426 support. 6427 6428 *Steve Henson* 6429 6430 * Initial version of POST overhaul. Add POST callback to allow the status 6431 of POST to be monitored and/or failures induced. Modify fips_test_suite 6432 to use callback. Always run all selftests even if one fails. 6433 6434 *Steve Henson* 6435 6436 * XTS support including algorithm test driver in the fips_gcmtest program. 6437 Note: this does increase the maximum key length from 32 to 64 bytes but 6438 there should be no binary compatibility issues as existing applications 6439 will never use XTS mode. 6440 6441 *Steve Henson* 6442 6443 * Extensive reorganisation of FIPS PRNG behaviour. Remove all dependencies 6444 to OpenSSL RAND code and replace with a tiny FIPS RAND API which also 6445 performs algorithm blocking for unapproved PRNG types. Also do not 6446 set PRNG type in FIPS_mode_set(): leave this to the application. 6447 Add default OpenSSL DRBG handling: sets up FIPS PRNG and seeds with 6448 the standard OpenSSL PRNG: set additional data to a date time vector. 6449 6450 *Steve Henson* 6451 6452 * Rename old X9.31 PRNG functions of the form `FIPS_rand*` to `FIPS_x931*`. 6453 This shouldn't present any incompatibility problems because applications 6454 shouldn't be using these directly and any that are will need to rethink 6455 anyway as the X9.31 PRNG is now deprecated by FIPS 140-2 6456 6457 *Steve Henson* 6458 6459 * Extensive self tests and health checking required by SP800-90 DRBG. 6460 Remove strength parameter from FIPS_drbg_instantiate and always 6461 instantiate at maximum supported strength. 6462 6463 *Steve Henson* 6464 6465 * Add ECDH code to fips module and fips_ecdhvs for primitives only testing. 6466 6467 *Steve Henson* 6468 6469 * New algorithm test program fips_dhvs to handle DH primitives only testing. 6470 6471 *Steve Henson* 6472 6473 * New function DH_compute_key_padded() to compute a DH key and pad with 6474 leading zeroes if needed: this complies with SP800-56A et al. 6475 6476 *Steve Henson* 6477 6478 * Initial implementation of SP800-90 DRBGs for Hash and CTR. Not used by 6479 anything, incomplete, subject to change and largely untested at present. 6480 6481 *Steve Henson* 6482 6483 * Modify fipscanisteronly build option to only build the necessary object 6484 files by filtering FIPS_EX_OBJ through a perl script in crypto/Makefile. 6485 6486 *Steve Henson* 6487 6488 * Add experimental option FIPSSYMS to give all symbols in 6489 fipscanister.o and FIPS or fips prefix. This will avoid 6490 conflicts with future versions of OpenSSL. Add perl script 6491 util/fipsas.pl to preprocess assembly language source files 6492 and rename any affected symbols. 6493 6494 *Steve Henson* 6495 6496 * Add selftest checks and algorithm block of non-fips algorithms in 6497 FIPS mode. Remove DES2 from selftests. 6498 6499 *Steve Henson* 6500 6501 * Add ECDSA code to fips module. Add tiny fips_ecdsa_check to just 6502 return internal method without any ENGINE dependencies. Add new 6503 tiny fips sign and verify functions. 6504 6505 *Steve Henson* 6506 6507 * New build option no-ec2m to disable characteristic 2 code. 6508 6509 *Steve Henson* 6510 6511 * New build option "fipscanisteronly". This only builds fipscanister.o 6512 and (currently) associated fips utilities. Uses the file Makefile.fips 6513 instead of Makefile.org as the prototype. 6514 6515 *Steve Henson* 6516 6517 * Add some FIPS mode restrictions to GCM. Add internal IV generator. 6518 Update fips_gcmtest to use IV generator. 6519 6520 *Steve Henson* 6521 6522 * Initial, experimental EVP support for AES-GCM. AAD can be input by 6523 setting output buffer to NULL. The `*Final` function must be 6524 called although it will not retrieve any additional data. The tag 6525 can be set or retrieved with a ctrl. The IV length is by default 12 6526 bytes (96 bits) but can be set to an alternative value. If the IV 6527 length exceeds the maximum IV length (currently 16 bytes) it cannot be 6528 set before the key. 6529 6530 *Steve Henson* 6531 6532 * New flag in ciphers: EVP_CIPH_FLAG_CUSTOM_CIPHER. This means the 6533 underlying do_cipher function handles all cipher semantics itself 6534 including padding and finalisation. This is useful if (for example) 6535 an ENGINE cipher handles block padding itself. The behaviour of 6536 do_cipher is subtly changed if this flag is set: the return value 6537 is the number of characters written to the output buffer (zero is 6538 no longer an error code) or a negative error code. Also if the 6539 input buffer is NULL and length 0 finalisation should be performed. 6540 6541 *Steve Henson* 6542 6543 * If a candidate issuer certificate is already part of the constructed 6544 path ignore it: new debug notification X509_V_ERR_PATH_LOOP for this case. 6545 6546 *Steve Henson* 6547 6548 * Improve forward-security support: add functions 6549 6550 void SSL_CTX_set_not_resumable_session_callback( 6551 SSL_CTX *ctx, int (*cb)(SSL *ssl, int is_forward_secure)) 6552 void SSL_set_not_resumable_session_callback( 6553 SSL *ssl, int (*cb)(SSL *ssl, int is_forward_secure)) 6554 6555 for use by SSL/TLS servers; the callback function will be called whenever a 6556 new session is created, and gets to decide whether the session may be 6557 cached to make it resumable (return 0) or not (return 1). (As by the 6558 SSL/TLS protocol specifications, the session_id sent by the server will be 6559 empty to indicate that the session is not resumable; also, the server will 6560 not generate RFC 4507 (RFC 5077) session tickets.) 6561 6562 A simple reasonable callback implementation is to return is_forward_secure. 6563 This parameter will be set to 1 or 0 depending on the ciphersuite selected 6564 by the SSL/TLS server library, indicating whether it can provide forward 6565 security. 6566 6567 *Emilia Käsper <emilia.kasper@esat.kuleuven.be> (Google)* 6568 6569 * New -verify_name option in command line utilities to set verification 6570 parameters by name. 6571 6572 *Steve Henson* 6573 6574 * Initial CMAC implementation. WARNING: EXPERIMENTAL, API MAY CHANGE. 6575 Add CMAC pkey methods. 6576 6577 *Steve Henson* 6578 6579 * Experimental renegotiation in s_server -www mode. If the client 6580 browses /reneg connection is renegotiated. If /renegcert it is 6581 renegotiated requesting a certificate. 6582 6583 *Steve Henson* 6584 6585 * Add an "external" session cache for debugging purposes to s_server. This 6586 should help trace issues which normally are only apparent in deployed 6587 multi-process servers. 6588 6589 *Steve Henson* 6590 6591 * Extensive audit of libcrypto with DEBUG_UNUSED. Fix many cases where 6592 return value is ignored. NB. The functions RAND_add(), RAND_seed(), 6593 BIO_set_cipher() and some obscure PEM functions were changed so they 6594 can now return an error. The RAND changes required a change to the 6595 RAND_METHOD structure. 6596 6597 *Steve Henson* 6598 6599 * New macro `__owur` for "OpenSSL Warn Unused Result". This makes use of 6600 a gcc attribute to warn if the result of a function is ignored. This 6601 is enable if DEBUG_UNUSED is set. Add to several functions in evp.h 6602 whose return value is often ignored. 6603 6604 *Steve Henson* 6605 6606 * New -noct, -requestct, -requirect and -ctlogfile options for s_client. 6607 These allow SCTs (signed certificate timestamps) to be requested and 6608 validated when establishing a connection. 6609 6610 *Rob Percival <robpercival@google.com>* 6611 6612 * SSLv3 is by default disabled at build-time. Builds that are not 6613 configured with "enable-ssl3" will not support SSLv3. 6614 6615 *Kurt Roeckx* 6616 6617OpenSSL 1.0.2 6618------------- 6619 6620### Changes between 1.0.2s and 1.0.2t [10 Sep 2019] 6621 6622 * For built-in EC curves, ensure an EC_GROUP built from the curve name is 6623 used even when parsing explicit parameters, when loading a encoded key 6624 or calling `EC_GROUP_new_from_ecpkparameters()`/ 6625 `EC_GROUP_new_from_ecparameters()`. 6626 This prevents bypass of security hardening and performance gains, 6627 especially for curves with specialized EC_METHODs. 6628 By default, if a key encoded with explicit parameters is loaded and later 6629 encoded, the output is still encoded with explicit parameters, even if 6630 internally a "named" EC_GROUP is used for computation. 6631 6632 *Nicola Tuveri* 6633 6634 * Compute ECC cofactors if not provided during EC_GROUP construction. Before 6635 this change, EC_GROUP_set_generator would accept order and/or cofactor as 6636 NULL. After this change, only the cofactor parameter can be NULL. It also 6637 does some minimal sanity checks on the passed order. 6638 ([CVE-2019-1547]) 6639 6640 *Billy Bob Brumley* 6641 6642 * Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey. 6643 An attack is simple, if the first CMS_recipientInfo is valid but the 6644 second CMS_recipientInfo is chosen ciphertext. If the second 6645 recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct 6646 encryption key will be replaced by garbage, and the message cannot be 6647 decoded, but if the RSA decryption fails, the correct encryption key is 6648 used and the recipient will not notice the attack. 6649 As a work around for this potential attack the length of the decrypted 6650 key must be equal to the cipher default key length, in case the 6651 certificate is not given and all recipientInfo are tried out. 6652 The old behaviour can be re-enabled in the CMS code by setting the 6653 CMS_DEBUG_DECRYPT flag. 6654 ([CVE-2019-1563]) 6655 6656 *Bernd Edlinger* 6657 6658 * Document issue with installation paths in diverse Windows builds 6659 6660 '/usr/local/ssl' is an unsafe prefix for location to install OpenSSL 6661 binaries and run-time config file. 6662 ([CVE-2019-1552]) 6663 6664 *Richard Levitte* 6665 6666### Changes between 1.0.2r and 1.0.2s [28 May 2019] 6667 6668 * Change the default RSA, DSA and DH size to 2048 bit instead of 1024. 6669 This changes the size when using the `genpkey` command when no size is given. 6670 It fixes an omission in earlier changes that changed all RSA, DSA and DH 6671 generation commands to use 2048 bits by default. 6672 6673 *Kurt Roeckx* 6674 6675 * Add FIPS support for Android Arm 64-bit 6676 6677 Support for Android Arm 64-bit was added to the OpenSSL FIPS Object 6678 Module in Version 2.0.10. For some reason, the corresponding target 6679 'android64-aarch64' was missing OpenSSL 1.0.2, whence it could not be 6680 built with FIPS support on Android Arm 64-bit. This omission has been 6681 fixed. 6682 6683 *Matthias St. Pierre* 6684 6685### Changes between 1.0.2q and 1.0.2r [26 Feb 2019] 6686 6687 * 0-byte record padding oracle 6688 6689 If an application encounters a fatal protocol error and then calls 6690 SSL_shutdown() twice (once to send a close_notify, and once to receive one) 6691 then OpenSSL can respond differently to the calling application if a 0 byte 6692 record is received with invalid padding compared to if a 0 byte record is 6693 received with an invalid MAC. If the application then behaves differently 6694 based on that in a way that is detectable to the remote peer, then this 6695 amounts to a padding oracle that could be used to decrypt data. 6696 6697 In order for this to be exploitable "non-stitched" ciphersuites must be in 6698 use. Stitched ciphersuites are optimised implementations of certain 6699 commonly used ciphersuites. Also the application must call SSL_shutdown() 6700 twice even if a protocol error has occurred (applications should not do 6701 this but some do anyway). 6702 6703 This issue was discovered by Juraj Somorovsky, Robert Merget and Nimrod 6704 Aviram, with additional investigation by Steven Collison and Andrew 6705 Hourselt. It was reported to OpenSSL on 10th December 2018. 6706 ([CVE-2019-1559]) 6707 6708 *Matt Caswell* 6709 6710 * Move strictness check from EVP_PKEY_asn1_new() to EVP_PKEY_asn1_add0(). 6711 6712 *Richard Levitte* 6713 6714### Changes between 1.0.2p and 1.0.2q [20 Nov 2018] 6715 6716 * Microarchitecture timing vulnerability in ECC scalar multiplication 6717 6718 OpenSSL ECC scalar multiplication, used in e.g. ECDSA and ECDH, has been 6719 shown to be vulnerable to a microarchitecture timing side channel attack. 6720 An attacker with sufficient access to mount local timing attacks during 6721 ECDSA signature generation could recover the private key. 6722 6723 This issue was reported to OpenSSL on 26th October 2018 by Alejandro 6724 Cabrera Aldaya, Billy Brumley, Sohaib ul Hassan, Cesar Pereida Garcia and 6725 Nicola Tuveri. 6726 ([CVE-2018-5407]) 6727 6728 *Billy Brumley* 6729 6730 * Timing vulnerability in DSA signature generation 6731 6732 The OpenSSL DSA signature algorithm has been shown to be vulnerable to a 6733 timing side channel attack. An attacker could use variations in the signing 6734 algorithm to recover the private key. 6735 6736 This issue was reported to OpenSSL on 16th October 2018 by Samuel Weiser. 6737 ([CVE-2018-0734]) 6738 6739 *Paul Dale* 6740 6741 * Resolve a compatibility issue in EC_GROUP handling with the FIPS Object 6742 Module, accidentally introduced while backporting security fixes from the 6743 development branch and hindering the use of ECC in FIPS mode. 6744 6745 *Nicola Tuveri* 6746 6747### Changes between 1.0.2o and 1.0.2p [14 Aug 2018] 6748 6749 * Client DoS due to large DH parameter 6750 6751 During key agreement in a TLS handshake using a DH(E) based ciphersuite a 6752 malicious server can send a very large prime value to the client. This will 6753 cause the client to spend an unreasonably long period of time generating a 6754 key for this prime resulting in a hang until the client has finished. This 6755 could be exploited in a Denial Of Service attack. 6756 6757 This issue was reported to OpenSSL on 5th June 2018 by Guido Vranken 6758 ([CVE-2018-0732]) 6759 6760 *Guido Vranken* 6761 6762 * Cache timing vulnerability in RSA Key Generation 6763 6764 The OpenSSL RSA Key generation algorithm has been shown to be vulnerable to 6765 a cache timing side channel attack. An attacker with sufficient access to 6766 mount cache timing attacks during the RSA key generation process could 6767 recover the private key. 6768 6769 This issue was reported to OpenSSL on 4th April 2018 by Alejandro Cabrera 6770 Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia. 6771 ([CVE-2018-0737]) 6772 6773 *Billy Brumley* 6774 6775 * Make EVP_PKEY_asn1_new() a bit stricter about its input. A NULL pem_str 6776 parameter is no longer accepted, as it leads to a corrupt table. NULL 6777 pem_str is reserved for alias entries only. 6778 6779 *Richard Levitte* 6780 6781 * Revert blinding in ECDSA sign and instead make problematic addition 6782 length-invariant. Switch even to fixed-length Montgomery multiplication. 6783 6784 *Andy Polyakov* 6785 6786 * Change generating and checking of primes so that the error rate of not 6787 being prime depends on the intended use based on the size of the input. 6788 For larger primes this will result in more rounds of Miller-Rabin. 6789 The maximal error rate for primes with more than 1080 bits is lowered 6790 to 2^-128. 6791 6792 *Kurt Roeckx, Annie Yousar* 6793 6794 * Increase the number of Miller-Rabin rounds for DSA key generating to 64. 6795 6796 *Kurt Roeckx* 6797 6798 * Add blinding to ECDSA and DSA signatures to protect against side channel 6799 attacks discovered by Keegan Ryan (NCC Group). 6800 6801 *Matt Caswell* 6802 6803 * When unlocking a pass phrase protected PEM file or PKCS#8 container, we 6804 now allow empty (zero character) pass phrases. 6805 6806 *Richard Levitte* 6807 6808 * Certificate time validation (X509_cmp_time) enforces stricter 6809 compliance with RFC 5280. Fractional seconds and timezone offsets 6810 are no longer allowed. 6811 6812 *Emilia Käsper* 6813 6814### Changes between 1.0.2n and 1.0.2o [27 Mar 2018] 6815 6816 * Constructed ASN.1 types with a recursive definition could exceed the stack 6817 6818 Constructed ASN.1 types with a recursive definition (such as can be found 6819 in PKCS7) could eventually exceed the stack given malicious input with 6820 excessive recursion. This could result in a Denial Of Service attack. There 6821 are no such structures used within SSL/TLS that come from untrusted sources 6822 so this is considered safe. 6823 6824 This issue was reported to OpenSSL on 4th January 2018 by the OSS-fuzz 6825 project. 6826 ([CVE-2018-0739]) 6827 6828 *Matt Caswell* 6829 6830### Changes between 1.0.2m and 1.0.2n [7 Dec 2017] 6831 6832 * Read/write after SSL object in error state 6833 6834 OpenSSL 1.0.2 (starting from version 1.0.2b) introduced an "error state" 6835 mechanism. The intent was that if a fatal error occurred during a handshake 6836 then OpenSSL would move into the error state and would immediately fail if 6837 you attempted to continue the handshake. This works as designed for the 6838 explicit handshake functions (SSL_do_handshake(), SSL_accept() and 6839 SSL_connect()), however due to a bug it does not work correctly if 6840 SSL_read() or SSL_write() is called directly. In that scenario, if the 6841 handshake fails then a fatal error will be returned in the initial function 6842 call. If SSL_read()/SSL_write() is subsequently called by the application 6843 for the same SSL object then it will succeed and the data is passed without 6844 being decrypted/encrypted directly from the SSL/TLS record layer. 6845 6846 In order to exploit this issue an application bug would have to be present 6847 that resulted in a call to SSL_read()/SSL_write() being issued after having 6848 already received a fatal error. 6849 6850 This issue was reported to OpenSSL by David Benjamin (Google). 6851 ([CVE-2017-3737]) 6852 6853 *Matt Caswell* 6854 6855 * rsaz_1024_mul_avx2 overflow bug on x86_64 6856 6857 There is an overflow bug in the AVX2 Montgomery multiplication procedure 6858 used in exponentiation with 1024-bit moduli. No EC algorithms are affected. 6859 Analysis suggests that attacks against RSA and DSA as a result of this 6860 defect would be very difficult to perform and are not believed likely. 6861 Attacks against DH1024 are considered just feasible, because most of the 6862 work necessary to deduce information about a private key may be performed 6863 offline. The amount of resources required for such an attack would be 6864 significant. However, for an attack on TLS to be meaningful, the server 6865 would have to share the DH1024 private key among multiple clients, which is 6866 no longer an option since CVE-2016-0701. 6867 6868 This only affects processors that support the AVX2 but not ADX extensions 6869 like Intel Haswell (4th generation). 6870 6871 This issue was reported to OpenSSL by David Benjamin (Google). The issue 6872 was originally found via the OSS-Fuzz project. 6873 ([CVE-2017-3738]) 6874 6875 *Andy Polyakov* 6876 6877### Changes between 1.0.2l and 1.0.2m [2 Nov 2017] 6878 6879 * bn_sqrx8x_internal carry bug on x86_64 6880 6881 There is a carry propagating bug in the x86_64 Montgomery squaring 6882 procedure. No EC algorithms are affected. Analysis suggests that attacks 6883 against RSA and DSA as a result of this defect would be very difficult to 6884 perform and are not believed likely. Attacks against DH are considered just 6885 feasible (although very difficult) because most of the work necessary to 6886 deduce information about a private key may be performed offline. The amount 6887 of resources required for such an attack would be very significant and 6888 likely only accessible to a limited number of attackers. An attacker would 6889 additionally need online access to an unpatched system using the target 6890 private key in a scenario with persistent DH parameters and a private 6891 key that is shared between multiple clients. 6892 6893 This only affects processors that support the BMI1, BMI2 and ADX extensions 6894 like Intel Broadwell (5th generation) and later or AMD Ryzen. 6895 6896 This issue was reported to OpenSSL by the OSS-Fuzz project. 6897 ([CVE-2017-3736]) 6898 6899 *Andy Polyakov* 6900 6901 * Malformed X.509 IPAddressFamily could cause OOB read 6902 6903 If an X.509 certificate has a malformed IPAddressFamily extension, 6904 OpenSSL could do a one-byte buffer overread. The most likely result 6905 would be an erroneous display of the certificate in text format. 6906 6907 This issue was reported to OpenSSL by the OSS-Fuzz project. 6908 6909 *Rich Salz* 6910 6911### Changes between 1.0.2k and 1.0.2l [25 May 2017] 6912 6913 * Have 'config' recognise 64-bit mingw and choose 'mingw64' as the target 6914 platform rather than 'mingw'. 6915 6916 *Richard Levitte* 6917 6918### Changes between 1.0.2j and 1.0.2k [26 Jan 2017] 6919 6920 * Truncated packet could crash via OOB read 6921 6922 If one side of an SSL/TLS path is running on a 32-bit host and a specific 6923 cipher is being used, then a truncated packet can cause that host to 6924 perform an out-of-bounds read, usually resulting in a crash. 6925 6926 This issue was reported to OpenSSL by Robert Święcki of Google. 6927 ([CVE-2017-3731]) 6928 6929 *Andy Polyakov* 6930 6931 * BN_mod_exp may produce incorrect results on x86_64 6932 6933 There is a carry propagating bug in the x86_64 Montgomery squaring 6934 procedure. No EC algorithms are affected. Analysis suggests that attacks 6935 against RSA and DSA as a result of this defect would be very difficult to 6936 perform and are not believed likely. Attacks against DH are considered just 6937 feasible (although very difficult) because most of the work necessary to 6938 deduce information about a private key may be performed offline. The amount 6939 of resources required for such an attack would be very significant and 6940 likely only accessible to a limited number of attackers. An attacker would 6941 additionally need online access to an unpatched system using the target 6942 private key in a scenario with persistent DH parameters and a private 6943 key that is shared between multiple clients. For example this can occur by 6944 default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This issue is very 6945 similar to CVE-2015-3193 but must be treated as a separate problem. 6946 6947 This issue was reported to OpenSSL by the OSS-Fuzz project. 6948 ([CVE-2017-3732]) 6949 6950 *Andy Polyakov* 6951 6952 * Montgomery multiplication may produce incorrect results 6953 6954 There is a carry propagating bug in the Broadwell-specific Montgomery 6955 multiplication procedure that handles input lengths divisible by, but 6956 longer than 256 bits. Analysis suggests that attacks against RSA, DSA 6957 and DH private keys are impossible. This is because the subroutine in 6958 question is not used in operations with the private key itself and an input 6959 of the attacker's direct choice. Otherwise the bug can manifest itself as 6960 transient authentication and key negotiation failures or reproducible 6961 erroneous outcome of public-key operations with specially crafted input. 6962 Among EC algorithms only Brainpool P-512 curves are affected and one 6963 presumably can attack ECDH key negotiation. Impact was not analyzed in 6964 detail, because pre-requisites for attack are considered unlikely. Namely 6965 multiple clients have to choose the curve in question and the server has to 6966 share the private key among them, neither of which is default behaviour. 6967 Even then only clients that chose the curve will be affected. 6968 6969 This issue was publicly reported as transient failures and was not 6970 initially recognized as a security issue. Thanks to Richard Morgan for 6971 providing reproducible case. 6972 ([CVE-2016-7055]) 6973 6974 *Andy Polyakov* 6975 6976 * OpenSSL now fails if it receives an unrecognised record type in TLS1.0 6977 or TLS1.1. Previously this only happened in SSLv3 and TLS1.2. This is to 6978 prevent issues where no progress is being made and the peer continually 6979 sends unrecognised record types, using up resources processing them. 6980 6981 *Matt Caswell* 6982 6983### Changes between 1.0.2i and 1.0.2j [26 Sep 2016] 6984 6985 * Missing CRL sanity check 6986 6987 A bug fix which included a CRL sanity check was added to OpenSSL 1.1.0 6988 but was omitted from OpenSSL 1.0.2i. As a result any attempt to use 6989 CRLs in OpenSSL 1.0.2i will crash with a null pointer exception. 6990 6991 This issue only affects the OpenSSL 1.0.2i 6992 ([CVE-2016-7052]) 6993 6994 *Matt Caswell* 6995 6996### Changes between 1.0.2h and 1.0.2i [22 Sep 2016] 6997 6998 * OCSP Status Request extension unbounded memory growth 6999 7000 A malicious client can send an excessively large OCSP Status Request 7001 extension. If that client continually requests renegotiation, sending a 7002 large OCSP Status Request extension each time, then there will be unbounded 7003 memory growth on the server. This will eventually lead to a Denial Of 7004 Service attack through memory exhaustion. Servers with a default 7005 configuration are vulnerable even if they do not support OCSP. Builds using 7006 the "no-ocsp" build time option are not affected. 7007 7008 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 7009 ([CVE-2016-6304]) 7010 7011 *Matt Caswell* 7012 7013 * In order to mitigate the SWEET32 attack, the DES ciphers were moved from 7014 HIGH to MEDIUM. 7015 7016 This issue was reported to OpenSSL Karthikeyan Bhargavan and Gaetan 7017 Leurent (INRIA) 7018 ([CVE-2016-2183]) 7019 7020 *Rich Salz* 7021 7022 * OOB write in MDC2_Update() 7023 7024 An overflow can occur in MDC2_Update() either if called directly or 7025 through the EVP_DigestUpdate() function using MDC2. If an attacker 7026 is able to supply very large amounts of input data after a previous 7027 call to EVP_EncryptUpdate() with a partial block then a length check 7028 can overflow resulting in a heap corruption. 7029 7030 The amount of data needed is comparable to SIZE_MAX which is impractical 7031 on most platforms. 7032 7033 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 7034 ([CVE-2016-6303]) 7035 7036 *Stephen Henson* 7037 7038 * Malformed SHA512 ticket DoS 7039 7040 If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a 7041 DoS attack where a malformed ticket will result in an OOB read which will 7042 ultimately crash. 7043 7044 The use of SHA512 in TLS session tickets is comparatively rare as it requires 7045 a custom server callback and ticket lookup mechanism. 7046 7047 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 7048 ([CVE-2016-6302]) 7049 7050 *Stephen Henson* 7051 7052 * OOB write in BN_bn2dec() 7053 7054 The function BN_bn2dec() does not check the return value of BN_div_word(). 7055 This can cause an OOB write if an application uses this function with an 7056 overly large BIGNUM. This could be a problem if an overly large certificate 7057 or CRL is printed out from an untrusted source. TLS is not affected because 7058 record limits will reject an oversized certificate before it is parsed. 7059 7060 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 7061 ([CVE-2016-2182]) 7062 7063 *Stephen Henson* 7064 7065 * OOB read in TS_OBJ_print_bio() 7066 7067 The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is 7068 the total length the OID text representation would use and not the amount 7069 of data written. This will result in OOB reads when large OIDs are 7070 presented. 7071 7072 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 7073 ([CVE-2016-2180]) 7074 7075 *Stephen Henson* 7076 7077 * Pointer arithmetic undefined behaviour 7078 7079 Avoid some undefined pointer arithmetic 7080 7081 A common idiom in the codebase is to check limits in the following manner: 7082 "p + len > limit" 7083 7084 Where "p" points to some malloc'd data of SIZE bytes and 7085 limit == p + SIZE 7086 7087 "len" here could be from some externally supplied data (e.g. from a TLS 7088 message). 7089 7090 The rules of C pointer arithmetic are such that "p + len" is only well 7091 defined where len <= SIZE. Therefore the above idiom is actually 7092 undefined behaviour. 7093 7094 For example this could cause problems if some malloc implementation 7095 provides an address for "p" such that "p + len" actually overflows for 7096 values of len that are too big and therefore p + len < limit. 7097 7098 This issue was reported to OpenSSL by Guido Vranken 7099 ([CVE-2016-2177]) 7100 7101 *Matt Caswell* 7102 7103 * Constant time flag not preserved in DSA signing 7104 7105 Operations in the DSA signing algorithm should run in constant time in 7106 order to avoid side channel attacks. A flaw in the OpenSSL DSA 7107 implementation means that a non-constant time codepath is followed for 7108 certain operations. This has been demonstrated through a cache-timing 7109 attack to be sufficient for an attacker to recover the private DSA key. 7110 7111 This issue was reported by César Pereida (Aalto University), Billy Brumley 7112 (Tampere University of Technology), and Yuval Yarom (The University of 7113 Adelaide and NICTA). 7114 ([CVE-2016-2178]) 7115 7116 *César Pereida* 7117 7118 * DTLS buffered message DoS 7119 7120 In a DTLS connection where handshake messages are delivered out-of-order 7121 those messages that OpenSSL is not yet ready to process will be buffered 7122 for later use. Under certain circumstances, a flaw in the logic means that 7123 those messages do not get removed from the buffer even though the handshake 7124 has been completed. An attacker could force up to approx. 15 messages to 7125 remain in the buffer when they are no longer required. These messages will 7126 be cleared when the DTLS connection is closed. The default maximum size for 7127 a message is 100k. Therefore, the attacker could force an additional 1500k 7128 to be consumed per connection. By opening many simultaneous connections an 7129 attacker could cause a DoS attack through memory exhaustion. 7130 7131 This issue was reported to OpenSSL by Quan Luo. 7132 ([CVE-2016-2179]) 7133 7134 *Matt Caswell* 7135 7136 * DTLS replay protection DoS 7137 7138 A flaw in the DTLS replay attack protection mechanism means that records 7139 that arrive for future epochs update the replay protection "window" before 7140 the MAC for the record has been validated. This could be exploited by an 7141 attacker by sending a record for the next epoch (which does not have to 7142 decrypt or have a valid MAC), with a very large sequence number. This means 7143 that all subsequent legitimate packets are dropped causing a denial of 7144 service for a specific DTLS connection. 7145 7146 This issue was reported to OpenSSL by the OCAP audit team. 7147 ([CVE-2016-2181]) 7148 7149 *Matt Caswell* 7150 7151 * Certificate message OOB reads 7152 7153 In OpenSSL 1.0.2 and earlier some missing message length checks can result 7154 in OOB reads of up to 2 bytes beyond an allocated buffer. There is a 7155 theoretical DoS risk but this has not been observed in practice on common 7156 platforms. 7157 7158 The messages affected are client certificate, client certificate request 7159 and server certificate. As a result the attack can only be performed 7160 against a client or a server which enables client authentication. 7161 7162 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 7163 ([CVE-2016-6306]) 7164 7165 *Stephen Henson* 7166 7167### Changes between 1.0.2g and 1.0.2h [3 May 2016] 7168 7169 * Prevent padding oracle in AES-NI CBC MAC check 7170 7171 A MITM attacker can use a padding oracle attack to decrypt traffic 7172 when the connection uses an AES CBC cipher and the server support 7173 AES-NI. 7174 7175 This issue was introduced as part of the fix for Lucky 13 padding 7176 attack ([CVE-2013-0169]). The padding check was rewritten to be in 7177 constant time by making sure that always the same bytes are read and 7178 compared against either the MAC or padding bytes. But it no longer 7179 checked that there was enough data to have both the MAC and padding 7180 bytes. 7181 7182 This issue was reported by Juraj Somorovsky using TLS-Attacker. 7183 7184 *Kurt Roeckx* 7185 7186 * Fix EVP_EncodeUpdate overflow 7187 7188 An overflow can occur in the EVP_EncodeUpdate() function which is used for 7189 Base64 encoding of binary data. If an attacker is able to supply very large 7190 amounts of input data then a length check can overflow resulting in a heap 7191 corruption. 7192 7193 Internally to OpenSSL the EVP_EncodeUpdate() function is primarily used by 7194 the `PEM_write_bio*` family of functions. These are mainly used within the 7195 OpenSSL command line applications, so any application which processes data 7196 from an untrusted source and outputs it as a PEM file should be considered 7197 vulnerable to this issue. User applications that call these APIs directly 7198 with large amounts of untrusted data may also be vulnerable. 7199 7200 This issue was reported by Guido Vranken. 7201 ([CVE-2016-2105]) 7202 7203 *Matt Caswell* 7204 7205 * Fix EVP_EncryptUpdate overflow 7206 7207 An overflow can occur in the EVP_EncryptUpdate() function. If an attacker 7208 is able to supply very large amounts of input data after a previous call to 7209 EVP_EncryptUpdate() with a partial block then a length check can overflow 7210 resulting in a heap corruption. Following an analysis of all OpenSSL 7211 internal usage of the EVP_EncryptUpdate() function all usage is one of two 7212 forms. The first form is where the EVP_EncryptUpdate() call is known to be 7213 the first called function after an EVP_EncryptInit(), and therefore that 7214 specific call must be safe. The second form is where the length passed to 7215 EVP_EncryptUpdate() can be seen from the code to be some small value and 7216 therefore there is no possibility of an overflow. Since all instances are 7217 one of these two forms, it is believed that there can be no overflows in 7218 internal code due to this problem. It should be noted that 7219 EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths. 7220 Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances 7221 of these calls have also been analysed too and it is believed there are no 7222 instances in internal usage where an overflow could occur. 7223 7224 This issue was reported by Guido Vranken. 7225 ([CVE-2016-2106]) 7226 7227 *Matt Caswell* 7228 7229 * Prevent ASN.1 BIO excessive memory allocation 7230 7231 When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio() 7232 a short invalid encoding can cause allocation of large amounts of memory 7233 potentially consuming excessive resources or exhausting memory. 7234 7235 Any application parsing untrusted data through d2i BIO functions is 7236 affected. The memory based functions such as d2i_X509() are *not* affected. 7237 Since the memory based functions are used by the TLS library, TLS 7238 applications are not affected. 7239 7240 This issue was reported by Brian Carpenter. 7241 ([CVE-2016-2109]) 7242 7243 *Stephen Henson* 7244 7245 * EBCDIC overread 7246 7247 ASN1 Strings that are over 1024 bytes can cause an overread in applications 7248 using the X509_NAME_oneline() function on EBCDIC systems. This could result 7249 in arbitrary stack data being returned in the buffer. 7250 7251 This issue was reported by Guido Vranken. 7252 ([CVE-2016-2176]) 7253 7254 *Matt Caswell* 7255 7256 * Modify behavior of ALPN to invoke callback after SNI/servername 7257 callback, such that updates to the SSL_CTX affect ALPN. 7258 7259 *Todd Short* 7260 7261 * Remove LOW from the DEFAULT cipher list. This removes singles DES from the 7262 default. 7263 7264 *Kurt Roeckx* 7265 7266 * Only remove the SSLv2 methods with the no-ssl2-method option. When the 7267 methods are enabled and ssl2 is disabled the methods return NULL. 7268 7269 *Kurt Roeckx* 7270 7271### Changes between 1.0.2f and 1.0.2g [1 Mar 2016] 7272 7273* Disable weak ciphers in SSLv3 and up in default builds of OpenSSL. 7274 Builds that are not configured with "enable-weak-ssl-ciphers" will not 7275 provide any "EXPORT" or "LOW" strength ciphers. 7276 7277 *Viktor Dukhovni* 7278 7279* Disable SSLv2 default build, default negotiation and weak ciphers. SSLv2 7280 is by default disabled at build-time. Builds that are not configured with 7281 "enable-ssl2" will not support SSLv2. Even if "enable-ssl2" is used, 7282 users who want to negotiate SSLv2 via the version-flexible SSLv23_method() 7283 will need to explicitly call either of: 7284 7285 SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2); 7286 or 7287 SSL_clear_options(ssl, SSL_OP_NO_SSLv2); 7288 7289 as appropriate. Even if either of those is used, or the application 7290 explicitly uses the version-specific SSLv2_method() or its client and 7291 server variants, SSLv2 ciphers vulnerable to exhaustive search key 7292 recovery have been removed. Specifically, the SSLv2 40-bit EXPORT 7293 ciphers, and SSLv2 56-bit DES are no longer available. 7294 ([CVE-2016-0800]) 7295 7296 *Viktor Dukhovni* 7297 7298 * Fix a double-free in DSA code 7299 7300 A double free bug was discovered when OpenSSL parses malformed DSA private 7301 keys and could lead to a DoS attack or memory corruption for applications 7302 that receive DSA private keys from untrusted sources. This scenario is 7303 considered rare. 7304 7305 This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using 7306 libFuzzer. 7307 ([CVE-2016-0705]) 7308 7309 *Stephen Henson* 7310 7311 * Disable SRP fake user seed to address a server memory leak. 7312 7313 Add a new method SRP_VBASE_get1_by_user that handles the seed properly. 7314 7315 SRP_VBASE_get_by_user had inconsistent memory management behaviour. 7316 In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user 7317 was changed to ignore the "fake user" SRP seed, even if the seed 7318 is configured. 7319 7320 Users should use SRP_VBASE_get1_by_user instead. Note that in 7321 SRP_VBASE_get1_by_user, caller must free the returned value. Note 7322 also that even though configuring the SRP seed attempts to hide 7323 invalid usernames by continuing the handshake with fake 7324 credentials, this behaviour is not constant time and no strong 7325 guarantees are made that the handshake is indistinguishable from 7326 that of a valid user. 7327 ([CVE-2016-0798]) 7328 7329 *Emilia Käsper* 7330 7331 * Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption 7332 7333 In the BN_hex2bn function the number of hex digits is calculated using an 7334 int value `i`. Later `bn_expand` is called with a value of `i * 4`. For 7335 large values of `i` this can result in `bn_expand` not allocating any 7336 memory because `i * 4` is negative. This can leave the internal BIGNUM data 7337 field as NULL leading to a subsequent NULL ptr deref. For very large values 7338 of `i`, the calculation `i * 4` could be a positive value smaller than `i`. 7339 In this case memory is allocated to the internal BIGNUM data field, but it 7340 is insufficiently sized leading to heap corruption. A similar issue exists 7341 in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn 7342 is ever called by user applications with very large untrusted hex/dec data. 7343 This is anticipated to be a rare occurrence. 7344 7345 All OpenSSL internal usage of these functions use data that is not expected 7346 to be untrusted, e.g. config file data or application command line 7347 arguments. If user developed applications generate config file data based 7348 on untrusted data then it is possible that this could also lead to security 7349 consequences. This is also anticipated to be rare. 7350 7351 This issue was reported to OpenSSL by Guido Vranken. 7352 ([CVE-2016-0797]) 7353 7354 *Matt Caswell* 7355 7356 * Fix memory issues in `BIO_*printf` functions 7357 7358 The internal `fmtstr` function used in processing a "%s" format string in 7359 the `BIO_*printf` functions could overflow while calculating the length of a 7360 string and cause an OOB read when printing very long strings. 7361 7362 Additionally the internal `doapr_outch` function can attempt to write to an 7363 OOB memory location (at an offset from the NULL pointer) in the event of a 7364 memory allocation failure. In 1.0.2 and below this could be caused where 7365 the size of a buffer to be allocated is greater than INT_MAX. E.g. this 7366 could be in processing a very long "%s" format string. Memory leaks can 7367 also occur. 7368 7369 The first issue may mask the second issue dependent on compiler behaviour. 7370 These problems could enable attacks where large amounts of untrusted data 7371 is passed to the `BIO_*printf` functions. If applications use these functions 7372 in this way then they could be vulnerable. OpenSSL itself uses these 7373 functions when printing out human-readable dumps of ASN.1 data. Therefore 7374 applications that print this data could be vulnerable if the data is from 7375 untrusted sources. OpenSSL command line applications could also be 7376 vulnerable where they print out ASN.1 data, or if untrusted data is passed 7377 as command line arguments. 7378 7379 Libssl is not considered directly vulnerable. Additionally certificates etc 7380 received via remote connections via libssl are also unlikely to be able to 7381 trigger these issues because of message size limits enforced within libssl. 7382 7383 This issue was reported to OpenSSL Guido Vranken. 7384 ([CVE-2016-0799]) 7385 7386 *Matt Caswell* 7387 7388 * Side channel attack on modular exponentiation 7389 7390 A side-channel attack was found which makes use of cache-bank conflicts on 7391 the Intel Sandy-Bridge microarchitecture which could lead to the recovery 7392 of RSA keys. The ability to exploit this issue is limited as it relies on 7393 an attacker who has control of code in a thread running on the same 7394 hyper-threaded core as the victim thread which is performing decryptions. 7395 7396 This issue was reported to OpenSSL by Yuval Yarom, The University of 7397 Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and 7398 Nadia Heninger, University of Pennsylvania with more information at 7399 <http://cachebleed.info>. 7400 ([CVE-2016-0702]) 7401 7402 *Andy Polyakov* 7403 7404 * Change the `req` command to generate a 2048-bit RSA/DSA key by default, 7405 if no keysize is specified with default_bits. This fixes an 7406 omission in an earlier change that changed all RSA/DSA key generation 7407 commands to use 2048 bits by default. 7408 7409 *Emilia Käsper* 7410 7411### Changes between 1.0.2e and 1.0.2f [28 Jan 2016] 7412 7413 * DH small subgroups 7414 7415 Historically OpenSSL only ever generated DH parameters based on "safe" 7416 primes. More recently (in version 1.0.2) support was provided for 7417 generating X9.42 style parameter files such as those required for RFC 5114 7418 support. The primes used in such files may not be "safe". Where an 7419 application is using DH configured with parameters based on primes that are 7420 not "safe" then an attacker could use this fact to find a peer's private 7421 DH exponent. This attack requires that the attacker complete multiple 7422 handshakes in which the peer uses the same private DH exponent. For example 7423 this could be used to discover a TLS server's private DH exponent if it's 7424 reusing the private DH exponent or it's using a static DH ciphersuite. 7425 7426 OpenSSL provides the option SSL_OP_SINGLE_DH_USE for ephemeral DH (DHE) in 7427 TLS. It is not on by default. If the option is not set then the server 7428 reuses the same private DH exponent for the life of the server process and 7429 would be vulnerable to this attack. It is believed that many popular 7430 applications do set this option and would therefore not be at risk. 7431 7432 The fix for this issue adds an additional check where a "q" parameter is 7433 available (as is the case in X9.42 based parameters). This detects the 7434 only known attack, and is the only possible defense for static DH 7435 ciphersuites. This could have some performance impact. 7436 7437 Additionally the SSL_OP_SINGLE_DH_USE option has been switched on by 7438 default and cannot be disabled. This could have some performance impact. 7439 7440 This issue was reported to OpenSSL by Antonio Sanso (Adobe). 7441 ([CVE-2016-0701]) 7442 7443 *Matt Caswell* 7444 7445 * SSLv2 doesn't block disabled ciphers 7446 7447 A malicious client can negotiate SSLv2 ciphers that have been disabled on 7448 the server and complete SSLv2 handshakes even if all SSLv2 ciphers have 7449 been disabled, provided that the SSLv2 protocol was not also disabled via 7450 SSL_OP_NO_SSLv2. 7451 7452 This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram 7453 and Sebastian Schinzel. 7454 ([CVE-2015-3197]) 7455 7456 *Viktor Dukhovni* 7457 7458### Changes between 1.0.2d and 1.0.2e [3 Dec 2015] 7459 7460 * BN_mod_exp may produce incorrect results on x86_64 7461 7462 There is a carry propagating bug in the x86_64 Montgomery squaring 7463 procedure. No EC algorithms are affected. Analysis suggests that attacks 7464 against RSA and DSA as a result of this defect would be very difficult to 7465 perform and are not believed likely. Attacks against DH are considered just 7466 feasible (although very difficult) because most of the work necessary to 7467 deduce information about a private key may be performed offline. The amount 7468 of resources required for such an attack would be very significant and 7469 likely only accessible to a limited number of attackers. An attacker would 7470 additionally need online access to an unpatched system using the target 7471 private key in a scenario with persistent DH parameters and a private 7472 key that is shared between multiple clients. For example this can occur by 7473 default in OpenSSL DHE based SSL/TLS ciphersuites. 7474 7475 This issue was reported to OpenSSL by Hanno Böck. 7476 ([CVE-2015-3193]) 7477 7478 *Andy Polyakov* 7479 7480 * Certificate verify crash with missing PSS parameter 7481 7482 The signature verification routines will crash with a NULL pointer 7483 dereference if presented with an ASN.1 signature using the RSA PSS 7484 algorithm and absent mask generation function parameter. Since these 7485 routines are used to verify certificate signature algorithms this can be 7486 used to crash any certificate verification operation and exploited in a 7487 DoS attack. Any application which performs certificate verification is 7488 vulnerable including OpenSSL clients and servers which enable client 7489 authentication. 7490 7491 This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG). 7492 ([CVE-2015-3194]) 7493 7494 *Stephen Henson* 7495 7496 * X509_ATTRIBUTE memory leak 7497 7498 When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak 7499 memory. This structure is used by the PKCS#7 and CMS routines so any 7500 application which reads PKCS#7 or CMS data from untrusted sources is 7501 affected. SSL/TLS is not affected. 7502 7503 This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using 7504 libFuzzer. 7505 ([CVE-2015-3195]) 7506 7507 *Stephen Henson* 7508 7509 * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs. 7510 This changes the decoding behaviour for some invalid messages, 7511 though the change is mostly in the more lenient direction, and 7512 legacy behaviour is preserved as much as possible. 7513 7514 *Emilia Käsper* 7515 7516 * In DSA_generate_parameters_ex, if the provided seed is too short, 7517 return an error 7518 7519 *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>* 7520 7521### Changes between 1.0.2c and 1.0.2d [9 Jul 2015] 7522 7523 * Alternate chains certificate forgery 7524 7525 During certificate verification, OpenSSL will attempt to find an 7526 alternative certificate chain if the first attempt to build such a chain 7527 fails. An error in the implementation of this logic can mean that an 7528 attacker could cause certain checks on untrusted certificates to be 7529 bypassed, such as the CA flag, enabling them to use a valid leaf 7530 certificate to act as a CA and "issue" an invalid certificate. 7531 7532 This issue was reported to OpenSSL by Adam Langley/David Benjamin 7533 (Google/BoringSSL). 7534 7535 *Matt Caswell* 7536 7537### Changes between 1.0.2b and 1.0.2c [12 Jun 2015] 7538 7539 * Fix HMAC ABI incompatibility. The previous version introduced an ABI 7540 incompatibility in the handling of HMAC. The previous ABI has now been 7541 restored. 7542 7543 *Matt Caswell* 7544 7545### Changes between 1.0.2a and 1.0.2b [11 Jun 2015] 7546 7547 * Malformed ECParameters causes infinite loop 7548 7549 When processing an ECParameters structure OpenSSL enters an infinite loop 7550 if the curve specified is over a specially malformed binary polynomial 7551 field. 7552 7553 This can be used to perform denial of service against any 7554 system which processes public keys, certificate requests or 7555 certificates. This includes TLS clients and TLS servers with 7556 client authentication enabled. 7557 7558 This issue was reported to OpenSSL by Joseph Barr-Pixton. 7559 ([CVE-2015-1788]) 7560 7561 *Andy Polyakov* 7562 7563 * Exploitable out-of-bounds read in X509_cmp_time 7564 7565 X509_cmp_time does not properly check the length of the ASN1_TIME 7566 string and can read a few bytes out of bounds. In addition, 7567 X509_cmp_time accepts an arbitrary number of fractional seconds in the 7568 time string. 7569 7570 An attacker can use this to craft malformed certificates and CRLs of 7571 various sizes and potentially cause a segmentation fault, resulting in 7572 a DoS on applications that verify certificates or CRLs. TLS clients 7573 that verify CRLs are affected. TLS clients and servers with client 7574 authentication enabled may be affected if they use custom verification 7575 callbacks. 7576 7577 This issue was reported to OpenSSL by Robert Swiecki (Google), and 7578 independently by Hanno Böck. 7579 ([CVE-2015-1789]) 7580 7581 *Emilia Käsper* 7582 7583 * PKCS7 crash with missing EnvelopedContent 7584 7585 The PKCS#7 parsing code does not handle missing inner EncryptedContent 7586 correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs 7587 with missing content and trigger a NULL pointer dereference on parsing. 7588 7589 Applications that decrypt PKCS#7 data or otherwise parse PKCS#7 7590 structures from untrusted sources are affected. OpenSSL clients and 7591 servers are not affected. 7592 7593 This issue was reported to OpenSSL by Michal Zalewski (Google). 7594 ([CVE-2015-1790]) 7595 7596 *Emilia Käsper* 7597 7598 * CMS verify infinite loop with unknown hash function 7599 7600 When verifying a signedData message the CMS code can enter an infinite loop 7601 if presented with an unknown hash function OID. This can be used to perform 7602 denial of service against any system which verifies signedData messages using 7603 the CMS code. 7604 This issue was reported to OpenSSL by Johannes Bauer. 7605 ([CVE-2015-1792]) 7606 7607 *Stephen Henson* 7608 7609 * Race condition handling NewSessionTicket 7610 7611 If a NewSessionTicket is received by a multi-threaded client when attempting to 7612 reuse a previous ticket then a race condition can occur potentially leading to 7613 a double free of the ticket data. 7614 ([CVE-2015-1791]) 7615 7616 *Matt Caswell* 7617 7618 * Only support 256-bit or stronger elliptic curves with the 7619 'ecdh_auto' setting (server) or by default (client). Of supported 7620 curves, prefer P-256 (both). 7621 7622 *Emilia Kasper* 7623 7624### Changes between 1.0.2 and 1.0.2a [19 Mar 2015] 7625 7626 * ClientHello sigalgs DoS fix 7627 7628 If a client connects to an OpenSSL 1.0.2 server and renegotiates with an 7629 invalid signature algorithms extension a NULL pointer dereference will 7630 occur. This can be exploited in a DoS attack against the server. 7631 7632 This issue was was reported to OpenSSL by David Ramos of Stanford 7633 University. 7634 ([CVE-2015-0291]) 7635 7636 *Stephen Henson and Matt Caswell* 7637 7638 * Multiblock corrupted pointer fix 7639 7640 OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This 7641 feature only applies on 64 bit x86 architecture platforms that support AES 7642 NI instructions. A defect in the implementation of "multiblock" can cause 7643 OpenSSL's internal write buffer to become incorrectly set to NULL when 7644 using non-blocking IO. Typically, when the user application is using a 7645 socket BIO for writing, this will only result in a failed connection. 7646 However if some other BIO is used then it is likely that a segmentation 7647 fault will be triggered, thus enabling a potential DoS attack. 7648 7649 This issue was reported to OpenSSL by Daniel Danner and Rainer Mueller. 7650 ([CVE-2015-0290]) 7651 7652 *Matt Caswell* 7653 7654 * Segmentation fault in DTLSv1_listen fix 7655 7656 The DTLSv1_listen function is intended to be stateless and processes the 7657 initial ClientHello from many peers. It is common for user code to loop 7658 over the call to DTLSv1_listen until a valid ClientHello is received with 7659 an associated cookie. A defect in the implementation of DTLSv1_listen means 7660 that state is preserved in the SSL object from one invocation to the next 7661 that can lead to a segmentation fault. Errors processing the initial 7662 ClientHello can trigger this scenario. An example of such an error could be 7663 that a DTLS1.0 only client is attempting to connect to a DTLS1.2 only 7664 server. 7665 7666 This issue was reported to OpenSSL by Per Allansson. 7667 ([CVE-2015-0207]) 7668 7669 *Matt Caswell* 7670 7671 * Segmentation fault in ASN1_TYPE_cmp fix 7672 7673 The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is 7674 made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check 7675 certificate signature algorithm consistency this can be used to crash any 7676 certificate verification operation and exploited in a DoS attack. Any 7677 application which performs certificate verification is vulnerable including 7678 OpenSSL clients and servers which enable client authentication. 7679 ([CVE-2015-0286]) 7680 7681 *Stephen Henson* 7682 7683 * Segmentation fault for invalid PSS parameters fix 7684 7685 The signature verification routines will crash with a NULL pointer 7686 dereference if presented with an ASN.1 signature using the RSA PSS 7687 algorithm and invalid parameters. Since these routines are used to verify 7688 certificate signature algorithms this can be used to crash any 7689 certificate verification operation and exploited in a DoS attack. Any 7690 application which performs certificate verification is vulnerable including 7691 OpenSSL clients and servers which enable client authentication. 7692 7693 This issue was was reported to OpenSSL by Brian Carpenter. 7694 ([CVE-2015-0208]) 7695 7696 *Stephen Henson* 7697 7698 * ASN.1 structure reuse memory corruption fix 7699 7700 Reusing a structure in ASN.1 parsing may allow an attacker to cause 7701 memory corruption via an invalid write. Such reuse is and has been 7702 strongly discouraged and is believed to be rare. 7703 7704 Applications that parse structures containing CHOICE or ANY DEFINED BY 7705 components may be affected. Certificate parsing (d2i_X509 and related 7706 functions) are however not affected. OpenSSL clients and servers are 7707 not affected. 7708 ([CVE-2015-0287]) 7709 7710 *Stephen Henson* 7711 7712 * PKCS7 NULL pointer dereferences fix 7713 7714 The PKCS#7 parsing code does not handle missing outer ContentInfo 7715 correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with 7716 missing content and trigger a NULL pointer dereference on parsing. 7717 7718 Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or 7719 otherwise parse PKCS#7 structures from untrusted sources are 7720 affected. OpenSSL clients and servers are not affected. 7721 7722 This issue was reported to OpenSSL by Michal Zalewski (Google). 7723 ([CVE-2015-0289]) 7724 7725 *Emilia Käsper* 7726 7727 * DoS via reachable assert in SSLv2 servers fix 7728 7729 A malicious client can trigger an OPENSSL_assert (i.e., an abort) in 7730 servers that both support SSLv2 and enable export cipher suites by sending 7731 a specially crafted SSLv2 CLIENT-MASTER-KEY message. 7732 7733 This issue was discovered by Sean Burford (Google) and Emilia Käsper 7734 (OpenSSL development team). 7735 ([CVE-2015-0293]) 7736 7737 *Emilia Käsper* 7738 7739 * Empty CKE with client auth and DHE fix 7740 7741 If client auth is used then a server can seg fault in the event of a DHE 7742 ciphersuite being selected and a zero length ClientKeyExchange message 7743 being sent by the client. This could be exploited in a DoS attack. 7744 ([CVE-2015-1787]) 7745 7746 *Matt Caswell* 7747 7748 * Handshake with unseeded PRNG fix 7749 7750 Under certain conditions an OpenSSL 1.0.2 client can complete a handshake 7751 with an unseeded PRNG. The conditions are: 7752 - The client is on a platform where the PRNG has not been seeded 7753 automatically, and the user has not seeded manually 7754 - A protocol specific client method version has been used (i.e. not 7755 SSL_client_methodv23) 7756 - A ciphersuite is used that does not require additional random data from 7757 the PRNG beyond the initial ClientHello client random (e.g. PSK-RC4-SHA). 7758 7759 If the handshake succeeds then the client random that has been used will 7760 have been generated from a PRNG with insufficient entropy and therefore the 7761 output may be predictable. 7762 7763 For example using the following command with an unseeded openssl will 7764 succeed on an unpatched platform: 7765 7766 openssl s_client -psk 1a2b3c4d -tls1_2 -cipher PSK-RC4-SHA 7767 ([CVE-2015-0285]) 7768 7769 *Matt Caswell* 7770 7771 * Use After Free following d2i_ECPrivatekey error fix 7772 7773 A malformed EC private key file consumed via the d2i_ECPrivateKey function 7774 could cause a use after free condition. This, in turn, could cause a double 7775 free in several private key parsing functions (such as d2i_PrivateKey 7776 or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption 7777 for applications that receive EC private keys from untrusted 7778 sources. This scenario is considered rare. 7779 7780 This issue was discovered by the BoringSSL project and fixed in their 7781 commit 517073cd4b. 7782 ([CVE-2015-0209]) 7783 7784 *Matt Caswell* 7785 7786 * X509_to_X509_REQ NULL pointer deref fix 7787 7788 The function X509_to_X509_REQ will crash with a NULL pointer dereference if 7789 the certificate key is invalid. This function is rarely used in practice. 7790 7791 This issue was discovered by Brian Carpenter. 7792 ([CVE-2015-0288]) 7793 7794 *Stephen Henson* 7795 7796 * Removed the export ciphers from the DEFAULT ciphers 7797 7798 *Kurt Roeckx* 7799 7800### Changes between 1.0.1l and 1.0.2 [22 Jan 2015] 7801 7802 * Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g. 7803 ARMv5 through ARMv8, as opposite to "locking" it to single one. 7804 So far those who have to target multiple platforms would compromise 7805 and argue that binary targeting say ARMv5 would still execute on 7806 ARMv8. "Universal" build resolves this compromise by providing 7807 near-optimal performance even on newer platforms. 7808 7809 *Andy Polyakov* 7810 7811 * Accelerated NIST P-256 elliptic curve implementation for x86_64 7812 (other platforms pending). 7813 7814 *Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov* 7815 7816 * Add support for the SignedCertificateTimestampList certificate and 7817 OCSP response extensions from RFC6962. 7818 7819 *Rob Stradling* 7820 7821 * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.) 7822 for corner cases. (Certain input points at infinity could lead to 7823 bogus results, with non-infinity inputs mapped to infinity too.) 7824 7825 *Bodo Moeller* 7826 7827 * Initial support for PowerISA 2.0.7, first implemented in POWER8. 7828 This covers AES, SHA256/512 and GHASH. "Initial" means that most 7829 common cases are optimized and there still is room for further 7830 improvements. Vector Permutation AES for Altivec is also added. 7831 7832 *Andy Polyakov* 7833 7834 * Add support for little-endian ppc64 Linux target. 7835 7836 *Marcelo Cerri (IBM)* 7837 7838 * Initial support for AMRv8 ISA crypto extensions. This covers AES, 7839 SHA1, SHA256 and GHASH. "Initial" means that most common cases 7840 are optimized and there still is room for further improvements. 7841 Both 32- and 64-bit modes are supported. 7842 7843 *Andy Polyakov, Ard Biesheuvel (Linaro)* 7844 7845 * Improved ARMv7 NEON support. 7846 7847 *Andy Polyakov* 7848 7849 * Support for SPARC Architecture 2011 crypto extensions, first 7850 implemented in SPARC T4. This covers AES, DES, Camellia, SHA1, 7851 SHA256/512, MD5, GHASH and modular exponentiation. 7852 7853 *Andy Polyakov, David Miller* 7854 7855 * Accelerated modular exponentiation for Intel processors, a.k.a. 7856 RSAZ. 7857 7858 *Shay Gueron & Vlad Krasnov (Intel Corp)* 7859 7860 * Support for new and upcoming Intel processors, including AVX2, 7861 BMI and SHA ISA extensions. This includes additional "stitched" 7862 implementations, AESNI-SHA256 and GCM, and multi-buffer support 7863 for TLS encrypt. 7864 7865 This work was sponsored by Intel Corp. 7866 7867 *Andy Polyakov* 7868 7869 * Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method() 7870 supports both DTLS 1.2 and 1.0 and should use whatever version the peer 7871 supports and DTLSv1_2_*_method() which supports DTLS 1.2 only. 7872 7873 *Steve Henson* 7874 7875 * Use algorithm specific chains in SSL_CTX_use_certificate_chain_file(): 7876 this fixes a limitation in previous versions of OpenSSL. 7877 7878 *Steve Henson* 7879 7880 * Extended RSA OAEP support via EVP_PKEY API. Options to specify digest, 7881 MGF1 digest and OAEP label. 7882 7883 *Steve Henson* 7884 7885 * Add EVP support for key wrapping algorithms, to avoid problems with 7886 existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in 7887 the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap 7888 algorithms and include tests cases. 7889 7890 *Steve Henson* 7891 7892 * Add functions to allocate and set the fields of an ECDSA_METHOD 7893 structure. 7894 7895 *Douglas E. Engert, Steve Henson* 7896 7897 * New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the 7898 difference in days and seconds between two tm or ASN1_TIME structures. 7899 7900 *Steve Henson* 7901 7902 * Add -rev test option to s_server to just reverse order of characters 7903 received by client and send back to server. Also prints an abbreviated 7904 summary of the connection parameters. 7905 7906 *Steve Henson* 7907 7908 * New option -brief for s_client and s_server to print out a brief summary 7909 of connection parameters. 7910 7911 *Steve Henson* 7912 7913 * Add callbacks for arbitrary TLS extensions. 7914 7915 *Trevor Perrin <trevp@trevp.net> and Ben Laurie* 7916 7917 * New option -crl_download in several openssl utilities to download CRLs 7918 from CRLDP extension in certificates. 7919 7920 *Steve Henson* 7921 7922 * New options -CRL and -CRLform for s_client and s_server for CRLs. 7923 7924 *Steve Henson* 7925 7926 * New function X509_CRL_diff to generate a delta CRL from the difference 7927 of two full CRLs. Add support to "crl" utility. 7928 7929 *Steve Henson* 7930 7931 * New functions to set lookup_crls function and to retrieve 7932 X509_STORE from X509_STORE_CTX. 7933 7934 *Steve Henson* 7935 7936 * Print out deprecated issuer and subject unique ID fields in 7937 certificates. 7938 7939 *Steve Henson* 7940 7941 * Extend OCSP I/O functions so they can be used for simple general purpose 7942 HTTP as well as OCSP. New wrapper function which can be used to download 7943 CRLs using the OCSP API. 7944 7945 *Steve Henson* 7946 7947 * Delegate command line handling in s_client/s_server to SSL_CONF APIs. 7948 7949 *Steve Henson* 7950 7951 * `SSL_CONF*` functions. These provide a common framework for application 7952 configuration using configuration files or command lines. 7953 7954 *Steve Henson* 7955 7956 * SSL/TLS tracing code. This parses out SSL/TLS records using the 7957 message callback and prints the results. Needs compile time option 7958 "enable-ssl-trace". New options to s_client and s_server to enable 7959 tracing. 7960 7961 *Steve Henson* 7962 7963 * New ctrl and macro to retrieve supported points extensions. 7964 Print out extension in s_server and s_client. 7965 7966 *Steve Henson* 7967 7968 * New functions to retrieve certificate signature and signature 7969 OID NID. 7970 7971 *Steve Henson* 7972 7973 * Add functions to retrieve and manipulate the raw cipherlist sent by a 7974 client to OpenSSL. 7975 7976 *Steve Henson* 7977 7978 * New Suite B modes for TLS code. These use and enforce the requirements 7979 of RFC6460: restrict ciphersuites, only permit Suite B algorithms and 7980 only use Suite B curves. The Suite B modes can be set by using the 7981 strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring. 7982 7983 *Steve Henson* 7984 7985 * New chain verification flags for Suite B levels of security. Check 7986 algorithms are acceptable when flags are set in X509_verify_cert. 7987 7988 *Steve Henson* 7989 7990 * Make tls1_check_chain return a set of flags indicating checks passed 7991 by a certificate chain. Add additional tests to handle client 7992 certificates: checks for matching certificate type and issuer name 7993 comparison. 7994 7995 *Steve Henson* 7996 7997 * If an attempt is made to use a signature algorithm not in the peer 7998 preference list abort the handshake. If client has no suitable 7999 signature algorithms in response to a certificate request do not 8000 use the certificate. 8001 8002 *Steve Henson* 8003 8004 * If server EC tmp key is not in client preference list abort handshake. 8005 8006 *Steve Henson* 8007 8008 * Add support for certificate stores in CERT structure. This makes it 8009 possible to have different stores per SSL structure or one store in 8010 the parent SSL_CTX. Include distinct stores for certificate chain 8011 verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN 8012 to build and store a certificate chain in CERT structure: returning 8013 an error if the chain cannot be built: this will allow applications 8014 to test if a chain is correctly configured. 8015 8016 Note: if the CERT based stores are not set then the parent SSL_CTX 8017 store is used to retain compatibility with existing behaviour. 8018 8019 *Steve Henson* 8020 8021 * New function ssl_set_client_disabled to set a ciphersuite disabled 8022 mask based on the current session, check mask when sending client 8023 hello and checking the requested ciphersuite. 8024 8025 *Steve Henson* 8026 8027 * New ctrls to retrieve and set certificate types in a certificate 8028 request message. Print out received values in s_client. If certificate 8029 types is not set with custom values set sensible values based on 8030 supported signature algorithms. 8031 8032 *Steve Henson* 8033 8034 * Support for distinct client and server supported signature algorithms. 8035 8036 *Steve Henson* 8037 8038 * Add certificate callback. If set this is called whenever a certificate 8039 is required by client or server. An application can decide which 8040 certificate chain to present based on arbitrary criteria: for example 8041 supported signature algorithms. Add very simple example to s_server. 8042 This fixes many of the problems and restrictions of the existing client 8043 certificate callback: for example you can now clear an existing 8044 certificate and specify the whole chain. 8045 8046 *Steve Henson* 8047 8048 * Add new "valid_flags" field to CERT_PKEY structure which determines what 8049 the certificate can be used for (if anything). Set valid_flags field 8050 in new tls1_check_chain function. Simplify ssl_set_cert_masks which used 8051 to have similar checks in it. 8052 8053 Add new "cert_flags" field to CERT structure and include a "strict mode". 8054 This enforces some TLS certificate requirements (such as only permitting 8055 certificate signature algorithms contained in the supported algorithms 8056 extension) which some implementations ignore: this option should be used 8057 with caution as it could cause interoperability issues. 8058 8059 *Steve Henson* 8060 8061 * Update and tidy signature algorithm extension processing. Work out 8062 shared signature algorithms based on preferences and peer algorithms 8063 and print them out in s_client and s_server. Abort handshake if no 8064 shared signature algorithms. 8065 8066 *Steve Henson* 8067 8068 * Add new functions to allow customised supported signature algorithms 8069 for SSL and SSL_CTX structures. Add options to s_client and s_server 8070 to support them. 8071 8072 *Steve Henson* 8073 8074 * New function SSL_certs_clear() to delete all references to certificates 8075 from an SSL structure. Before this once a certificate had been added 8076 it couldn't be removed. 8077 8078 *Steve Henson* 8079 8080 * Integrate hostname, email address and IP address checking with certificate 8081 verification. New verify options supporting checking in openssl utility. 8082 8083 *Steve Henson* 8084 8085 * Fixes and wildcard matching support to hostname and email checking 8086 functions. Add manual page. 8087 8088 *Florian Weimer (Red Hat Product Security Team)* 8089 8090 * New functions to check a hostname email or IP address against a 8091 certificate. Add options x509 utility to print results of checks against 8092 a certificate. 8093 8094 *Steve Henson* 8095 8096 * Fix OCSP checking. 8097 8098 *Rob Stradling <rob.stradling@comodo.com> and Ben Laurie* 8099 8100 * Initial experimental support for explicitly trusted non-root CAs. 8101 OpenSSL still tries to build a complete chain to a root but if an 8102 intermediate CA has a trust setting included that is used. The first 8103 setting is used: whether to trust (e.g., -addtrust option to the x509 8104 utility) or reject. 8105 8106 *Steve Henson* 8107 8108 * Add -trusted_first option which attempts to find certificates in the 8109 trusted store even if an untrusted chain is also supplied. 8110 8111 *Steve Henson* 8112 8113 * MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE, 8114 platform support for Linux and Android. 8115 8116 *Andy Polyakov* 8117 8118 * Support for linux-x32, ILP32 environment in x86_64 framework. 8119 8120 *Andy Polyakov* 8121 8122 * Experimental multi-implementation support for FIPS capable OpenSSL. 8123 When in FIPS mode the approved implementations are used as normal, 8124 when not in FIPS mode the internal unapproved versions are used instead. 8125 This means that the FIPS capable OpenSSL isn't forced to use the 8126 (often lower performance) FIPS implementations outside FIPS mode. 8127 8128 *Steve Henson* 8129 8130 * Transparently support X9.42 DH parameters when calling 8131 PEM_read_bio_DHparameters. This means existing applications can handle 8132 the new parameter format automatically. 8133 8134 *Steve Henson* 8135 8136 * Initial experimental support for X9.42 DH parameter format: mainly 8137 to support use of 'q' parameter for RFC5114 parameters. 8138 8139 *Steve Henson* 8140 8141 * Add DH parameters from RFC5114 including test data to dhtest. 8142 8143 *Steve Henson* 8144 8145 * Support for automatic EC temporary key parameter selection. If enabled 8146 the most preferred EC parameters are automatically used instead of 8147 hardcoded fixed parameters. Now a server just has to call: 8148 SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically 8149 support ECDH and use the most appropriate parameters. 8150 8151 *Steve Henson* 8152 8153 * Enhance and tidy EC curve and point format TLS extension code. Use 8154 static structures instead of allocation if default values are used. 8155 New ctrls to set curves we wish to support and to retrieve shared curves. 8156 Print out shared curves in s_server. New options to s_server and s_client 8157 to set list of supported curves. 8158 8159 *Steve Henson* 8160 8161 * New ctrls to retrieve supported signature algorithms and 8162 supported curve values as an array of NIDs. Extend openssl utility 8163 to print out received values. 8164 8165 *Steve Henson* 8166 8167 * Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert 8168 between NIDs and the more common NIST names such as "P-256". Enhance 8169 ecparam utility and ECC method to recognise the NIST names for curves. 8170 8171 *Steve Henson* 8172 8173 * Enhance SSL/TLS certificate chain handling to support different 8174 chains for each certificate instead of one chain in the parent SSL_CTX. 8175 8176 *Steve Henson* 8177 8178 * Support for fixed DH ciphersuite client authentication: where both 8179 server and client use DH certificates with common parameters. 8180 8181 *Steve Henson* 8182 8183 * Support for fixed DH ciphersuites: those requiring DH server 8184 certificates. 8185 8186 *Steve Henson* 8187 8188 * New function i2d_re_X509_tbs for re-encoding the TBS portion of 8189 the certificate. 8190 Note: Related 1.0.2-beta specific macros X509_get_cert_info, 8191 X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and 8192 X509_CINF_get_signature were reverted post internal team review. 8193 8194OpenSSL 1.0.1 8195------------- 8196 8197### Changes between 1.0.1t and 1.0.1u [22 Sep 2016] 8198 8199 * OCSP Status Request extension unbounded memory growth 8200 8201 A malicious client can send an excessively large OCSP Status Request 8202 extension. If that client continually requests renegotiation, sending a 8203 large OCSP Status Request extension each time, then there will be unbounded 8204 memory growth on the server. This will eventually lead to a Denial Of 8205 Service attack through memory exhaustion. Servers with a default 8206 configuration are vulnerable even if they do not support OCSP. Builds using 8207 the "no-ocsp" build time option are not affected. 8208 8209 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 8210 ([CVE-2016-6304]) 8211 8212 *Matt Caswell* 8213 8214 * In order to mitigate the SWEET32 attack, the DES ciphers were moved from 8215 HIGH to MEDIUM. 8216 8217 This issue was reported to OpenSSL Karthikeyan Bhargavan and Gaetan 8218 Leurent (INRIA) 8219 ([CVE-2016-2183]) 8220 8221 *Rich Salz* 8222 8223 * OOB write in MDC2_Update() 8224 8225 An overflow can occur in MDC2_Update() either if called directly or 8226 through the EVP_DigestUpdate() function using MDC2. If an attacker 8227 is able to supply very large amounts of input data after a previous 8228 call to EVP_EncryptUpdate() with a partial block then a length check 8229 can overflow resulting in a heap corruption. 8230 8231 The amount of data needed is comparable to SIZE_MAX which is impractical 8232 on most platforms. 8233 8234 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 8235 ([CVE-2016-6303]) 8236 8237 *Stephen Henson* 8238 8239 * Malformed SHA512 ticket DoS 8240 8241 If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a 8242 DoS attack where a malformed ticket will result in an OOB read which will 8243 ultimately crash. 8244 8245 The use of SHA512 in TLS session tickets is comparatively rare as it requires 8246 a custom server callback and ticket lookup mechanism. 8247 8248 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 8249 ([CVE-2016-6302]) 8250 8251 *Stephen Henson* 8252 8253 * OOB write in BN_bn2dec() 8254 8255 The function BN_bn2dec() does not check the return value of BN_div_word(). 8256 This can cause an OOB write if an application uses this function with an 8257 overly large BIGNUM. This could be a problem if an overly large certificate 8258 or CRL is printed out from an untrusted source. TLS is not affected because 8259 record limits will reject an oversized certificate before it is parsed. 8260 8261 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 8262 ([CVE-2016-2182]) 8263 8264 *Stephen Henson* 8265 8266 * OOB read in TS_OBJ_print_bio() 8267 8268 The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is 8269 the total length the OID text representation would use and not the amount 8270 of data written. This will result in OOB reads when large OIDs are 8271 presented. 8272 8273 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 8274 ([CVE-2016-2180]) 8275 8276 *Stephen Henson* 8277 8278 * Pointer arithmetic undefined behaviour 8279 8280 Avoid some undefined pointer arithmetic 8281 8282 A common idiom in the codebase is to check limits in the following manner: 8283 "p + len > limit" 8284 8285 Where "p" points to some malloc'd data of SIZE bytes and 8286 limit == p + SIZE 8287 8288 "len" here could be from some externally supplied data (e.g. from a TLS 8289 message). 8290 8291 The rules of C pointer arithmetic are such that "p + len" is only well 8292 defined where len <= SIZE. Therefore, the above idiom is actually 8293 undefined behaviour. 8294 8295 For example this could cause problems if some malloc implementation 8296 provides an address for "p" such that "p + len" actually overflows for 8297 values of len that are too big and therefore p + len < limit. 8298 8299 This issue was reported to OpenSSL by Guido Vranken 8300 ([CVE-2016-2177]) 8301 8302 *Matt Caswell* 8303 8304 * Constant time flag not preserved in DSA signing 8305 8306 Operations in the DSA signing algorithm should run in constant time in 8307 order to avoid side channel attacks. A flaw in the OpenSSL DSA 8308 implementation means that a non-constant time codepath is followed for 8309 certain operations. This has been demonstrated through a cache-timing 8310 attack to be sufficient for an attacker to recover the private DSA key. 8311 8312 This issue was reported by César Pereida (Aalto University), Billy Brumley 8313 (Tampere University of Technology), and Yuval Yarom (The University of 8314 Adelaide and NICTA). 8315 ([CVE-2016-2178]) 8316 8317 *César Pereida* 8318 8319 * DTLS buffered message DoS 8320 8321 In a DTLS connection where handshake messages are delivered out-of-order 8322 those messages that OpenSSL is not yet ready to process will be buffered 8323 for later use. Under certain circumstances, a flaw in the logic means that 8324 those messages do not get removed from the buffer even though the handshake 8325 has been completed. An attacker could force up to approx. 15 messages to 8326 remain in the buffer when they are no longer required. These messages will 8327 be cleared when the DTLS connection is closed. The default maximum size for 8328 a message is 100k. Therefore, the attacker could force an additional 1500k 8329 to be consumed per connection. By opening many simultaneous connections an 8330 attacker could cause a DoS attack through memory exhaustion. 8331 8332 This issue was reported to OpenSSL by Quan Luo. 8333 ([CVE-2016-2179]) 8334 8335 *Matt Caswell* 8336 8337 * DTLS replay protection DoS 8338 8339 A flaw in the DTLS replay attack protection mechanism means that records 8340 that arrive for future epochs update the replay protection "window" before 8341 the MAC for the record has been validated. This could be exploited by an 8342 attacker by sending a record for the next epoch (which does not have to 8343 decrypt or have a valid MAC), with a very large sequence number. This means 8344 that all subsequent legitimate packets are dropped causing a denial of 8345 service for a specific DTLS connection. 8346 8347 This issue was reported to OpenSSL by the OCAP audit team. 8348 ([CVE-2016-2181]) 8349 8350 *Matt Caswell* 8351 8352 * Certificate message OOB reads 8353 8354 In OpenSSL 1.0.2 and earlier some missing message length checks can result 8355 in OOB reads of up to 2 bytes beyond an allocated buffer. There is a 8356 theoretical DoS risk but this has not been observed in practice on common 8357 platforms. 8358 8359 The messages affected are client certificate, client certificate request 8360 and server certificate. As a result the attack can only be performed 8361 against a client or a server which enables client authentication. 8362 8363 This issue was reported to OpenSSL by Shi Lei (Gear Team, Qihoo 360 Inc.) 8364 ([CVE-2016-6306]) 8365 8366 *Stephen Henson* 8367 8368### Changes between 1.0.1s and 1.0.1t [3 May 2016] 8369 8370 * Prevent padding oracle in AES-NI CBC MAC check 8371 8372 A MITM attacker can use a padding oracle attack to decrypt traffic 8373 when the connection uses an AES CBC cipher and the server support 8374 AES-NI. 8375 8376 This issue was introduced as part of the fix for Lucky 13 padding 8377 attack ([CVE-2013-0169]). The padding check was rewritten to be in 8378 constant time by making sure that always the same bytes are read and 8379 compared against either the MAC or padding bytes. But it no longer 8380 checked that there was enough data to have both the MAC and padding 8381 bytes. 8382 8383 This issue was reported by Juraj Somorovsky using TLS-Attacker. 8384 ([CVE-2016-2107]) 8385 8386 *Kurt Roeckx* 8387 8388 * Fix EVP_EncodeUpdate overflow 8389 8390 An overflow can occur in the EVP_EncodeUpdate() function which is used for 8391 Base64 encoding of binary data. If an attacker is able to supply very large 8392 amounts of input data then a length check can overflow resulting in a heap 8393 corruption. 8394 8395 Internally to OpenSSL the EVP_EncodeUpdate() function is primarily used by 8396 the `PEM_write_bio*` family of functions. These are mainly used within the 8397 OpenSSL command line applications, so any application which processes data 8398 from an untrusted source and outputs it as a PEM file should be considered 8399 vulnerable to this issue. User applications that call these APIs directly 8400 with large amounts of untrusted data may also be vulnerable. 8401 8402 This issue was reported by Guido Vranken. 8403 ([CVE-2016-2105]) 8404 8405 *Matt Caswell* 8406 8407 * Fix EVP_EncryptUpdate overflow 8408 8409 An overflow can occur in the EVP_EncryptUpdate() function. If an attacker 8410 is able to supply very large amounts of input data after a previous call to 8411 EVP_EncryptUpdate() with a partial block then a length check can overflow 8412 resulting in a heap corruption. Following an analysis of all OpenSSL 8413 internal usage of the EVP_EncryptUpdate() function all usage is one of two 8414 forms. The first form is where the EVP_EncryptUpdate() call is known to be 8415 the first called function after an EVP_EncryptInit(), and therefore that 8416 specific call must be safe. The second form is where the length passed to 8417 EVP_EncryptUpdate() can be seen from the code to be some small value and 8418 therefore there is no possibility of an overflow. Since all instances are 8419 one of these two forms, it is believed that there can be no overflows in 8420 internal code due to this problem. It should be noted that 8421 EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths. 8422 Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances 8423 of these calls have also been analysed too and it is believed there are no 8424 instances in internal usage where an overflow could occur. 8425 8426 This issue was reported by Guido Vranken. 8427 ([CVE-2016-2106]) 8428 8429 *Matt Caswell* 8430 8431 * Prevent ASN.1 BIO excessive memory allocation 8432 8433 When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio() 8434 a short invalid encoding can casuse allocation of large amounts of memory 8435 potentially consuming excessive resources or exhausting memory. 8436 8437 Any application parsing untrusted data through d2i BIO functions is 8438 affected. The memory based functions such as d2i_X509() are *not* affected. 8439 Since the memory based functions are used by the TLS library, TLS 8440 applications are not affected. 8441 8442 This issue was reported by Brian Carpenter. 8443 ([CVE-2016-2109]) 8444 8445 *Stephen Henson* 8446 8447 * EBCDIC overread 8448 8449 ASN1 Strings that are over 1024 bytes can cause an overread in applications 8450 using the X509_NAME_oneline() function on EBCDIC systems. This could result 8451 in arbitrary stack data being returned in the buffer. 8452 8453 This issue was reported by Guido Vranken. 8454 ([CVE-2016-2176]) 8455 8456 *Matt Caswell* 8457 8458 * Modify behavior of ALPN to invoke callback after SNI/servername 8459 callback, such that updates to the SSL_CTX affect ALPN. 8460 8461 *Todd Short* 8462 8463 * Remove LOW from the DEFAULT cipher list. This removes singles DES from the 8464 default. 8465 8466 *Kurt Roeckx* 8467 8468 * Only remove the SSLv2 methods with the no-ssl2-method option. When the 8469 methods are enabled and ssl2 is disabled the methods return NULL. 8470 8471 *Kurt Roeckx* 8472 8473### Changes between 1.0.1r and 1.0.1s [1 Mar 2016] 8474 8475* Disable weak ciphers in SSLv3 and up in default builds of OpenSSL. 8476 Builds that are not configured with "enable-weak-ssl-ciphers" will not 8477 provide any "EXPORT" or "LOW" strength ciphers. 8478 8479 *Viktor Dukhovni* 8480 8481* Disable SSLv2 default build, default negotiation and weak ciphers. SSLv2 8482 is by default disabled at build-time. Builds that are not configured with 8483 "enable-ssl2" will not support SSLv2. Even if "enable-ssl2" is used, 8484 users who want to negotiate SSLv2 via the version-flexible SSLv23_method() 8485 will need to explicitly call either of: 8486 8487 SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2); 8488 or 8489 SSL_clear_options(ssl, SSL_OP_NO_SSLv2); 8490 8491 as appropriate. Even if either of those is used, or the application 8492 explicitly uses the version-specific SSLv2_method() or its client and 8493 server variants, SSLv2 ciphers vulnerable to exhaustive search key 8494 recovery have been removed. Specifically, the SSLv2 40-bit EXPORT 8495 ciphers, and SSLv2 56-bit DES are no longer available. 8496 ([CVE-2016-0800]) 8497 8498 *Viktor Dukhovni* 8499 8500 * Fix a double-free in DSA code 8501 8502 A double free bug was discovered when OpenSSL parses malformed DSA private 8503 keys and could lead to a DoS attack or memory corruption for applications 8504 that receive DSA private keys from untrusted sources. This scenario is 8505 considered rare. 8506 8507 This issue was reported to OpenSSL by Adam Langley(Google/BoringSSL) using 8508 libFuzzer. 8509 ([CVE-2016-0705]) 8510 8511 *Stephen Henson* 8512 8513 * Disable SRP fake user seed to address a server memory leak. 8514 8515 Add a new method SRP_VBASE_get1_by_user that handles the seed properly. 8516 8517 SRP_VBASE_get_by_user had inconsistent memory management behaviour. 8518 In order to fix an unavoidable memory leak, SRP_VBASE_get_by_user 8519 was changed to ignore the "fake user" SRP seed, even if the seed 8520 is configured. 8521 8522 Users should use SRP_VBASE_get1_by_user instead. Note that in 8523 SRP_VBASE_get1_by_user, caller must free the returned value. Note 8524 also that even though configuring the SRP seed attempts to hide 8525 invalid usernames by continuing the handshake with fake 8526 credentials, this behaviour is not constant time and no strong 8527 guarantees are made that the handshake is indistinguishable from 8528 that of a valid user. 8529 ([CVE-2016-0798]) 8530 8531 *Emilia Käsper* 8532 8533 * Fix BN_hex2bn/BN_dec2bn NULL pointer deref/heap corruption 8534 8535 In the BN_hex2bn function the number of hex digits is calculated using an 8536 int value `i`. Later `bn_expand` is called with a value of `i * 4`. For 8537 large values of `i` this can result in `bn_expand` not allocating any 8538 memory because `i * 4` is negative. This can leave the internal BIGNUM data 8539 field as NULL leading to a subsequent NULL ptr deref. For very large values 8540 of `i`, the calculation `i * 4` could be a positive value smaller than `i`. 8541 In this case memory is allocated to the internal BIGNUM data field, but it 8542 is insufficiently sized leading to heap corruption. A similar issue exists 8543 in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn 8544 is ever called by user applications with very large untrusted hex/dec data. 8545 This is anticipated to be a rare occurrence. 8546 8547 All OpenSSL internal usage of these functions use data that is not expected 8548 to be untrusted, e.g. config file data or application command line 8549 arguments. If user developed applications generate config file data based 8550 on untrusted data then it is possible that this could also lead to security 8551 consequences. This is also anticipated to be rare. 8552 8553 This issue was reported to OpenSSL by Guido Vranken. 8554 ([CVE-2016-0797]) 8555 8556 *Matt Caswell* 8557 8558 * Fix memory issues in `BIO_*printf` functions 8559 8560 The internal `fmtstr` function used in processing a "%s" format string in 8561 the `BIO_*printf` functions could overflow while calculating the length of a 8562 string and cause an OOB read when printing very long strings. 8563 8564 Additionally the internal `doapr_outch` function can attempt to write to an 8565 OOB memory location (at an offset from the NULL pointer) in the event of a 8566 memory allocation failure. In 1.0.2 and below this could be caused where 8567 the size of a buffer to be allocated is greater than INT_MAX. E.g. this 8568 could be in processing a very long "%s" format string. Memory leaks can 8569 also occur. 8570 8571 The first issue may mask the second issue dependent on compiler behaviour. 8572 These problems could enable attacks where large amounts of untrusted data 8573 is passed to the `BIO_*printf` functions. If applications use these functions 8574 in this way then they could be vulnerable. OpenSSL itself uses these 8575 functions when printing out human-readable dumps of ASN.1 data. Therefore 8576 applications that print this data could be vulnerable if the data is from 8577 untrusted sources. OpenSSL command line applications could also be 8578 vulnerable where they print out ASN.1 data, or if untrusted data is passed 8579 as command line arguments. 8580 8581 Libssl is not considered directly vulnerable. Additionally certificates etc 8582 received via remote connections via libssl are also unlikely to be able to 8583 trigger these issues because of message size limits enforced within libssl. 8584 8585 This issue was reported to OpenSSL Guido Vranken. 8586 ([CVE-2016-0799]) 8587 8588 *Matt Caswell* 8589 8590 * Side channel attack on modular exponentiation 8591 8592 A side-channel attack was found which makes use of cache-bank conflicts on 8593 the Intel Sandy-Bridge microarchitecture which could lead to the recovery 8594 of RSA keys. The ability to exploit this issue is limited as it relies on 8595 an attacker who has control of code in a thread running on the same 8596 hyper-threaded core as the victim thread which is performing decryptions. 8597 8598 This issue was reported to OpenSSL by Yuval Yarom, The University of 8599 Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and 8600 Nadia Heninger, University of Pennsylvania with more information at 8601 <http://cachebleed.info>. 8602 ([CVE-2016-0702]) 8603 8604 *Andy Polyakov* 8605 8606 * Change the req command to generate a 2048-bit RSA/DSA key by default, 8607 if no keysize is specified with default_bits. This fixes an 8608 omission in an earlier change that changed all RSA/DSA key generation 8609 commands to use 2048 bits by default. 8610 8611 *Emilia Käsper* 8612 8613### Changes between 1.0.1q and 1.0.1r [28 Jan 2016] 8614 8615 * Protection for DH small subgroup attacks 8616 8617 As a precautionary measure the SSL_OP_SINGLE_DH_USE option has been 8618 switched on by default and cannot be disabled. This could have some 8619 performance impact. 8620 8621 *Matt Caswell* 8622 8623 * SSLv2 doesn't block disabled ciphers 8624 8625 A malicious client can negotiate SSLv2 ciphers that have been disabled on 8626 the server and complete SSLv2 handshakes even if all SSLv2 ciphers have 8627 been disabled, provided that the SSLv2 protocol was not also disabled via 8628 SSL_OP_NO_SSLv2. 8629 8630 This issue was reported to OpenSSL on 26th December 2015 by Nimrod Aviram 8631 and Sebastian Schinzel. 8632 ([CVE-2015-3197]) 8633 8634 *Viktor Dukhovni* 8635 8636 * Reject DH handshakes with parameters shorter than 1024 bits. 8637 8638 *Kurt Roeckx* 8639 8640### Changes between 1.0.1p and 1.0.1q [3 Dec 2015] 8641 8642 * Certificate verify crash with missing PSS parameter 8643 8644 The signature verification routines will crash with a NULL pointer 8645 dereference if presented with an ASN.1 signature using the RSA PSS 8646 algorithm and absent mask generation function parameter. Since these 8647 routines are used to verify certificate signature algorithms this can be 8648 used to crash any certificate verification operation and exploited in a 8649 DoS attack. Any application which performs certificate verification is 8650 vulnerable including OpenSSL clients and servers which enable client 8651 authentication. 8652 8653 This issue was reported to OpenSSL by Loïc Jonas Etienne (Qnective AG). 8654 ([CVE-2015-3194]) 8655 8656 *Stephen Henson* 8657 8658 * X509_ATTRIBUTE memory leak 8659 8660 When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak 8661 memory. This structure is used by the PKCS#7 and CMS routines so any 8662 application which reads PKCS#7 or CMS data from untrusted sources is 8663 affected. SSL/TLS is not affected. 8664 8665 This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using 8666 libFuzzer. 8667 ([CVE-2015-3195]) 8668 8669 *Stephen Henson* 8670 8671 * Rewrite EVP_DecodeUpdate (base64 decoding) to fix several bugs. 8672 This changes the decoding behaviour for some invalid messages, 8673 though the change is mostly in the more lenient direction, and 8674 legacy behaviour is preserved as much as possible. 8675 8676 *Emilia Käsper* 8677 8678 * In DSA_generate_parameters_ex, if the provided seed is too short, 8679 use a random seed, as already documented. 8680 8681 *Rich Salz and Ismo Puustinen <ismo.puustinen@intel.com>* 8682 8683### Changes between 1.0.1o and 1.0.1p [9 Jul 2015] 8684 8685 * Alternate chains certificate forgery 8686 8687 During certificate verification, OpenSSL will attempt to find an 8688 alternative certificate chain if the first attempt to build such a chain 8689 fails. An error in the implementation of this logic can mean that an 8690 attacker could cause certain checks on untrusted certificates to be 8691 bypassed, such as the CA flag, enabling them to use a valid leaf 8692 certificate to act as a CA and "issue" an invalid certificate. 8693 8694 This issue was reported to OpenSSL by Adam Langley/David Benjamin 8695 (Google/BoringSSL). 8696 ([CVE-2015-1793]) 8697 8698 *Matt Caswell* 8699 8700 * Race condition handling PSK identify hint 8701 8702 If PSK identity hints are received by a multi-threaded client then 8703 the values are wrongly updated in the parent SSL_CTX structure. This can 8704 result in a race condition potentially leading to a double free of the 8705 identify hint data. 8706 ([CVE-2015-3196]) 8707 8708 *Stephen Henson* 8709 8710### Changes between 1.0.1n and 1.0.1o [12 Jun 2015] 8711 8712 * Fix HMAC ABI incompatibility. The previous version introduced an ABI 8713 incompatibility in the handling of HMAC. The previous ABI has now been 8714 restored. 8715 8716### Changes between 1.0.1m and 1.0.1n [11 Jun 2015] 8717 8718 * Malformed ECParameters causes infinite loop 8719 8720 When processing an ECParameters structure OpenSSL enters an infinite loop 8721 if the curve specified is over a specially malformed binary polynomial 8722 field. 8723 8724 This can be used to perform denial of service against any 8725 system which processes public keys, certificate requests or 8726 certificates. This includes TLS clients and TLS servers with 8727 client authentication enabled. 8728 8729 This issue was reported to OpenSSL by Joseph Barr-Pixton. 8730 ([CVE-2015-1788]) 8731 8732 *Andy Polyakov* 8733 8734 * Exploitable out-of-bounds read in X509_cmp_time 8735 8736 X509_cmp_time does not properly check the length of the ASN1_TIME 8737 string and can read a few bytes out of bounds. In addition, 8738 X509_cmp_time accepts an arbitrary number of fractional seconds in the 8739 time string. 8740 8741 An attacker can use this to craft malformed certificates and CRLs of 8742 various sizes and potentially cause a segmentation fault, resulting in 8743 a DoS on applications that verify certificates or CRLs. TLS clients 8744 that verify CRLs are affected. TLS clients and servers with client 8745 authentication enabled may be affected if they use custom verification 8746 callbacks. 8747 8748 This issue was reported to OpenSSL by Robert Swiecki (Google), and 8749 independently by Hanno Böck. 8750 ([CVE-2015-1789]) 8751 8752 *Emilia Käsper* 8753 8754 * PKCS7 crash with missing EnvelopedContent 8755 8756 The PKCS#7 parsing code does not handle missing inner EncryptedContent 8757 correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs 8758 with missing content and trigger a NULL pointer dereference on parsing. 8759 8760 Applications that decrypt PKCS#7 data or otherwise parse PKCS#7 8761 structures from untrusted sources are affected. OpenSSL clients and 8762 servers are not affected. 8763 8764 This issue was reported to OpenSSL by Michal Zalewski (Google). 8765 ([CVE-2015-1790]) 8766 8767 *Emilia Käsper* 8768 8769 * CMS verify infinite loop with unknown hash function 8770 8771 When verifying a signedData message the CMS code can enter an infinite loop 8772 if presented with an unknown hash function OID. This can be used to perform 8773 denial of service against any system which verifies signedData messages using 8774 the CMS code. 8775 This issue was reported to OpenSSL by Johannes Bauer. 8776 ([CVE-2015-1792]) 8777 8778 *Stephen Henson* 8779 8780 * Race condition handling NewSessionTicket 8781 8782 If a NewSessionTicket is received by a multi-threaded client when attempting to 8783 reuse a previous ticket then a race condition can occur potentially leading to 8784 a double free of the ticket data. 8785 ([CVE-2015-1791]) 8786 8787 *Matt Caswell* 8788 8789 * Reject DH handshakes with parameters shorter than 768 bits. 8790 8791 *Kurt Roeckx and Emilia Kasper* 8792 8793 * dhparam: generate 2048-bit parameters by default. 8794 8795 *Kurt Roeckx and Emilia Kasper* 8796 8797### Changes between 1.0.1l and 1.0.1m [19 Mar 2015] 8798 8799 * Segmentation fault in ASN1_TYPE_cmp fix 8800 8801 The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is 8802 made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check 8803 certificate signature algorithm consistency this can be used to crash any 8804 certificate verification operation and exploited in a DoS attack. Any 8805 application which performs certificate verification is vulnerable including 8806 OpenSSL clients and servers which enable client authentication. 8807 ([CVE-2015-0286]) 8808 8809 *Stephen Henson* 8810 8811 * ASN.1 structure reuse memory corruption fix 8812 8813 Reusing a structure in ASN.1 parsing may allow an attacker to cause 8814 memory corruption via an invalid write. Such reuse is and has been 8815 strongly discouraged and is believed to be rare. 8816 8817 Applications that parse structures containing CHOICE or ANY DEFINED BY 8818 components may be affected. Certificate parsing (d2i_X509 and related 8819 functions) are however not affected. OpenSSL clients and servers are 8820 not affected. 8821 ([CVE-2015-0287]) 8822 8823 *Stephen Henson* 8824 8825 * PKCS7 NULL pointer dereferences fix 8826 8827 The PKCS#7 parsing code does not handle missing outer ContentInfo 8828 correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with 8829 missing content and trigger a NULL pointer dereference on parsing. 8830 8831 Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or 8832 otherwise parse PKCS#7 structures from untrusted sources are 8833 affected. OpenSSL clients and servers are not affected. 8834 8835 This issue was reported to OpenSSL by Michal Zalewski (Google). 8836 ([CVE-2015-0289]) 8837 8838 *Emilia Käsper* 8839 8840 * DoS via reachable assert in SSLv2 servers fix 8841 8842 A malicious client can trigger an OPENSSL_assert (i.e., an abort) in 8843 servers that both support SSLv2 and enable export cipher suites by sending 8844 a specially crafted SSLv2 CLIENT-MASTER-KEY message. 8845 8846 This issue was discovered by Sean Burford (Google) and Emilia Käsper 8847 (OpenSSL development team). 8848 ([CVE-2015-0293]) 8849 8850 *Emilia Käsper* 8851 8852 * Use After Free following d2i_ECPrivatekey error fix 8853 8854 A malformed EC private key file consumed via the d2i_ECPrivateKey function 8855 could cause a use after free condition. This, in turn, could cause a double 8856 free in several private key parsing functions (such as d2i_PrivateKey 8857 or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption 8858 for applications that receive EC private keys from untrusted 8859 sources. This scenario is considered rare. 8860 8861 This issue was discovered by the BoringSSL project and fixed in their 8862 commit 517073cd4b. 8863 ([CVE-2015-0209]) 8864 8865 *Matt Caswell* 8866 8867 * X509_to_X509_REQ NULL pointer deref fix 8868 8869 The function X509_to_X509_REQ will crash with a NULL pointer dereference if 8870 the certificate key is invalid. This function is rarely used in practice. 8871 8872 This issue was discovered by Brian Carpenter. 8873 ([CVE-2015-0288]) 8874 8875 *Stephen Henson* 8876 8877 * Removed the export ciphers from the DEFAULT ciphers 8878 8879 *Kurt Roeckx* 8880 8881### Changes between 1.0.1k and 1.0.1l [15 Jan 2015] 8882 8883 * Build fixes for the Windows and OpenVMS platforms 8884 8885 *Matt Caswell and Richard Levitte* 8886 8887### Changes between 1.0.1j and 1.0.1k [8 Jan 2015] 8888 8889 * Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS 8890 message can cause a segmentation fault in OpenSSL due to a NULL pointer 8891 dereference. This could lead to a Denial Of Service attack. Thanks to 8892 Markus Stenberg of Cisco Systems, Inc. for reporting this issue. 8893 ([CVE-2014-3571]) 8894 8895 *Steve Henson* 8896 8897 * Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the 8898 dtls1_buffer_record function under certain conditions. In particular this 8899 could occur if an attacker sent repeated DTLS records with the same 8900 sequence number but for the next epoch. The memory leak could be exploited 8901 by an attacker in a Denial of Service attack through memory exhaustion. 8902 Thanks to Chris Mueller for reporting this issue. 8903 ([CVE-2015-0206]) 8904 8905 *Matt Caswell* 8906 8907 * Fix issue where no-ssl3 configuration sets method to NULL. When openssl is 8908 built with the no-ssl3 option and an SSL v3 ClientHello is received the ssl 8909 method would be set to NULL which could later result in a NULL pointer 8910 dereference. Thanks to Frank Schmirler for reporting this issue. 8911 ([CVE-2014-3569]) 8912 8913 *Kurt Roeckx* 8914 8915 * Abort handshake if server key exchange message is omitted for ephemeral 8916 ECDH ciphersuites. 8917 8918 Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for 8919 reporting this issue. 8920 ([CVE-2014-3572]) 8921 8922 *Steve Henson* 8923 8924 * Remove non-export ephemeral RSA code on client and server. This code 8925 violated the TLS standard by allowing the use of temporary RSA keys in 8926 non-export ciphersuites and could be used by a server to effectively 8927 downgrade the RSA key length used to a value smaller than the server 8928 certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at 8929 INRIA or reporting this issue. 8930 ([CVE-2015-0204]) 8931 8932 *Steve Henson* 8933 8934 * Fixed issue where DH client certificates are accepted without verification. 8935 An OpenSSL server will accept a DH certificate for client authentication 8936 without the certificate verify message. This effectively allows a client to 8937 authenticate without the use of a private key. This only affects servers 8938 which trust a client certificate authority which issues certificates 8939 containing DH keys: these are extremely rare and hardly ever encountered. 8940 Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting 8941 this issue. 8942 ([CVE-2015-0205]) 8943 8944 *Steve Henson* 8945 8946 * Ensure that the session ID context of an SSL is updated when its 8947 SSL_CTX is updated via SSL_set_SSL_CTX. 8948 8949 The session ID context is typically set from the parent SSL_CTX, 8950 and can vary with the CTX. 8951 8952 *Adam Langley* 8953 8954 * Fix various certificate fingerprint issues. 8955 8956 By using non-DER or invalid encodings outside the signed portion of a 8957 certificate the fingerprint can be changed without breaking the signature. 8958 Although no details of the signed portion of the certificate can be changed 8959 this can cause problems with some applications: e.g. those using the 8960 certificate fingerprint for blacklists. 8961 8962 1. Reject signatures with non zero unused bits. 8963 8964 If the BIT STRING containing the signature has non zero unused bits reject 8965 the signature. All current signature algorithms require zero unused bits. 8966 8967 2. Check certificate algorithm consistency. 8968 8969 Check the AlgorithmIdentifier inside TBS matches the one in the 8970 certificate signature. NB: this will result in signature failure 8971 errors for some broken certificates. 8972 8973 Thanks to Konrad Kraszewski from Google for reporting this issue. 8974 8975 3. Check DSA/ECDSA signatures use DER. 8976 8977 Re-encode DSA/ECDSA signatures and compare with the original received 8978 signature. Return an error if there is a mismatch. 8979 8980 This will reject various cases including garbage after signature 8981 (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS 8982 program for discovering this case) and use of BER or invalid ASN.1 INTEGERs 8983 (negative or with leading zeroes). 8984 8985 Further analysis was conducted and fixes were developed by Stephen Henson 8986 of the OpenSSL core team. 8987 8988 ([CVE-2014-8275]) 8989 8990 *Steve Henson* 8991 8992 * Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect 8993 results on some platforms, including x86_64. This bug occurs at random 8994 with a very low probability, and is not known to be exploitable in any 8995 way, though its exact impact is difficult to determine. Thanks to Pieter 8996 Wuille (Blockstream) who reported this issue and also suggested an initial 8997 fix. Further analysis was conducted by the OpenSSL development team and 8998 Adam Langley of Google. The final fix was developed by Andy Polyakov of 8999 the OpenSSL core team. 9000 ([CVE-2014-3570]) 9001 9002 *Andy Polyakov* 9003 9004 * Do not resume sessions on the server if the negotiated protocol 9005 version does not match the session's version. Resuming with a different 9006 version, while not strictly forbidden by the RFC, is of questionable 9007 sanity and breaks all known clients. 9008 9009 *David Benjamin, Emilia Käsper* 9010 9011 * Tighten handling of the ChangeCipherSpec (CCS) message: reject 9012 early CCS messages during renegotiation. (Note that because 9013 renegotiation is encrypted, this early CCS was not exploitable.) 9014 9015 *Emilia Käsper* 9016 9017 * Tighten client-side session ticket handling during renegotiation: 9018 ensure that the client only accepts a session ticket if the server sends 9019 the extension anew in the ServerHello. Previously, a TLS client would 9020 reuse the old extension state and thus accept a session ticket if one was 9021 announced in the initial ServerHello. 9022 9023 Similarly, ensure that the client requires a session ticket if one 9024 was advertised in the ServerHello. Previously, a TLS client would 9025 ignore a missing NewSessionTicket message. 9026 9027 *Emilia Käsper* 9028 9029### Changes between 1.0.1i and 1.0.1j [15 Oct 2014] 9030 9031 * SRTP Memory Leak. 9032 9033 A flaw in the DTLS SRTP extension parsing code allows an attacker, who 9034 sends a carefully crafted handshake message, to cause OpenSSL to fail 9035 to free up to 64k of memory causing a memory leak. This could be 9036 exploited in a Denial Of Service attack. This issue affects OpenSSL 9037 1.0.1 server implementations for both SSL/TLS and DTLS regardless of 9038 whether SRTP is used or configured. Implementations of OpenSSL that 9039 have been compiled with OPENSSL_NO_SRTP defined are not affected. 9040 9041 The fix was developed by the OpenSSL team. 9042 ([CVE-2014-3513]) 9043 9044 *OpenSSL team* 9045 9046 * Session Ticket Memory Leak. 9047 9048 When an OpenSSL SSL/TLS/DTLS server receives a session ticket the 9049 integrity of that ticket is first verified. In the event of a session 9050 ticket integrity check failing, OpenSSL will fail to free memory 9051 causing a memory leak. By sending a large number of invalid session 9052 tickets an attacker could exploit this issue in a Denial Of Service 9053 attack. 9054 ([CVE-2014-3567]) 9055 9056 *Steve Henson* 9057 9058 * Build option no-ssl3 is incomplete. 9059 9060 When OpenSSL is configured with "no-ssl3" as a build option, servers 9061 could accept and complete an SSL 3.0 handshake, and clients could be 9062 configured to send them. 9063 ([CVE-2014-3568]) 9064 9065 *Akamai and the OpenSSL team* 9066 9067 * Add support for TLS_FALLBACK_SCSV. 9068 Client applications doing fallback retries should call 9069 SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV). 9070 ([CVE-2014-3566]) 9071 9072 *Adam Langley, Bodo Moeller* 9073 9074 * Add additional DigestInfo checks. 9075 9076 Re-encode DigestInto in DER and check against the original when 9077 verifying RSA signature: this will reject any improperly encoded 9078 DigestInfo structures. 9079 9080 Note: this is a precautionary measure and no attacks are currently known. 9081 9082 *Steve Henson* 9083 9084### Changes between 1.0.1h and 1.0.1i [6 Aug 2014] 9085 9086 * Fix SRP buffer overrun vulnerability. Invalid parameters passed to the 9087 SRP code can be overrun an internal buffer. Add sanity check that 9088 g, A, B < N to SRP code. 9089 9090 Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC 9091 Group for discovering this issue. 9092 ([CVE-2014-3512]) 9093 9094 *Steve Henson* 9095 9096 * A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate 9097 TLS 1.0 instead of higher protocol versions when the ClientHello message 9098 is badly fragmented. This allows a man-in-the-middle attacker to force a 9099 downgrade to TLS 1.0 even if both the server and the client support a 9100 higher protocol version, by modifying the client's TLS records. 9101 9102 Thanks to David Benjamin and Adam Langley (Google) for discovering and 9103 researching this issue. 9104 ([CVE-2014-3511]) 9105 9106 *David Benjamin* 9107 9108 * OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject 9109 to a denial of service attack. A malicious server can crash the client 9110 with a null pointer dereference (read) by specifying an anonymous (EC)DH 9111 ciphersuite and sending carefully crafted handshake messages. 9112 9113 Thanks to Felix Gröbert (Google) for discovering and researching this 9114 issue. 9115 ([CVE-2014-3510]) 9116 9117 *Emilia Käsper* 9118 9119 * By sending carefully crafted DTLS packets an attacker could cause openssl 9120 to leak memory. This can be exploited through a Denial of Service attack. 9121 Thanks to Adam Langley for discovering and researching this issue. 9122 ([CVE-2014-3507]) 9123 9124 *Adam Langley* 9125 9126 * An attacker can force openssl to consume large amounts of memory whilst 9127 processing DTLS handshake messages. This can be exploited through a 9128 Denial of Service attack. 9129 Thanks to Adam Langley for discovering and researching this issue. 9130 ([CVE-2014-3506]) 9131 9132 *Adam Langley* 9133 9134 * An attacker can force an error condition which causes openssl to crash 9135 whilst processing DTLS packets due to memory being freed twice. This 9136 can be exploited through a Denial of Service attack. 9137 Thanks to Adam Langley and Wan-Teh Chang for discovering and researching 9138 this issue. 9139 ([CVE-2014-3505]) 9140 9141 *Adam Langley* 9142 9143 * If a multithreaded client connects to a malicious server using a resumed 9144 session and the server sends an ec point format extension it could write 9145 up to 255 bytes to freed memory. 9146 9147 Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this 9148 issue. 9149 ([CVE-2014-3509]) 9150 9151 *Gabor Tyukasz* 9152 9153 * A malicious server can crash an OpenSSL client with a null pointer 9154 dereference (read) by specifying an SRP ciphersuite even though it was not 9155 properly negotiated with the client. This can be exploited through a 9156 Denial of Service attack. 9157 9158 Thanks to Joonas Kuorilehto and Riku Hietamäki (Codenomicon) for 9159 discovering and researching this issue. 9160 ([CVE-2014-5139]) 9161 9162 *Steve Henson* 9163 9164 * A flaw in OBJ_obj2txt may cause pretty printing functions such as 9165 X509_name_oneline, X509_name_print_ex et al. to leak some information 9166 from the stack. Applications may be affected if they echo pretty printing 9167 output to the attacker. 9168 9169 Thanks to Ivan Fratric (Google) for discovering this issue. 9170 ([CVE-2014-3508]) 9171 9172 *Emilia Käsper, and Steve Henson* 9173 9174 * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.) 9175 for corner cases. (Certain input points at infinity could lead to 9176 bogus results, with non-infinity inputs mapped to infinity too.) 9177 9178 *Bodo Moeller* 9179 9180### Changes between 1.0.1g and 1.0.1h [5 Jun 2014] 9181 9182 * Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted 9183 handshake can force the use of weak keying material in OpenSSL 9184 SSL/TLS clients and servers. 9185 9186 Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and 9187 researching this issue. ([CVE-2014-0224]) 9188 9189 *KIKUCHI Masashi, Steve Henson* 9190 9191 * Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an 9192 OpenSSL DTLS client the code can be made to recurse eventually crashing 9193 in a DoS attack. 9194 9195 Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue. 9196 ([CVE-2014-0221]) 9197 9198 *Imre Rad, Steve Henson* 9199 9200 * Fix DTLS invalid fragment vulnerability. A buffer overrun attack can 9201 be triggered by sending invalid DTLS fragments to an OpenSSL DTLS 9202 client or server. This is potentially exploitable to run arbitrary 9203 code on a vulnerable client or server. 9204 9205 Thanks to Jüri Aedla for reporting this issue. ([CVE-2014-0195]) 9206 9207 *Jüri Aedla, Steve Henson* 9208 9209 * Fix bug in TLS code where clients enable anonymous ECDH ciphersuites 9210 are subject to a denial of service attack. 9211 9212 Thanks to Felix Gröbert and Ivan Fratric at Google for discovering 9213 this issue. ([CVE-2014-3470]) 9214 9215 *Felix Gröbert, Ivan Fratric, Steve Henson* 9216 9217 * Harmonize version and its documentation. -f flag is used to display 9218 compilation flags. 9219 9220 *mancha <mancha1@zoho.com>* 9221 9222 * Fix eckey_priv_encode so it immediately returns an error upon a failure 9223 in i2d_ECPrivateKey. 9224 9225 *mancha <mancha1@zoho.com>* 9226 9227 * Fix some double frees. These are not thought to be exploitable. 9228 9229 *mancha <mancha1@zoho.com>* 9230 9231### Changes between 1.0.1f and 1.0.1g [7 Apr 2014] 9232 9233 * A missing bounds check in the handling of the TLS heartbeat extension 9234 can be used to reveal up to 64k of memory to a connected client or 9235 server. 9236 9237 Thanks for Neel Mehta of Google Security for discovering this bug and to 9238 Adam Langley <agl@chromium.org> and Bodo Moeller <bmoeller@acm.org> for 9239 preparing the fix ([CVE-2014-0160]) 9240 9241 *Adam Langley, Bodo Moeller* 9242 9243 * Fix for the attack described in the paper "Recovering OpenSSL 9244 ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack" 9245 by Yuval Yarom and Naomi Benger. Details can be obtained from: 9246 <http://eprint.iacr.org/2014/140> 9247 9248 Thanks to Yuval Yarom and Naomi Benger for discovering this 9249 flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076]) 9250 9251 *Yuval Yarom and Naomi Benger* 9252 9253 * TLS pad extension: draft-agl-tls-padding-03 9254 9255 Workaround for the "TLS hang bug" (see FAQ and PR#2771): if the 9256 TLS client Hello record length value would otherwise be > 255 and 9257 less that 512 pad with a dummy extension containing zeroes so it 9258 is at least 512 bytes long. 9259 9260 *Adam Langley, Steve Henson* 9261 9262### Changes between 1.0.1e and 1.0.1f [6 Jan 2014] 9263 9264 * Fix for TLS record tampering bug. A carefully crafted invalid 9265 handshake could crash OpenSSL with a NULL pointer exception. 9266 Thanks to Anton Johansson for reporting this issues. 9267 ([CVE-2013-4353]) 9268 9269 * Keep original DTLS digest and encryption contexts in retransmission 9270 structures so we can use the previous session parameters if they need 9271 to be resent. ([CVE-2013-6450]) 9272 9273 *Steve Henson* 9274 9275 * Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which 9276 avoids preferring ECDHE-ECDSA ciphers when the client appears to be 9277 Safari on OS X. Safari on OS X 10.8..10.8.3 advertises support for 9278 several ECDHE-ECDSA ciphers, but fails to negotiate them. The bug 9279 is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing 9280 10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer. 9281 9282 *Rob Stradling, Adam Langley* 9283 9284### Changes between 1.0.1d and 1.0.1e [11 Feb 2013] 9285 9286 * Correct fix for CVE-2013-0169. The original didn't work on AES-NI 9287 supporting platforms or when small records were transferred. 9288 9289 *Andy Polyakov, Steve Henson* 9290 9291### Changes between 1.0.1c and 1.0.1d [5 Feb 2013] 9292 9293 * Make the decoding of SSLv3, TLS and DTLS CBC records constant time. 9294 9295 This addresses the flaw in CBC record processing discovered by 9296 Nadhem Alfardan and Kenny Paterson. Details of this attack can be found 9297 at: <http://www.isg.rhul.ac.uk/tls/> 9298 9299 Thanks go to Nadhem Alfardan and Kenny Paterson of the Information 9300 Security Group at Royal Holloway, University of London 9301 (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and 9302 Emilia Käsper for the initial patch. 9303 ([CVE-2013-0169]) 9304 9305 *Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson* 9306 9307 * Fix flaw in AESNI handling of TLS 1.2 and 1.1 records for CBC mode 9308 ciphersuites which can be exploited in a denial of service attack. 9309 Thanks go to and to Adam Langley <agl@chromium.org> for discovering 9310 and detecting this bug and to Wolfgang Ettlinger 9311 <wolfgang.ettlinger@gmail.com> for independently discovering this issue. 9312 ([CVE-2012-2686]) 9313 9314 *Adam Langley* 9315 9316 * Return an error when checking OCSP signatures when key is NULL. 9317 This fixes a DoS attack. ([CVE-2013-0166]) 9318 9319 *Steve Henson* 9320 9321 * Make openssl verify return errors. 9322 9323 *Chris Palmer <palmer@google.com> and Ben Laurie* 9324 9325 * Call OCSP Stapling callback after ciphersuite has been chosen, so 9326 the right response is stapled. Also change SSL_get_certificate() 9327 so it returns the certificate actually sent. 9328 See <http://rt.openssl.org/Ticket/Display.html?id=2836>. 9329 9330 *Rob Stradling <rob.stradling@comodo.com>* 9331 9332 * Fix possible deadlock when decoding public keys. 9333 9334 *Steve Henson* 9335 9336 * Don't use TLS 1.0 record version number in initial client hello 9337 if renegotiating. 9338 9339 *Steve Henson* 9340 9341### Changes between 1.0.1b and 1.0.1c [10 May 2012] 9342 9343 * Sanity check record length before skipping explicit IV in TLS 9344 1.2, 1.1 and DTLS to fix DoS attack. 9345 9346 Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic 9347 fuzzing as a service testing platform. 9348 ([CVE-2012-2333]) 9349 9350 *Steve Henson* 9351 9352 * Initialise tkeylen properly when encrypting CMS messages. 9353 Thanks to Solar Designer of Openwall for reporting this issue. 9354 9355 *Steve Henson* 9356 9357 * In FIPS mode don't try to use composite ciphers as they are not 9358 approved. 9359 9360 *Steve Henson* 9361 9362### Changes between 1.0.1a and 1.0.1b [26 Apr 2012] 9363 9364 * OpenSSL 1.0.0 sets SSL_OP_ALL to 0x80000FFFL and OpenSSL 1.0.1 and 9365 1.0.1a set SSL_OP_NO_TLSv1_1 to 0x00000400L which would unfortunately 9366 mean any application compiled against OpenSSL 1.0.0 headers setting 9367 SSL_OP_ALL would also set SSL_OP_NO_TLSv1_1, unintentionally disabling 9368 TLS 1.1 also. Fix this by changing the value of SSL_OP_NO_TLSv1_1 to 9369 0x10000000L Any application which was previously compiled against 9370 OpenSSL 1.0.1 or 1.0.1a headers and which cares about SSL_OP_NO_TLSv1_1 9371 will need to be recompiled as a result. Letting be results in 9372 inability to disable specifically TLS 1.1 and in client context, 9373 in unlike event, limit maximum offered version to TLS 1.0 [see below]. 9374 9375 *Steve Henson* 9376 9377 * In order to ensure interoperability SSL_OP_NO_protocolX does not 9378 disable just protocol X, but all protocols above X *if* there are 9379 protocols *below* X still enabled. In more practical terms it means 9380 that if application wants to disable TLS1.0 in favor of TLS1.1 and 9381 above, it's not sufficient to pass `SSL_OP_NO_TLSv1`, one has to pass 9382 `SSL_OP_NO_TLSv1|SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2`. This applies to 9383 client side. 9384 9385 *Andy Polyakov* 9386 9387### Changes between 1.0.1 and 1.0.1a [19 Apr 2012] 9388 9389 * Check for potentially exploitable overflows in asn1_d2i_read_bio 9390 BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer 9391 in CRYPTO_realloc_clean. 9392 9393 Thanks to Tavis Ormandy, Google Security Team, for discovering this 9394 issue and to Adam Langley <agl@chromium.org> for fixing it. 9395 ([CVE-2012-2110]) 9396 9397 *Adam Langley (Google), Tavis Ormandy, Google Security Team* 9398 9399 * Don't allow TLS 1.2 SHA-256 ciphersuites in TLS 1.0, 1.1 connections. 9400 9401 *Adam Langley* 9402 9403 * Workarounds for some broken servers that "hang" if a client hello 9404 record length exceeds 255 bytes. 9405 9406 1. Do not use record version number > TLS 1.0 in initial client 9407 hello: some (but not all) hanging servers will now work. 9408 2. If we set OPENSSL_MAX_TLS1_2_CIPHER_LENGTH this will truncate 9409 the number of ciphers sent in the client hello. This should be 9410 set to an even number, such as 50, for example by passing: 9411 -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 to config or Configure. 9412 Most broken servers should now work. 9413 3. If all else fails setting OPENSSL_NO_TLS1_2_CLIENT will disable 9414 TLS 1.2 client support entirely. 9415 9416 *Steve Henson* 9417 9418 * Fix SEGV in Vector Permutation AES module observed in OpenSSH. 9419 9420 *Andy Polyakov* 9421 9422### Changes between 1.0.0h and 1.0.1 [14 Mar 2012] 9423 9424 * Add compatibility with old MDC2 signatures which use an ASN1 OCTET 9425 STRING form instead of a DigestInfo. 9426 9427 *Steve Henson* 9428 9429 * The format used for MDC2 RSA signatures is inconsistent between EVP 9430 and the RSA_sign/RSA_verify functions. This was made more apparent when 9431 OpenSSL used RSA_sign/RSA_verify for some RSA signatures in particular 9432 those which went through EVP_PKEY_METHOD in 1.0.0 and later. Detect 9433 the correct format in RSA_verify so both forms transparently work. 9434 9435 *Steve Henson* 9436 9437 * Some servers which support TLS 1.0 can choke if we initially indicate 9438 support for TLS 1.2 and later renegotiate using TLS 1.0 in the RSA 9439 encrypted premaster secret. As a workaround use the maximum permitted 9440 client version in client hello, this should keep such servers happy 9441 and still work with previous versions of OpenSSL. 9442 9443 *Steve Henson* 9444 9445 * Add support for TLS/DTLS heartbeats. 9446 9447 *Robin Seggelmann <seggelmann@fh-muenster.de>* 9448 9449 * Add support for SCTP. 9450 9451 *Robin Seggelmann <seggelmann@fh-muenster.de>* 9452 9453 * Improved PRNG seeding for VOS. 9454 9455 *Paul Green <Paul.Green@stratus.com>* 9456 9457 * Extensive assembler packs updates, most notably: 9458 9459 - x86[_64]: AES-NI, PCLMULQDQ, RDRAND support; 9460 - x86[_64]: SSSE3 support (SHA1, vector-permutation AES); 9461 - x86_64: bit-sliced AES implementation; 9462 - ARM: NEON support, contemporary platforms optimizations; 9463 - s390x: z196 support; 9464 - `*`: GHASH and GF(2^m) multiplication implementations; 9465 9466 *Andy Polyakov* 9467 9468 * Make TLS-SRP code conformant with RFC 5054 API cleanup 9469 (removal of unnecessary code) 9470 9471 *Peter Sylvester <peter.sylvester@edelweb.fr>* 9472 9473 * Add TLS key material exporter from RFC 5705. 9474 9475 *Eric Rescorla* 9476 9477 * Add DTLS-SRTP negotiation from RFC 5764. 9478 9479 *Eric Rescorla* 9480 9481 * Add Next Protocol Negotiation, 9482 <http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-00>. Can be 9483 disabled with a no-npn flag to config or Configure. Code donated 9484 by Google. 9485 9486 *Adam Langley <agl@google.com> and Ben Laurie* 9487 9488 * Add optional 64-bit optimized implementations of elliptic curves NIST-P224, 9489 NIST-P256, NIST-P521, with constant-time single point multiplication on 9490 typical inputs. Compiler support for the nonstandard type `__uint128_t` is 9491 required to use this (present in gcc 4.4 and later, for 64-bit builds). 9492 Code made available under Apache License version 2.0. 9493 9494 Specify "enable-ec_nistp_64_gcc_128" on the Configure (or config) command 9495 line to include this in your build of OpenSSL, and run "make depend" (or 9496 "make update"). This enables the following EC_METHODs: 9497 9498 EC_GFp_nistp224_method() 9499 EC_GFp_nistp256_method() 9500 EC_GFp_nistp521_method() 9501 9502 EC_GROUP_new_by_curve_name() will automatically use these (while 9503 EC_GROUP_new_curve_GFp() currently prefers the more flexible 9504 implementations). 9505 9506 *Emilia Käsper, Adam Langley, Bodo Moeller (Google)* 9507 9508 * Use type ossl_ssize_t instead of ssize_t which isn't available on 9509 all platforms. Move ssize_t definition from e_os.h to the public 9510 header file e_os2.h as it now appears in public header file cms.h 9511 9512 *Steve Henson* 9513 9514 * New -sigopt option to the ca, req and x509 utilities. Additional 9515 signature parameters can be passed using this option and in 9516 particular PSS. 9517 9518 *Steve Henson* 9519 9520 * Add RSA PSS signing function. This will generate and set the 9521 appropriate AlgorithmIdentifiers for PSS based on those in the 9522 corresponding EVP_MD_CTX structure. No application support yet. 9523 9524 *Steve Henson* 9525 9526 * Support for companion algorithm specific ASN1 signing routines. 9527 New function ASN1_item_sign_ctx() signs a pre-initialised 9528 EVP_MD_CTX structure and sets AlgorithmIdentifiers based on 9529 the appropriate parameters. 9530 9531 *Steve Henson* 9532 9533 * Add new algorithm specific ASN1 verification initialisation function 9534 to EVP_PKEY_ASN1_METHOD: this is not in EVP_PKEY_METHOD since the ASN1 9535 handling will be the same no matter what EVP_PKEY_METHOD is used. 9536 Add a PSS handler to support verification of PSS signatures: checked 9537 against a number of sample certificates. 9538 9539 *Steve Henson* 9540 9541 * Add signature printing for PSS. Add PSS OIDs. 9542 9543 *Steve Henson, Martin Kaiser <lists@kaiser.cx>* 9544 9545 * Add algorithm specific signature printing. An individual ASN1 method 9546 can now print out signatures instead of the standard hex dump. 9547 9548 More complex signatures (e.g. PSS) can print out more meaningful 9549 information. Include DSA version that prints out the signature 9550 parameters r, s. 9551 9552 *Steve Henson* 9553 9554 * Password based recipient info support for CMS library: implementing 9555 RFC3211. 9556 9557 *Steve Henson* 9558 9559 * Split password based encryption into PBES2 and PBKDF2 functions. This 9560 neatly separates the code into cipher and PBE sections and is required 9561 for some algorithms that split PBES2 into separate pieces (such as 9562 password based CMS). 9563 9564 *Steve Henson* 9565 9566 * Session-handling fixes: 9567 - Fix handling of connections that are resuming with a session ID, 9568 but also support Session Tickets. 9569 - Fix a bug that suppressed issuing of a new ticket if the client 9570 presented a ticket with an expired session. 9571 - Try to set the ticket lifetime hint to something reasonable. 9572 - Make tickets shorter by excluding irrelevant information. 9573 - On the client side, don't ignore renewed tickets. 9574 9575 *Adam Langley, Bodo Moeller (Google)* 9576 9577 * Fix PSK session representation. 9578 9579 *Bodo Moeller* 9580 9581 * Add RC4-MD5 and AESNI-SHA1 "stitched" implementations. 9582 9583 This work was sponsored by Intel. 9584 9585 *Andy Polyakov* 9586 9587 * Add GCM support to TLS library. Some custom code is needed to split 9588 the IV between the fixed (from PRF) and explicit (from TLS record) 9589 portions. This adds all GCM ciphersuites supported by RFC5288 and 9590 RFC5289. Generalise some `AES*` cipherstrings to include GCM and 9591 add a special AESGCM string for GCM only. 9592 9593 *Steve Henson* 9594 9595 * Expand range of ctrls for AES GCM. Permit setting invocation 9596 field on decrypt and retrieval of invocation field only on encrypt. 9597 9598 *Steve Henson* 9599 9600 * Add HMAC ECC ciphersuites from RFC5289. Include SHA384 PRF support. 9601 As required by RFC5289 these ciphersuites cannot be used if for 9602 versions of TLS earlier than 1.2. 9603 9604 *Steve Henson* 9605 9606 * For FIPS capable OpenSSL interpret a NULL default public key method 9607 as unset and return the appropriate default but do *not* set the default. 9608 This means we can return the appropriate method in applications that 9609 switch between FIPS and non-FIPS modes. 9610 9611 *Steve Henson* 9612 9613 * Redirect HMAC and CMAC operations to FIPS module in FIPS mode. If an 9614 ENGINE is used then we cannot handle that in the FIPS module so we 9615 keep original code iff non-FIPS operations are allowed. 9616 9617 *Steve Henson* 9618 9619 * Add -attime option to openssl utilities. 9620 9621 *Peter Eckersley <pde@eff.org>, Ben Laurie and Steve Henson* 9622 9623 * Redirect DSA and DH operations to FIPS module in FIPS mode. 9624 9625 *Steve Henson* 9626 9627 * Redirect ECDSA and ECDH operations to FIPS module in FIPS mode. Also use 9628 FIPS EC methods unconditionally for now. 9629 9630 *Steve Henson* 9631 9632 * New build option no-ec2m to disable characteristic 2 code. 9633 9634 *Steve Henson* 9635 9636 * Backport libcrypto audit of return value checking from 1.1.0-dev; not 9637 all cases can be covered as some introduce binary incompatibilities. 9638 9639 *Steve Henson* 9640 9641 * Redirect RSA operations to FIPS module including keygen, 9642 encrypt, decrypt, sign and verify. Block use of non FIPS RSA methods. 9643 9644 *Steve Henson* 9645 9646 * Add similar low-level API blocking to ciphers. 9647 9648 *Steve Henson* 9649 9650 * low-level digest APIs are not approved in FIPS mode: any attempt 9651 to use these will cause a fatal error. Applications that *really* want 9652 to use them can use the `private_*` version instead. 9653 9654 *Steve Henson* 9655 9656 * Redirect cipher operations to FIPS module for FIPS builds. 9657 9658 *Steve Henson* 9659 9660 * Redirect digest operations to FIPS module for FIPS builds. 9661 9662 *Steve Henson* 9663 9664 * Update build system to add "fips" flag which will link in fipscanister.o 9665 for static and shared library builds embedding a signature if needed. 9666 9667 *Steve Henson* 9668 9669 * Output TLS supported curves in preference order instead of numerical 9670 order. This is currently hardcoded for the highest order curves first. 9671 This should be configurable so applications can judge speed vs strength. 9672 9673 *Steve Henson* 9674 9675 * Add TLS v1.2 server support for client authentication. 9676 9677 *Steve Henson* 9678 9679 * Add support for FIPS mode in ssl library: disable SSLv3, non-FIPS ciphers 9680 and enable MD5. 9681 9682 *Steve Henson* 9683 9684 * Functions FIPS_mode_set() and FIPS_mode() which call the underlying 9685 FIPS modules versions. 9686 9687 *Steve Henson* 9688 9689 * Add TLS v1.2 client side support for client authentication. Keep cache 9690 of handshake records longer as we don't know the hash algorithm to use 9691 until after the certificate request message is received. 9692 9693 *Steve Henson* 9694 9695 * Initial TLS v1.2 client support. Add a default signature algorithms 9696 extension including all the algorithms we support. Parse new signature 9697 format in client key exchange. Relax some ECC signing restrictions for 9698 TLS v1.2 as indicated in RFC5246. 9699 9700 *Steve Henson* 9701 9702 * Add server support for TLS v1.2 signature algorithms extension. Switch 9703 to new signature format when needed using client digest preference. 9704 All server ciphersuites should now work correctly in TLS v1.2. No client 9705 support yet and no support for client certificates. 9706 9707 *Steve Henson* 9708 9709 * Initial TLS v1.2 support. Add new SHA256 digest to ssl code, switch 9710 to SHA256 for PRF when using TLS v1.2 and later. Add new SHA256 based 9711 ciphersuites. At present only RSA key exchange ciphersuites work with 9712 TLS v1.2. Add new option for TLS v1.2 replacing the old and obsolete 9713 SSL_OP_PKCS1_CHECK flags with SSL_OP_NO_TLSv1_2. New TLSv1.2 methods 9714 and version checking. 9715 9716 *Steve Henson* 9717 9718 * New option OPENSSL_NO_SSL_INTERN. If an application can be compiled 9719 with this defined it will not be affected by any changes to ssl internal 9720 structures. Add several utility functions to allow openssl application 9721 to work with OPENSSL_NO_SSL_INTERN defined. 9722 9723 *Steve Henson* 9724 9725 * A long standing patch to add support for SRP from EdelWeb (Peter 9726 Sylvester and Christophe Renou) was integrated. 9727 *Christophe Renou <christophe.renou@edelweb.fr>, Peter Sylvester 9728 <peter.sylvester@edelweb.fr>, Tom Wu <tjw@cs.stanford.edu>, and 9729 Ben Laurie* 9730 9731 * Add functions to copy EVP_PKEY_METHOD and retrieve flags and id. 9732 9733 *Steve Henson* 9734 9735 * Permit abbreviated handshakes when renegotiating using the function 9736 SSL_renegotiate_abbreviated(). 9737 9738 *Robin Seggelmann <seggelmann@fh-muenster.de>* 9739 9740 * Add call to ENGINE_register_all_complete() to 9741 ENGINE_load_builtin_engines(), so some implementations get used 9742 automatically instead of needing explicit application support. 9743 9744 *Steve Henson* 9745 9746 * Add support for TLS key exporter as described in RFC5705. 9747 9748 *Robin Seggelmann <seggelmann@fh-muenster.de>, Steve Henson* 9749 9750 * Initial TLSv1.1 support. Since TLSv1.1 is very similar to TLS v1.0 only 9751 a few changes are required: 9752 9753 Add SSL_OP_NO_TLSv1_1 flag. 9754 Add TLSv1_1 methods. 9755 Update version checking logic to handle version 1.1. 9756 Add explicit IV handling (ported from DTLS code). 9757 Add command line options to s_client/s_server. 9758 9759 *Steve Henson* 9760 9761OpenSSL 1.0.0 9762------------- 9763 9764### Changes between 1.0.0s and 1.0.0t [3 Dec 2015] 9765 9766 * X509_ATTRIBUTE memory leak 9767 9768 When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak 9769 memory. This structure is used by the PKCS#7 and CMS routines so any 9770 application which reads PKCS#7 or CMS data from untrusted sources is 9771 affected. SSL/TLS is not affected. 9772 9773 This issue was reported to OpenSSL by Adam Langley (Google/BoringSSL) using 9774 libFuzzer. 9775 ([CVE-2015-3195]) 9776 9777 *Stephen Henson* 9778 9779 * Race condition handling PSK identify hint 9780 9781 If PSK identity hints are received by a multi-threaded client then 9782 the values are wrongly updated in the parent SSL_CTX structure. This can 9783 result in a race condition potentially leading to a double free of the 9784 identify hint data. 9785 ([CVE-2015-3196]) 9786 9787 *Stephen Henson* 9788 9789### Changes between 1.0.0r and 1.0.0s [11 Jun 2015] 9790 9791 * Malformed ECParameters causes infinite loop 9792 9793 When processing an ECParameters structure OpenSSL enters an infinite loop 9794 if the curve specified is over a specially malformed binary polynomial 9795 field. 9796 9797 This can be used to perform denial of service against any 9798 system which processes public keys, certificate requests or 9799 certificates. This includes TLS clients and TLS servers with 9800 client authentication enabled. 9801 9802 This issue was reported to OpenSSL by Joseph Barr-Pixton. 9803 ([CVE-2015-1788]) 9804 9805 *Andy Polyakov* 9806 9807 * Exploitable out-of-bounds read in X509_cmp_time 9808 9809 X509_cmp_time does not properly check the length of the ASN1_TIME 9810 string and can read a few bytes out of bounds. In addition, 9811 X509_cmp_time accepts an arbitrary number of fractional seconds in the 9812 time string. 9813 9814 An attacker can use this to craft malformed certificates and CRLs of 9815 various sizes and potentially cause a segmentation fault, resulting in 9816 a DoS on applications that verify certificates or CRLs. TLS clients 9817 that verify CRLs are affected. TLS clients and servers with client 9818 authentication enabled may be affected if they use custom verification 9819 callbacks. 9820 9821 This issue was reported to OpenSSL by Robert Swiecki (Google), and 9822 independently by Hanno Böck. 9823 ([CVE-2015-1789]) 9824 9825 *Emilia Käsper* 9826 9827 * PKCS7 crash with missing EnvelopedContent 9828 9829 The PKCS#7 parsing code does not handle missing inner EncryptedContent 9830 correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs 9831 with missing content and trigger a NULL pointer dereference on parsing. 9832 9833 Applications that decrypt PKCS#7 data or otherwise parse PKCS#7 9834 structures from untrusted sources are affected. OpenSSL clients and 9835 servers are not affected. 9836 9837 This issue was reported to OpenSSL by Michal Zalewski (Google). 9838 ([CVE-2015-1790]) 9839 9840 *Emilia Käsper* 9841 9842 * CMS verify infinite loop with unknown hash function 9843 9844 When verifying a signedData message the CMS code can enter an infinite loop 9845 if presented with an unknown hash function OID. This can be used to perform 9846 denial of service against any system which verifies signedData messages using 9847 the CMS code. 9848 This issue was reported to OpenSSL by Johannes Bauer. 9849 ([CVE-2015-1792]) 9850 9851 *Stephen Henson* 9852 9853 * Race condition handling NewSessionTicket 9854 9855 If a NewSessionTicket is received by a multi-threaded client when attempting to 9856 reuse a previous ticket then a race condition can occur potentially leading to 9857 a double free of the ticket data. 9858 ([CVE-2015-1791]) 9859 9860 *Matt Caswell* 9861 9862### Changes between 1.0.0q and 1.0.0r [19 Mar 2015] 9863 9864 * Segmentation fault in ASN1_TYPE_cmp fix 9865 9866 The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is 9867 made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check 9868 certificate signature algorithm consistency this can be used to crash any 9869 certificate verification operation and exploited in a DoS attack. Any 9870 application which performs certificate verification is vulnerable including 9871 OpenSSL clients and servers which enable client authentication. 9872 ([CVE-2015-0286]) 9873 9874 *Stephen Henson* 9875 9876 * ASN.1 structure reuse memory corruption fix 9877 9878 Reusing a structure in ASN.1 parsing may allow an attacker to cause 9879 memory corruption via an invalid write. Such reuse is and has been 9880 strongly discouraged and is believed to be rare. 9881 9882 Applications that parse structures containing CHOICE or ANY DEFINED BY 9883 components may be affected. Certificate parsing (d2i_X509 and related 9884 functions) are however not affected. OpenSSL clients and servers are 9885 not affected. 9886 ([CVE-2015-0287]) 9887 9888 *Stephen Henson* 9889 9890 * PKCS7 NULL pointer dereferences fix 9891 9892 The PKCS#7 parsing code does not handle missing outer ContentInfo 9893 correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with 9894 missing content and trigger a NULL pointer dereference on parsing. 9895 9896 Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or 9897 otherwise parse PKCS#7 structures from untrusted sources are 9898 affected. OpenSSL clients and servers are not affected. 9899 9900 This issue was reported to OpenSSL by Michal Zalewski (Google). 9901 ([CVE-2015-0289]) 9902 9903 *Emilia Käsper* 9904 9905 * DoS via reachable assert in SSLv2 servers fix 9906 9907 A malicious client can trigger an OPENSSL_assert (i.e., an abort) in 9908 servers that both support SSLv2 and enable export cipher suites by sending 9909 a specially crafted SSLv2 CLIENT-MASTER-KEY message. 9910 9911 This issue was discovered by Sean Burford (Google) and Emilia Käsper 9912 (OpenSSL development team). 9913 ([CVE-2015-0293]) 9914 9915 *Emilia Käsper* 9916 9917 * Use After Free following d2i_ECPrivatekey error fix 9918 9919 A malformed EC private key file consumed via the d2i_ECPrivateKey function 9920 could cause a use after free condition. This, in turn, could cause a double 9921 free in several private key parsing functions (such as d2i_PrivateKey 9922 or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption 9923 for applications that receive EC private keys from untrusted 9924 sources. This scenario is considered rare. 9925 9926 This issue was discovered by the BoringSSL project and fixed in their 9927 commit 517073cd4b. 9928 ([CVE-2015-0209]) 9929 9930 *Matt Caswell* 9931 9932 * X509_to_X509_REQ NULL pointer deref fix 9933 9934 The function X509_to_X509_REQ will crash with a NULL pointer dereference if 9935 the certificate key is invalid. This function is rarely used in practice. 9936 9937 This issue was discovered by Brian Carpenter. 9938 ([CVE-2015-0288]) 9939 9940 *Stephen Henson* 9941 9942 * Removed the export ciphers from the DEFAULT ciphers 9943 9944 *Kurt Roeckx* 9945 9946### Changes between 1.0.0p and 1.0.0q [15 Jan 2015] 9947 9948 * Build fixes for the Windows and OpenVMS platforms 9949 9950 *Matt Caswell and Richard Levitte* 9951 9952### Changes between 1.0.0o and 1.0.0p [8 Jan 2015] 9953 9954 * Fix DTLS segmentation fault in dtls1_get_record. A carefully crafted DTLS 9955 message can cause a segmentation fault in OpenSSL due to a NULL pointer 9956 dereference. This could lead to a Denial Of Service attack. Thanks to 9957 Markus Stenberg of Cisco Systems, Inc. for reporting this issue. 9958 ([CVE-2014-3571]) 9959 9960 *Steve Henson* 9961 9962 * Fix DTLS memory leak in dtls1_buffer_record. A memory leak can occur in the 9963 dtls1_buffer_record function under certain conditions. In particular this 9964 could occur if an attacker sent repeated DTLS records with the same 9965 sequence number but for the next epoch. The memory leak could be exploited 9966 by an attacker in a Denial of Service attack through memory exhaustion. 9967 Thanks to Chris Mueller for reporting this issue. 9968 ([CVE-2015-0206]) 9969 9970 *Matt Caswell* 9971 9972 * Fix issue where no-ssl3 configuration sets method to NULL. When openssl is 9973 built with the no-ssl3 option and an SSL v3 ClientHello is received the ssl 9974 method would be set to NULL which could later result in a NULL pointer 9975 dereference. Thanks to Frank Schmirler for reporting this issue. 9976 ([CVE-2014-3569]) 9977 9978 *Kurt Roeckx* 9979 9980 * Abort handshake if server key exchange message is omitted for ephemeral 9981 ECDH ciphersuites. 9982 9983 Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for 9984 reporting this issue. 9985 ([CVE-2014-3572]) 9986 9987 *Steve Henson* 9988 9989 * Remove non-export ephemeral RSA code on client and server. This code 9990 violated the TLS standard by allowing the use of temporary RSA keys in 9991 non-export ciphersuites and could be used by a server to effectively 9992 downgrade the RSA key length used to a value smaller than the server 9993 certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at 9994 INRIA or reporting this issue. 9995 ([CVE-2015-0204]) 9996 9997 *Steve Henson* 9998 9999 * Fixed issue where DH client certificates are accepted without verification. 10000 An OpenSSL server will accept a DH certificate for client authentication 10001 without the certificate verify message. This effectively allows a client to 10002 authenticate without the use of a private key. This only affects servers 10003 which trust a client certificate authority which issues certificates 10004 containing DH keys: these are extremely rare and hardly ever encountered. 10005 Thanks for Karthikeyan Bhargavan of the PROSECCO team at INRIA or reporting 10006 this issue. 10007 ([CVE-2015-0205]) 10008 10009 *Steve Henson* 10010 10011 * Correct Bignum squaring. Bignum squaring (BN_sqr) may produce incorrect 10012 results on some platforms, including x86_64. This bug occurs at random 10013 with a very low probability, and is not known to be exploitable in any 10014 way, though its exact impact is difficult to determine. Thanks to Pieter 10015 Wuille (Blockstream) who reported this issue and also suggested an initial 10016 fix. Further analysis was conducted by the OpenSSL development team and 10017 Adam Langley of Google. The final fix was developed by Andy Polyakov of 10018 the OpenSSL core team. 10019 ([CVE-2014-3570]) 10020 10021 *Andy Polyakov* 10022 10023 * Fix various certificate fingerprint issues. 10024 10025 By using non-DER or invalid encodings outside the signed portion of a 10026 certificate the fingerprint can be changed without breaking the signature. 10027 Although no details of the signed portion of the certificate can be changed 10028 this can cause problems with some applications: e.g. those using the 10029 certificate fingerprint for blacklists. 10030 10031 1. Reject signatures with non zero unused bits. 10032 10033 If the BIT STRING containing the signature has non zero unused bits reject 10034 the signature. All current signature algorithms require zero unused bits. 10035 10036 2. Check certificate algorithm consistency. 10037 10038 Check the AlgorithmIdentifier inside TBS matches the one in the 10039 certificate signature. NB: this will result in signature failure 10040 errors for some broken certificates. 10041 10042 Thanks to Konrad Kraszewski from Google for reporting this issue. 10043 10044 3. Check DSA/ECDSA signatures use DER. 10045 10046 Re-encode DSA/ECDSA signatures and compare with the original received 10047 signature. Return an error if there is a mismatch. 10048 10049 This will reject various cases including garbage after signature 10050 (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS 10051 program for discovering this case) and use of BER or invalid ASN.1 INTEGERs 10052 (negative or with leading zeroes). 10053 10054 Further analysis was conducted and fixes were developed by Stephen Henson 10055 of the OpenSSL core team. 10056 10057 ([CVE-2014-8275]) 10058 10059 *Steve Henson* 10060 10061### Changes between 1.0.0n and 1.0.0o [15 Oct 2014] 10062 10063 * Session Ticket Memory Leak. 10064 10065 When an OpenSSL SSL/TLS/DTLS server receives a session ticket the 10066 integrity of that ticket is first verified. In the event of a session 10067 ticket integrity check failing, OpenSSL will fail to free memory 10068 causing a memory leak. By sending a large number of invalid session 10069 tickets an attacker could exploit this issue in a Denial Of Service 10070 attack. 10071 ([CVE-2014-3567]) 10072 10073 *Steve Henson* 10074 10075 * Build option no-ssl3 is incomplete. 10076 10077 When OpenSSL is configured with "no-ssl3" as a build option, servers 10078 could accept and complete an SSL 3.0 handshake, and clients could be 10079 configured to send them. 10080 ([CVE-2014-3568]) 10081 10082 *Akamai and the OpenSSL team* 10083 10084 * Add support for TLS_FALLBACK_SCSV. 10085 Client applications doing fallback retries should call 10086 SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV). 10087 ([CVE-2014-3566]) 10088 10089 *Adam Langley, Bodo Moeller* 10090 10091 * Add additional DigestInfo checks. 10092 10093 Re-encode DigestInto in DER and check against the original when 10094 verifying RSA signature: this will reject any improperly encoded 10095 DigestInfo structures. 10096 10097 Note: this is a precautionary measure and no attacks are currently known. 10098 10099 *Steve Henson* 10100 10101### Changes between 1.0.0m and 1.0.0n [6 Aug 2014] 10102 10103 * OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject 10104 to a denial of service attack. A malicious server can crash the client 10105 with a null pointer dereference (read) by specifying an anonymous (EC)DH 10106 ciphersuite and sending carefully crafted handshake messages. 10107 10108 Thanks to Felix Gröbert (Google) for discovering and researching this 10109 issue. 10110 ([CVE-2014-3510]) 10111 10112 *Emilia Käsper* 10113 10114 * By sending carefully crafted DTLS packets an attacker could cause openssl 10115 to leak memory. This can be exploited through a Denial of Service attack. 10116 Thanks to Adam Langley for discovering and researching this issue. 10117 ([CVE-2014-3507]) 10118 10119 *Adam Langley* 10120 10121 * An attacker can force openssl to consume large amounts of memory whilst 10122 processing DTLS handshake messages. This can be exploited through a 10123 Denial of Service attack. 10124 Thanks to Adam Langley for discovering and researching this issue. 10125 ([CVE-2014-3506]) 10126 10127 *Adam Langley* 10128 10129 * An attacker can force an error condition which causes openssl to crash 10130 whilst processing DTLS packets due to memory being freed twice. This 10131 can be exploited through a Denial of Service attack. 10132 Thanks to Adam Langley and Wan-Teh Chang for discovering and researching 10133 this issue. 10134 ([CVE-2014-3505]) 10135 10136 *Adam Langley* 10137 10138 * If a multithreaded client connects to a malicious server using a resumed 10139 session and the server sends an ec point format extension it could write 10140 up to 255 bytes to freed memory. 10141 10142 Thanks to Gabor Tyukasz (LogMeIn Inc) for discovering and researching this 10143 issue. 10144 ([CVE-2014-3509]) 10145 10146 *Gabor Tyukasz* 10147 10148 * A flaw in OBJ_obj2txt may cause pretty printing functions such as 10149 X509_name_oneline, X509_name_print_ex et al. to leak some information 10150 from the stack. Applications may be affected if they echo pretty printing 10151 output to the attacker. 10152 10153 Thanks to Ivan Fratric (Google) for discovering this issue. 10154 ([CVE-2014-3508]) 10155 10156 *Emilia Käsper, and Steve Henson* 10157 10158 * Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.) 10159 for corner cases. (Certain input points at infinity could lead to 10160 bogus results, with non-infinity inputs mapped to infinity too.) 10161 10162 *Bodo Moeller* 10163 10164### Changes between 1.0.0l and 1.0.0m [5 Jun 2014] 10165 10166 * Fix for SSL/TLS MITM flaw. An attacker using a carefully crafted 10167 handshake can force the use of weak keying material in OpenSSL 10168 SSL/TLS clients and servers. 10169 10170 Thanks to KIKUCHI Masashi (Lepidum Co. Ltd.) for discovering and 10171 researching this issue. ([CVE-2014-0224]) 10172 10173 *KIKUCHI Masashi, Steve Henson* 10174 10175 * Fix DTLS recursion flaw. By sending an invalid DTLS handshake to an 10176 OpenSSL DTLS client the code can be made to recurse eventually crashing 10177 in a DoS attack. 10178 10179 Thanks to Imre Rad (Search-Lab Ltd.) for discovering this issue. 10180 ([CVE-2014-0221]) 10181 10182 *Imre Rad, Steve Henson* 10183 10184 * Fix DTLS invalid fragment vulnerability. A buffer overrun attack can 10185 be triggered by sending invalid DTLS fragments to an OpenSSL DTLS 10186 client or server. This is potentially exploitable to run arbitrary 10187 code on a vulnerable client or server. 10188 10189 Thanks to Jüri Aedla for reporting this issue. ([CVE-2014-0195]) 10190 10191 *Jüri Aedla, Steve Henson* 10192 10193 * Fix bug in TLS code where clients enable anonymous ECDH ciphersuites 10194 are subject to a denial of service attack. 10195 10196 Thanks to Felix Gröbert and Ivan Fratric at Google for discovering 10197 this issue. ([CVE-2014-3470]) 10198 10199 *Felix Gröbert, Ivan Fratric, Steve Henson* 10200 10201 * Harmonize version and its documentation. -f flag is used to display 10202 compilation flags. 10203 10204 *mancha <mancha1@zoho.com>* 10205 10206 * Fix eckey_priv_encode so it immediately returns an error upon a failure 10207 in i2d_ECPrivateKey. 10208 10209 *mancha <mancha1@zoho.com>* 10210 10211 * Fix some double frees. These are not thought to be exploitable. 10212 10213 *mancha <mancha1@zoho.com>* 10214 10215 * Fix for the attack described in the paper "Recovering OpenSSL 10216 ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack" 10217 by Yuval Yarom and Naomi Benger. Details can be obtained from: 10218 <http://eprint.iacr.org/2014/140> 10219 10220 Thanks to Yuval Yarom and Naomi Benger for discovering this 10221 flaw and to Yuval Yarom for supplying a fix ([CVE-2014-0076]) 10222 10223 *Yuval Yarom and Naomi Benger* 10224 10225### Changes between 1.0.0k and 1.0.0l [6 Jan 2014] 10226 10227 * Keep original DTLS digest and encryption contexts in retransmission 10228 structures so we can use the previous session parameters if they need 10229 to be resent. ([CVE-2013-6450]) 10230 10231 *Steve Henson* 10232 10233 * Add option SSL_OP_SAFARI_ECDHE_ECDSA_BUG (part of SSL_OP_ALL) which 10234 avoids preferring ECDHE-ECDSA ciphers when the client appears to be 10235 Safari on OS X. Safari on OS X 10.8..10.8.3 advertises support for 10236 several ECDHE-ECDSA ciphers, but fails to negotiate them. The bug 10237 is fixed in OS X 10.8.4, but Apple have ruled out both hot fixing 10238 10.8..10.8.3 and forcing users to upgrade to 10.8.4 or newer. 10239 10240 *Rob Stradling, Adam Langley* 10241 10242### Changes between 1.0.0j and 1.0.0k [5 Feb 2013] 10243 10244 * Make the decoding of SSLv3, TLS and DTLS CBC records constant time. 10245 10246 This addresses the flaw in CBC record processing discovered by 10247 Nadhem Alfardan and Kenny Paterson. Details of this attack can be found 10248 at: <http://www.isg.rhul.ac.uk/tls/> 10249 10250 Thanks go to Nadhem Alfardan and Kenny Paterson of the Information 10251 Security Group at Royal Holloway, University of London 10252 (www.isg.rhul.ac.uk) for discovering this flaw and Adam Langley and 10253 Emilia Käsper for the initial patch. 10254 ([CVE-2013-0169]) 10255 10256 *Emilia Käsper, Adam Langley, Ben Laurie, Andy Polyakov, Steve Henson* 10257 10258 * Return an error when checking OCSP signatures when key is NULL. 10259 This fixes a DoS attack. ([CVE-2013-0166]) 10260 10261 *Steve Henson* 10262 10263 * Call OCSP Stapling callback after ciphersuite has been chosen, so 10264 the right response is stapled. Also change SSL_get_certificate() 10265 so it returns the certificate actually sent. 10266 See <http://rt.openssl.org/Ticket/Display.html?id=2836>. 10267 (This is a backport) 10268 10269 *Rob Stradling <rob.stradling@comodo.com>* 10270 10271 * Fix possible deadlock when decoding public keys. 10272 10273 *Steve Henson* 10274 10275### Changes between 1.0.0i and 1.0.0j [10 May 2012] 10276 10277[NB: OpenSSL 1.0.0i and later 1.0.0 patch levels were released after 10278OpenSSL 1.0.1.] 10279 10280 * Sanity check record length before skipping explicit IV in DTLS 10281 to fix DoS attack. 10282 10283 Thanks to Codenomicon for discovering this issue using Fuzz-o-Matic 10284 fuzzing as a service testing platform. 10285 ([CVE-2012-2333]) 10286 10287 *Steve Henson* 10288 10289 * Initialise tkeylen properly when encrypting CMS messages. 10290 Thanks to Solar Designer of Openwall for reporting this issue. 10291 10292 *Steve Henson* 10293 10294### Changes between 1.0.0h and 1.0.0i [19 Apr 2012] 10295 10296 * Check for potentially exploitable overflows in asn1_d2i_read_bio 10297 BUF_mem_grow and BUF_mem_grow_clean. Refuse attempts to shrink buffer 10298 in CRYPTO_realloc_clean. 10299 10300 Thanks to Tavis Ormandy, Google Security Team, for discovering this 10301 issue and to Adam Langley <agl@chromium.org> for fixing it. 10302 ([CVE-2012-2110]) 10303 10304 *Adam Langley (Google), Tavis Ormandy, Google Security Team* 10305 10306### Changes between 1.0.0g and 1.0.0h [12 Mar 2012] 10307 10308 * Fix MMA (Bleichenbacher's attack on PKCS #1 v1.5 RSA padding) weakness 10309 in CMS and PKCS7 code. When RSA decryption fails use a random key for 10310 content decryption and always return the same error. Note: this attack 10311 needs on average 2^20 messages so it only affects automated senders. The 10312 old behaviour can be re-enabled in the CMS code by setting the 10313 CMS_DEBUG_DECRYPT flag: this is useful for debugging and testing where 10314 an MMA defence is not necessary. 10315 Thanks to Ivan Nestlerode <inestlerode@us.ibm.com> for discovering 10316 this issue. ([CVE-2012-0884]) 10317 10318 *Steve Henson* 10319 10320 * Fix CVE-2011-4619: make sure we really are receiving a 10321 client hello before rejecting multiple SGC restarts. Thanks to 10322 Ivan Nestlerode <inestlerode@us.ibm.com> for discovering this bug. 10323 10324 *Steve Henson* 10325 10326### Changes between 1.0.0f and 1.0.0g [18 Jan 2012] 10327 10328 * Fix for DTLS DoS issue introduced by fix for CVE-2011-4109. 10329 Thanks to Antonio Martin, Enterprise Secure Access Research and 10330 Development, Cisco Systems, Inc. for discovering this bug and 10331 preparing a fix. ([CVE-2012-0050]) 10332 10333 *Antonio Martin* 10334 10335### Changes between 1.0.0e and 1.0.0f [4 Jan 2012] 10336 10337 * Nadhem Alfardan and Kenny Paterson have discovered an extension 10338 of the Vaudenay padding oracle attack on CBC mode encryption 10339 which enables an efficient plaintext recovery attack against 10340 the OpenSSL implementation of DTLS. Their attack exploits timing 10341 differences arising during decryption processing. A research 10342 paper describing this attack can be found at: 10343 <http://www.isg.rhul.ac.uk/~kp/dtls.pdf> 10344 Thanks go to Nadhem Alfardan and Kenny Paterson of the Information 10345 Security Group at Royal Holloway, University of London 10346 (www.isg.rhul.ac.uk) for discovering this flaw and to Robin Seggelmann 10347 <seggelmann@fh-muenster.de> and Michael Tuexen <tuexen@fh-muenster.de> 10348 for preparing the fix. ([CVE-2011-4108]) 10349 10350 *Robin Seggelmann, Michael Tuexen* 10351 10352 * Clear bytes used for block padding of SSL 3.0 records. 10353 ([CVE-2011-4576]) 10354 10355 *Adam Langley (Google)* 10356 10357 * Only allow one SGC handshake restart for SSL/TLS. Thanks to George 10358 Kadianakis <desnacked@gmail.com> for discovering this issue and 10359 Adam Langley for preparing the fix. ([CVE-2011-4619]) 10360 10361 *Adam Langley (Google)* 10362 10363 * Check parameters are not NULL in GOST ENGINE. ([CVE-2012-0027]) 10364 10365 *Andrey Kulikov <amdeich@gmail.com>* 10366 10367 * Prevent malformed RFC3779 data triggering an assertion failure. 10368 Thanks to Andrew Chi, BBN Technologies, for discovering the flaw 10369 and Rob Austein <sra@hactrn.net> for fixing it. ([CVE-2011-4577]) 10370 10371 *Rob Austein <sra@hactrn.net>* 10372 10373 * Improved PRNG seeding for VOS. 10374 10375 *Paul Green <Paul.Green@stratus.com>* 10376 10377 * Fix ssl_ciph.c set-up race. 10378 10379 *Adam Langley (Google)* 10380 10381 * Fix spurious failures in ecdsatest.c. 10382 10383 *Emilia Käsper (Google)* 10384 10385 * Fix the BIO_f_buffer() implementation (which was mixing different 10386 interpretations of the `..._len` fields). 10387 10388 *Adam Langley (Google)* 10389 10390 * Fix handling of BN_BLINDING: now BN_BLINDING_invert_ex (rather than 10391 BN_BLINDING_invert_ex) calls BN_BLINDING_update, ensuring that concurrent 10392 threads won't reuse the same blinding coefficients. 10393 10394 This also avoids the need to obtain the CRYPTO_LOCK_RSA_BLINDING 10395 lock to call BN_BLINDING_invert_ex, and avoids one use of 10396 BN_BLINDING_update for each BN_BLINDING structure (previously, 10397 the last update always remained unused). 10398 10399 *Emilia Käsper (Google)* 10400 10401 * In ssl3_clear, preserve s3->init_extra along with s3->rbuf. 10402 10403 *Bob Buckholz (Google)* 10404 10405### Changes between 1.0.0d and 1.0.0e [6 Sep 2011] 10406 10407 * Fix bug where CRLs with nextUpdate in the past are sometimes accepted 10408 by initialising X509_STORE_CTX properly. ([CVE-2011-3207]) 10409 10410 *Kaspar Brand <ossl@velox.ch>* 10411 10412 * Fix SSL memory handling for (EC)DH ciphersuites, in particular 10413 for multi-threaded use of ECDH. ([CVE-2011-3210]) 10414 10415 *Adam Langley (Google)* 10416 10417 * Fix x509_name_ex_d2i memory leak on bad inputs. 10418 10419 *Bodo Moeller* 10420 10421 * Remove hard coded ecdsaWithSHA1 signature tests in ssl code and check 10422 signature public key algorithm by using OID xref utilities instead. 10423 Before this you could only use some ECC ciphersuites with SHA1 only. 10424 10425 *Steve Henson* 10426 10427 * Add protection against ECDSA timing attacks as mentioned in the paper 10428 by Billy Bob Brumley and Nicola Tuveri, see: 10429 <http://eprint.iacr.org/2011/232.pdf> 10430 10431 *Billy Bob Brumley and Nicola Tuveri* 10432 10433### Changes between 1.0.0c and 1.0.0d [8 Feb 2011] 10434 10435 * Fix parsing of OCSP stapling ClientHello extension. CVE-2011-0014 10436 10437 *Neel Mehta, Adam Langley, Bodo Moeller (Google)* 10438 10439 * Fix bug in string printing code: if *any* escaping is enabled we must 10440 escape the escape character (backslash) or the resulting string is 10441 ambiguous. 10442 10443 *Steve Henson* 10444 10445### Changes between 1.0.0b and 1.0.0c [2 Dec 2010] 10446 10447 * Disable code workaround for ancient and obsolete Netscape browsers 10448 and servers: an attacker can use it in a ciphersuite downgrade attack. 10449 Thanks to Martin Rex for discovering this bug. CVE-2010-4180 10450 10451 *Steve Henson* 10452 10453 * Fixed J-PAKE implementation error, originally discovered by 10454 Sebastien Martini, further info and confirmation from Stefan 10455 Arentz and Feng Hao. Note that this fix is a security fix. CVE-2010-4252 10456 10457 *Ben Laurie* 10458 10459### Changes between 1.0.0a and 1.0.0b [16 Nov 2010] 10460 10461 * Fix extension code to avoid race conditions which can result in a buffer 10462 overrun vulnerability: resumed sessions must not be modified as they can 10463 be shared by multiple threads. CVE-2010-3864 10464 10465 *Steve Henson* 10466 10467 * Fix WIN32 build system to correctly link an ENGINE directory into 10468 a DLL. 10469 10470 *Steve Henson* 10471 10472### Changes between 1.0.0 and 1.0.0a [01 Jun 2010] 10473 10474 * Check return value of int_rsa_verify in pkey_rsa_verifyrecover 10475 ([CVE-2010-1633]) 10476 10477 *Steve Henson, Peter-Michael Hager <hager@dortmund.net>* 10478 10479### Changes between 0.9.8n and 1.0.0 [29 Mar 2010] 10480 10481 * Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher 10482 context. The operation can be customised via the ctrl mechanism in 10483 case ENGINEs want to include additional functionality. 10484 10485 *Steve Henson* 10486 10487 * Tolerate yet another broken PKCS#8 key format: private key value negative. 10488 10489 *Steve Henson* 10490 10491 * Add new -subject_hash_old and -issuer_hash_old options to x509 utility to 10492 output hashes compatible with older versions of OpenSSL. 10493 10494 *Willy Weisz <weisz@vcpc.univie.ac.at>* 10495 10496 * Fix compression algorithm handling: if resuming a session use the 10497 compression algorithm of the resumed session instead of determining 10498 it from client hello again. Don't allow server to change algorithm. 10499 10500 *Steve Henson* 10501 10502 * Add load_crls() function to commands tidying load_certs() too. Add option 10503 to verify utility to allow additional CRLs to be included. 10504 10505 *Steve Henson* 10506 10507 * Update OCSP request code to permit adding custom headers to the request: 10508 some responders need this. 10509 10510 *Steve Henson* 10511 10512 * The function EVP_PKEY_sign() returns <=0 on error: check return code 10513 correctly. 10514 10515 *Julia Lawall <julia@diku.dk>* 10516 10517 * Update verify callback code in `apps/s_cb.c` and `apps/verify.c`, it 10518 needlessly dereferenced structures, used obsolete functions and 10519 didn't handle all updated verify codes correctly. 10520 10521 *Steve Henson* 10522 10523 * Disable MD2 in the default configuration. 10524 10525 *Steve Henson* 10526 10527 * In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to 10528 indicate the initial BIO being pushed or popped. This makes it possible 10529 to determine whether the BIO is the one explicitly called or as a result 10530 of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so 10531 it handles reference counts correctly and doesn't zero out the I/O bio 10532 when it is not being explicitly popped. WARNING: applications which 10533 included workarounds for the old buggy behaviour will need to be modified 10534 or they could free up already freed BIOs. 10535 10536 *Steve Henson* 10537 10538 * Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni 10539 renaming to all platforms (within the 0.9.8 branch, this was 10540 done conditionally on Netware platforms to avoid a name clash). 10541 10542 *Guenter <lists@gknw.net>* 10543 10544 * Add ECDHE and PSK support to DTLS. 10545 10546 *Michael Tuexen <tuexen@fh-muenster.de>* 10547 10548 * Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't 10549 be used on C++. 10550 10551 *Steve Henson* 10552 10553 * Add "missing" function EVP_MD_flags() (without this the only way to 10554 retrieve a digest flags is by accessing the structure directly. Update 10555 `EVP_MD_do_all*()` and `EVP_CIPHER_do_all*()` to include the name a digest 10556 or cipher is registered as in the "from" argument. Print out all 10557 registered digests in the dgst usage message instead of manually 10558 attempting to work them out. 10559 10560 *Steve Henson* 10561 10562 * If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello: 10563 this allows the use of compression and extensions. Change default cipher 10564 string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2 10565 by default unless an application cipher string requests it. 10566 10567 *Steve Henson* 10568 10569 * Alter match criteria in PKCS12_parse(). It used to try to use local 10570 key ids to find matching certificates and keys but some PKCS#12 files 10571 don't follow the (somewhat unwritten) rules and this strategy fails. 10572 Now just gather all certificates together and the first private key 10573 then look for the first certificate that matches the key. 10574 10575 *Steve Henson* 10576 10577 * Support use of registered digest and cipher names for dgst and cipher 10578 commands instead of having to add each one as a special case. So now 10579 you can do: 10580 10581 openssl sha256 foo 10582 10583 as well as: 10584 10585 openssl dgst -sha256 foo 10586 10587 and this works for ENGINE based algorithms too. 10588 10589 *Steve Henson* 10590 10591 * Update Gost ENGINE to support parameter files. 10592 10593 *Victor B. Wagner <vitus@cryptocom.ru>* 10594 10595 * Support GeneralizedTime in ca utility. 10596 10597 *Oliver Martin <oliver@volatilevoid.net>, Steve Henson* 10598 10599 * Enhance the hash format used for certificate directory links. The new 10600 form uses the canonical encoding (meaning equivalent names will work 10601 even if they aren't identical) and uses SHA1 instead of MD5. This form 10602 is incompatible with the older format and as a result c_rehash should 10603 be used to rebuild symbolic links. 10604 10605 *Steve Henson* 10606 10607 * Make PKCS#8 the default write format for private keys, replacing the 10608 traditional format. This form is standardised, more secure and doesn't 10609 include an implicit MD5 dependency. 10610 10611 *Steve Henson* 10612 10613 * Add a $gcc_devteam_warn option to Configure. The idea is that any code 10614 committed to OpenSSL should pass this lot as a minimum. 10615 10616 *Steve Henson* 10617 10618 * Add session ticket override functionality for use by EAP-FAST. 10619 10620 *Jouni Malinen <j@w1.fi>* 10621 10622 * Modify HMAC functions to return a value. Since these can be implemented 10623 in an ENGINE errors can occur. 10624 10625 *Steve Henson* 10626 10627 * Type-checked OBJ_bsearch_ex. 10628 10629 *Ben Laurie* 10630 10631 * Type-checked OBJ_bsearch. Also some constification necessitated 10632 by type-checking. Still to come: TXT_DB, bsearch(?), 10633 OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING, 10634 CONF_VALUE. 10635 10636 *Ben Laurie* 10637 10638 * New function OPENSSL_gmtime_adj() to add a specific number of days and 10639 seconds to a tm structure directly, instead of going through OS 10640 specific date routines. This avoids any issues with OS routines such 10641 as the year 2038 bug. New `*_adj()` functions for ASN1 time structures 10642 and X509_time_adj_ex() to cover the extended range. The existing 10643 X509_time_adj() is still usable and will no longer have any date issues. 10644 10645 *Steve Henson* 10646 10647 * Delta CRL support. New use deltas option which will attempt to locate 10648 and search any appropriate delta CRLs available. 10649 10650 This work was sponsored by Google. 10651 10652 *Steve Henson* 10653 10654 * Support for CRLs partitioned by reason code. Reorganise CRL processing 10655 code and add additional score elements. Validate alternate CRL paths 10656 as part of the CRL checking and indicate a new error "CRL path validation 10657 error" in this case. Applications wanting additional details can use 10658 the verify callback and check the new "parent" field. If this is not 10659 NULL CRL path validation is taking place. Existing applications won't 10660 see this because it requires extended CRL support which is off by 10661 default. 10662 10663 This work was sponsored by Google. 10664 10665 *Steve Henson* 10666 10667 * Support for freshest CRL extension. 10668 10669 This work was sponsored by Google. 10670 10671 *Steve Henson* 10672 10673 * Initial indirect CRL support. Currently only supported in the CRLs 10674 passed directly and not via lookup. Process certificate issuer 10675 CRL entry extension and lookup CRL entries by bother issuer name 10676 and serial number. Check and process CRL issuer entry in IDP extension. 10677 10678 This work was sponsored by Google. 10679 10680 *Steve Henson* 10681 10682 * Add support for distinct certificate and CRL paths. The CRL issuer 10683 certificate is validated separately in this case. Only enabled if 10684 an extended CRL support flag is set: this flag will enable additional 10685 CRL functionality in future. 10686 10687 This work was sponsored by Google. 10688 10689 *Steve Henson* 10690 10691 * Add support for policy mappings extension. 10692 10693 This work was sponsored by Google. 10694 10695 *Steve Henson* 10696 10697 * Fixes to pathlength constraint, self issued certificate handling, 10698 policy processing to align with RFC3280 and PKITS tests. 10699 10700 This work was sponsored by Google. 10701 10702 *Steve Henson* 10703 10704 * Support for name constraints certificate extension. DN, email, DNS 10705 and URI types are currently supported. 10706 10707 This work was sponsored by Google. 10708 10709 *Steve Henson* 10710 10711 * To cater for systems that provide a pointer-based thread ID rather 10712 than numeric, deprecate the current numeric thread ID mechanism and 10713 replace it with a structure and associated callback type. This 10714 mechanism allows a numeric "hash" to be extracted from a thread ID in 10715 either case, and on platforms where pointers are larger than 'long', 10716 mixing is done to help ensure the numeric 'hash' is usable even if it 10717 can't be guaranteed unique. The default mechanism is to use "&errno" 10718 as a pointer-based thread ID to distinguish between threads. 10719 10720 Applications that want to provide their own thread IDs should now use 10721 CRYPTO_THREADID_set_callback() to register a callback that will call 10722 either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer(). 10723 10724 Note that ERR_remove_state() is now deprecated, because it is tied 10725 to the assumption that thread IDs are numeric. ERR_remove_state(0) 10726 to free the current thread's error state should be replaced by 10727 ERR_remove_thread_state(NULL). 10728 10729 (This new approach replaces the functions CRYPTO_set_idptr_callback(), 10730 CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in 10731 OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an 10732 application was previously providing a numeric thread callback that 10733 was inappropriate for distinguishing threads, then uniqueness might 10734 have been obtained with &errno that happened immediately in the 10735 intermediate development versions of OpenSSL; this is no longer the 10736 case, the numeric thread callback will now override the automatic use 10737 of &errno.) 10738 10739 *Geoff Thorpe, with help from Bodo Moeller* 10740 10741 * Initial support for different CRL issuing certificates. This covers a 10742 simple case where the self issued certificates in the chain exist and 10743 the real CRL issuer is higher in the existing chain. 10744 10745 This work was sponsored by Google. 10746 10747 *Steve Henson* 10748 10749 * Removed effectively defunct crypto/store from the build. 10750 10751 *Ben Laurie* 10752 10753 * Revamp of STACK to provide stronger type-checking. Still to come: 10754 TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE, 10755 ASN1_STRING, CONF_VALUE. 10756 10757 *Ben Laurie* 10758 10759 * Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer 10760 RAM on SSL connections. This option can save about 34k per idle SSL. 10761 10762 *Nick Mathewson* 10763 10764 * Revamp of LHASH to provide stronger type-checking. Still to come: 10765 STACK, TXT_DB, bsearch, qsort. 10766 10767 *Ben Laurie* 10768 10769 * Initial support for Cryptographic Message Syntax (aka CMS) based 10770 on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility, 10771 support for data, signedData, compressedData, digestedData and 10772 encryptedData, envelopedData types included. Scripts to check against 10773 RFC4134 examples draft and interop and consistency checks of many 10774 content types and variants. 10775 10776 *Steve Henson* 10777 10778 * Add options to enc utility to support use of zlib compression BIO. 10779 10780 *Steve Henson* 10781 10782 * Extend mk1mf to support importing of options and assembly language 10783 files from Configure script, currently only included in VC-WIN32. 10784 The assembly language rules can now optionally generate the source 10785 files from the associated perl scripts. 10786 10787 *Steve Henson* 10788 10789 * Implement remaining functionality needed to support GOST ciphersuites. 10790 Interop testing has been performed using CryptoPro implementations. 10791 10792 *Victor B. Wagner <vitus@cryptocom.ru>* 10793 10794 * s390x assembler pack. 10795 10796 *Andy Polyakov* 10797 10798 * ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU 10799 "family." 10800 10801 *Andy Polyakov* 10802 10803 * Implement Opaque PRF Input TLS extension as specified in 10804 draft-rescorla-tls-opaque-prf-input-00.txt. Since this is not an 10805 official specification yet and no extension type assignment by 10806 IANA exists, this extension (for now) will have to be explicitly 10807 enabled when building OpenSSL by providing the extension number 10808 to use. For example, specify an option 10809 10810 -DTLSEXT_TYPE_opaque_prf_input=0x9527 10811 10812 to the "config" or "Configure" script to enable the extension, 10813 assuming extension number 0x9527 (which is a completely arbitrary 10814 and unofficial assignment based on the MD5 hash of the Internet 10815 Draft). Note that by doing so, you potentially lose 10816 interoperability with other TLS implementations since these might 10817 be using the same extension number for other purposes. 10818 10819 SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the 10820 opaque PRF input value to use in the handshake. This will create 10821 an internal copy of the length-'len' string at 'src', and will 10822 return non-zero for success. 10823 10824 To get more control and flexibility, provide a callback function 10825 by using 10826 10827 SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) 10828 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) 10829 10830 where 10831 10832 int (*cb)(SSL *, void *peerinput, size_t len, void *arg); 10833 void *arg; 10834 10835 Callback function 'cb' will be called in handshakes, and is 10836 expected to use SSL_set_tlsext_opaque_prf_input() as appropriate. 10837 Argument 'arg' is for application purposes (the value as given to 10838 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly 10839 be provided to the callback function). The callback function 10840 has to return non-zero to report success: usually 1 to use opaque 10841 PRF input just if possible, or 2 to enforce use of the opaque PRF 10842 input. In the latter case, the library will abort the handshake 10843 if opaque PRF input is not successfully negotiated. 10844 10845 Arguments 'peerinput' and 'len' given to the callback function 10846 will always be NULL and 0 in the case of a client. A server will 10847 see the client's opaque PRF input through these variables if 10848 available (NULL and 0 otherwise). Note that if the server 10849 provides an opaque PRF input, the length must be the same as the 10850 length of the client's opaque PRF input. 10851 10852 Note that the callback function will only be called when creating 10853 a new session (session resumption can resume whatever was 10854 previously negotiated), and will not be called in SSL 2.0 10855 handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or 10856 SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended 10857 for applications that need to enforce opaque PRF input. 10858 10859 *Bodo Moeller* 10860 10861 * Update ssl code to support digests other than SHA1+MD5 for handshake 10862 MAC. 10863 10864 *Victor B. Wagner <vitus@cryptocom.ru>* 10865 10866 * Add RFC4507 support to OpenSSL. This includes the corrections in 10867 RFC4507bis. The encrypted ticket format is an encrypted encoded 10868 SSL_SESSION structure, that way new session features are automatically 10869 supported. 10870 10871 If a client application caches session in an SSL_SESSION structure 10872 support is transparent because tickets are now stored in the encoded 10873 SSL_SESSION. 10874 10875 The SSL_CTX structure automatically generates keys for ticket 10876 protection in servers so again support should be possible 10877 with no application modification. 10878 10879 If a client or server wishes to disable RFC4507 support then the option 10880 SSL_OP_NO_TICKET can be set. 10881 10882 Add a TLS extension debugging callback to allow the contents of any client 10883 or server extensions to be examined. 10884 10885 This work was sponsored by Google. 10886 10887 *Steve Henson* 10888 10889 * Final changes to avoid use of pointer pointer casts in OpenSSL. 10890 OpenSSL should now compile cleanly on gcc 4.2 10891 10892 *Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson* 10893 10894 * Update SSL library to use new EVP_PKEY MAC API. Include generic MAC 10895 support including streaming MAC support: this is required for GOST 10896 ciphersuite support. 10897 10898 *Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson* 10899 10900 * Add option -stream to use PKCS#7 streaming in smime utility. New 10901 function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream() 10902 to output in BER and PEM format. 10903 10904 *Steve Henson* 10905 10906 * Experimental support for use of HMAC via EVP_PKEY interface. This 10907 allows HMAC to be handled via the `EVP_DigestSign*()` interface. The 10908 EVP_PKEY "key" in this case is the HMAC key, potentially allowing 10909 ENGINE support for HMAC keys which are unextractable. New -mac and 10910 -macopt options to dgst utility. 10911 10912 *Steve Henson* 10913 10914 * New option -sigopt to dgst utility. Update dgst to use 10915 `EVP_Digest{Sign,Verify}*`. These two changes make it possible to use 10916 alternative signing parameters such as X9.31 or PSS in the dgst 10917 utility. 10918 10919 *Steve Henson* 10920 10921 * Change ssl_cipher_apply_rule(), the internal function that does 10922 the work each time a ciphersuite string requests enabling 10923 ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or 10924 removing ("!foo+bar") a class of ciphersuites: Now it maintains 10925 the order of disabled ciphersuites such that those ciphersuites 10926 that most recently went from enabled to disabled not only stay 10927 in order with respect to each other, but also have higher priority 10928 than other disabled ciphersuites the next time ciphersuites are 10929 enabled again. 10930 10931 This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable 10932 the same ciphersuites as with "HIGH" alone, but in a specific 10933 order where the PSK ciphersuites come first (since they are the 10934 most recently disabled ciphersuites when "HIGH" is parsed). 10935 10936 Also, change ssl_create_cipher_list() (using this new 10937 functionality) such that between otherwise identical 10938 ciphersuites, ephemeral ECDH is preferred over ephemeral DH in 10939 the default order. 10940 10941 *Bodo Moeller* 10942 10943 * Change ssl_create_cipher_list() so that it automatically 10944 arranges the ciphersuites in reasonable order before starting 10945 to process the rule string. Thus, the definition for "DEFAULT" 10946 (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but 10947 remains equivalent to `"AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH"`. 10948 This makes it much easier to arrive at a reasonable default order 10949 in applications for which anonymous ciphers are OK (meaning 10950 that you can't actually use DEFAULT). 10951 10952 *Bodo Moeller; suggested by Victor Duchovni* 10953 10954 * Split the SSL/TLS algorithm mask (as used for ciphersuite string 10955 processing) into multiple integers instead of setting 10956 "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK", 10957 "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer. 10958 (These masks as well as the individual bit definitions are hidden 10959 away into the non-exported interface ssl/ssl_locl.h, so this 10960 change to the definition of the SSL_CIPHER structure shouldn't 10961 affect applications.) This give us more bits for each of these 10962 categories, so there is no longer a need to coagulate AES128 and 10963 AES256 into a single algorithm bit, and to coagulate Camellia128 10964 and Camellia256 into a single algorithm bit, which has led to all 10965 kinds of kludges. 10966 10967 Thus, among other things, the kludge introduced in 0.9.7m and 10968 0.9.8e for masking out AES256 independently of AES128 or masking 10969 out Camellia256 independently of AES256 is not needed here in 0.9.9. 10970 10971 With the change, we also introduce new ciphersuite aliases that 10972 so far were missing: "AES128", "AES256", "CAMELLIA128", and 10973 "CAMELLIA256". 10974 10975 *Bodo Moeller* 10976 10977 * Add support for dsa-with-SHA224 and dsa-with-SHA256. 10978 Use the leftmost N bytes of the signature input if the input is 10979 larger than the prime q (with N being the size in bytes of q). 10980 10981 *Nils Larsch* 10982 10983 * Very *very* experimental PKCS#7 streaming encoder support. Nothing uses 10984 it yet and it is largely untested. 10985 10986 *Steve Henson* 10987 10988 * Add support for the ecdsa-with-SHA224/256/384/512 signature types. 10989 10990 *Nils Larsch* 10991 10992 * Initial incomplete changes to avoid need for function casts in OpenSSL 10993 some compilers (gcc 4.2 and later) reject their use. Safestack is 10994 reimplemented. Update ASN1 to avoid use of legacy functions. 10995 10996 *Steve Henson* 10997 10998 * Win32/64 targets are linked with Winsock2. 10999 11000 *Andy Polyakov* 11001 11002 * Add an X509_CRL_METHOD structure to allow CRL processing to be redirected 11003 to external functions. This can be used to increase CRL handling 11004 efficiency especially when CRLs are very large by (for example) storing 11005 the CRL revoked certificates in a database. 11006 11007 *Steve Henson* 11008 11009 * Overhaul of by_dir code. Add support for dynamic loading of CRLs so 11010 new CRLs added to a directory can be used. New command line option 11011 -verify_return_error to s_client and s_server. This causes real errors 11012 to be returned by the verify callback instead of carrying on no matter 11013 what. This reflects the way a "real world" verify callback would behave. 11014 11015 *Steve Henson* 11016 11017 * GOST engine, supporting several GOST algorithms and public key formats. 11018 Kindly donated by Cryptocom. 11019 11020 *Cryptocom* 11021 11022 * Partial support for Issuing Distribution Point CRL extension. CRLs 11023 partitioned by DP are handled but no indirect CRL or reason partitioning 11024 (yet). Complete overhaul of CRL handling: now the most suitable CRL is 11025 selected via a scoring technique which handles IDP and AKID in CRLs. 11026 11027 *Steve Henson* 11028 11029 * New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which 11030 will ultimately be used for all verify operations: this will remove the 11031 X509_STORE dependency on certificate verification and allow alternative 11032 lookup methods. X509_STORE based implementations of these two callbacks. 11033 11034 *Steve Henson* 11035 11036 * Allow multiple CRLs to exist in an X509_STORE with matching issuer names. 11037 Modify get_crl() to find a valid (unexpired) CRL if possible. 11038 11039 *Steve Henson* 11040 11041 * New function X509_CRL_match() to check if two CRLs are identical. Normally 11042 this would be called X509_CRL_cmp() but that name is already used by 11043 a function that just compares CRL issuer names. Cache several CRL 11044 extensions in X509_CRL structure and cache CRLDP in X509. 11045 11046 *Steve Henson* 11047 11048 * Store a "canonical" representation of X509_NAME structure (ASN1 Name) 11049 this maps equivalent X509_NAME structures into a consistent structure. 11050 Name comparison can then be performed rapidly using memcmp(). 11051 11052 *Steve Henson* 11053 11054 * Non-blocking OCSP request processing. Add -timeout option to ocsp 11055 utility. 11056 11057 *Steve Henson* 11058 11059 * Allow digests to supply their own micalg string for S/MIME type using 11060 the ctrl EVP_MD_CTRL_MICALG. 11061 11062 *Steve Henson* 11063 11064 * During PKCS7 signing pass the PKCS7 SignerInfo structure to the 11065 EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN 11066 ctrl. It can then customise the structure before and/or after signing 11067 if necessary. 11068 11069 *Steve Henson* 11070 11071 * New function OBJ_add_sigid() to allow application defined signature OIDs 11072 to be added to OpenSSLs internal tables. New function OBJ_sigid_free() 11073 to free up any added signature OIDs. 11074 11075 *Steve Henson* 11076 11077 * New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(), 11078 EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal 11079 digest and cipher tables. New options added to openssl utility: 11080 list-message-digest-algorithms and list-cipher-algorithms. 11081 11082 *Steve Henson* 11083 11084 * Change the array representation of binary polynomials: the list 11085 of degrees of non-zero coefficients is now terminated with -1. 11086 Previously it was terminated with 0, which was also part of the 11087 value; thus, the array representation was not applicable to 11088 polynomials where t^0 has coefficient zero. This change makes 11089 the array representation useful in a more general context. 11090 11091 *Douglas Stebila* 11092 11093 * Various modifications and fixes to SSL/TLS cipher string 11094 handling. For ECC, the code now distinguishes between fixed ECDH 11095 with RSA certificates on the one hand and with ECDSA certificates 11096 on the other hand, since these are separate ciphersuites. The 11097 unused code for Fortezza ciphersuites has been removed. 11098 11099 For consistency with EDH, ephemeral ECDH is now called "EECDH" 11100 (not "ECDHE"). For consistency with the code for DH 11101 certificates, use of ECDH certificates is now considered ECDH 11102 authentication, not RSA or ECDSA authentication (the latter is 11103 merely the CA's signing algorithm and not actively used in the 11104 protocol). 11105 11106 The temporary ciphersuite alias "ECCdraft" is no longer 11107 available, and ECC ciphersuites are no longer excluded from "ALL" 11108 and "DEFAULT". The following aliases now exist for RFC 4492 11109 ciphersuites, most of these by analogy with the DH case: 11110 11111 kECDHr - ECDH cert, signed with RSA 11112 kECDHe - ECDH cert, signed with ECDSA 11113 kECDH - ECDH cert (signed with either RSA or ECDSA) 11114 kEECDH - ephemeral ECDH 11115 ECDH - ECDH cert or ephemeral ECDH 11116 11117 aECDH - ECDH cert 11118 aECDSA - ECDSA cert 11119 ECDSA - ECDSA cert 11120 11121 AECDH - anonymous ECDH 11122 EECDH - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH") 11123 11124 *Bodo Moeller* 11125 11126 * Add additional S/MIME capabilities for AES and GOST ciphers if supported. 11127 Use correct micalg parameters depending on digest(s) in signed message. 11128 11129 *Steve Henson* 11130 11131 * Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process 11132 an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code. 11133 11134 *Steve Henson* 11135 11136 * Initial engine support for EVP_PKEY_METHOD. New functions to permit 11137 an engine to register a method. Add ENGINE lookups for methods and 11138 functional reference processing. 11139 11140 *Steve Henson* 11141 11142 * New functions `EVP_Digest{Sign,Verify)*`. These are enhanced versions of 11143 `EVP_{Sign,Verify}*` which allow an application to customise the signature 11144 process. 11145 11146 *Steve Henson* 11147 11148 * New -resign option to smime utility. This adds one or more signers 11149 to an existing PKCS#7 signedData structure. Also -md option to use an 11150 alternative message digest algorithm for signing. 11151 11152 *Steve Henson* 11153 11154 * Tidy up PKCS#7 routines and add new functions to make it easier to 11155 create PKCS7 structures containing multiple signers. Update smime 11156 application to support multiple signers. 11157 11158 *Steve Henson* 11159 11160 * New -macalg option to pkcs12 utility to allow setting of an alternative 11161 digest MAC. 11162 11163 *Steve Henson* 11164 11165 * Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC. 11166 Reorganize PBE internals to lookup from a static table using NIDs, 11167 add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl: 11168 EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative 11169 PRF which will be automatically used with PBES2. 11170 11171 *Steve Henson* 11172 11173 * Replace the algorithm specific calls to generate keys in "req" with the 11174 new API. 11175 11176 *Steve Henson* 11177 11178 * Update PKCS#7 enveloped data routines to use new API. This is now 11179 supported by any public key method supporting the encrypt operation. A 11180 ctrl is added to allow the public key algorithm to examine or modify 11181 the PKCS#7 RecipientInfo structure if it needs to: for RSA this is 11182 a no op. 11183 11184 *Steve Henson* 11185 11186 * Add a ctrl to asn1 method to allow a public key algorithm to express 11187 a default digest type to use. In most cases this will be SHA1 but some 11188 algorithms (such as GOST) need to specify an alternative digest. The 11189 return value indicates how strong the preference is 1 means optional and 11190 2 is mandatory (that is it is the only supported type). Modify 11191 ASN1_item_sign() to accept a NULL digest argument to indicate it should 11192 use the default md. Update openssl utilities to use the default digest 11193 type for signing if it is not explicitly indicated. 11194 11195 *Steve Henson* 11196 11197 * Use OID cross reference table in ASN1_sign() and ASN1_verify(). New 11198 EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant 11199 signing method from the key type. This effectively removes the link 11200 between digests and public key types. 11201 11202 *Steve Henson* 11203 11204 * Add an OID cross reference table and utility functions. Its purpose is to 11205 translate between signature OIDs such as SHA1WithrsaEncryption and SHA1, 11206 rsaEncryption. This will allow some of the algorithm specific hackery 11207 needed to use the correct OID to be removed. 11208 11209 *Steve Henson* 11210 11211 * Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO 11212 structures for PKCS7_sign(). They are now set up by the relevant public 11213 key ASN1 method. 11214 11215 *Steve Henson* 11216 11217 * Add provisional EC pkey method with support for ECDSA and ECDH. 11218 11219 *Steve Henson* 11220 11221 * Add support for key derivation (agreement) in the API, DH method and 11222 pkeyutl. 11223 11224 *Steve Henson* 11225 11226 * Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support 11227 public and private key formats. As a side effect these add additional 11228 command line functionality not previously available: DSA signatures can be 11229 generated and verified using pkeyutl and DH key support and generation in 11230 pkey, genpkey. 11231 11232 *Steve Henson* 11233 11234 * BeOS support. 11235 11236 *Oliver Tappe <zooey@hirschkaefer.de>* 11237 11238 * New make target "install_html_docs" installs HTML renditions of the 11239 manual pages. 11240 11241 *Oliver Tappe <zooey@hirschkaefer.de>* 11242 11243 * New utility "genpkey" this is analogous to "genrsa" etc except it can 11244 generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to 11245 support key and parameter generation and add initial key generation 11246 functionality for RSA. 11247 11248 *Steve Henson* 11249 11250 * Add functions for main EVP_PKEY_method operations. The undocumented 11251 functions `EVP_PKEY_{encrypt,decrypt}` have been renamed to 11252 `EVP_PKEY_{encrypt,decrypt}_old`. 11253 11254 *Steve Henson* 11255 11256 * Initial definitions for EVP_PKEY_METHOD. This will be a high level public 11257 key API, doesn't do much yet. 11258 11259 *Steve Henson* 11260 11261 * New function EVP_PKEY_asn1_get0_info() to retrieve information about 11262 public key algorithms. New option to openssl utility: 11263 "list-public-key-algorithms" to print out info. 11264 11265 *Steve Henson* 11266 11267 * Implement the Supported Elliptic Curves Extension for 11268 ECC ciphersuites from draft-ietf-tls-ecc-12.txt. 11269 11270 *Douglas Stebila* 11271 11272 * Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or 11273 EVP_CIPHER structures to avoid later problems in EVP_cleanup(). 11274 11275 *Steve Henson* 11276 11277 * New utilities pkey and pkeyparam. These are similar to algorithm specific 11278 utilities such as rsa, dsa, dsaparam etc except they process any key 11279 type. 11280 11281 *Steve Henson* 11282 11283 * Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New 11284 functions EVP_PKEY_print_public(), EVP_PKEY_print_private(), 11285 EVP_PKEY_print_param() to print public key data from an EVP_PKEY 11286 structure. 11287 11288 *Steve Henson* 11289 11290 * Initial support for pluggable public key ASN1. 11291 De-spaghettify the public key ASN1 handling. Move public and private 11292 key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate 11293 algorithm specific handling to a single module within the relevant 11294 algorithm directory. Add functions to allow (near) opaque processing 11295 of public and private key structures. 11296 11297 *Steve Henson* 11298 11299 * Implement the Supported Point Formats Extension for 11300 ECC ciphersuites from draft-ietf-tls-ecc-12.txt. 11301 11302 *Douglas Stebila* 11303 11304 * Add initial support for RFC 4279 PSK TLS ciphersuites. Add members 11305 for the psk identity [hint] and the psk callback functions to the 11306 SSL_SESSION, SSL and SSL_CTX structure. 11307 11308 New ciphersuites: 11309 PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA, 11310 PSK-AES256-CBC-SHA 11311 11312 New functions: 11313 SSL_CTX_use_psk_identity_hint 11314 SSL_get_psk_identity_hint 11315 SSL_get_psk_identity 11316 SSL_use_psk_identity_hint 11317 11318 *Mika Kousa and Pasi Eronen of Nokia Corporation* 11319 11320 * Add RFC 3161 compliant time stamp request creation, response generation 11321 and response verification functionality. 11322 11323 *Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project* 11324 11325 * Add initial support for TLS extensions, specifically for the server_name 11326 extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now 11327 have new members for a hostname. The SSL data structure has an 11328 additional member `SSL_CTX *initial_ctx` so that new sessions can be 11329 stored in that context to allow for session resumption, even after the 11330 SSL has been switched to a new SSL_CTX in reaction to a client's 11331 server_name extension. 11332 11333 New functions (subject to change): 11334 11335 SSL_get_servername() 11336 SSL_get_servername_type() 11337 SSL_set_SSL_CTX() 11338 11339 New CTRL codes and macros (subject to change): 11340 11341 SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 11342 - SSL_CTX_set_tlsext_servername_callback() 11343 SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 11344 - SSL_CTX_set_tlsext_servername_arg() 11345 SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name() 11346 11347 openssl s_client has a new '-servername ...' option. 11348 11349 openssl s_server has new options '-servername_host ...', '-cert2 ...', 11350 '-key2 ...', '-servername_fatal' (subject to change). This allows 11351 testing the HostName extension for a specific single hostname ('-cert' 11352 and '-key' remain fallbacks for handshakes without HostName 11353 negotiation). If the unrecognized_name alert has to be sent, this by 11354 default is a warning; it becomes fatal with the '-servername_fatal' 11355 option. 11356 11357 *Peter Sylvester, Remy Allais, Christophe Renou* 11358 11359 * Whirlpool hash implementation is added. 11360 11361 *Andy Polyakov* 11362 11363 * BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to 11364 bn(64,32). Because of instruction set limitations it doesn't have 11365 any negative impact on performance. This was done mostly in order 11366 to make it possible to share assembler modules, such as bn_mul_mont 11367 implementations, between 32- and 64-bit builds without hassle. 11368 11369 *Andy Polyakov* 11370 11371 * Move code previously exiled into file crypto/ec/ec2_smpt.c 11372 to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP 11373 macro. 11374 11375 *Bodo Moeller* 11376 11377 * New candidate for BIGNUM assembler implementation, bn_mul_mont, 11378 dedicated Montgomery multiplication procedure, is introduced. 11379 BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher 11380 "64-bit" performance on certain 32-bit targets. 11381 11382 *Andy Polyakov* 11383 11384 * New option SSL_OP_NO_COMP to disable use of compression selectively 11385 in SSL structures. New SSL ctrl to set maximum send fragment size. 11386 Save memory by setting the I/O buffer sizes dynamically instead of 11387 using the maximum available value. 11388 11389 *Steve Henson* 11390 11391 * New option -V for 'openssl ciphers'. This prints the ciphersuite code 11392 in addition to the text details. 11393 11394 *Bodo Moeller* 11395 11396 * Very, very preliminary EXPERIMENTAL support for printing of general 11397 ASN1 structures. This currently produces rather ugly output and doesn't 11398 handle several customised structures at all. 11399 11400 *Steve Henson* 11401 11402 * Integrated support for PVK file format and some related formats such 11403 as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support 11404 these in the 'rsa' and 'dsa' utilities. 11405 11406 *Steve Henson* 11407 11408 * Support for PKCS#1 RSAPublicKey format on rsa utility command line. 11409 11410 *Steve Henson* 11411 11412 * Remove the ancient ASN1_METHOD code. This was only ever used in one 11413 place for the (very old) "NETSCAPE" format certificates which are now 11414 handled using new ASN1 code equivalents. 11415 11416 *Steve Henson* 11417 11418 * Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD 11419 pointer and make the SSL_METHOD parameter in SSL_CTX_new, 11420 SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'. 11421 11422 *Nils Larsch* 11423 11424 * Modify CRL distribution points extension code to print out previously 11425 unsupported fields. Enhance extension setting code to allow setting of 11426 all fields. 11427 11428 *Steve Henson* 11429 11430 * Add print and set support for Issuing Distribution Point CRL extension. 11431 11432 *Steve Henson* 11433 11434 * Change 'Configure' script to enable Camellia by default. 11435 11436 *NTT* 11437 11438OpenSSL 0.9.x 11439------------- 11440 11441### Changes between 0.9.8m and 0.9.8n [24 Mar 2010] 11442 11443 * When rejecting SSL/TLS records due to an incorrect version number, never 11444 update s->server with a new major version number. As of 11445 - OpenSSL 0.9.8m if 'short' is a 16-bit type, 11446 - OpenSSL 0.9.8f if 'short' is longer than 16 bits, 11447 the previous behavior could result in a read attempt at NULL when 11448 receiving specific incorrect SSL/TLS records once record payload 11449 protection is active. ([CVE-2010-0740]) 11450 11451 *Bodo Moeller, Adam Langley <agl@chromium.org>* 11452 11453 * Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL 11454 could be crashed if the relevant tables were not present (e.g. chrooted). 11455 11456 *Tomas Hoger <thoger@redhat.com>* 11457 11458### Changes between 0.9.8l and 0.9.8m [25 Feb 2010] 11459 11460 * Always check bn_wexpand() return values for failure. ([CVE-2009-3245]) 11461 11462 *Martin Olsson, Neel Mehta* 11463 11464 * Fix X509_STORE locking: Every 'objs' access requires a lock (to 11465 accommodate for stack sorting, always a write lock!). 11466 11467 *Bodo Moeller* 11468 11469 * On some versions of WIN32 Heap32Next is very slow. This can cause 11470 excessive delays in the RAND_poll(): over a minute. As a workaround 11471 include a time check in the inner Heap32Next loop too. 11472 11473 *Steve Henson* 11474 11475 * The code that handled flushing of data in SSL/TLS originally used the 11476 BIO_CTRL_INFO ctrl to see if any data was pending first. This caused 11477 the problem outlined in PR#1949. The fix suggested there however can 11478 trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions 11479 of Apache). So instead simplify the code to flush unconditionally. 11480 This should be fine since flushing with no data to flush is a no op. 11481 11482 *Steve Henson* 11483 11484 * Handle TLS versions 2.0 and later properly and correctly use the 11485 highest version of TLS/SSL supported. Although TLS >= 2.0 is some way 11486 off ancient servers have a habit of sticking around for a while... 11487 11488 *Steve Henson* 11489 11490 * Modify compression code so it frees up structures without using the 11491 ex_data callbacks. This works around a problem where some applications 11492 call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when 11493 restarting) then use compression (e.g. SSL with compression) later. 11494 This results in significant per-connection memory leaks and 11495 has caused some security issues including CVE-2008-1678 and 11496 CVE-2009-4355. 11497 11498 *Steve Henson* 11499 11500 * Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't 11501 change when encrypting or decrypting. 11502 11503 *Bodo Moeller* 11504 11505 * Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to 11506 connect and renegotiate with servers which do not support RI. 11507 Until RI is more widely deployed this option is enabled by default. 11508 11509 *Steve Henson* 11510 11511 * Add "missing" ssl ctrls to clear options and mode. 11512 11513 *Steve Henson* 11514 11515 * If client attempts to renegotiate and doesn't support RI respond with 11516 a no_renegotiation alert as required by RFC5746. Some renegotiating 11517 TLS clients will continue a connection gracefully when they receive 11518 the alert. Unfortunately OpenSSL mishandled this alert and would hang 11519 waiting for a server hello which it will never receive. Now we treat a 11520 received no_renegotiation alert as a fatal error. This is because 11521 applications requesting a renegotiation might well expect it to succeed 11522 and would have no code in place to handle the server denying it so the 11523 only safe thing to do is to terminate the connection. 11524 11525 *Steve Henson* 11526 11527 * Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if 11528 peer supports secure renegotiation and 0 otherwise. Print out peer 11529 renegotiation support in s_client/s_server. 11530 11531 *Steve Henson* 11532 11533 * Replace the highly broken and deprecated SPKAC certification method with 11534 the updated NID creation version. This should correctly handle UTF8. 11535 11536 *Steve Henson* 11537 11538 * Implement RFC5746. Re-enable renegotiation but require the extension 11539 as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 11540 turns out to be a bad idea. It has been replaced by 11541 SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with 11542 SSL_CTX_set_options(). This is really not recommended unless you 11543 know what you are doing. 11544 11545 *Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson* 11546 11547 * Fixes to stateless session resumption handling. Use initial_ctx when 11548 issuing and attempting to decrypt tickets in case it has changed during 11549 servername handling. Use a non-zero length session ID when attempting 11550 stateless session resumption: this makes it possible to determine if 11551 a resumption has occurred immediately after receiving server hello 11552 (several places in OpenSSL subtly assume this) instead of later in 11553 the handshake. 11554 11555 *Steve Henson* 11556 11557 * The functions ENGINE_ctrl(), OPENSSL_isservice(), 11558 CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error 11559 fixes for a few places where the return code is not checked 11560 correctly. 11561 11562 *Julia Lawall <julia@diku.dk>* 11563 11564 * Add --strict-warnings option to Configure script to include devteam 11565 warnings in other configurations. 11566 11567 *Steve Henson* 11568 11569 * Add support for --libdir option and LIBDIR variable in makefiles. This 11570 makes it possible to install openssl libraries in locations which 11571 have names other than "lib", for example "/usr/lib64" which some 11572 systems need. 11573 11574 *Steve Henson, based on patch from Jeremy Utley* 11575 11576 * Don't allow the use of leading 0x80 in OIDs. This is a violation of 11577 X690 8.9.12 and can produce some misleading textual output of OIDs. 11578 11579 *Steve Henson, reported by Dan Kaminsky* 11580 11581 * Delete MD2 from algorithm tables. This follows the recommendation in 11582 several standards that it is not used in new applications due to 11583 several cryptographic weaknesses. For binary compatibility reasons 11584 the MD2 API is still compiled in by default. 11585 11586 *Steve Henson* 11587 11588 * Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved 11589 and restored. 11590 11591 *Steve Henson* 11592 11593 * Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and 11594 OPENSSL_asc2uni conditionally on Netware platforms to avoid a name 11595 clash. 11596 11597 *Guenter <lists@gknw.net>* 11598 11599 * Fix the server certificate chain building code to use X509_verify_cert(), 11600 it used to have an ad-hoc builder which was unable to cope with anything 11601 other than a simple chain. 11602 11603 *David Woodhouse <dwmw2@infradead.org>, Steve Henson* 11604 11605 * Don't check self signed certificate signatures in X509_verify_cert() 11606 by default (a flag can override this): it just wastes time without 11607 adding any security. As a useful side effect self signed root CAs 11608 with non-FIPS digests are now usable in FIPS mode. 11609 11610 *Steve Henson* 11611 11612 * In dtls1_process_out_of_seq_message() the check if the current message 11613 is already buffered was missing. For every new message was memory 11614 allocated, allowing an attacker to perform an denial of service attack 11615 with sending out of seq handshake messages until there is no memory 11616 left. Additionally every future message was buffered, even if the 11617 sequence number made no sense and would be part of another handshake. 11618 So only messages with sequence numbers less than 10 in advance will be 11619 buffered. ([CVE-2009-1378]) 11620 11621 *Robin Seggelmann, discovered by Daniel Mentz* 11622 11623 * Records are buffered if they arrive with a future epoch to be 11624 processed after finishing the corresponding handshake. There is 11625 currently no limitation to this buffer allowing an attacker to perform 11626 a DOS attack with sending records with future epochs until there is no 11627 memory left. This patch adds the pqueue_size() function to determine 11628 the size of a buffer and limits the record buffer to 100 entries. 11629 ([CVE-2009-1377]) 11630 11631 *Robin Seggelmann, discovered by Daniel Mentz* 11632 11633 * Keep a copy of frag->msg_header.frag_len so it can be used after the 11634 parent structure is freed. ([CVE-2009-1379]) 11635 11636 *Daniel Mentz* 11637 11638 * Handle non-blocking I/O properly in SSL_shutdown() call. 11639 11640 *Darryl Miles <darryl-mailinglists@netbauds.net>* 11641 11642 * Add `2.5.4.*` OIDs 11643 11644 *Ilya O. <vrghost@gmail.com>* 11645 11646### Changes between 0.9.8k and 0.9.8l [5 Nov 2009] 11647 11648 * Disable renegotiation completely - this fixes a severe security 11649 problem ([CVE-2009-3555]) at the cost of breaking all 11650 renegotiation. Renegotiation can be re-enabled by setting 11651 SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at 11652 run-time. This is really not recommended unless you know what 11653 you're doing. 11654 11655 *Ben Laurie* 11656 11657### Changes between 0.9.8j and 0.9.8k [25 Mar 2009] 11658 11659 * Don't set val to NULL when freeing up structures, it is freed up by 11660 underlying code. If `sizeof(void *) > sizeof(long)` this can result in 11661 zeroing past the valid field. ([CVE-2009-0789]) 11662 11663 *Paolo Ganci <Paolo.Ganci@AdNovum.CH>* 11664 11665 * Fix bug where return value of CMS_SignerInfo_verify_content() was not 11666 checked correctly. This would allow some invalid signed attributes to 11667 appear to verify correctly. ([CVE-2009-0591]) 11668 11669 *Ivan Nestlerode <inestlerode@us.ibm.com>* 11670 11671 * Reject UniversalString and BMPString types with invalid lengths. This 11672 prevents a crash in ASN1_STRING_print_ex() which assumes the strings have 11673 a legal length. ([CVE-2009-0590]) 11674 11675 *Steve Henson* 11676 11677 * Set S/MIME signing as the default purpose rather than setting it 11678 unconditionally. This allows applications to override it at the store 11679 level. 11680 11681 *Steve Henson* 11682 11683 * Permit restricted recursion of ASN1 strings. This is needed in practice 11684 to handle some structures. 11685 11686 *Steve Henson* 11687 11688 * Improve efficiency of mem_gets: don't search whole buffer each time 11689 for a '\n' 11690 11691 *Jeremy Shapiro <jnshapir@us.ibm.com>* 11692 11693 * New -hex option for openssl rand. 11694 11695 *Matthieu Herrb* 11696 11697 * Print out UTF8String and NumericString when parsing ASN1. 11698 11699 *Steve Henson* 11700 11701 * Support NumericString type for name components. 11702 11703 *Steve Henson* 11704 11705 * Allow CC in the environment to override the automatically chosen 11706 compiler. Note that nothing is done to ensure flags work with the 11707 chosen compiler. 11708 11709 *Ben Laurie* 11710 11711### Changes between 0.9.8i and 0.9.8j [07 Jan 2009] 11712 11713 * Properly check EVP_VerifyFinal() and similar return values 11714 ([CVE-2008-5077]). 11715 11716 *Ben Laurie, Bodo Moeller, Google Security Team* 11717 11718 * Enable TLS extensions by default. 11719 11720 *Ben Laurie* 11721 11722 * Allow the CHIL engine to be loaded, whether the application is 11723 multithreaded or not. (This does not release the developer from the 11724 obligation to set up the dynamic locking callbacks.) 11725 11726 *Sander Temme <sander@temme.net>* 11727 11728 * Use correct exit code if there is an error in dgst command. 11729 11730 *Steve Henson; problem pointed out by Roland Dirlewanger* 11731 11732 * Tweak Configure so that you need to say "experimental-jpake" to enable 11733 JPAKE, and need to use -DOPENSSL_EXPERIMENTAL_JPAKE in applications. 11734 11735 *Bodo Moeller* 11736 11737 * Add experimental JPAKE support, including demo authentication in 11738 s_client and s_server. 11739 11740 *Ben Laurie* 11741 11742 * Set the comparison function in v3_addr_canonize(). 11743 11744 *Rob Austein <sra@hactrn.net>* 11745 11746 * Add support for XMPP STARTTLS in s_client. 11747 11748 *Philip Paeps <philip@freebsd.org>* 11749 11750 * Change the server-side SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG behavior 11751 to ensure that even with this option, only ciphersuites in the 11752 server's preference list will be accepted. (Note that the option 11753 applies only when resuming a session, so the earlier behavior was 11754 just about the algorithm choice for symmetric cryptography.) 11755 11756 *Bodo Moeller* 11757 11758### Changes between 0.9.8h and 0.9.8i [15 Sep 2008] 11759 11760 * Fix NULL pointer dereference if a DTLS server received 11761 ChangeCipherSpec as first record ([CVE-2009-1386]). 11762 11763 *PR #1679* 11764 11765 * Fix a state transition in s3_srvr.c and d1_srvr.c 11766 (was using SSL3_ST_CW_CLNT_HELLO_B, should be `..._ST_SW_SRVR_...`). 11767 11768 *Nagendra Modadugu* 11769 11770 * The fix in 0.9.8c that supposedly got rid of unsafe 11771 double-checked locking was incomplete for RSA blinding, 11772 addressing just one layer of what turns out to have been 11773 doubly unsafe triple-checked locking. 11774 11775 So now fix this for real by retiring the MONT_HELPER macro 11776 in crypto/rsa/rsa_eay.c. 11777 11778 *Bodo Moeller; problem pointed out by Marius Schilder* 11779 11780 * Various precautionary measures: 11781 11782 - Avoid size_t integer overflow in HASH_UPDATE (md32_common.h). 11783 11784 - Avoid a buffer overflow in d2i_SSL_SESSION() (ssl_asn1.c). 11785 (NB: This would require knowledge of the secret session ticket key 11786 to exploit, in which case you'd be SOL either way.) 11787 11788 - Change bn_nist.c so that it will properly handle input BIGNUMs 11789 outside the expected range. 11790 11791 - Enforce the 'num' check in BN_div() (bn_div.c) for non-BN_DEBUG 11792 builds. 11793 11794 *Neel Mehta, Bodo Moeller* 11795 11796 * Allow engines to be "soft loaded" - i.e. optionally don't die if 11797 the load fails. Useful for distros. 11798 11799 *Ben Laurie and the FreeBSD team* 11800 11801 * Add support for Local Machine Keyset attribute in PKCS#12 files. 11802 11803 *Steve Henson* 11804 11805 * Fix BN_GF2m_mod_arr() top-bit cleanup code. 11806 11807 *Huang Ying* 11808 11809 * Expand ENGINE to support engine supplied SSL client certificate functions. 11810 11811 This work was sponsored by Logica. 11812 11813 *Steve Henson* 11814 11815 * Add CryptoAPI ENGINE to support use of RSA and DSA keys held in Windows 11816 keystores. Support for SSL/TLS client authentication too. 11817 Not compiled unless enable-capieng specified to Configure. 11818 11819 This work was sponsored by Logica. 11820 11821 *Steve Henson* 11822 11823 * Fix bug in X509_ATTRIBUTE creation: don't set attribute using 11824 ASN1_TYPE_set1 if MBSTRING flag set. This bug would crash certain 11825 attribute creation routines such as certificate requests and PKCS#12 11826 files. 11827 11828 *Steve Henson* 11829 11830### Changes between 0.9.8g and 0.9.8h [28 May 2008] 11831 11832 * Fix flaw if 'Server Key exchange message' is omitted from a TLS 11833 handshake which could lead to a client crash as found using the 11834 Codenomicon TLS test suite ([CVE-2008-1672]) 11835 11836 *Steve Henson, Mark Cox* 11837 11838 * Fix double free in TLS server name extensions which could lead to 11839 a remote crash found by Codenomicon TLS test suite ([CVE-2008-0891]) 11840 11841 *Joe Orton* 11842 11843 * Clear error queue in SSL_CTX_use_certificate_chain_file() 11844 11845 Clear the error queue to ensure that error entries left from 11846 older function calls do not interfere with the correct operation. 11847 11848 *Lutz Jaenicke, Erik de Castro Lopo* 11849 11850 * Remove root CA certificates of commercial CAs: 11851 11852 The OpenSSL project does not recommend any specific CA and does not 11853 have any policy with respect to including or excluding any CA. 11854 Therefore, it does not make any sense to ship an arbitrary selection 11855 of root CA certificates with the OpenSSL software. 11856 11857 *Lutz Jaenicke* 11858 11859 * RSA OAEP patches to fix two separate invalid memory reads. 11860 The first one involves inputs when 'lzero' is greater than 11861 'SHA_DIGEST_LENGTH' (it would read about SHA_DIGEST_LENGTH bytes 11862 before the beginning of from). The second one involves inputs where 11863 the 'db' section contains nothing but zeroes (there is a one-byte 11864 invalid read after the end of 'db'). 11865 11866 *Ivan Nestlerode <inestlerode@us.ibm.com>* 11867 11868 * Partial backport from 0.9.9-dev: 11869 11870 Introduce bn_mul_mont (dedicated Montgomery multiplication 11871 procedure) as a candidate for BIGNUM assembler implementation. 11872 While 0.9.9-dev uses assembler for various architectures, only 11873 x86_64 is available by default here in the 0.9.8 branch, and 11874 32-bit x86 is available through a compile-time setting. 11875 11876 To try the 32-bit x86 assembler implementation, use Configure 11877 option "enable-montasm" (which exists only for this backport). 11878 11879 As "enable-montasm" for 32-bit x86 disclaims code stability 11880 anyway, in this constellation we activate additional code 11881 backported from 0.9.9-dev for further performance improvements, 11882 namely BN_from_montgomery_word. (To enable this otherwise, 11883 e.g. x86_64, try `-DMONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD`.) 11884 11885 *Andy Polyakov (backport partially by Bodo Moeller)* 11886 11887 * Add TLS session ticket callback. This allows an application to set 11888 TLS ticket cipher and HMAC keys rather than relying on hardcoded fixed 11889 values. This is useful for key rollover for example where several key 11890 sets may exist with different names. 11891 11892 *Steve Henson* 11893 11894 * Reverse ENGINE-internal logic for caching default ENGINE handles. 11895 This was broken until now in 0.9.8 releases, such that the only way 11896 a registered ENGINE could be used (assuming it initialises 11897 successfully on the host) was to explicitly set it as the default 11898 for the relevant algorithms. This is in contradiction with 0.9.7 11899 behaviour and the documentation. With this fix, when an ENGINE is 11900 registered into a given algorithm's table of implementations, the 11901 'uptodate' flag is reset so that auto-discovery will be used next 11902 time a new context for that algorithm attempts to select an 11903 implementation. 11904 11905 *Ian Lister (tweaked by Geoff Thorpe)* 11906 11907 * Backport of CMS code to OpenSSL 0.9.8. This differs from the 0.9.9 11908 implementation in the following ways: 11909 11910 Lack of EVP_PKEY_ASN1_METHOD means algorithm parameters have to be 11911 hard coded. 11912 11913 Lack of BER streaming support means one pass streaming processing is 11914 only supported if data is detached: setting the streaming flag is 11915 ignored for embedded content. 11916 11917 CMS support is disabled by default and must be explicitly enabled 11918 with the enable-cms configuration option. 11919 11920 *Steve Henson* 11921 11922 * Update the GMP engine glue to do direct copies between BIGNUM and 11923 mpz_t when openssl and GMP use the same limb size. Otherwise the 11924 existing "conversion via a text string export" trick is still used. 11925 11926 *Paul Sheer <paulsheer@gmail.com>* 11927 11928 * Zlib compression BIO. This is a filter BIO which compressed and 11929 uncompresses any data passed through it. 11930 11931 *Steve Henson* 11932 11933 * Add AES_wrap_key() and AES_unwrap_key() functions to implement 11934 RFC3394 compatible AES key wrapping. 11935 11936 *Steve Henson* 11937 11938 * Add utility functions to handle ASN1 structures. ASN1_STRING_set0(): 11939 sets string data without copying. X509_ALGOR_set0() and 11940 X509_ALGOR_get0(): set and retrieve X509_ALGOR (AlgorithmIdentifier) 11941 data. Attribute function X509at_get0_data_by_OBJ(): retrieves data 11942 from an X509_ATTRIBUTE structure optionally checking it occurs only 11943 once. ASN1_TYPE_set1(): set and ASN1_TYPE structure copying supplied 11944 data. 11945 11946 *Steve Henson* 11947 11948 * Fix BN flag handling in RSA_eay_mod_exp() and BN_MONT_CTX_set() 11949 to get the expected BN_FLG_CONSTTIME behavior. 11950 11951 *Bodo Moeller (Google)* 11952 11953 * Netware support: 11954 11955 - fixed wrong usage of ioctlsocket() when build for LIBC BSD sockets 11956 - fixed do_tests.pl to run the test suite with CLIB builds too (CLIB_OPT) 11957 - added some more tests to do_tests.pl 11958 - fixed RunningProcess usage so that it works with newer LIBC NDKs too 11959 - removed usage of BN_LLONG for CLIB builds to avoid runtime dependency 11960 - added new Configure targets netware-clib-bsdsock, netware-clib-gcc, 11961 netware-clib-bsdsock-gcc, netware-libc-bsdsock-gcc 11962 - various changes to netware.pl to enable gcc-cross builds on Win32 11963 platform 11964 - changed crypto/bio/b_sock.c to work with macro functions (CLIB BSD) 11965 - various changes to fix missing prototype warnings 11966 - fixed x86nasm.pl to create correct asm files for NASM COFF output 11967 - added AES, WHIRLPOOL and CPUID assembler code to build files 11968 - added missing AES assembler make rules to mk1mf.pl 11969 - fixed order of includes in `apps/ocsp.c` so that `e_os.h` settings apply 11970 11971 *Guenter Knauf <eflash@gmx.net>* 11972 11973 * Implement certificate status request TLS extension defined in RFC3546. 11974 A client can set the appropriate parameters and receive the encoded 11975 OCSP response via a callback. A server can query the supplied parameters 11976 and set the encoded OCSP response in the callback. Add simplified examples 11977 to s_client and s_server. 11978 11979 *Steve Henson* 11980 11981### Changes between 0.9.8f and 0.9.8g [19 Oct 2007] 11982 11983 * Fix various bugs: 11984 + Binary incompatibility of ssl_ctx_st structure 11985 + DTLS interoperation with non-compliant servers 11986 + Don't call get_session_cb() without proposed session 11987 + Fix ia64 assembler code 11988 11989 *Andy Polyakov, Steve Henson* 11990 11991### Changes between 0.9.8e and 0.9.8f [11 Oct 2007] 11992 11993 * DTLS Handshake overhaul. There were longstanding issues with 11994 OpenSSL DTLS implementation, which were making it impossible for 11995 RFC 4347 compliant client to communicate with OpenSSL server. 11996 Unfortunately just fixing these incompatibilities would "cut off" 11997 pre-0.9.8f clients. To allow for hassle free upgrade post-0.9.8e 11998 server keeps tolerating non RFC compliant syntax. The opposite is 11999 not true, 0.9.8f client can not communicate with earlier server. 12000 This update even addresses CVE-2007-4995. 12001 12002 *Andy Polyakov* 12003 12004 * Changes to avoid need for function casts in OpenSSL: some compilers 12005 (gcc 4.2 and later) reject their use. 12006 *Kurt Roeckx <kurt@roeckx.be>, Peter Hartley <pdh@utter.chaos.org.uk>, 12007 Steve Henson* 12008 12009 * Add RFC4507 support to OpenSSL. This includes the corrections in 12010 RFC4507bis. The encrypted ticket format is an encrypted encoded 12011 SSL_SESSION structure, that way new session features are automatically 12012 supported. 12013 12014 If a client application caches session in an SSL_SESSION structure 12015 support is transparent because tickets are now stored in the encoded 12016 SSL_SESSION. 12017 12018 The SSL_CTX structure automatically generates keys for ticket 12019 protection in servers so again support should be possible 12020 with no application modification. 12021 12022 If a client or server wishes to disable RFC4507 support then the option 12023 SSL_OP_NO_TICKET can be set. 12024 12025 Add a TLS extension debugging callback to allow the contents of any client 12026 or server extensions to be examined. 12027 12028 This work was sponsored by Google. 12029 12030 *Steve Henson* 12031 12032 * Add initial support for TLS extensions, specifically for the server_name 12033 extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now 12034 have new members for a hostname. The SSL data structure has an 12035 additional member `SSL_CTX *initial_ctx` so that new sessions can be 12036 stored in that context to allow for session resumption, even after the 12037 SSL has been switched to a new SSL_CTX in reaction to a client's 12038 server_name extension. 12039 12040 New functions (subject to change): 12041 12042 SSL_get_servername() 12043 SSL_get_servername_type() 12044 SSL_set_SSL_CTX() 12045 12046 New CTRL codes and macros (subject to change): 12047 12048 SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 12049 - SSL_CTX_set_tlsext_servername_callback() 12050 SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 12051 - SSL_CTX_set_tlsext_servername_arg() 12052 SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name() 12053 12054 openssl s_client has a new '-servername ...' option. 12055 12056 openssl s_server has new options '-servername_host ...', '-cert2 ...', 12057 '-key2 ...', '-servername_fatal' (subject to change). This allows 12058 testing the HostName extension for a specific single hostname ('-cert' 12059 and '-key' remain fallbacks for handshakes without HostName 12060 negotiation). If the unrecognized_name alert has to be sent, this by 12061 default is a warning; it becomes fatal with the '-servername_fatal' 12062 option. 12063 12064 *Peter Sylvester, Remy Allais, Christophe Renou, Steve Henson* 12065 12066 * Add AES and SSE2 assembly language support to VC++ build. 12067 12068 *Steve Henson* 12069 12070 * Mitigate attack on final subtraction in Montgomery reduction. 12071 12072 *Andy Polyakov* 12073 12074 * Fix crypto/ec/ec_mult.c to work properly with scalars of value 0 12075 (which previously caused an internal error). 12076 12077 *Bodo Moeller* 12078 12079 * Squeeze another 10% out of IGE mode when in != out. 12080 12081 *Ben Laurie* 12082 12083 * AES IGE mode speedup. 12084 12085 *Dean Gaudet (Google)* 12086 12087 * Add the Korean symmetric 128-bit cipher SEED (see 12088 <http://www.kisa.or.kr/kisa/seed/jsp/seed_eng.jsp>) and 12089 add SEED ciphersuites from RFC 4162: 12090 12091 TLS_RSA_WITH_SEED_CBC_SHA = "SEED-SHA" 12092 TLS_DHE_DSS_WITH_SEED_CBC_SHA = "DHE-DSS-SEED-SHA" 12093 TLS_DHE_RSA_WITH_SEED_CBC_SHA = "DHE-RSA-SEED-SHA" 12094 TLS_DH_anon_WITH_SEED_CBC_SHA = "ADH-SEED-SHA" 12095 12096 To minimize changes between patchlevels in the OpenSSL 0.9.8 12097 series, SEED remains excluded from compilation unless OpenSSL 12098 is configured with 'enable-seed'. 12099 12100 *KISA, Bodo Moeller* 12101 12102 * Mitigate branch prediction attacks, which can be practical if a 12103 single processor is shared, allowing a spy process to extract 12104 information. For detailed background information, see 12105 <http://eprint.iacr.org/2007/039> (O. Aciicmez, S. Gueron, 12106 J.-P. Seifert, "New Branch Prediction Vulnerabilities in OpenSSL 12107 and Necessary Software Countermeasures"). The core of the change 12108 are new versions BN_div_no_branch() and 12109 BN_mod_inverse_no_branch() of BN_div() and BN_mod_inverse(), 12110 respectively, which are slower, but avoid the security-relevant 12111 conditional branches. These are automatically called by BN_div() 12112 and BN_mod_inverse() if the flag BN_FLG_CONSTTIME is set for one 12113 of the input BIGNUMs. Also, BN_is_bit_set() has been changed to 12114 remove a conditional branch. 12115 12116 BN_FLG_CONSTTIME is the new name for the previous 12117 BN_FLG_EXP_CONSTTIME flag, since it now affects more than just 12118 modular exponentiation. (Since OpenSSL 0.9.7h, setting this flag 12119 in the exponent causes BN_mod_exp_mont() to use the alternative 12120 implementation in BN_mod_exp_mont_consttime().) The old name 12121 remains as a deprecated alias. 12122 12123 Similarly, RSA_FLAG_NO_EXP_CONSTTIME is replaced by a more general 12124 RSA_FLAG_NO_CONSTTIME flag since the RSA implementation now uses 12125 constant-time implementations for more than just exponentiation. 12126 Here too the old name is kept as a deprecated alias. 12127 12128 BN_BLINDING_new() will now use BN_dup() for the modulus so that 12129 the BN_BLINDING structure gets an independent copy of the 12130 modulus. This means that the previous `BIGNUM *m` argument to 12131 BN_BLINDING_new() and to BN_BLINDING_create_param() now 12132 essentially becomes `const BIGNUM *m`, although we can't actually 12133 change this in the header file before 0.9.9. It allows 12134 RSA_setup_blinding() to use BN_with_flags() on the modulus to 12135 enable BN_FLG_CONSTTIME. 12136 12137 *Matthew D Wood (Intel Corp)* 12138 12139 * In the SSL/TLS server implementation, be strict about session ID 12140 context matching (which matters if an application uses a single 12141 external cache for different purposes). Previously, 12142 out-of-context reuse was forbidden only if SSL_VERIFY_PEER was 12143 set. This did ensure strict client verification, but meant that, 12144 with applications using a single external cache for quite 12145 different requirements, clients could circumvent ciphersuite 12146 restrictions for a given session ID context by starting a session 12147 in a different context. 12148 12149 *Bodo Moeller* 12150 12151 * Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that 12152 a ciphersuite string such as "DEFAULT:RSA" cannot enable 12153 authentication-only ciphersuites. 12154 12155 *Bodo Moeller* 12156 12157 * Update the SSL_get_shared_ciphers() fix CVE-2006-3738 which was 12158 not complete and could lead to a possible single byte overflow 12159 ([CVE-2007-5135]) [Ben Laurie] 12160 12161### Changes between 0.9.8d and 0.9.8e [23 Feb 2007] 12162 12163 * Since AES128 and AES256 (and similarly Camellia128 and 12164 Camellia256) share a single mask bit in the logic of 12165 ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a 12166 kludge to work properly if AES128 is available and AES256 isn't 12167 (or if Camellia128 is available and Camellia256 isn't). 12168 12169 *Victor Duchovni* 12170 12171 * Fix the BIT STRING encoding generated by crypto/ec/ec_asn1.c 12172 (within i2d_ECPrivateKey, i2d_ECPKParameters, i2d_ECParameters): 12173 When a point or a seed is encoded in a BIT STRING, we need to 12174 prevent the removal of trailing zero bits to get the proper DER 12175 encoding. (By default, crypto/asn1/a_bitstr.c assumes the case 12176 of a NamedBitList, for which trailing 0 bits need to be removed.) 12177 12178 *Bodo Moeller* 12179 12180 * Have SSL/TLS server implementation tolerate "mismatched" record 12181 protocol version while receiving ClientHello even if the 12182 ClientHello is fragmented. (The server can't insist on the 12183 particular protocol version it has chosen before the ServerHello 12184 message has informed the client about his choice.) 12185 12186 *Bodo Moeller* 12187 12188 * Add RFC 3779 support. 12189 12190 *Rob Austein for ARIN, Ben Laurie* 12191 12192 * Load error codes if they are not already present instead of using a 12193 static variable. This allows them to be cleanly unloaded and reloaded. 12194 Improve header file function name parsing. 12195 12196 *Steve Henson* 12197 12198 * extend SMTP and IMAP protocol emulation in s_client to use EHLO 12199 or CAPABILITY handshake as required by RFCs. 12200 12201 *Goetz Babin-Ebell* 12202 12203### Changes between 0.9.8c and 0.9.8d [28 Sep 2006] 12204 12205 * Introduce limits to prevent malicious keys being able to 12206 cause a denial of service. ([CVE-2006-2940]) 12207 12208 *Steve Henson, Bodo Moeller* 12209 12210 * Fix ASN.1 parsing of certain invalid structures that can result 12211 in a denial of service. ([CVE-2006-2937]) [Steve Henson] 12212 12213 * Fix buffer overflow in SSL_get_shared_ciphers() function. 12214 ([CVE-2006-3738]) [Tavis Ormandy and Will Drewry, Google Security Team] 12215 12216 * Fix SSL client code which could crash if connecting to a 12217 malicious SSLv2 server. ([CVE-2006-4343]) 12218 12219 *Tavis Ormandy and Will Drewry, Google Security Team* 12220 12221 * Since 0.9.8b, ciphersuite strings naming explicit ciphersuites 12222 match only those. Before that, "AES256-SHA" would be interpreted 12223 as a pattern and match "AES128-SHA" too (since AES128-SHA got 12224 the same strength classification in 0.9.7h) as we currently only 12225 have a single AES bit in the ciphersuite description bitmap. 12226 That change, however, also applied to ciphersuite strings such as 12227 "RC4-MD5" that intentionally matched multiple ciphersuites -- 12228 namely, SSL 2.0 ciphersuites in addition to the more common ones 12229 from SSL 3.0/TLS 1.0. 12230 12231 So we change the selection algorithm again: Naming an explicit 12232 ciphersuite selects this one ciphersuite, and any other similar 12233 ciphersuite (same bitmap) from *other* protocol versions. 12234 Thus, "RC4-MD5" again will properly select both the SSL 2.0 12235 ciphersuite and the SSL 3.0/TLS 1.0 ciphersuite. 12236 12237 Since SSL 2.0 does not have any ciphersuites for which the 12238 128/256 bit distinction would be relevant, this works for now. 12239 The proper fix will be to use different bits for AES128 and 12240 AES256, which would have avoided the problems from the beginning; 12241 however, bits are scarce, so we can only do this in a new release 12242 (not just a patchlevel) when we can change the SSL_CIPHER 12243 definition to split the single 'unsigned long mask' bitmap into 12244 multiple values to extend the available space. 12245 12246 *Bodo Moeller* 12247 12248### Changes between 0.9.8b and 0.9.8c [05 Sep 2006] 12249 12250 * Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher 12251 ([CVE-2006-4339]) [Ben Laurie and Google Security Team] 12252 12253 * Add AES IGE and biIGE modes. 12254 12255 *Ben Laurie* 12256 12257 * Change the Unix randomness entropy gathering to use poll() when 12258 possible instead of select(), since the latter has some 12259 undesirable limitations. 12260 12261 *Darryl Miles via Richard Levitte and Bodo Moeller* 12262 12263 * Disable "ECCdraft" ciphersuites more thoroughly. Now special 12264 treatment in ssl/ssl_ciph.s makes sure that these ciphersuites 12265 cannot be implicitly activated as part of, e.g., the "AES" alias. 12266 However, please upgrade to OpenSSL 0.9.9[-dev] for 12267 non-experimental use of the ECC ciphersuites to get TLS extension 12268 support, which is required for curve and point format negotiation 12269 to avoid potential handshake problems. 12270 12271 *Bodo Moeller* 12272 12273 * Disable rogue ciphersuites: 12274 12275 - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5") 12276 - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5") 12277 - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5") 12278 12279 The latter two were purportedly from 12280 draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really 12281 appear there. 12282 12283 Also deactivate the remaining ciphersuites from 12284 draft-ietf-tls-56-bit-ciphersuites-01.txt. These are just as 12285 unofficial, and the ID has long expired. 12286 12287 *Bodo Moeller* 12288 12289 * Fix RSA blinding Heisenbug (problems sometimes occurred on 12290 dual-core machines) and other potential thread-safety issues. 12291 12292 *Bodo Moeller* 12293 12294 * Add the symmetric cipher Camellia (128-bit, 192-bit, 256-bit key 12295 versions), which is now available for royalty-free use 12296 (see <http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html>). 12297 Also, add Camellia TLS ciphersuites from RFC 4132. 12298 12299 To minimize changes between patchlevels in the OpenSSL 0.9.8 12300 series, Camellia remains excluded from compilation unless OpenSSL 12301 is configured with 'enable-camellia'. 12302 12303 *NTT* 12304 12305 * Disable the padding bug check when compression is in use. The padding 12306 bug check assumes the first packet is of even length, this is not 12307 necessarily true if compression is enabled and can result in false 12308 positives causing handshake failure. The actual bug test is ancient 12309 code so it is hoped that implementations will either have fixed it by 12310 now or any which still have the bug do not support compression. 12311 12312 *Steve Henson* 12313 12314### Changes between 0.9.8a and 0.9.8b [04 May 2006] 12315 12316 * When applying a cipher rule check to see if string match is an explicit 12317 cipher suite and only match that one cipher suite if it is. 12318 12319 *Steve Henson* 12320 12321 * Link in manifests for VC++ if needed. 12322 12323 *Austin Ziegler <halostatue@gmail.com>* 12324 12325 * Update support for ECC-based TLS ciphersuites according to 12326 draft-ietf-tls-ecc-12.txt with proposed changes (but without 12327 TLS extensions, which are supported starting with the 0.9.9 12328 branch, not in the OpenSSL 0.9.8 branch). 12329 12330 *Douglas Stebila* 12331 12332 * New functions EVP_CIPHER_CTX_new() and EVP_CIPHER_CTX_free() to support 12333 opaque EVP_CIPHER_CTX handling. 12334 12335 *Steve Henson* 12336 12337 * Fixes and enhancements to zlib compression code. We now only use 12338 "zlib1.dll" and use the default `__cdecl` calling convention on Win32 12339 to conform with the standards mentioned here: 12340 <http://www.zlib.net/DLL_FAQ.txt> 12341 Static zlib linking now works on Windows and the new --with-zlib-include 12342 --with-zlib-lib options to Configure can be used to supply the location 12343 of the headers and library. Gracefully handle case where zlib library 12344 can't be loaded. 12345 12346 *Steve Henson* 12347 12348 * Several fixes and enhancements to the OID generation code. The old code 12349 sometimes allowed invalid OIDs (1.X for X >= 40 for example), couldn't 12350 handle numbers larger than ULONG_MAX, truncated printing and had a 12351 non standard OBJ_obj2txt() behaviour. 12352 12353 *Steve Henson* 12354 12355 * Add support for building of engines under engine/ as shared libraries 12356 under VC++ build system. 12357 12358 *Steve Henson* 12359 12360 * Corrected the numerous bugs in the Win32 path splitter in DSO. 12361 Hopefully, we will not see any false combination of paths any more. 12362 12363 *Richard Levitte* 12364 12365### Changes between 0.9.8 and 0.9.8a [11 Oct 2005] 12366 12367 * Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING 12368 (part of SSL_OP_ALL). This option used to disable the 12369 countermeasure against man-in-the-middle protocol-version 12370 rollback in the SSL 2.0 server implementation, which is a bad 12371 idea. ([CVE-2005-2969]) 12372 12373 *Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center 12374 for Information Security, National Institute of Advanced Industrial 12375 Science and Technology [AIST], Japan)* 12376 12377 * Add two function to clear and return the verify parameter flags. 12378 12379 *Steve Henson* 12380 12381 * Keep cipherlists sorted in the source instead of sorting them at 12382 runtime, thus removing the need for a lock. 12383 12384 *Nils Larsch* 12385 12386 * Avoid some small subgroup attacks in Diffie-Hellman. 12387 12388 *Nick Mathewson and Ben Laurie* 12389 12390 * Add functions for well-known primes. 12391 12392 *Nick Mathewson* 12393 12394 * Extended Windows CE support. 12395 12396 *Satoshi Nakamura and Andy Polyakov* 12397 12398 * Initialize SSL_METHOD structures at compile time instead of during 12399 runtime, thus removing the need for a lock. 12400 12401 *Steve Henson* 12402 12403 * Make PKCS7_decrypt() work even if no certificate is supplied by 12404 attempting to decrypt each encrypted key in turn. Add support to 12405 smime utility. 12406 12407 *Steve Henson* 12408 12409### Changes between 0.9.7h and 0.9.8 [05 Jul 2005] 12410 12411[NB: OpenSSL 0.9.7i and later 0.9.7 patch levels were released after 12412OpenSSL 0.9.8.] 12413 12414 * Add libcrypto.pc and libssl.pc for those who feel they need them. 12415 12416 *Richard Levitte* 12417 12418 * Change CA.sh and CA.pl so they don't bundle the CSR and the private 12419 key into the same file any more. 12420 12421 *Richard Levitte* 12422 12423 * Add initial support for Win64, both IA64 and AMD64/x64 flavors. 12424 12425 *Andy Polyakov* 12426 12427 * Add -utf8 command line and config file option to 'ca'. 12428 12429 *Stefan <stf@udoma.org* 12430 12431 * Removed the macro des_crypt(), as it seems to conflict with some 12432 libraries. Use DES_crypt(). 12433 12434 *Richard Levitte* 12435 12436 * Correct naming of the 'chil' and '4758cca' ENGINEs. This 12437 involves renaming the source and generated shared-libs for 12438 both. The engines will accept the corrected or legacy ids 12439 ('ncipher' and '4758_cca' respectively) when binding. NB, 12440 this only applies when building 'shared'. 12441 12442 *Corinna Vinschen <vinschen@redhat.com> and Geoff Thorpe* 12443 12444 * Add attribute functions to EVP_PKEY structure. Modify 12445 PKCS12_create() to recognize a CSP name attribute and 12446 use it. Make -CSP option work again in pkcs12 utility. 12447 12448 *Steve Henson* 12449 12450 * Add new functionality to the bn blinding code: 12451 - automatic re-creation of the BN_BLINDING parameters after 12452 a fixed number of uses (currently 32) 12453 - add new function for parameter creation 12454 - introduce flags to control the update behaviour of the 12455 BN_BLINDING parameters 12456 - hide BN_BLINDING structure 12457 Add a second BN_BLINDING slot to the RSA structure to improve 12458 performance when a single RSA object is shared among several 12459 threads. 12460 12461 *Nils Larsch* 12462 12463 * Add support for DTLS. 12464 12465 *Nagendra Modadugu <nagendra@cs.stanford.edu> and Ben Laurie* 12466 12467 * Add support for DER encoded private keys (SSL_FILETYPE_ASN1) 12468 to SSL_CTX_use_PrivateKey_file() and SSL_use_PrivateKey_file() 12469 12470 *Walter Goulet* 12471 12472 * Remove buggy and incomplete DH cert support from 12473 ssl/ssl_rsa.c and ssl/s3_both.c 12474 12475 *Nils Larsch* 12476 12477 * Use SHA-1 instead of MD5 as the default digest algorithm for 12478 the `apps/openssl` commands. 12479 12480 *Nils Larsch* 12481 12482 * Compile clean with "-Wall -Wmissing-prototypes 12483 -Wstrict-prototypes -Wmissing-declarations -Werror". Currently 12484 DEBUG_SAFESTACK must also be set. 12485 12486 *Ben Laurie* 12487 12488 * Change ./Configure so that certain algorithms can be disabled by default. 12489 The new counterpiece to "no-xxx" is "enable-xxx". 12490 12491 The patented RC5 and MDC2 algorithms will now be disabled unless 12492 "enable-rc5" and "enable-mdc2", respectively, are specified. 12493 12494 (IDEA remains enabled despite being patented. This is because IDEA 12495 is frequently required for interoperability, and there is no license 12496 fee for non-commercial use. As before, "no-idea" can be used to 12497 avoid this algorithm.) 12498 12499 *Bodo Moeller* 12500 12501 * Add processing of proxy certificates (see RFC 3820). This work was 12502 sponsored by KTH (The Royal Institute of Technology in Stockholm) and 12503 EGEE (Enabling Grids for E-science in Europe). 12504 12505 *Richard Levitte* 12506 12507 * RC4 performance overhaul on modern architectures/implementations, such 12508 as Intel P4, IA-64 and AMD64. 12509 12510 *Andy Polyakov* 12511 12512 * New utility extract-section.pl. This can be used specify an alternative 12513 section number in a pod file instead of having to treat each file as 12514 a separate case in Makefile. This can be done by adding two lines to the 12515 pod file: 12516 12517 =for comment openssl_section:XXX 12518 12519 The blank line is mandatory. 12520 12521 *Steve Henson* 12522 12523 * New arguments -certform, -keyform and -pass for s_client and s_server 12524 to allow alternative format key and certificate files and passphrase 12525 sources. 12526 12527 *Steve Henson* 12528 12529 * New structure X509_VERIFY_PARAM which combines current verify parameters, 12530 update associated structures and add various utility functions. 12531 12532 Add new policy related verify parameters, include policy checking in 12533 standard verify code. Enhance 'smime' application with extra parameters 12534 to support policy checking and print out. 12535 12536 *Steve Henson* 12537 12538 * Add a new engine to support VIA PadLock ACE extensions in the VIA C3 12539 Nehemiah processors. These extensions support AES encryption in hardware 12540 as well as RNG (though RNG support is currently disabled). 12541 12542 *Michal Ludvig <michal@logix.cz>, with help from Andy Polyakov* 12543 12544 * Deprecate `BN_[get|set]_params()` functions (they were ignored internally). 12545 12546 *Geoff Thorpe* 12547 12548 * New FIPS 180-2 algorithms, SHA-224/-256/-384/-512 are implemented. 12549 12550 *Andy Polyakov and a number of other people* 12551 12552 * Improved PowerPC platform support. Most notably BIGNUM assembler 12553 implementation contributed by IBM. 12554 12555 *Suresh Chari, Peter Waltenberg, Andy Polyakov* 12556 12557 * The new 'RSA_generate_key_ex' function now takes a BIGNUM for the public 12558 exponent rather than 'unsigned long'. There is a corresponding change to 12559 the new 'rsa_keygen' element of the RSA_METHOD structure. 12560 12561 *Jelte Jansen, Geoff Thorpe* 12562 12563 * Functionality for creating the initial serial number file is now 12564 moved from CA.pl to the 'ca' utility with a new option -create_serial. 12565 12566 (Before OpenSSL 0.9.7e, CA.pl used to initialize the serial 12567 number file to 1, which is bound to cause problems. To avoid 12568 the problems while respecting compatibility between different 0.9.7 12569 patchlevels, 0.9.7e employed 'openssl x509 -next_serial' in 12570 CA.pl for serial number initialization. With the new release 0.9.8, 12571 we can fix the problem directly in the 'ca' utility.) 12572 12573 *Steve Henson* 12574 12575 * Reduced header interdependencies by declaring more opaque objects in 12576 ossl_typ.h. As a consequence, including some headers (eg. engine.h) will 12577 give fewer recursive includes, which could break lazy source code - so 12578 this change is covered by the OPENSSL_NO_DEPRECATED symbol. As always, 12579 developers should define this symbol when building and using openssl to 12580 ensure they track the recommended behaviour, interfaces, [etc], but 12581 backwards-compatible behaviour prevails when this isn't defined. 12582 12583 *Geoff Thorpe* 12584 12585 * New function X509_POLICY_NODE_print() which prints out policy nodes. 12586 12587 *Steve Henson* 12588 12589 * Add new EVP function EVP_CIPHER_CTX_rand_key and associated functionality. 12590 This will generate a random key of the appropriate length based on the 12591 cipher context. The EVP_CIPHER can provide its own random key generation 12592 routine to support keys of a specific form. This is used in the des and 12593 3des routines to generate a key of the correct parity. Update S/MIME 12594 code to use new functions and hence generate correct parity DES keys. 12595 Add EVP_CHECK_DES_KEY #define to return an error if the key is not 12596 valid (weak or incorrect parity). 12597 12598 *Steve Henson* 12599 12600 * Add a local set of CRLs that can be used by X509_verify_cert() as well 12601 as looking them up. This is useful when the verified structure may contain 12602 CRLs, for example PKCS#7 signedData. Modify PKCS7_verify() to use any CRLs 12603 present unless the new PKCS7_NO_CRL flag is asserted. 12604 12605 *Steve Henson* 12606 12607 * Extend ASN1 oid configuration module. It now additionally accepts the 12608 syntax: 12609 12610 shortName = some long name, 1.2.3.4 12611 12612 *Steve Henson* 12613 12614 * Reimplemented the BN_CTX implementation. There is now no more static 12615 limitation on the number of variables it can handle nor the depth of the 12616 "stack" handling for BN_CTX_start()/BN_CTX_end() pairs. The stack 12617 information can now expand as required, and rather than having a single 12618 static array of bignums, BN_CTX now uses a linked-list of such arrays 12619 allowing it to expand on demand whilst maintaining the usefulness of 12620 BN_CTX's "bundling". 12621 12622 *Geoff Thorpe* 12623 12624 * Add a missing BN_CTX parameter to the 'rsa_mod_exp' callback in RSA_METHOD 12625 to allow all RSA operations to function using a single BN_CTX. 12626 12627 *Geoff Thorpe* 12628 12629 * Preliminary support for certificate policy evaluation and checking. This 12630 is initially intended to pass the tests outlined in "Conformance Testing 12631 of Relying Party Client Certificate Path Processing Logic" v1.07. 12632 12633 *Steve Henson* 12634 12635 * bn_dup_expand() has been deprecated, it was introduced in 0.9.7 and 12636 remained unused and not that useful. A variety of other little bignum 12637 tweaks and fixes have also been made continuing on from the audit (see 12638 below). 12639 12640 *Geoff Thorpe* 12641 12642 * Constify all or almost all d2i, c2i, s2i and r2i functions, along with 12643 associated ASN1, EVP and SSL functions and old ASN1 macros. 12644 12645 *Richard Levitte* 12646 12647 * BN_zero() only needs to set 'top' and 'neg' to zero for correct results, 12648 and this should never fail. So the return value from the use of 12649 BN_set_word() (which can fail due to needless expansion) is now deprecated; 12650 if OPENSSL_NO_DEPRECATED is defined, BN_zero() is a void macro. 12651 12652 *Geoff Thorpe* 12653 12654 * BN_CTX_get() should return zero-valued bignums, providing the same 12655 initialised value as BN_new(). 12656 12657 *Geoff Thorpe, suggested by Ulf Möller* 12658 12659 * Support for inhibitAnyPolicy certificate extension. 12660 12661 *Steve Henson* 12662 12663 * An audit of the BIGNUM code is underway, for which debugging code is 12664 enabled when BN_DEBUG is defined. This makes stricter enforcements on what 12665 is considered valid when processing BIGNUMs, and causes execution to 12666 assert() when a problem is discovered. If BN_DEBUG_RAND is defined, 12667 further steps are taken to deliberately pollute unused data in BIGNUM 12668 structures to try and expose faulty code further on. For now, openssl will 12669 (in its default mode of operation) continue to tolerate the inconsistent 12670 forms that it has tolerated in the past, but authors and packagers should 12671 consider trying openssl and their own applications when compiled with 12672 these debugging symbols defined. It will help highlight potential bugs in 12673 their own code, and will improve the test coverage for OpenSSL itself. At 12674 some point, these tighter rules will become openssl's default to improve 12675 maintainability, though the assert()s and other overheads will remain only 12676 in debugging configurations. See bn.h for more details. 12677 12678 *Geoff Thorpe, Nils Larsch, Ulf Möller* 12679 12680 * BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure 12681 that can only be obtained through BN_CTX_new() (which implicitly 12682 initialises it). The presence of this function only made it possible 12683 to overwrite an existing structure (and cause memory leaks). 12684 12685 *Geoff Thorpe* 12686 12687 * Because of the callback-based approach for implementing LHASH as a 12688 template type, lh_insert() adds opaque objects to hash-tables and 12689 lh_doall() or lh_doall_arg() are typically used with a destructor callback 12690 to clean up those corresponding objects before destroying the hash table 12691 (and losing the object pointers). So some over-zealous constifications in 12692 LHASH have been relaxed so that lh_insert() does not take (nor store) the 12693 objects as "const" and the `lh_doall[_arg]` callback wrappers are not 12694 prototyped to have "const" restrictions on the object pointers they are 12695 given (and so aren't required to cast them away any more). 12696 12697 *Geoff Thorpe* 12698 12699 * The tmdiff.h API was so ugly and minimal that our own timing utility 12700 (speed) prefers to use its own implementation. The two implementations 12701 haven't been consolidated as yet (volunteers?) but the tmdiff API has had 12702 its object type properly exposed (MS_TM) instead of casting to/from 12703 `char *`. This may still change yet if someone realises MS_TM and 12704 `ms_time_***` 12705 aren't necessarily the greatest nomenclatures - but this is what was used 12706 internally to the implementation so I've used that for now. 12707 12708 *Geoff Thorpe* 12709 12710 * Ensure that deprecated functions do not get compiled when 12711 OPENSSL_NO_DEPRECATED is defined. Some "openssl" subcommands and a few of 12712 the self-tests were still using deprecated key-generation functions so 12713 these have been updated also. 12714 12715 *Geoff Thorpe* 12716 12717 * Reorganise PKCS#7 code to separate the digest location functionality 12718 into PKCS7_find_digest(), digest addition into PKCS7_bio_add_digest(). 12719 New function PKCS7_set_digest() to set the digest type for PKCS#7 12720 digestedData type. Add additional code to correctly generate the 12721 digestedData type and add support for this type in PKCS7 initialization 12722 functions. 12723 12724 *Steve Henson* 12725 12726 * New function PKCS7_set0_type_other() this initializes a PKCS7 12727 structure of type "other". 12728 12729 *Steve Henson* 12730 12731 * Fix prime generation loop in crypto/bn/bn_prime.pl by making 12732 sure the loop does correctly stop and breaking ("division by zero") 12733 modulus operations are not performed. The (pre-generated) prime 12734 table crypto/bn/bn_prime.h was already correct, but it could not be 12735 re-generated on some platforms because of the "division by zero" 12736 situation in the script. 12737 12738 *Ralf S. Engelschall* 12739 12740 * Update support for ECC-based TLS ciphersuites according to 12741 draft-ietf-tls-ecc-03.txt: the KDF1 key derivation function with 12742 SHA-1 now is only used for "small" curves (where the 12743 representation of a field element takes up to 24 bytes); for 12744 larger curves, the field element resulting from ECDH is directly 12745 used as premaster secret. 12746 12747 *Douglas Stebila (Sun Microsystems Laboratories)* 12748 12749 * Add code for kP+lQ timings to crypto/ec/ectest.c, and add SEC2 12750 curve secp160r1 to the tests. 12751 12752 *Douglas Stebila (Sun Microsystems Laboratories)* 12753 12754 * Add the possibility to load symbols globally with DSO. 12755 12756 *Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte* 12757 12758 * Add the functions ERR_set_mark() and ERR_pop_to_mark() for better 12759 control of the error stack. 12760 12761 *Richard Levitte* 12762 12763 * Add support for STORE in ENGINE. 12764 12765 *Richard Levitte* 12766 12767 * Add the STORE type. The intention is to provide a common interface 12768 to certificate and key stores, be they simple file-based stores, or 12769 HSM-type store, or LDAP stores, or... 12770 NOTE: The code is currently UNTESTED and isn't really used anywhere. 12771 12772 *Richard Levitte* 12773 12774 * Add a generic structure called OPENSSL_ITEM. This can be used to 12775 pass a list of arguments to any function as well as provide a way 12776 for a function to pass data back to the caller. 12777 12778 *Richard Levitte* 12779 12780 * Add the functions BUF_strndup() and BUF_memdup(). BUF_strndup() 12781 works like BUF_strdup() but can be used to duplicate a portion of 12782 a string. The copy gets NUL-terminated. BUF_memdup() duplicates 12783 a memory area. 12784 12785 *Richard Levitte* 12786 12787 * Add the function sk_find_ex() which works like sk_find(), but will 12788 return an index to an element even if an exact match couldn't be 12789 found. The index is guaranteed to point at the element where the 12790 searched-for key would be inserted to preserve sorting order. 12791 12792 *Richard Levitte* 12793 12794 * Add the function OBJ_bsearch_ex() which works like OBJ_bsearch() but 12795 takes an extra flags argument for optional functionality. Currently, 12796 the following flags are defined: 12797 12798 OBJ_BSEARCH_VALUE_ON_NOMATCH 12799 This one gets OBJ_bsearch_ex() to return a pointer to the first 12800 element where the comparing function returns a negative or zero 12801 number. 12802 12803 OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 12804 This one gets OBJ_bsearch_ex() to return a pointer to the first 12805 element where the comparing function returns zero. This is useful 12806 if there are more than one element where the comparing function 12807 returns zero. 12808 12809 *Richard Levitte* 12810 12811 * Make it possible to create self-signed certificates with 'openssl ca' 12812 in such a way that the self-signed certificate becomes part of the 12813 CA database and uses the same mechanisms for serial number generation 12814 as all other certificate signing. The new flag '-selfsign' enables 12815 this functionality. Adapt CA.sh and CA.pl.in. 12816 12817 *Richard Levitte* 12818 12819 * Add functionality to check the public key of a certificate request 12820 against a given private. This is useful to check that a certificate 12821 request can be signed by that key (self-signing). 12822 12823 *Richard Levitte* 12824 12825 * Make it possible to have multiple active certificates with the same 12826 subject in the CA index file. This is done only if the keyword 12827 'unique_subject' is set to 'no' in the main CA section (default 12828 if 'CA_default') of the configuration file. The value is saved 12829 with the database itself in a separate index attribute file, 12830 named like the index file with '.attr' appended to the name. 12831 12832 *Richard Levitte* 12833 12834 * Generate multi-valued AVAs using '+' notation in config files for 12835 req and dirName. 12836 12837 *Steve Henson* 12838 12839 * Support for nameConstraints certificate extension. 12840 12841 *Steve Henson* 12842 12843 * Support for policyConstraints certificate extension. 12844 12845 *Steve Henson* 12846 12847 * Support for policyMappings certificate extension. 12848 12849 *Steve Henson* 12850 12851 * Make sure the default DSA_METHOD implementation only uses its 12852 dsa_mod_exp() and/or bn_mod_exp() handlers if they are non-NULL, 12853 and change its own handlers to be NULL so as to remove unnecessary 12854 indirection. This lets alternative implementations fallback to the 12855 default implementation more easily. 12856 12857 *Geoff Thorpe* 12858 12859 * Support for directoryName in GeneralName related extensions 12860 in config files. 12861 12862 *Steve Henson* 12863 12864 * Make it possible to link applications using Makefile.shared. 12865 Make that possible even when linking against static libraries! 12866 12867 *Richard Levitte* 12868 12869 * Support for single pass processing for S/MIME signing. This now 12870 means that S/MIME signing can be done from a pipe, in addition 12871 cleartext signing (multipart/signed type) is effectively streaming 12872 and the signed data does not need to be all held in memory. 12873 12874 This is done with a new flag PKCS7_STREAM. When this flag is set 12875 PKCS7_sign() only initializes the PKCS7 structure and the actual signing 12876 is done after the data is output (and digests calculated) in 12877 SMIME_write_PKCS7(). 12878 12879 *Steve Henson* 12880 12881 * Add full support for -rpath/-R, both in shared libraries and 12882 applications, at least on the platforms where it's known how 12883 to do it. 12884 12885 *Richard Levitte* 12886 12887 * In crypto/ec/ec_mult.c, implement fast point multiplication with 12888 precomputation, based on wNAF splitting: EC_GROUP_precompute_mult() 12889 will now compute a table of multiples of the generator that 12890 makes subsequent invocations of EC_POINTs_mul() or EC_POINT_mul() 12891 faster (notably in the case of a single point multiplication, 12892 scalar * generator). 12893 12894 *Nils Larsch, Bodo Moeller* 12895 12896 * IPv6 support for certificate extensions. The various extensions 12897 which use the IP:a.b.c.d can now take IPv6 addresses using the 12898 formats of RFC1884 2.2 . IPv6 addresses are now also displayed 12899 correctly. 12900 12901 *Steve Henson* 12902 12903 * Added an ENGINE that implements RSA by performing private key 12904 exponentiations with the GMP library. The conversions to and from 12905 GMP's mpz_t format aren't optimised nor are any montgomery forms 12906 cached, and on x86 it appears OpenSSL's own performance has caught up. 12907 However there are likely to be other architectures where GMP could 12908 provide a boost. This ENGINE is not built in by default, but it can be 12909 specified at Configure time and should be accompanied by the necessary 12910 linker additions, eg; 12911 ./config -DOPENSSL_USE_GMP -lgmp 12912 12913 *Geoff Thorpe* 12914 12915 * "openssl engine" will not display ENGINE/DSO load failure errors when 12916 testing availability of engines with "-t" - the old behaviour is 12917 produced by increasing the feature's verbosity with "-tt". 12918 12919 *Geoff Thorpe* 12920 12921 * ECDSA routines: under certain error conditions uninitialized BN objects 12922 could be freed. Solution: make sure initialization is performed early 12923 enough. (Reported and fix supplied by Nils Larsch <nla@trustcenter.de> 12924 via PR#459) 12925 12926 *Lutz Jaenicke* 12927 12928 * Key-generation can now be implemented in RSA_METHOD, DSA_METHOD 12929 and DH_METHOD (eg. by ENGINE implementations) to override the normal 12930 software implementations. For DSA and DH, parameter generation can 12931 also be overridden by providing the appropriate method callbacks. 12932 12933 *Geoff Thorpe* 12934 12935 * Change the "progress" mechanism used in key-generation and 12936 primality testing to functions that take a new BN_GENCB pointer in 12937 place of callback/argument pairs. The new API functions have `_ex` 12938 postfixes and the older functions are reimplemented as wrappers for 12939 the new ones. The OPENSSL_NO_DEPRECATED symbol can be used to hide 12940 declarations of the old functions to help (graceful) attempts to 12941 migrate to the new functions. Also, the new key-generation API 12942 functions operate on a caller-supplied key-structure and return 12943 success/failure rather than returning a key or NULL - this is to 12944 help make "keygen" another member function of RSA_METHOD etc. 12945 12946 Example for using the new callback interface: 12947 12948 int (*my_callback)(int a, int b, BN_GENCB *cb) = ...; 12949 void *my_arg = ...; 12950 BN_GENCB my_cb; 12951 12952 BN_GENCB_set(&my_cb, my_callback, my_arg); 12953 12954 return BN_is_prime_ex(some_bignum, BN_prime_checks, NULL, &cb); 12955 /* For the meaning of a, b in calls to my_callback(), see the 12956 * documentation of the function that calls the callback. 12957 * cb will point to my_cb; my_arg can be retrieved as cb->arg. 12958 * my_callback should return 1 if it wants BN_is_prime_ex() 12959 * to continue, or 0 to stop. 12960 */ 12961 12962 *Geoff Thorpe* 12963 12964 * Change the ZLIB compression method to be stateful, and make it 12965 available to TLS with the number defined in 12966 draft-ietf-tls-compression-04.txt. 12967 12968 *Richard Levitte* 12969 12970 * Add the ASN.1 structures and functions for CertificatePair, which 12971 is defined as follows (according to X.509_4thEditionDraftV6.pdf): 12972 12973 CertificatePair ::= SEQUENCE { 12974 forward [0] Certificate OPTIONAL, 12975 reverse [1] Certificate OPTIONAL, 12976 -- at least one of the pair shall be present -- } 12977 12978 Also implement the PEM functions to read and write certificate 12979 pairs, and defined the PEM tag as "CERTIFICATE PAIR". 12980 12981 This needed to be defined, mostly for the sake of the LDAP 12982 attribute crossCertificatePair, but may prove useful elsewhere as 12983 well. 12984 12985 *Richard Levitte* 12986 12987 * Make it possible to inhibit symlinking of shared libraries in 12988 Makefile.shared, for Cygwin's sake. 12989 12990 *Richard Levitte* 12991 12992 * Extend the BIGNUM API by creating a function 12993 void BN_set_negative(BIGNUM *a, int neg); 12994 and a macro that behave like 12995 int BN_is_negative(const BIGNUM *a); 12996 12997 to avoid the need to access 'a->neg' directly in applications. 12998 12999 *Nils Larsch* 13000 13001 * Implement fast modular reduction for pseudo-Mersenne primes 13002 used in NIST curves (crypto/bn/bn_nist.c, crypto/ec/ecp_nist.c). 13003 EC_GROUP_new_curve_GFp() will now automatically use this 13004 if applicable. 13005 13006 *Nils Larsch <nla@trustcenter.de>* 13007 13008 * Add new lock type (CRYPTO_LOCK_BN). 13009 13010 *Bodo Moeller* 13011 13012 * Change the ENGINE framework to automatically load engines 13013 dynamically from specific directories unless they could be 13014 found to already be built in or loaded. Move all the 13015 current engines except for the cryptodev one to a new 13016 directory engines/. 13017 The engines in engines/ are built as shared libraries if 13018 the "shared" options was given to ./Configure or ./config. 13019 Otherwise, they are inserted in libcrypto.a. 13020 /usr/local/ssl/engines is the default directory for dynamic 13021 engines, but that can be overridden at configure time through 13022 the usual use of --prefix and/or --openssldir, and at run 13023 time with the environment variable OPENSSL_ENGINES. 13024 13025 *Geoff Thorpe and Richard Levitte* 13026 13027 * Add Makefile.shared, a helper makefile to build shared 13028 libraries. Adapt Makefile.org. 13029 13030 *Richard Levitte* 13031 13032 * Add version info to Win32 DLLs. 13033 13034 *Peter 'Luna' Runestig" <peter@runestig.com>* 13035 13036 * Add new 'medium level' PKCS#12 API. Certificates and keys 13037 can be added using this API to created arbitrary PKCS#12 13038 files while avoiding the low-level API. 13039 13040 New options to PKCS12_create(), key or cert can be NULL and 13041 will then be omitted from the output file. The encryption 13042 algorithm NIDs can be set to -1 for no encryption, the mac 13043 iteration count can be set to 0 to omit the mac. 13044 13045 Enhance pkcs12 utility by making the -nokeys and -nocerts 13046 options work when creating a PKCS#12 file. New option -nomac 13047 to omit the mac, NONE can be set for an encryption algorithm. 13048 New code is modified to use the enhanced PKCS12_create() 13049 instead of the low-level API. 13050 13051 *Steve Henson* 13052 13053 * Extend ASN1 encoder to support indefinite length constructed 13054 encoding. This can output sequences tags and octet strings in 13055 this form. Modify pk7_asn1.c to support indefinite length 13056 encoding. This is experimental and needs additional code to 13057 be useful, such as an ASN1 bio and some enhanced streaming 13058 PKCS#7 code. 13059 13060 Extend template encode functionality so that tagging is passed 13061 down to the template encoder. 13062 13063 *Steve Henson* 13064 13065 * Let 'openssl req' fail if an argument to '-newkey' is not 13066 recognized instead of using RSA as a default. 13067 13068 *Bodo Moeller* 13069 13070 * Add support for ECC-based ciphersuites from draft-ietf-tls-ecc-01.txt. 13071 As these are not official, they are not included in "ALL"; 13072 the "ECCdraft" ciphersuite group alias can be used to select them. 13073 13074 *Vipul Gupta and Sumit Gupta (Sun Microsystems Laboratories)* 13075 13076 * Add ECDH engine support. 13077 13078 *Nils Gura and Douglas Stebila (Sun Microsystems Laboratories)* 13079 13080 * Add ECDH in new directory crypto/ecdh/. 13081 13082 *Douglas Stebila (Sun Microsystems Laboratories)* 13083 13084 * Let BN_rand_range() abort with an error after 100 iterations 13085 without success (which indicates a broken PRNG). 13086 13087 *Bodo Moeller* 13088 13089 * Change BN_mod_sqrt() so that it verifies that the input value 13090 is really the square of the return value. (Previously, 13091 BN_mod_sqrt would show GIGO behaviour.) 13092 13093 *Bodo Moeller* 13094 13095 * Add named elliptic curves over binary fields from X9.62, SECG, 13096 and WAP/WTLS; add OIDs that were still missing. 13097 13098 *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)* 13099 13100 * Extend the EC library for elliptic curves over binary fields 13101 (new files ec2_smpl.c, ec2_smpt.c, ec2_mult.c in crypto/ec/). 13102 New EC_METHOD: 13103 13104 EC_GF2m_simple_method 13105 13106 New API functions: 13107 13108 EC_GROUP_new_curve_GF2m 13109 EC_GROUP_set_curve_GF2m 13110 EC_GROUP_get_curve_GF2m 13111 EC_POINT_set_affine_coordinates_GF2m 13112 EC_POINT_get_affine_coordinates_GF2m 13113 EC_POINT_set_compressed_coordinates_GF2m 13114 13115 Point compression for binary fields is disabled by default for 13116 patent reasons (compile with OPENSSL_EC_BIN_PT_COMP defined to 13117 enable it). 13118 13119 As binary polynomials are represented as BIGNUMs, various members 13120 of the EC_GROUP and EC_POINT data structures can be shared 13121 between the implementations for prime fields and binary fields; 13122 the above `..._GF2m functions` (except for EX_GROUP_new_curve_GF2m) 13123 are essentially identical to their `..._GFp` counterparts. 13124 (For simplicity, the `..._GFp` prefix has been dropped from 13125 various internal method names.) 13126 13127 An internal 'field_div' method (similar to 'field_mul' and 13128 'field_sqr') has been added; this is used only for binary fields. 13129 13130 *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)* 13131 13132 * Optionally dispatch EC_POINT_mul(), EC_POINT_precompute_mult() 13133 through methods ('mul', 'precompute_mult'). 13134 13135 The generic implementations (now internally called 'ec_wNAF_mul' 13136 and 'ec_wNAF_precomputed_mult') remain the default if these 13137 methods are undefined. 13138 13139 *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)* 13140 13141 * New function EC_GROUP_get_degree, which is defined through 13142 EC_METHOD. For curves over prime fields, this returns the bit 13143 length of the modulus. 13144 13145 *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)* 13146 13147 * New functions EC_GROUP_dup, EC_POINT_dup. 13148 (These simply call ..._new and ..._copy). 13149 13150 *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)* 13151 13152 * Add binary polynomial arithmetic software in crypto/bn/bn_gf2m.c. 13153 Polynomials are represented as BIGNUMs (where the sign bit is not 13154 used) in the following functions [macros]: 13155 13156 BN_GF2m_add 13157 BN_GF2m_sub [= BN_GF2m_add] 13158 BN_GF2m_mod [wrapper for BN_GF2m_mod_arr] 13159 BN_GF2m_mod_mul [wrapper for BN_GF2m_mod_mul_arr] 13160 BN_GF2m_mod_sqr [wrapper for BN_GF2m_mod_sqr_arr] 13161 BN_GF2m_mod_inv 13162 BN_GF2m_mod_exp [wrapper for BN_GF2m_mod_exp_arr] 13163 BN_GF2m_mod_sqrt [wrapper for BN_GF2m_mod_sqrt_arr] 13164 BN_GF2m_mod_solve_quad [wrapper for BN_GF2m_mod_solve_quad_arr] 13165 BN_GF2m_cmp [= BN_ucmp] 13166 13167 (Note that only the 'mod' functions are actually for fields GF(2^m). 13168 BN_GF2m_add() is misnomer, but this is for the sake of consistency.) 13169 13170 For some functions, an the irreducible polynomial defining a 13171 field can be given as an 'unsigned int[]' with strictly 13172 decreasing elements giving the indices of those bits that are set; 13173 i.e., p[] represents the polynomial 13174 f(t) = t^p[0] + t^p[1] + ... + t^p[k] 13175 where 13176 p[0] > p[1] > ... > p[k] = 0. 13177 This applies to the following functions: 13178 13179 BN_GF2m_mod_arr 13180 BN_GF2m_mod_mul_arr 13181 BN_GF2m_mod_sqr_arr 13182 BN_GF2m_mod_inv_arr [wrapper for BN_GF2m_mod_inv] 13183 BN_GF2m_mod_div_arr [wrapper for BN_GF2m_mod_div] 13184 BN_GF2m_mod_exp_arr 13185 BN_GF2m_mod_sqrt_arr 13186 BN_GF2m_mod_solve_quad_arr 13187 BN_GF2m_poly2arr 13188 BN_GF2m_arr2poly 13189 13190 Conversion can be performed by the following functions: 13191 13192 BN_GF2m_poly2arr 13193 BN_GF2m_arr2poly 13194 13195 bntest.c has additional tests for binary polynomial arithmetic. 13196 13197 Two implementations for BN_GF2m_mod_div() are available. 13198 The default algorithm simply uses BN_GF2m_mod_inv() and 13199 BN_GF2m_mod_mul(). The alternative algorithm is compiled in only 13200 if OPENSSL_SUN_GF2M_DIV is defined (patent pending; read the 13201 copyright notice in crypto/bn/bn_gf2m.c before enabling it). 13202 13203 *Sheueling Chang Shantz and Douglas Stebila (Sun Microsystems Laboratories)* 13204 13205 * Add new error code 'ERR_R_DISABLED' that can be used when some 13206 functionality is disabled at compile-time. 13207 13208 *Douglas Stebila <douglas.stebila@sun.com>* 13209 13210 * Change default behaviour of 'openssl asn1parse' so that more 13211 information is visible when viewing, e.g., a certificate: 13212 13213 Modify asn1_parse2 (crypto/asn1/asn1_par.c) so that in non-'dump' 13214 mode the content of non-printable OCTET STRINGs is output in a 13215 style similar to INTEGERs, but with '[HEX DUMP]' prepended to 13216 avoid the appearance of a printable string. 13217 13218 *Nils Larsch <nla@trustcenter.de>* 13219 13220 * Add 'asn1_flag' and 'asn1_form' member to EC_GROUP with access 13221 functions 13222 EC_GROUP_set_asn1_flag() 13223 EC_GROUP_get_asn1_flag() 13224 EC_GROUP_set_point_conversion_form() 13225 EC_GROUP_get_point_conversion_form() 13226 These control ASN1 encoding details: 13227 - Curves (i.e., groups) are encoded explicitly unless asn1_flag 13228 has been set to OPENSSL_EC_NAMED_CURVE. 13229 - Points are encoded in uncompressed form by default; options for 13230 asn1_for are as for point2oct, namely 13231 POINT_CONVERSION_COMPRESSED 13232 POINT_CONVERSION_UNCOMPRESSED 13233 POINT_CONVERSION_HYBRID 13234 13235 Also add 'seed' and 'seed_len' members to EC_GROUP with access 13236 functions 13237 EC_GROUP_set_seed() 13238 EC_GROUP_get0_seed() 13239 EC_GROUP_get_seed_len() 13240 This is used only for ASN1 purposes (so far). 13241 13242 *Nils Larsch <nla@trustcenter.de>* 13243 13244 * Add 'field_type' member to EC_METHOD, which holds the NID 13245 of the appropriate field type OID. The new function 13246 EC_METHOD_get_field_type() returns this value. 13247 13248 *Nils Larsch <nla@trustcenter.de>* 13249 13250 * Add functions 13251 EC_POINT_point2bn() 13252 EC_POINT_bn2point() 13253 EC_POINT_point2hex() 13254 EC_POINT_hex2point() 13255 providing useful interfaces to EC_POINT_point2oct() and 13256 EC_POINT_oct2point(). 13257 13258 *Nils Larsch <nla@trustcenter.de>* 13259 13260 * Change internals of the EC library so that the functions 13261 EC_GROUP_set_generator() 13262 EC_GROUP_get_generator() 13263 EC_GROUP_get_order() 13264 EC_GROUP_get_cofactor() 13265 are implemented directly in crypto/ec/ec_lib.c and not dispatched 13266 to methods, which would lead to unnecessary code duplication when 13267 adding different types of curves. 13268 13269 *Nils Larsch <nla@trustcenter.de> with input by Bodo Moeller* 13270 13271 * Implement compute_wNAF (crypto/ec/ec_mult.c) without BIGNUM 13272 arithmetic, and such that modified wNAFs are generated 13273 (which avoid length expansion in many cases). 13274 13275 *Bodo Moeller* 13276 13277 * Add a function EC_GROUP_check_discriminant() (defined via 13278 EC_METHOD) that verifies that the curve discriminant is non-zero. 13279 13280 Add a function EC_GROUP_check() that makes some sanity tests 13281 on a EC_GROUP, its generator and order. This includes 13282 EC_GROUP_check_discriminant(). 13283 13284 *Nils Larsch <nla@trustcenter.de>* 13285 13286 * Add ECDSA in new directory crypto/ecdsa/. 13287 13288 Add applications 'openssl ecparam' and 'openssl ecdsa' 13289 (these are based on 'openssl dsaparam' and 'openssl dsa'). 13290 13291 ECDSA support is also included in various other files across the 13292 library. Most notably, 13293 - 'openssl req' now has a '-newkey ecdsa:file' option; 13294 - EVP_PKCS82PKEY (crypto/evp/evp_pkey.c) now can handle ECDSA; 13295 - X509_PUBKEY_get (crypto/asn1/x_pubkey.c) and 13296 d2i_PublicKey (crypto/asn1/d2i_pu.c) have been modified to make 13297 them suitable for ECDSA where domain parameters must be 13298 extracted before the specific public key; 13299 - ECDSA engine support has been added. 13300 13301 *Nils Larsch <nla@trustcenter.de>* 13302 13303 * Include some named elliptic curves, and add OIDs from X9.62, 13304 SECG, and WAP/WTLS. Each curve can be obtained from the new 13305 function 13306 EC_GROUP_new_by_curve_name(), 13307 and the list of available named curves can be obtained with 13308 EC_get_builtin_curves(). 13309 Also add a 'curve_name' member to EC_GROUP objects, which can be 13310 accessed via 13311 EC_GROUP_set_curve_name() 13312 EC_GROUP_get_curve_name() 13313 13314 *Nils Larsch <larsch@trustcenter.de, Bodo Moeller* 13315 13316 * Remove a few calls to bn_wexpand() in BN_sqr() (the one in there 13317 was actually never needed) and in BN_mul(). The removal in BN_mul() 13318 required a small change in bn_mul_part_recursive() and the addition 13319 of the functions bn_cmp_part_words(), bn_sub_part_words() and 13320 bn_add_part_words(), which do the same thing as bn_cmp_words(), 13321 bn_sub_words() and bn_add_words() except they take arrays with 13322 differing sizes. 13323 13324 *Richard Levitte* 13325 13326### Changes between 0.9.7l and 0.9.7m [23 Feb 2007] 13327 13328 * Cleanse PEM buffers before freeing them since they may contain 13329 sensitive data. 13330 13331 *Benjamin Bennett <ben@psc.edu>* 13332 13333 * Include "!eNULL" in SSL_DEFAULT_CIPHER_LIST to make sure that 13334 a ciphersuite string such as "DEFAULT:RSA" cannot enable 13335 authentication-only ciphersuites. 13336 13337 *Bodo Moeller* 13338 13339 * Since AES128 and AES256 share a single mask bit in the logic of 13340 ssl/ssl_ciph.c, the code for masking out disabled ciphers needs a 13341 kludge to work properly if AES128 is available and AES256 isn't. 13342 13343 *Victor Duchovni* 13344 13345 * Expand security boundary to match 1.1.1 module. 13346 13347 *Steve Henson* 13348 13349 * Remove redundant features: hash file source, editing of test vectors 13350 modify fipsld to use external fips_premain.c signature. 13351 13352 *Steve Henson* 13353 13354 * New perl script mkfipsscr.pl to create shell scripts or batch files to 13355 run algorithm test programs. 13356 13357 *Steve Henson* 13358 13359 * Make algorithm test programs more tolerant of whitespace. 13360 13361 *Steve Henson* 13362 13363 * Have SSL/TLS server implementation tolerate "mismatched" record 13364 protocol version while receiving ClientHello even if the 13365 ClientHello is fragmented. (The server can't insist on the 13366 particular protocol version it has chosen before the ServerHello 13367 message has informed the client about his choice.) 13368 13369 *Bodo Moeller* 13370 13371 * Load error codes if they are not already present instead of using a 13372 static variable. This allows them to be cleanly unloaded and reloaded. 13373 13374 *Steve Henson* 13375 13376### Changes between 0.9.7k and 0.9.7l [28 Sep 2006] 13377 13378 * Introduce limits to prevent malicious keys being able to 13379 cause a denial of service. ([CVE-2006-2940]) 13380 13381 *Steve Henson, Bodo Moeller* 13382 13383 * Fix ASN.1 parsing of certain invalid structures that can result 13384 in a denial of service. ([CVE-2006-2937]) [Steve Henson] 13385 13386 * Fix buffer overflow in SSL_get_shared_ciphers() function. 13387 ([CVE-2006-3738]) [Tavis Ormandy and Will Drewry, Google Security Team] 13388 13389 * Fix SSL client code which could crash if connecting to a 13390 malicious SSLv2 server. ([CVE-2006-4343]) 13391 13392 *Tavis Ormandy and Will Drewry, Google Security Team* 13393 13394 * Change ciphersuite string processing so that an explicit 13395 ciphersuite selects this one ciphersuite (so that "AES256-SHA" 13396 will no longer include "AES128-SHA"), and any other similar 13397 ciphersuite (same bitmap) from *other* protocol versions (so that 13398 "RC4-MD5" will still include both the SSL 2.0 ciphersuite and the 13399 SSL 3.0/TLS 1.0 ciphersuite). This is a backport combining 13400 changes from 0.9.8b and 0.9.8d. 13401 13402 *Bodo Moeller* 13403 13404### Changes between 0.9.7j and 0.9.7k [05 Sep 2006] 13405 13406 * Avoid PKCS #1 v1.5 signature attack discovered by Daniel Bleichenbacher 13407 ([CVE-2006-4339]) [Ben Laurie and Google Security Team] 13408 13409 * Change the Unix randomness entropy gathering to use poll() when 13410 possible instead of select(), since the latter has some 13411 undesirable limitations. 13412 13413 *Darryl Miles via Richard Levitte and Bodo Moeller* 13414 13415 * Disable rogue ciphersuites: 13416 13417 - SSLv2 0x08 0x00 0x80 ("RC4-64-MD5") 13418 - SSLv3/TLSv1 0x00 0x61 ("EXP1024-RC2-CBC-MD5") 13419 - SSLv3/TLSv1 0x00 0x60 ("EXP1024-RC4-MD5") 13420 13421 The latter two were purportedly from 13422 draft-ietf-tls-56-bit-ciphersuites-0[01].txt, but do not really 13423 appear there. 13424 13425 Also deactivate the remaining ciphersuites from 13426 draft-ietf-tls-56-bit-ciphersuites-01.txt. These are just as 13427 unofficial, and the ID has long expired. 13428 13429 *Bodo Moeller* 13430 13431 * Fix RSA blinding Heisenbug (problems sometimes occurred on 13432 dual-core machines) and other potential thread-safety issues. 13433 13434 *Bodo Moeller* 13435 13436### Changes between 0.9.7i and 0.9.7j [04 May 2006] 13437 13438 * Adapt fipsld and the build system to link against the validated FIPS 13439 module in FIPS mode. 13440 13441 *Steve Henson* 13442 13443 * Fixes for VC++ 2005 build under Windows. 13444 13445 *Steve Henson* 13446 13447 * Add new Windows build target VC-32-GMAKE for VC++. This uses GNU make 13448 from a Windows bash shell such as MSYS. It is autodetected from the 13449 "config" script when run from a VC++ environment. Modify standard VC++ 13450 build to use fipscanister.o from the GNU make build. 13451 13452 *Steve Henson* 13453 13454### Changes between 0.9.7h and 0.9.7i [14 Oct 2005] 13455 13456 * Wrapped the definition of EVP_MAX_MD_SIZE in a #ifdef OPENSSL_FIPS. 13457 The value now differs depending on if you build for FIPS or not. 13458 BEWARE! A program linked with a shared FIPSed libcrypto can't be 13459 safely run with a non-FIPSed libcrypto, as it may crash because of 13460 the difference induced by this change. 13461 13462 *Andy Polyakov* 13463 13464### Changes between 0.9.7g and 0.9.7h [11 Oct 2005] 13465 13466 * Remove the functionality of SSL_OP_MSIE_SSLV2_RSA_PADDING 13467 (part of SSL_OP_ALL). This option used to disable the 13468 countermeasure against man-in-the-middle protocol-version 13469 rollback in the SSL 2.0 server implementation, which is a bad 13470 idea. ([CVE-2005-2969]) 13471 13472 *Bodo Moeller; problem pointed out by Yutaka Oiwa (Research Center 13473 for Information Security, National Institute of Advanced Industrial 13474 Science and Technology [AIST, Japan)]* 13475 13476 * Minimal support for X9.31 signatures and PSS padding modes. This is 13477 mainly for FIPS compliance and not fully integrated at this stage. 13478 13479 *Steve Henson* 13480 13481 * For DSA signing, unless DSA_FLAG_NO_EXP_CONSTTIME is set, perform 13482 the exponentiation using a fixed-length exponent. (Otherwise, 13483 the information leaked through timing could expose the secret key 13484 after many signatures; cf. Bleichenbacher's attack on DSA with 13485 biased k.) 13486 13487 *Bodo Moeller* 13488 13489 * Make a new fixed-window mod_exp implementation the default for 13490 RSA, DSA, and DH private-key operations so that the sequence of 13491 squares and multiplies and the memory access pattern are 13492 independent of the particular secret key. This will mitigate 13493 cache-timing and potential related attacks. 13494 13495 BN_mod_exp_mont_consttime() is the new exponentiation implementation, 13496 and this is automatically used by BN_mod_exp_mont() if the new flag 13497 BN_FLG_EXP_CONSTTIME is set for the exponent. RSA, DSA, and DH 13498 will use this BN flag for private exponents unless the flag 13499 RSA_FLAG_NO_EXP_CONSTTIME, DSA_FLAG_NO_EXP_CONSTTIME, or 13500 DH_FLAG_NO_EXP_CONSTTIME, respectively, is set. 13501 13502 *Matthew D Wood (Intel Corp), with some changes by Bodo Moeller* 13503 13504 * Change the client implementation for SSLv23_method() and 13505 SSLv23_client_method() so that is uses the SSL 3.0/TLS 1.0 13506 Client Hello message format if the SSL_OP_NO_SSLv2 option is set. 13507 (Previously, the SSL 2.0 backwards compatible Client Hello 13508 message format would be used even with SSL_OP_NO_SSLv2.) 13509 13510 *Bodo Moeller* 13511 13512 * Add support for smime-type MIME parameter in S/MIME messages which some 13513 clients need. 13514 13515 *Steve Henson* 13516 13517 * New function BN_MONT_CTX_set_locked() to set montgomery parameters in 13518 a threadsafe manner. Modify rsa code to use new function and add calls 13519 to dsa and dh code (which had race conditions before). 13520 13521 *Steve Henson* 13522 13523 * Include the fixed error library code in the C error file definitions 13524 instead of fixing them up at runtime. This keeps the error code 13525 structures constant. 13526 13527 *Steve Henson* 13528 13529### Changes between 0.9.7f and 0.9.7g [11 Apr 2005] 13530 13531[NB: OpenSSL 0.9.7h and later 0.9.7 patch levels were released after 13532OpenSSL 0.9.8.] 13533 13534 * Fixes for newer kerberos headers. NB: the casts are needed because 13535 the 'length' field is signed on one version and unsigned on another 13536 with no (?) obvious way to tell the difference, without these VC++ 13537 complains. Also the "definition" of FAR (blank) is no longer included 13538 nor is the error ENOMEM. KRB5_PRIVATE has to be set to 1 to pick up 13539 some needed definitions. 13540 13541 *Steve Henson* 13542 13543 * Undo Cygwin change. 13544 13545 *Ulf Möller* 13546 13547 * Added support for proxy certificates according to RFC 3820. 13548 Because they may be a security thread to unaware applications, 13549 they must be explicitly allowed in run-time. See 13550 docs/HOWTO/proxy_certificates.txt for further information. 13551 13552 *Richard Levitte* 13553 13554### Changes between 0.9.7e and 0.9.7f [22 Mar 2005] 13555 13556 * Use (SSL_RANDOM_VALUE - 4) bytes of pseudo random data when generating 13557 server and client random values. Previously 13558 (SSL_RANDOM_VALUE - sizeof(time_t)) would be used which would result in 13559 less random data when sizeof(time_t) > 4 (some 64 bit platforms). 13560 13561 This change has negligible security impact because: 13562 13563 1. Server and client random values still have 24 bytes of pseudo random 13564 data. 13565 13566 2. Server and client random values are sent in the clear in the initial 13567 handshake. 13568 13569 3. The master secret is derived using the premaster secret (48 bytes in 13570 size for static RSA ciphersuites) as well as client server and random 13571 values. 13572 13573 The OpenSSL team would like to thank the UK NISCC for bringing this issue 13574 to our attention. 13575 13576 *Stephen Henson, reported by UK NISCC* 13577 13578 * Use Windows randomness collection on Cygwin. 13579 13580 *Ulf Möller* 13581 13582 * Fix hang in EGD/PRNGD query when communication socket is closed 13583 prematurely by EGD/PRNGD. 13584 13585 *Darren Tucker <dtucker@zip.com.au> via Lutz Jänicke, resolves #1014* 13586 13587 * Prompt for pass phrases when appropriate for PKCS12 input format. 13588 13589 *Steve Henson* 13590 13591 * Back-port of selected performance improvements from development 13592 branch, as well as improved support for PowerPC platforms. 13593 13594 *Andy Polyakov* 13595 13596 * Add lots of checks for memory allocation failure, error codes to indicate 13597 failure and freeing up memory if a failure occurs. 13598 13599 *Nauticus Networks SSL Team <openssl@nauticusnet.com>, Steve Henson* 13600 13601 * Add new -passin argument to dgst. 13602 13603 *Steve Henson* 13604 13605 * Perform some character comparisons of different types in X509_NAME_cmp: 13606 this is needed for some certificates that re-encode DNs into UTF8Strings 13607 (in violation of RFC3280) and can't or won't issue name rollover 13608 certificates. 13609 13610 *Steve Henson* 13611 13612 * Make an explicit check during certificate validation to see that 13613 the CA setting in each certificate on the chain is correct. As a 13614 side effect always do the following basic checks on extensions, 13615 not just when there's an associated purpose to the check: 13616 13617 - if there is an unhandled critical extension (unless the user 13618 has chosen to ignore this fault) 13619 - if the path length has been exceeded (if one is set at all) 13620 - that certain extensions fit the associated purpose (if one has 13621 been given) 13622 13623 *Richard Levitte* 13624 13625### Changes between 0.9.7d and 0.9.7e [25 Oct 2004] 13626 13627 * Avoid a race condition when CRLs are checked in a multi threaded 13628 environment. This would happen due to the reordering of the revoked 13629 entries during signature checking and serial number lookup. Now the 13630 encoding is cached and the serial number sort performed under a lock. 13631 Add new STACK function sk_is_sorted(). 13632 13633 *Steve Henson* 13634 13635 * Add Delta CRL to the extension code. 13636 13637 *Steve Henson* 13638 13639 * Various fixes to s3_pkt.c so alerts are sent properly. 13640 13641 *David Holmes <d.holmes@f5.com>* 13642 13643 * Reduce the chances of duplicate issuer name and serial numbers (in 13644 violation of RFC3280) using the OpenSSL certificate creation utilities. 13645 This is done by creating a random 64 bit value for the initial serial 13646 number when a serial number file is created or when a self signed 13647 certificate is created using 'openssl req -x509'. The initial serial 13648 number file is created using 'openssl x509 -next_serial' in CA.pl 13649 rather than being initialized to 1. 13650 13651 *Steve Henson* 13652 13653### Changes between 0.9.7c and 0.9.7d [17 Mar 2004] 13654 13655 * Fix null-pointer assignment in do_change_cipher_spec() revealed 13656 by using the Codenomicon TLS Test Tool ([CVE-2004-0079]) 13657 13658 *Joe Orton, Steve Henson* 13659 13660 * Fix flaw in SSL/TLS handshaking when using Kerberos ciphersuites 13661 ([CVE-2004-0112]) 13662 13663 *Joe Orton, Steve Henson* 13664 13665 * Make it possible to have multiple active certificates with the same 13666 subject in the CA index file. This is done only if the keyword 13667 'unique_subject' is set to 'no' in the main CA section (default 13668 if 'CA_default') of the configuration file. The value is saved 13669 with the database itself in a separate index attribute file, 13670 named like the index file with '.attr' appended to the name. 13671 13672 *Richard Levitte* 13673 13674 * X509 verify fixes. Disable broken certificate workarounds when 13675 X509_V_FLAGS_X509_STRICT is set. Check CRL issuer has cRLSign set if 13676 keyUsage extension present. Don't accept CRLs with unhandled critical 13677 extensions: since verify currently doesn't process CRL extensions this 13678 rejects a CRL with *any* critical extensions. Add new verify error codes 13679 for these cases. 13680 13681 *Steve Henson* 13682 13683 * When creating an OCSP nonce use an OCTET STRING inside the extnValue. 13684 A clarification of RFC2560 will require the use of OCTET STRINGs and 13685 some implementations cannot handle the current raw format. Since OpenSSL 13686 copies and compares OCSP nonces as opaque blobs without any attempt at 13687 parsing them this should not create any compatibility issues. 13688 13689 *Steve Henson* 13690 13691 * New md flag EVP_MD_CTX_FLAG_REUSE this allows md_data to be reused when 13692 calling EVP_MD_CTX_copy_ex() to avoid calling OPENSSL_malloc(). Without 13693 this HMAC (and other) operations are several times slower than OpenSSL 13694 < 0.9.7. 13695 13696 *Steve Henson* 13697 13698 * Print out GeneralizedTime and UTCTime in ASN1_STRING_print_ex(). 13699 13700 *Peter Sylvester <Peter.Sylvester@EdelWeb.fr>* 13701 13702 * Use the correct content when signing type "other". 13703 13704 *Steve Henson* 13705 13706### Changes between 0.9.7b and 0.9.7c [30 Sep 2003] 13707 13708 * Fix various bugs revealed by running the NISCC test suite: 13709 13710 Stop out of bounds reads in the ASN1 code when presented with 13711 invalid tags (CVE-2003-0543 and CVE-2003-0544). 13712 13713 Free up ASN1_TYPE correctly if ANY type is invalid ([CVE-2003-0545]). 13714 13715 If verify callback ignores invalid public key errors don't try to check 13716 certificate signature with the NULL public key. 13717 13718 *Steve Henson* 13719 13720 * New -ignore_err option in ocsp application to stop the server 13721 exiting on the first error in a request. 13722 13723 *Steve Henson* 13724 13725 * In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate 13726 if the server requested one: as stated in TLS 1.0 and SSL 3.0 13727 specifications. 13728 13729 *Steve Henson* 13730 13731 * In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional 13732 extra data after the compression methods not only for TLS 1.0 13733 but also for SSL 3.0 (as required by the specification). 13734 13735 *Bodo Moeller; problem pointed out by Matthias Loepfe* 13736 13737 * Change X509_certificate_type() to mark the key as exported/exportable 13738 when it's 512 *bits* long, not 512 bytes. 13739 13740 *Richard Levitte* 13741 13742 * Change AES_cbc_encrypt() so it outputs exact multiple of 13743 blocks during encryption. 13744 13745 *Richard Levitte* 13746 13747 * Various fixes to base64 BIO and non blocking I/O. On write 13748 flushes were not handled properly if the BIO retried. On read 13749 data was not being buffered properly and had various logic bugs. 13750 This also affects blocking I/O when the data being decoded is a 13751 certain size. 13752 13753 *Steve Henson* 13754 13755 * Various S/MIME bugfixes and compatibility changes: 13756 output correct application/pkcs7 MIME type if 13757 PKCS7_NOOLDMIMETYPE is set. Tolerate some broken signatures. 13758 Output CR+LF for EOL if PKCS7_CRLFEOL is set (this makes opening 13759 of files as .eml work). Correctly handle very long lines in MIME 13760 parser. 13761 13762 *Steve Henson* 13763 13764### Changes between 0.9.7a and 0.9.7b [10 Apr 2003] 13765 13766 * Countermeasure against the Klima-Pokorny-Rosa extension of 13767 Bleichbacher's attack on PKCS #1 v1.5 padding: treat 13768 a protocol version number mismatch like a decryption error 13769 in ssl3_get_client_key_exchange (ssl/s3_srvr.c). 13770 13771 *Bodo Moeller* 13772 13773 * Turn on RSA blinding by default in the default implementation 13774 to avoid a timing attack. Applications that don't want it can call 13775 RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING. 13776 They would be ill-advised to do so in most cases. 13777 13778 *Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller* 13779 13780 * Change RSA blinding code so that it works when the PRNG is not 13781 seeded (in this case, the secret RSA exponent is abused as 13782 an unpredictable seed -- if it is not unpredictable, there 13783 is no point in blinding anyway). Make RSA blinding thread-safe 13784 by remembering the creator's thread ID in rsa->blinding and 13785 having all other threads use local one-time blinding factors 13786 (this requires more computation than sharing rsa->blinding, but 13787 avoids excessive locking; and if an RSA object is not shared 13788 between threads, blinding will still be very fast). 13789 13790 *Bodo Moeller* 13791 13792 * Fixed a typo bug that would cause ENGINE_set_default() to set an 13793 ENGINE as defaults for all supported algorithms irrespective of 13794 the 'flags' parameter. 'flags' is now honoured, so applications 13795 should make sure they are passing it correctly. 13796 13797 *Geoff Thorpe* 13798 13799 * Target "mingw" now allows native Windows code to be generated in 13800 the Cygwin environment as well as with the MinGW compiler. 13801 13802 *Ulf Moeller* 13803 13804### Changes between 0.9.7 and 0.9.7a [19 Feb 2003] 13805 13806 * In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked 13807 via timing by performing a MAC computation even if incorrect 13808 block cipher padding has been found. This is a countermeasure 13809 against active attacks where the attacker has to distinguish 13810 between bad padding and a MAC verification error. ([CVE-2003-0078]) 13811 13812 *Bodo Moeller; problem pointed out by Brice Canvel (EPFL), 13813 Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and 13814 Martin Vuagnoux (EPFL, Ilion)* 13815 13816 * Make the no-err option work as intended. The intention with no-err 13817 is not to have the whole error stack handling routines removed from 13818 libcrypto, it's only intended to remove all the function name and 13819 reason texts, thereby removing some of the footprint that may not 13820 be interesting if those errors aren't displayed anyway. 13821 13822 NOTE: it's still possible for any application or module to have its 13823 own set of error texts inserted. The routines are there, just not 13824 used by default when no-err is given. 13825 13826 *Richard Levitte* 13827 13828 * Add support for FreeBSD on IA64. 13829 13830 *dirk.meyer@dinoex.sub.org via Richard Levitte, resolves #454* 13831 13832 * Adjust DES_cbc_cksum() so it returns the same value as the MIT 13833 Kerberos function mit_des_cbc_cksum(). Before this change, 13834 the value returned by DES_cbc_cksum() was like the one from 13835 mit_des_cbc_cksum(), except the bytes were swapped. 13836 13837 *Kevin Greaney <Kevin.Greaney@hp.com> and Richard Levitte* 13838 13839 * Allow an application to disable the automatic SSL chain building. 13840 Before this a rather primitive chain build was always performed in 13841 ssl3_output_cert_chain(): an application had no way to send the 13842 correct chain if the automatic operation produced an incorrect result. 13843 13844 Now the chain builder is disabled if either: 13845 13846 1. Extra certificates are added via SSL_CTX_add_extra_chain_cert(). 13847 13848 2. The mode flag SSL_MODE_NO_AUTO_CHAIN is set. 13849 13850 The reasoning behind this is that an application would not want the 13851 auto chain building to take place if extra chain certificates are 13852 present and it might also want a means of sending no additional 13853 certificates (for example the chain has two certificates and the 13854 root is omitted). 13855 13856 *Steve Henson* 13857 13858 * Add the possibility to build without the ENGINE framework. 13859 13860 *Steven Reddie <smr@essemer.com.au> via Richard Levitte* 13861 13862 * Under Win32 gmtime() can return NULL: check return value in 13863 OPENSSL_gmtime(). Add error code for case where gmtime() fails. 13864 13865 *Steve Henson* 13866 13867 * DSA routines: under certain error conditions uninitialized BN objects 13868 could be freed. Solution: make sure initialization is performed early 13869 enough. (Reported and fix supplied by Ivan D Nestlerode <nestler@MIT.EDU>, 13870 Nils Larsch <nla@trustcenter.de> via PR#459) 13871 13872 *Lutz Jaenicke* 13873 13874 * Another fix for SSLv2 session ID handling: the session ID was incorrectly 13875 checked on reconnect on the client side, therefore session resumption 13876 could still fail with a "ssl session id is different" error. This 13877 behaviour is masked when SSL_OP_ALL is used due to 13878 SSL_OP_MICROSOFT_SESS_ID_BUG being set. 13879 Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as 13880 followup to PR #377. 13881 13882 *Lutz Jaenicke* 13883 13884 * IA-32 assembler support enhancements: unified ELF targets, support 13885 for SCO/Caldera platforms, fix for Cygwin shared build. 13886 13887 *Andy Polyakov* 13888 13889 * Add support for FreeBSD on sparc64. As a consequence, support for 13890 FreeBSD on non-x86 processors is separate from x86 processors on 13891 the config script, much like the NetBSD support. 13892 13893 *Richard Levitte & Kris Kennaway <kris@obsecurity.org>* 13894 13895### Changes between 0.9.6h and 0.9.7 [31 Dec 2002] 13896 13897[NB: OpenSSL 0.9.6i and later 0.9.6 patch levels were released after 13898OpenSSL 0.9.7.] 13899 13900 * Fix session ID handling in SSLv2 client code: the SERVER FINISHED 13901 code (06) was taken as the first octet of the session ID and the last 13902 octet was ignored consequently. As a result SSLv2 client side session 13903 caching could not have worked due to the session ID mismatch between 13904 client and server. 13905 Behaviour observed by Crispin Flowerday <crispin@flowerday.cx> as 13906 PR #377. 13907 13908 *Lutz Jaenicke* 13909 13910 * Change the declaration of needed Kerberos libraries to use EX_LIBS 13911 instead of the special (and badly supported) LIBKRB5. LIBKRB5 is 13912 removed entirely. 13913 13914 *Richard Levitte* 13915 13916 * The hw_ncipher.c engine requires dynamic locks. Unfortunately, it 13917 seems that in spite of existing for more than a year, many application 13918 author have done nothing to provide the necessary callbacks, which 13919 means that this particular engine will not work properly anywhere. 13920 This is a very unfortunate situation which forces us, in the name 13921 of usability, to give the hw_ncipher.c a static lock, which is part 13922 of libcrypto. 13923 NOTE: This is for the 0.9.7 series ONLY. This hack will never 13924 appear in 0.9.8 or later. We EXPECT application authors to have 13925 dealt properly with this when 0.9.8 is released (unless we actually 13926 make such changes in the libcrypto locking code that changes will 13927 have to be made anyway). 13928 13929 *Richard Levitte* 13930 13931 * In asn1_d2i_read_bio() repeatedly call BIO_read() until all content 13932 octets have been read, EOF or an error occurs. Without this change 13933 some truncated ASN1 structures will not produce an error. 13934 13935 *Steve Henson* 13936 13937 * Disable Heimdal support, since it hasn't been fully implemented. 13938 Still give the possibility to force the use of Heimdal, but with 13939 warnings and a request that patches get sent to openssl-dev. 13940 13941 *Richard Levitte* 13942 13943 * Add the VC-CE target, introduce the WINCE sysname, and add 13944 INSTALL.WCE and appropriate conditionals to make it build. 13945 13946 *Steven Reddie <smr@essemer.com.au> via Richard Levitte* 13947 13948 * Change the DLL names for Cygwin to cygcrypto-x.y.z.dll and 13949 cygssl-x.y.z.dll, where x, y and z are the major, minor and 13950 edit numbers of the version. 13951 13952 *Corinna Vinschen <vinschen@redhat.com> and Richard Levitte* 13953 13954 * Introduce safe string copy and catenation functions 13955 (BUF_strlcpy() and BUF_strlcat()). 13956 13957 *Ben Laurie (CHATS) and Richard Levitte* 13958 13959 * Avoid using fixed-size buffers for one-line DNs. 13960 13961 *Ben Laurie (CHATS)* 13962 13963 * Add BUF_MEM_grow_clean() to avoid information leakage when 13964 resizing buffers containing secrets, and use where appropriate. 13965 13966 *Ben Laurie (CHATS)* 13967 13968 * Avoid using fixed size buffers for configuration file location. 13969 13970 *Ben Laurie (CHATS)* 13971 13972 * Avoid filename truncation for various CA files. 13973 13974 *Ben Laurie (CHATS)* 13975 13976 * Use sizeof in preference to magic numbers. 13977 13978 *Ben Laurie (CHATS)* 13979 13980 * Avoid filename truncation in cert requests. 13981 13982 *Ben Laurie (CHATS)* 13983 13984 * Add assertions to check for (supposedly impossible) buffer 13985 overflows. 13986 13987 *Ben Laurie (CHATS)* 13988 13989 * Don't cache truncated DNS entries in the local cache (this could 13990 potentially lead to a spoofing attack). 13991 13992 *Ben Laurie (CHATS)* 13993 13994 * Fix various buffers to be large enough for hex/decimal 13995 representations in a platform independent manner. 13996 13997 *Ben Laurie (CHATS)* 13998 13999 * Add CRYPTO_realloc_clean() to avoid information leakage when 14000 resizing buffers containing secrets, and use where appropriate. 14001 14002 *Ben Laurie (CHATS)* 14003 14004 * Add BIO_indent() to avoid much slightly worrying code to do 14005 indents. 14006 14007 *Ben Laurie (CHATS)* 14008 14009 * Convert sprintf()/BIO_puts() to BIO_printf(). 14010 14011 *Ben Laurie (CHATS)* 14012 14013 * buffer_gets() could terminate with the buffer only half 14014 full. Fixed. 14015 14016 *Ben Laurie (CHATS)* 14017 14018 * Add assertions to prevent user-supplied crypto functions from 14019 overflowing internal buffers by having large block sizes, etc. 14020 14021 *Ben Laurie (CHATS)* 14022 14023 * New OPENSSL_assert() macro (similar to assert(), but enabled 14024 unconditionally). 14025 14026 *Ben Laurie (CHATS)* 14027 14028 * Eliminate unused copy of key in RC4. 14029 14030 *Ben Laurie (CHATS)* 14031 14032 * Eliminate unused and incorrectly sized buffers for IV in pem.h. 14033 14034 *Ben Laurie (CHATS)* 14035 14036 * Fix off-by-one error in EGD path. 14037 14038 *Ben Laurie (CHATS)* 14039 14040 * If RANDFILE path is too long, ignore instead of truncating. 14041 14042 *Ben Laurie (CHATS)* 14043 14044 * Eliminate unused and incorrectly sized X.509 structure 14045 CBCParameter. 14046 14047 *Ben Laurie (CHATS)* 14048 14049 * Eliminate unused and dangerous function knumber(). 14050 14051 *Ben Laurie (CHATS)* 14052 14053 * Eliminate unused and dangerous structure, KSSL_ERR. 14054 14055 *Ben Laurie (CHATS)* 14056 14057 * Protect against overlong session ID context length in an encoded 14058 session object. Since these are local, this does not appear to be 14059 exploitable. 14060 14061 *Ben Laurie (CHATS)* 14062 14063 * Change from security patch (see 0.9.6e below) that did not affect 14064 the 0.9.6 release series: 14065 14066 Remote buffer overflow in SSL3 protocol - an attacker could 14067 supply an oversized master key in Kerberos-enabled versions. 14068 ([CVE-2002-0657]) 14069 14070 *Ben Laurie (CHATS)* 14071 14072 * Change the SSL kerb5 codes to match RFC 2712. 14073 14074 *Richard Levitte* 14075 14076 * Make -nameopt work fully for req and add -reqopt switch. 14077 14078 *Michael Bell <michael.bell@rz.hu-berlin.de>, Steve Henson* 14079 14080 * The "block size" for block ciphers in CFB and OFB mode should be 1. 14081 14082 *Steve Henson, reported by Yngve Nysaeter Pettersen <yngve@opera.com>* 14083 14084 * Make sure tests can be performed even if the corresponding algorithms 14085 have been removed entirely. This was also the last step to make 14086 OpenSSL compilable with DJGPP under all reasonable conditions. 14087 14088 *Richard Levitte, Doug Kaufman <dkaufman@rahul.net>* 14089 14090 * Add cipher selection rules COMPLEMENTOFALL and COMPLEMENTOFDEFAULT 14091 to allow version independent disabling of normally unselected ciphers, 14092 which may be activated as a side-effect of selecting a single cipher. 14093 14094 (E.g., cipher list string "RSA" enables ciphersuites that are left 14095 out of "ALL" because they do not provide symmetric encryption. 14096 "RSA:!COMPLEMEMENTOFALL" avoids these unsafe ciphersuites.) 14097 14098 *Lutz Jaenicke, Bodo Moeller* 14099 14100 * Add appropriate support for separate platform-dependent build 14101 directories. The recommended way to make a platform-dependent 14102 build directory is the following (tested on Linux), maybe with 14103 some local tweaks: 14104 14105 # Place yourself outside of the OpenSSL source tree. In 14106 # this example, the environment variable OPENSSL_SOURCE 14107 # is assumed to contain the absolute OpenSSL source directory. 14108 mkdir -p objtree/"`uname -s`-`uname -r`-`uname -m`" 14109 cd objtree/"`uname -s`-`uname -r`-`uname -m`" 14110 (cd $OPENSSL_SOURCE; find . -type f) | while read F; do 14111 mkdir -p `dirname $F` 14112 ln -s $OPENSSL_SOURCE/$F $F 14113 done 14114 14115 To be absolutely sure not to disturb the source tree, a "make clean" 14116 is a good thing. If it isn't successful, don't worry about it, 14117 it probably means the source directory is very clean. 14118 14119 *Richard Levitte* 14120 14121 * Make sure any ENGINE control commands make local copies of string 14122 pointers passed to them whenever necessary. Otherwise it is possible 14123 the caller may have overwritten (or deallocated) the original string 14124 data when a later ENGINE operation tries to use the stored values. 14125 14126 *Götz Babin-Ebell <babinebell@trustcenter.de>* 14127 14128 * Improve diagnostics in file reading and command-line digests. 14129 14130 *Ben Laurie aided and abetted by Solar Designer <solar@openwall.com>* 14131 14132 * Add AES modes CFB and OFB to the object database. Correct an 14133 error in AES-CFB decryption. 14134 14135 *Richard Levitte* 14136 14137 * Remove most calls to EVP_CIPHER_CTX_cleanup() in evp_enc.c, this 14138 allows existing EVP_CIPHER_CTX structures to be reused after 14139 calling `EVP_*Final()`. This behaviour is used by encryption 14140 BIOs and some applications. This has the side effect that 14141 applications must explicitly clean up cipher contexts with 14142 EVP_CIPHER_CTX_cleanup() or they will leak memory. 14143 14144 *Steve Henson* 14145 14146 * Check the values of dna and dnb in bn_mul_recursive before calling 14147 bn_mul_comba (a non zero value means the a or b arrays do not contain 14148 n2 elements) and fallback to bn_mul_normal if either is not zero. 14149 14150 *Steve Henson* 14151 14152 * Fix escaping of non-ASCII characters when using the -subj option 14153 of the "openssl req" command line tool. (Robert Joop <joop@fokus.gmd.de>) 14154 14155 *Lutz Jaenicke* 14156 14157 * Make object definitions compliant to LDAP (RFC2256): SN is the short 14158 form for "surname", serialNumber has no short form. 14159 Use "mail" as the short name for "rfc822Mailbox" according to RFC2798; 14160 therefore remove "mail" short name for "internet 7". 14161 The OID for unique identifiers in X509 certificates is 14162 x500UniqueIdentifier, not uniqueIdentifier. 14163 Some more OID additions. (Michael Bell <michael.bell@rz.hu-berlin.de>) 14164 14165 *Lutz Jaenicke* 14166 14167 * Add an "init" command to the ENGINE config module and auto initialize 14168 ENGINEs. Without any "init" command the ENGINE will be initialized 14169 after all ctrl commands have been executed on it. If init=1 the 14170 ENGINE is initialized at that point (ctrls before that point are run 14171 on the uninitialized ENGINE and after on the initialized one). If 14172 init=0 then the ENGINE will not be initialized at all. 14173 14174 *Steve Henson* 14175 14176 * Fix the 'app_verify_callback' interface so that the user-defined 14177 argument is actually passed to the callback: In the 14178 SSL_CTX_set_cert_verify_callback() prototype, the callback 14179 declaration has been changed from 14180 int (*cb)() 14181 into 14182 int (*cb)(X509_STORE_CTX *,void *); 14183 in ssl_verify_cert_chain (ssl/ssl_cert.c), the call 14184 i=s->ctx->app_verify_callback(&ctx) 14185 has been changed into 14186 i=s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg). 14187 14188 To update applications using SSL_CTX_set_cert_verify_callback(), 14189 a dummy argument can be added to their callback functions. 14190 14191 *D. K. Smetters <smetters@parc.xerox.com>* 14192 14193 * Added the '4758cca' ENGINE to support IBM 4758 cards. 14194 14195 *Maurice Gittens <maurice@gittens.nl>, touchups by Geoff Thorpe* 14196 14197 * Add and OPENSSL_LOAD_CONF define which will cause 14198 OpenSSL_add_all_algorithms() to load the openssl.cnf config file. 14199 This allows older applications to transparently support certain 14200 OpenSSL features: such as crypto acceleration and dynamic ENGINE loading. 14201 Two new functions OPENSSL_add_all_algorithms_noconf() which will never 14202 load the config file and OPENSSL_add_all_algorithms_conf() which will 14203 always load it have also been added. 14204 14205 *Steve Henson* 14206 14207 * Add the OFB, CFB and CTR (all with 128 bit feedback) to AES. 14208 Adjust NIDs and EVP layer. 14209 14210 *Stephen Sprunk <stephen@sprunk.org> and Richard Levitte* 14211 14212 * Config modules support in openssl utility. 14213 14214 Most commands now load modules from the config file, 14215 though in a few (such as version) this isn't done 14216 because it couldn't be used for anything. 14217 14218 In the case of ca and req the config file used is 14219 the same as the utility itself: that is the -config 14220 command line option can be used to specify an 14221 alternative file. 14222 14223 *Steve Henson* 14224 14225 * Move default behaviour from OPENSSL_config(). If appname is NULL 14226 use "openssl_conf" if filename is NULL use default openssl config file. 14227 14228 *Steve Henson* 14229 14230 * Add an argument to OPENSSL_config() to allow the use of an alternative 14231 config section name. Add a new flag to tolerate a missing config file 14232 and move code to CONF_modules_load_file(). 14233 14234 *Steve Henson* 14235 14236 * Support for crypto accelerator cards from Accelerated Encryption 14237 Processing, www.aep.ie. (Use engine 'aep') 14238 The support was copied from 0.9.6c [engine] and adapted/corrected 14239 to work with the new engine framework. 14240 14241 *AEP Inc. and Richard Levitte* 14242 14243 * Support for SureWare crypto accelerator cards from Baltimore 14244 Technologies. (Use engine 'sureware') 14245 The support was copied from 0.9.6c [engine] and adapted 14246 to work with the new engine framework. 14247 14248 *Richard Levitte* 14249 14250 * Have the CHIL engine fork-safe (as defined by nCipher) and actually 14251 make the newer ENGINE framework commands for the CHIL engine work. 14252 14253 *Toomas Kiisk <vix@cyber.ee> and Richard Levitte* 14254 14255 * Make it possible to produce shared libraries on ReliantUNIX. 14256 14257 *Robert Dahlem <Robert.Dahlem@ffm2.siemens.de> via Richard Levitte* 14258 14259 * Add the configuration target debug-linux-ppro. 14260 Make 'openssl rsa' use the general key loading routines 14261 implemented in `apps.c`, and make those routines able to 14262 handle the key format FORMAT_NETSCAPE and the variant 14263 FORMAT_IISSGC. 14264 14265 *Toomas Kiisk <vix@cyber.ee> via Richard Levitte* 14266 14267 * Fix a crashbug and a logic bug in hwcrhk_load_pubkey(). 14268 14269 *Toomas Kiisk <vix@cyber.ee> via Richard Levitte* 14270 14271 * Add -keyform to rsautl, and document -engine. 14272 14273 *Richard Levitte, inspired by Toomas Kiisk <vix@cyber.ee>* 14274 14275 * Change BIO_new_file (crypto/bio/bss_file.c) to use new 14276 BIO_R_NO_SUCH_FILE error code rather than the generic 14277 ERR_R_SYS_LIB error code if fopen() fails with ENOENT. 14278 14279 *Ben Laurie* 14280 14281 * Add new functions 14282 ERR_peek_last_error 14283 ERR_peek_last_error_line 14284 ERR_peek_last_error_line_data. 14285 These are similar to 14286 ERR_peek_error 14287 ERR_peek_error_line 14288 ERR_peek_error_line_data, 14289 but report on the latest error recorded rather than the first one 14290 still in the error queue. 14291 14292 *Ben Laurie, Bodo Moeller* 14293 14294 * default_algorithms option in ENGINE config module. This allows things 14295 like: 14296 default_algorithms = ALL 14297 default_algorithms = RSA, DSA, RAND, CIPHERS, DIGESTS 14298 14299 *Steve Henson* 14300 14301 * Preliminary ENGINE config module. 14302 14303 *Steve Henson* 14304 14305 * New experimental application configuration code. 14306 14307 *Steve Henson* 14308 14309 * Change the AES code to follow the same name structure as all other 14310 symmetric ciphers, and behave the same way. Move everything to 14311 the directory crypto/aes, thereby obsoleting crypto/rijndael. 14312 14313 *Stephen Sprunk <stephen@sprunk.org> and Richard Levitte* 14314 14315 * SECURITY: remove unsafe setjmp/signal interaction from ui_openssl.c. 14316 14317 *Ben Laurie and Theo de Raadt* 14318 14319 * Add option to output public keys in req command. 14320 14321 *Massimiliano Pala madwolf@openca.org* 14322 14323 * Use wNAFs in EC_POINTs_mul() for improved efficiency 14324 (up to about 10% better than before for P-192 and P-224). 14325 14326 *Bodo Moeller* 14327 14328 * New functions/macros 14329 14330 SSL_CTX_set_msg_callback(ctx, cb) 14331 SSL_CTX_set_msg_callback_arg(ctx, arg) 14332 SSL_set_msg_callback(ssl, cb) 14333 SSL_set_msg_callback_arg(ssl, arg) 14334 14335 to request calling a callback function 14336 14337 void cb(int write_p, int version, int content_type, 14338 const void *buf, size_t len, SSL *ssl, void *arg) 14339 14340 whenever a protocol message has been completely received 14341 (write_p == 0) or sent (write_p == 1). Here 'version' is the 14342 protocol version according to which the SSL library interprets 14343 the current protocol message (SSL2_VERSION, SSL3_VERSION, or 14344 TLS1_VERSION). 'content_type' is 0 in the case of SSL 2.0, or 14345 the content type as defined in the SSL 3.0/TLS 1.0 protocol 14346 specification (change_cipher_spec(20), alert(21), handshake(22)). 14347 'buf' and 'len' point to the actual message, 'ssl' to the 14348 SSL object, and 'arg' is the application-defined value set by 14349 SSL[_CTX]_set_msg_callback_arg(). 14350 14351 'openssl s_client' and 'openssl s_server' have new '-msg' options 14352 to enable a callback that displays all protocol messages. 14353 14354 *Bodo Moeller* 14355 14356 * Change the shared library support so shared libraries are built as 14357 soon as the corresponding static library is finished, and thereby get 14358 openssl and the test programs linked against the shared library. 14359 This still only happens when the keyword "shard" has been given to 14360 the configuration scripts. 14361 14362 NOTE: shared library support is still an experimental thing, and 14363 backward binary compatibility is still not guaranteed. 14364 14365 *"Maciej W. Rozycki" <macro@ds2.pg.gda.pl> and Richard Levitte* 14366 14367 * Add support for Subject Information Access extension. 14368 14369 *Peter Sylvester <Peter.Sylvester@EdelWeb.fr>* 14370 14371 * Make BUF_MEM_grow() behaviour more consistent: Initialise to zero 14372 additional bytes when new memory had to be allocated, not just 14373 when reusing an existing buffer. 14374 14375 *Bodo Moeller* 14376 14377 * New command line and configuration option 'utf8' for the req command. 14378 This allows field values to be specified as UTF8 strings. 14379 14380 *Steve Henson* 14381 14382 * Add -multi and -mr options to "openssl speed" - giving multiple parallel 14383 runs for the former and machine-readable output for the latter. 14384 14385 *Ben Laurie* 14386 14387 * Add '-noemailDN' option to 'openssl ca'. This prevents inclusion 14388 of the e-mail address in the DN (i.e., it will go into a certificate 14389 extension only). The new configuration file option 'email_in_dn = no' 14390 has the same effect. 14391 14392 *Massimiliano Pala madwolf@openca.org* 14393 14394 * Change all functions with names starting with `des_` to be starting 14395 with `DES_` instead. Add wrappers that are compatible with libdes, 14396 but are named `_ossl_old_des_*`. Finally, add macros that map the 14397 `des_*` symbols to the corresponding `_ossl_old_des_*` if libdes 14398 compatibility is desired. If OpenSSL 0.9.6c compatibility is 14399 desired, the `des_*` symbols will be mapped to `DES_*`, with one 14400 exception. 14401 14402 Since we provide two compatibility mappings, the user needs to 14403 define the macro OPENSSL_DES_LIBDES_COMPATIBILITY if libdes 14404 compatibility is desired. The default (i.e., when that macro 14405 isn't defined) is OpenSSL 0.9.6c compatibility. 14406 14407 There are also macros that enable and disable the support of old 14408 des functions altogether. Those are OPENSSL_ENABLE_OLD_DES_SUPPORT 14409 and OPENSSL_DISABLE_OLD_DES_SUPPORT. If none or both of those 14410 are defined, the default will apply: to support the old des routines. 14411 14412 In either case, one must include openssl/des.h to get the correct 14413 definitions. Do not try to just include openssl/des_old.h, that 14414 won't work. 14415 14416 NOTE: This is a major break of an old API into a new one. Software 14417 authors are encouraged to switch to the `DES_` style functions. Some 14418 time in the future, des_old.h and the libdes compatibility functions 14419 will be disable (i.e. OPENSSL_DISABLE_OLD_DES_SUPPORT will be the 14420 default), and then completely removed. 14421 14422 *Richard Levitte* 14423 14424 * Test for certificates which contain unsupported critical extensions. 14425 If such a certificate is found during a verify operation it is 14426 rejected by default: this behaviour can be overridden by either 14427 handling the new error X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION or 14428 by setting the verify flag X509_V_FLAG_IGNORE_CRITICAL. A new function 14429 X509_supported_extension() has also been added which returns 1 if a 14430 particular extension is supported. 14431 14432 *Steve Henson* 14433 14434 * Modify the behaviour of EVP cipher functions in similar way to digests 14435 to retain compatibility with existing code. 14436 14437 *Steve Henson* 14438 14439 * Modify the behaviour of EVP_DigestInit() and EVP_DigestFinal() to retain 14440 compatibility with existing code. In particular the 'ctx' parameter does 14441 not have to be to be initialized before the call to EVP_DigestInit() and 14442 it is tidied up after a call to EVP_DigestFinal(). New function 14443 EVP_DigestFinal_ex() which does not tidy up the ctx. Similarly function 14444 EVP_MD_CTX_copy() changed to not require the destination to be 14445 initialized valid and new function EVP_MD_CTX_copy_ex() added which 14446 requires the destination to be valid. 14447 14448 Modify all the OpenSSL digest calls to use EVP_DigestInit_ex(), 14449 EVP_DigestFinal_ex() and EVP_MD_CTX_copy_ex(). 14450 14451 *Steve Henson* 14452 14453 * Change ssl3_get_message (ssl/s3_both.c) and the functions using it 14454 so that complete 'Handshake' protocol structures are kept in memory 14455 instead of overwriting 'msg_type' and 'length' with 'body' data. 14456 14457 *Bodo Moeller* 14458 14459 * Add an implementation of SSL_add_dir_cert_subjects_to_stack for Win32. 14460 14461 *Massimo Santin via Richard Levitte* 14462 14463 * Major restructuring to the underlying ENGINE code. This includes 14464 reduction of linker bloat, separation of pure "ENGINE" manipulation 14465 (initialisation, etc) from functionality dealing with implementations 14466 of specific crypto interfaces. This change also introduces integrated 14467 support for symmetric ciphers and digest implementations - so ENGINEs 14468 can now accelerate these by providing EVP_CIPHER and EVP_MD 14469 implementations of their own. This is detailed in 14470 [crypto/engine/README.md](crypto/engine/README.md) 14471 as it couldn't be adequately described here. However, there are a few 14472 API changes worth noting - some RSA, DSA, DH, and RAND functions that 14473 were changed in the original introduction of ENGINE code have now 14474 reverted back - the hooking from this code to ENGINE is now a good 14475 deal more passive and at run-time, operations deal directly with 14476 RSA_METHODs, DSA_METHODs (etc) as they did before, rather than 14477 dereferencing through an ENGINE pointer any more. Also, the ENGINE 14478 functions dealing with `BN_MOD_EXP[_CRT]` handlers have been removed - 14479 they were not being used by the framework as there is no concept of a 14480 BIGNUM_METHOD and they could not be generalised to the new 14481 'ENGINE_TABLE' mechanism that underlies the new code. Similarly, 14482 ENGINE_cpy() has been removed as it cannot be consistently defined in 14483 the new code. 14484 14485 *Geoff Thorpe* 14486 14487 * Change ASN1_GENERALIZEDTIME_check() to allow fractional seconds. 14488 14489 *Steve Henson* 14490 14491 * Change mkdef.pl to sort symbols that get the same entry number, 14492 and make sure the automatically generated functions `ERR_load_*` 14493 become part of libeay.num as well. 14494 14495 *Richard Levitte* 14496 14497 * New function SSL_renegotiate_pending(). This returns true once 14498 renegotiation has been requested (either SSL_renegotiate() call 14499 or HelloRequest/ClientHello received from the peer) and becomes 14500 false once a handshake has been completed. 14501 (For servers, SSL_renegotiate() followed by SSL_do_handshake() 14502 sends a HelloRequest, but does not ensure that a handshake takes 14503 place. SSL_renegotiate_pending() is useful for checking if the 14504 client has followed the request.) 14505 14506 *Bodo Moeller* 14507 14508 * New SSL option SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION. 14509 By default, clients may request session resumption even during 14510 renegotiation (if session ID contexts permit); with this option, 14511 session resumption is possible only in the first handshake. 14512 14513 SSL_OP_ALL is now 0x00000FFFL instead of 0x000FFFFFL. This makes 14514 more bits available for options that should not be part of 14515 SSL_OP_ALL (such as SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION). 14516 14517 *Bodo Moeller* 14518 14519 * Add some demos for certificate and certificate request creation. 14520 14521 *Steve Henson* 14522 14523 * Make maximum certificate chain size accepted from the peer application 14524 settable (`SSL*_get/set_max_cert_list()`), as proposed by 14525 "Douglas E. Engert" <deengert@anl.gov>. 14526 14527 *Lutz Jaenicke* 14528 14529 * Add support for shared libraries for Unixware-7 14530 (Boyd Lynn Gerber <gerberb@zenez.com>). 14531 14532 *Lutz Jaenicke* 14533 14534 * Add a "destroy" handler to ENGINEs that allows structural cleanup to 14535 be done prior to destruction. Use this to unload error strings from 14536 ENGINEs that load their own error strings. NB: This adds two new API 14537 functions to "get" and "set" this destroy handler in an ENGINE. 14538 14539 *Geoff Thorpe* 14540 14541 * Alter all existing ENGINE implementations (except "openssl" and 14542 "openbsd") to dynamically instantiate their own error strings. This 14543 makes them more flexible to be built both as statically-linked ENGINEs 14544 and self-contained shared-libraries loadable via the "dynamic" ENGINE. 14545 Also, add stub code to each that makes building them as self-contained 14546 shared-libraries easier (see [README-Engine.md](README-Engine.md)). 14547 14548 *Geoff Thorpe* 14549 14550 * Add a "dynamic" ENGINE that provides a mechanism for binding ENGINE 14551 implementations into applications that are completely implemented in 14552 self-contained shared-libraries. The "dynamic" ENGINE exposes control 14553 commands that can be used to configure what shared-library to load and 14554 to control aspects of the way it is handled. Also, made an update to 14555 the [README-Engine.md](README-Engine.md) file 14556 that brings its information up-to-date and 14557 provides some information and instructions on the "dynamic" ENGINE 14558 (ie. how to use it, how to build "dynamic"-loadable ENGINEs, etc). 14559 14560 *Geoff Thorpe* 14561 14562 * Make it possible to unload ranges of ERR strings with a new 14563 "ERR_unload_strings" function. 14564 14565 *Geoff Thorpe* 14566 14567 * Add a copy() function to EVP_MD. 14568 14569 *Ben Laurie* 14570 14571 * Make EVP_MD routines take a context pointer instead of just the 14572 md_data void pointer. 14573 14574 *Ben Laurie* 14575 14576 * Add flags to EVP_MD and EVP_MD_CTX. EVP_MD_FLAG_ONESHOT indicates 14577 that the digest can only process a single chunk of data 14578 (typically because it is provided by a piece of 14579 hardware). EVP_MD_CTX_FLAG_ONESHOT indicates that the application 14580 is only going to provide a single chunk of data, and hence the 14581 framework needn't accumulate the data for oneshot drivers. 14582 14583 *Ben Laurie* 14584 14585 * As with "ERR", make it possible to replace the underlying "ex_data" 14586 functions. This change also alters the storage and management of global 14587 ex_data state - it's now all inside ex_data.c and all "class" code (eg. 14588 RSA, BIO, SSL_CTX, etc) no longer stores its own STACKS and per-class 14589 index counters. The API functions that use this state have been changed 14590 to take a "class_index" rather than pointers to the class's local STACK 14591 and counter, and there is now an API function to dynamically create new 14592 classes. This centralisation allows us to (a) plug a lot of the 14593 thread-safety problems that existed, and (b) makes it possible to clean 14594 up all allocated state using "CRYPTO_cleanup_all_ex_data()". W.r.t. (b) 14595 such data would previously have always leaked in application code and 14596 workarounds were in place to make the memory debugging turn a blind eye 14597 to it. Application code that doesn't use this new function will still 14598 leak as before, but their memory debugging output will announce it now 14599 rather than letting it slide. 14600 14601 Besides the addition of CRYPTO_cleanup_all_ex_data(), another API change 14602 induced by the "ex_data" overhaul is that X509_STORE_CTX_init() now 14603 has a return value to indicate success or failure. 14604 14605 *Geoff Thorpe* 14606 14607 * Make it possible to replace the underlying "ERR" functions such that the 14608 global state (2 LHASH tables and 2 locks) is only used by the "default" 14609 implementation. This change also adds two functions to "get" and "set" 14610 the implementation prior to it being automatically set the first time 14611 any other ERR function takes place. Ie. an application can call "get", 14612 pass the return value to a module it has just loaded, and that module 14613 can call its own "set" function using that value. This means the 14614 module's "ERR" operations will use (and modify) the error state in the 14615 application and not in its own statically linked copy of OpenSSL code. 14616 14617 *Geoff Thorpe* 14618 14619 * Give DH, DSA, and RSA types their own `*_up_ref()` function to increment 14620 reference counts. This performs normal REF_PRINT/REF_CHECK macros on 14621 the operation, and provides a more encapsulated way for external code 14622 (crypto/evp/ and ssl/) to do this. Also changed the evp and ssl code 14623 to use these functions rather than manually incrementing the counts. 14624 14625 Also rename "DSO_up()" function to more descriptive "DSO_up_ref()". 14626 14627 *Geoff Thorpe* 14628 14629 * Add EVP test program. 14630 14631 *Ben Laurie* 14632 14633 * Add symmetric cipher support to ENGINE. Expect the API to change! 14634 14635 *Ben Laurie* 14636 14637 * New CRL functions: X509_CRL_set_version(), X509_CRL_set_issuer_name() 14638 X509_CRL_set_lastUpdate(), X509_CRL_set_nextUpdate(), X509_CRL_sort(), 14639 X509_REVOKED_set_serialNumber(), and X509_REVOKED_set_revocationDate(). 14640 These allow a CRL to be built without having to access X509_CRL fields 14641 directly. Modify 'ca' application to use new functions. 14642 14643 *Steve Henson* 14644 14645 * Move SSL_OP_TLS_ROLLBACK_BUG out of the SSL_OP_ALL list of recommended 14646 bug workarounds. Rollback attack detection is a security feature. 14647 The problem will only arise on OpenSSL servers when TLSv1 is not 14648 available (sslv3_server_method() or SSL_OP_NO_TLSv1). 14649 Software authors not wanting to support TLSv1 will have special reasons 14650 for their choice and can explicitly enable this option. 14651 14652 *Bodo Moeller, Lutz Jaenicke* 14653 14654 * Rationalise EVP so it can be extended: don't include a union of 14655 cipher/digest structures, add init/cleanup functions for EVP_MD_CTX 14656 (similar to those existing for EVP_CIPHER_CTX). 14657 Usage example: 14658 14659 EVP_MD_CTX md; 14660 14661 EVP_MD_CTX_init(&md); /* new function call */ 14662 EVP_DigestInit(&md, EVP_sha1()); 14663 EVP_DigestUpdate(&md, in, len); 14664 EVP_DigestFinal(&md, out, NULL); 14665 EVP_MD_CTX_cleanup(&md); /* new function call */ 14666 14667 *Ben Laurie* 14668 14669 * Make DES key schedule conform to the usual scheme, as well as 14670 correcting its structure. This means that calls to DES functions 14671 now have to pass a pointer to a des_key_schedule instead of a 14672 plain des_key_schedule (which was actually always a pointer 14673 anyway): E.g., 14674 14675 des_key_schedule ks; 14676 14677 des_set_key_checked(..., &ks); 14678 des_ncbc_encrypt(..., &ks, ...); 14679 14680 (Note that a later change renames 'des_...' into 'DES_...'.) 14681 14682 *Ben Laurie* 14683 14684 * Initial reduction of linker bloat: the use of some functions, such as 14685 PEM causes large amounts of unused functions to be linked in due to 14686 poor organisation. For example pem_all.c contains every PEM function 14687 which has a knock on effect of linking in large amounts of (unused) 14688 ASN1 code. Grouping together similar functions and splitting unrelated 14689 functions prevents this. 14690 14691 *Steve Henson* 14692 14693 * Cleanup of EVP macros. 14694 14695 *Ben Laurie* 14696 14697 * Change historical references to `{NID,SN,LN}_des_ede` and ede3 to add the 14698 correct `_ecb suffix`. 14699 14700 *Ben Laurie* 14701 14702 * Add initial OCSP responder support to ocsp application. The 14703 revocation information is handled using the text based index 14704 use by the ca application. The responder can either handle 14705 requests generated internally, supplied in files (for example 14706 via a CGI script) or using an internal minimal server. 14707 14708 *Steve Henson* 14709 14710 * Add configuration choices to get zlib compression for TLS. 14711 14712 *Richard Levitte* 14713 14714 * Changes to Kerberos SSL for RFC 2712 compliance: 14715 1. Implemented real KerberosWrapper, instead of just using 14716 KRB5 AP_REQ message. [Thanks to Simon Wilkinson <sxw@sxw.org.uk>] 14717 2. Implemented optional authenticator field of KerberosWrapper. 14718 14719 Added openssl-style ASN.1 macros for Kerberos ticket, ap_req, 14720 and authenticator structs; see crypto/krb5/. 14721 14722 Generalized Kerberos calls to support multiple Kerberos libraries. 14723 *Vern Staats <staatsvr@asc.hpc.mil>, Jeffrey Altman <jaltman@columbia.edu> 14724 via Richard Levitte* 14725 14726 * Cause 'openssl speed' to use fully hard-coded DSA keys as it 14727 already does with RSA. testdsa.h now has 'priv_key/pub_key' 14728 values for each of the key sizes rather than having just 14729 parameters (and 'speed' generating keys each time). 14730 14731 *Geoff Thorpe* 14732 14733 * Speed up EVP routines. 14734 Before: 14735crypt 14736pe 8 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 14737s-cbc 4408.85k 5560.51k 5778.46k 5862.20k 5825.16k 14738s-cbc 4389.55k 5571.17k 5792.23k 5846.91k 5832.11k 14739s-cbc 4394.32k 5575.92k 5807.44k 5848.37k 5841.30k 14740crypt 14741s-cbc 3482.66k 5069.49k 5496.39k 5614.16k 5639.28k 14742s-cbc 3480.74k 5068.76k 5510.34k 5609.87k 5635.52k 14743s-cbc 3483.72k 5067.62k 5504.60k 5708.01k 5724.80k 14744 After: 14745crypt 14746s-cbc 4660.16k 5650.19k 5807.19k 5827.13k 5783.32k 14747crypt 14748s-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k 14749 14750 *Ben Laurie* 14751 14752 * Added the OS2-EMX target. 14753 14754 *"Brian Havard" <brianh@kheldar.apana.org.au> and Richard Levitte* 14755 14756 * Rewrite commands to use `NCONF` routines instead of the old `CONF`. 14757 New functions to support `NCONF` routines in extension code. 14758 New function `CONF_set_nconf()` 14759 to allow functions which take an `NCONF` to also handle the old `LHASH` 14760 structure: this means that the old `CONF` compatible routines can be 14761 retained (in particular w.rt. extensions) without having to duplicate the 14762 code. New function `X509V3_add_ext_nconf_sk()` to add extensions to a stack. 14763 14764 *Steve Henson* 14765 14766 * Enhance the general user interface with mechanisms for inner control 14767 and with possibilities to have yes/no kind of prompts. 14768 14769 *Richard Levitte* 14770 14771 * Change all calls to low-level digest routines in the library and 14772 applications to use EVP. Add missing calls to HMAC_cleanup() and 14773 don't assume HMAC_CTX can be copied using memcpy(). 14774 14775 *Verdon Walker <VWalker@novell.com>, Steve Henson* 14776 14777 * Add the possibility to control engines through control names but with 14778 arbitrary arguments instead of just a string. 14779 Change the key loaders to take a UI_METHOD instead of a callback 14780 function pointer. NOTE: this breaks binary compatibility with earlier 14781 versions of OpenSSL [engine]. 14782 Adapt the nCipher code for these new conditions and add a card insertion 14783 callback. 14784 14785 *Richard Levitte* 14786 14787 * Enhance the general user interface with mechanisms to better support 14788 dialog box interfaces, application-defined prompts, the possibility 14789 to use defaults (for example default passwords from somewhere else) 14790 and interrupts/cancellations. 14791 14792 *Richard Levitte* 14793 14794 * Tidy up PKCS#12 attribute handling. Add support for the CSP name 14795 attribute in PKCS#12 files, add new -CSP option to pkcs12 utility. 14796 14797 *Steve Henson* 14798 14799 * Fix a memory leak in 'sk_dup()' in the case reallocation fails. (Also 14800 tidy up some unnecessarily weird code in 'sk_new()'). 14801 14802 *Geoff, reported by Diego Tartara <dtartara@novamens.com>* 14803 14804 * Change the key loading routines for ENGINEs to use the same kind 14805 callback (pem_password_cb) as all other routines that need this 14806 kind of callback. 14807 14808 *Richard Levitte* 14809 14810 * Increase ENTROPY_NEEDED to 32 bytes, as Rijndael can operate with 14811 256 bit (=32 byte) keys. Of course seeding with more entropy bytes 14812 than this minimum value is recommended. 14813 14814 *Lutz Jaenicke* 14815 14816 * New random seeder for OpenVMS, using the system process statistics 14817 that are easily reachable. 14818 14819 *Richard Levitte* 14820 14821 * Windows apparently can't transparently handle global 14822 variables defined in DLLs. Initialisations such as: 14823 14824 const ASN1_ITEM *it = &ASN1_INTEGER_it; 14825 14826 won't compile. This is used by the any applications that need to 14827 declare their own ASN1 modules. This was fixed by adding the option 14828 EXPORT_VAR_AS_FN to all Win32 platforms, although this isn't strictly 14829 needed for static libraries under Win32. 14830 14831 *Steve Henson* 14832 14833 * New functions X509_PURPOSE_set() and X509_TRUST_set() to handle 14834 setting of purpose and trust fields. New X509_STORE trust and 14835 purpose functions and tidy up setting in other SSL functions. 14836 14837 *Steve Henson* 14838 14839 * Add copies of X509_STORE_CTX fields and callbacks to X509_STORE 14840 structure. These are inherited by X509_STORE_CTX when it is 14841 initialised. This allows various defaults to be set in the 14842 X509_STORE structure (such as flags for CRL checking and custom 14843 purpose or trust settings) for functions which only use X509_STORE_CTX 14844 internally such as S/MIME. 14845 14846 Modify X509_STORE_CTX_purpose_inherit() so it only sets purposes and 14847 trust settings if they are not set in X509_STORE. This allows X509_STORE 14848 purposes and trust (in S/MIME for example) to override any set by default. 14849 14850 Add command line options for CRL checking to smime, s_client and s_server 14851 applications. 14852 14853 *Steve Henson* 14854 14855 * Initial CRL based revocation checking. If the CRL checking flag(s) 14856 are set then the CRL is looked up in the X509_STORE structure and 14857 its validity and signature checked, then if the certificate is found 14858 in the CRL the verify fails with a revoked error. 14859 14860 Various new CRL related callbacks added to X509_STORE_CTX structure. 14861 14862 Command line options added to 'verify' application to support this. 14863 14864 This needs some additional work, such as being able to handle multiple 14865 CRLs with different times, extension based lookup (rather than just 14866 by subject name) and ultimately more complete V2 CRL extension 14867 handling. 14868 14869 *Steve Henson* 14870 14871 * Add a general user interface API (crypto/ui/). This is designed 14872 to replace things like des_read_password and friends (backward 14873 compatibility functions using this new API are provided). 14874 The purpose is to remove prompting functions from the DES code 14875 section as well as provide for prompting through dialog boxes in 14876 a window system and the like. 14877 14878 *Richard Levitte* 14879 14880 * Add "ex_data" support to ENGINE so implementations can add state at a 14881 per-structure level rather than having to store it globally. 14882 14883 *Geoff* 14884 14885 * Make it possible for ENGINE structures to be copied when retrieved by 14886 ENGINE_by_id() if the ENGINE specifies a new flag: ENGINE_FLAGS_BY_ID_COPY. 14887 This causes the "original" ENGINE structure to act like a template, 14888 analogous to the RSA vs. RSA_METHOD type of separation. Because of this 14889 operational state can be localised to each ENGINE structure, despite the 14890 fact they all share the same "methods". New ENGINE structures returned in 14891 this case have no functional references and the return value is the single 14892 structural reference. This matches the single structural reference returned 14893 by ENGINE_by_id() normally, when it is incremented on the pre-existing 14894 ENGINE structure. 14895 14896 *Geoff* 14897 14898 * Fix ASN1 decoder when decoding type ANY and V_ASN1_OTHER: since this 14899 needs to match any other type at all we need to manually clear the 14900 tag cache. 14901 14902 *Steve Henson* 14903 14904 * Changes to the "openssl engine" utility to include; 14905 - verbosity levels ('-v', '-vv', and '-vvv') that provide information 14906 about an ENGINE's available control commands. 14907 - executing control commands from command line arguments using the 14908 '-pre' and '-post' switches. '-post' is only used if '-t' is 14909 specified and the ENGINE is successfully initialised. The syntax for 14910 the individual commands are colon-separated, for example; 14911 openssl engine chil -pre FORK_CHECK:0 -pre SO_PATH:/lib/test.so 14912 14913 *Geoff* 14914 14915 * New dynamic control command support for ENGINEs. ENGINEs can now 14916 declare their own commands (numbers), names (strings), descriptions, 14917 and input types for run-time discovery by calling applications. A 14918 subset of these commands are implicitly classed as "executable" 14919 depending on their input type, and only these can be invoked through 14920 the new string-based API function ENGINE_ctrl_cmd_string(). (Eg. this 14921 can be based on user input, config files, etc). The distinction is 14922 that "executable" commands cannot return anything other than a boolean 14923 result and can only support numeric or string input, whereas some 14924 discoverable commands may only be for direct use through 14925 ENGINE_ctrl(), eg. supporting the exchange of binary data, function 14926 pointers, or other custom uses. The "executable" commands are to 14927 support parameterisations of ENGINE behaviour that can be 14928 unambiguously defined by ENGINEs and used consistently across any 14929 OpenSSL-based application. Commands have been added to all the 14930 existing hardware-supporting ENGINEs, noticeably "SO_PATH" to allow 14931 control over shared-library paths without source code alterations. 14932 14933 *Geoff* 14934 14935 * Changed all ENGINE implementations to dynamically allocate their 14936 ENGINEs rather than declaring them statically. Apart from this being 14937 necessary with the removal of the ENGINE_FLAGS_MALLOCED distinction, 14938 this also allows the implementations to compile without using the 14939 internal engine_int.h header. 14940 14941 *Geoff* 14942 14943 * Minor adjustment to "rand" code. RAND_get_rand_method() now returns a 14944 'const' value. Any code that should be able to modify a RAND_METHOD 14945 should already have non-const pointers to it (ie. they should only 14946 modify their own ones). 14947 14948 *Geoff* 14949 14950 * Made a variety of little tweaks to the ENGINE code. 14951 - "atalla" and "ubsec" string definitions were moved from header files 14952 to C code. "nuron" string definitions were placed in variables 14953 rather than hard-coded - allowing parameterisation of these values 14954 later on via ctrl() commands. 14955 - Removed unused "#if 0"'d code. 14956 - Fixed engine list iteration code so it uses ENGINE_free() to release 14957 structural references. 14958 - Constified the RAND_METHOD element of ENGINE structures. 14959 - Constified various get/set functions as appropriate and added 14960 missing functions (including a catch-all ENGINE_cpy that duplicates 14961 all ENGINE values onto a new ENGINE except reference counts/state). 14962 - Removed NULL parameter checks in get/set functions. Setting a method 14963 or function to NULL is a way of cancelling out a previously set 14964 value. Passing a NULL ENGINE parameter is just plain stupid anyway 14965 and doesn't justify the extra error symbols and code. 14966 - Deprecate the ENGINE_FLAGS_MALLOCED define and move the area for 14967 flags from engine_int.h to engine.h. 14968 - Changed prototypes for ENGINE handler functions (init(), finish(), 14969 ctrl(), key-load functions, etc) to take an (ENGINE*) parameter. 14970 14971 *Geoff* 14972 14973 * Implement binary inversion algorithm for BN_mod_inverse in addition 14974 to the algorithm using long division. The binary algorithm can be 14975 used only if the modulus is odd. On 32-bit systems, it is faster 14976 only for relatively small moduli (roughly 20-30% for 128-bit moduli, 14977 roughly 5-15% for 256-bit moduli), so we use it only for moduli 14978 up to 450 bits. In 64-bit environments, the binary algorithm 14979 appears to be advantageous for much longer moduli; here we use it 14980 for moduli up to 2048 bits. 14981 14982 *Bodo Moeller* 14983 14984 * Rewrite CHOICE field setting in ASN1_item_ex_d2i(). The old code 14985 could not support the combine flag in choice fields. 14986 14987 *Steve Henson* 14988 14989 * Add a 'copy_extensions' option to the 'ca' utility. This copies 14990 extensions from a certificate request to the certificate. 14991 14992 *Steve Henson* 14993 14994 * Allow multiple 'certopt' and 'nameopt' options to be separated 14995 by commas. Add 'namopt' and 'certopt' options to the 'ca' config 14996 file: this allows the display of the certificate about to be 14997 signed to be customised, to allow certain fields to be included 14998 or excluded and extension details. The old system didn't display 14999 multicharacter strings properly, omitted fields not in the policy 15000 and couldn't display additional details such as extensions. 15001 15002 *Steve Henson* 15003 15004 * Function EC_POINTs_mul for multiple scalar multiplication 15005 of an arbitrary number of elliptic curve points 15006 \sum scalars[i]*points[i], 15007 optionally including the generator defined for the EC_GROUP: 15008 scalar*generator + \sum scalars[i]*points[i]. 15009 15010 EC_POINT_mul is a simple wrapper function for the typical case 15011 that the point list has just one item (besides the optional 15012 generator). 15013 15014 *Bodo Moeller* 15015 15016 * First EC_METHODs for curves over GF(p): 15017 15018 EC_GFp_simple_method() uses the basic BN_mod_mul and BN_mod_sqr 15019 operations and provides various method functions that can also 15020 operate with faster implementations of modular arithmetic. 15021 15022 EC_GFp_mont_method() reuses most functions that are part of 15023 EC_GFp_simple_method, but uses Montgomery arithmetic. 15024 15025 *Bodo Moeller; point addition and point doubling 15026 implementation directly derived from source code provided by 15027 Lenka Fibikova <fibikova@exp-math.uni-essen.de>* 15028 15029 * Framework for elliptic curves (crypto/ec/ec.h, crypto/ec/ec_lcl.h, 15030 crypto/ec/ec_lib.c): 15031 15032 Curves are EC_GROUP objects (with an optional group generator) 15033 based on EC_METHODs that are built into the library. 15034 15035 Points are EC_POINT objects based on EC_GROUP objects. 15036 15037 Most of the framework would be able to handle curves over arbitrary 15038 finite fields, but as there are no obvious types for fields other 15039 than GF(p), some functions are limited to that for now. 15040 15041 *Bodo Moeller* 15042 15043 * Add the -HTTP option to s_server. It is similar to -WWW, but requires 15044 that the file contains a complete HTTP response. 15045 15046 *Richard Levitte* 15047 15048 * Add the ec directory to mkdef.pl and mkfiles.pl. In mkdef.pl 15049 change the def and num file printf format specifier from "%-40sXXX" 15050 to "%-39s XXX". The latter will always guarantee a space after the 15051 field while the former will cause them to run together if the field 15052 is 40 of more characters long. 15053 15054 *Steve Henson* 15055 15056 * Constify the cipher and digest 'method' functions and structures 15057 and modify related functions to take constant EVP_MD and EVP_CIPHER 15058 pointers. 15059 15060 *Steve Henson* 15061 15062 * Hide BN_CTX structure details in bn_lcl.h instead of publishing them 15063 in <openssl/bn.h>. Also further increase BN_CTX_NUM to 32. 15064 15065 *Bodo Moeller* 15066 15067 * Modify `EVP_Digest*()` routines so they now return values. Although the 15068 internal software routines can never fail additional hardware versions 15069 might. 15070 15071 *Steve Henson* 15072 15073 * Clean up crypto/err/err.h and change some error codes to avoid conflicts: 15074 15075 Previously ERR_R_FATAL was too small and coincided with ERR_LIB_PKCS7 15076 (= ERR_R_PKCS7_LIB); it is now 64 instead of 32. 15077 15078 ASN1 error codes 15079 ERR_R_NESTED_ASN1_ERROR 15080 ... 15081 ERR_R_MISSING_ASN1_EOS 15082 were 4 .. 9, conflicting with 15083 ERR_LIB_RSA (= ERR_R_RSA_LIB) 15084 ... 15085 ERR_LIB_PEM (= ERR_R_PEM_LIB). 15086 They are now 58 .. 63 (i.e., just below ERR_R_FATAL). 15087 15088 Add new error code 'ERR_R_INTERNAL_ERROR'. 15089 15090 *Bodo Moeller* 15091 15092 * Don't overuse locks in crypto/err/err.c: For data retrieval, CRYPTO_r_lock 15093 suffices. 15094 15095 *Bodo Moeller* 15096 15097 * New option '-subj arg' for 'openssl req' and 'openssl ca'. This 15098 sets the subject name for a new request or supersedes the 15099 subject name in a given request. Formats that can be parsed are 15100 'CN=Some Name, OU=myOU, C=IT' 15101 and 15102 'CN=Some Name/OU=myOU/C=IT'. 15103 15104 Add options '-batch' and '-verbose' to 'openssl req'. 15105 15106 *Massimiliano Pala <madwolf@hackmasters.net>* 15107 15108 * Introduce the possibility to access global variables through 15109 functions on platform were that's the best way to handle exporting 15110 global variables in shared libraries. To enable this functionality, 15111 one must configure with "EXPORT_VAR_AS_FN" or defined the C macro 15112 "OPENSSL_EXPORT_VAR_AS_FUNCTION" in crypto/opensslconf.h (the latter 15113 is normally done by Configure or something similar). 15114 15115 To implement a global variable, use the macro OPENSSL_IMPLEMENT_GLOBAL 15116 in the source file (foo.c) like this: 15117 15118 OPENSSL_IMPLEMENT_GLOBAL(int,foo)=1; 15119 OPENSSL_IMPLEMENT_GLOBAL(double,bar); 15120 15121 To declare a global variable, use the macros OPENSSL_DECLARE_GLOBAL 15122 and OPENSSL_GLOBAL_REF in the header file (foo.h) like this: 15123 15124 OPENSSL_DECLARE_GLOBAL(int,foo); 15125 #define foo OPENSSL_GLOBAL_REF(foo) 15126 OPENSSL_DECLARE_GLOBAL(double,bar); 15127 #define bar OPENSSL_GLOBAL_REF(bar) 15128 15129 The #defines are very important, and therefore so is including the 15130 header file everywhere where the defined globals are used. 15131 15132 The macro OPENSSL_EXPORT_VAR_AS_FUNCTION also affects the definition 15133 of ASN.1 items, but that structure is a bit different. 15134 15135 The largest change is in util/mkdef.pl which has been enhanced with 15136 better and easier to understand logic to choose which symbols should 15137 go into the Windows .def files as well as a number of fixes and code 15138 cleanup (among others, algorithm keywords are now sorted 15139 lexicographically to avoid constant rewrites). 15140 15141 *Richard Levitte* 15142 15143 * In BN_div() keep a copy of the sign of 'num' before writing the 15144 result to 'rm' because if rm==num the value will be overwritten 15145 and produce the wrong result if 'num' is negative: this caused 15146 problems with BN_mod() and BN_nnmod(). 15147 15148 *Steve Henson* 15149 15150 * Function OCSP_request_verify(). This checks the signature on an 15151 OCSP request and verifies the signer certificate. The signer 15152 certificate is just checked for a generic purpose and OCSP request 15153 trust settings. 15154 15155 *Steve Henson* 15156 15157 * Add OCSP_check_validity() function to check the validity of OCSP 15158 responses. OCSP responses are prepared in real time and may only 15159 be a few seconds old. Simply checking that the current time lies 15160 between thisUpdate and nextUpdate max reject otherwise valid responses 15161 caused by either OCSP responder or client clock inaccuracy. Instead 15162 we allow thisUpdate and nextUpdate to fall within a certain period of 15163 the current time. The age of the response can also optionally be 15164 checked. Two new options -validity_period and -status_age added to 15165 ocsp utility. 15166 15167 *Steve Henson* 15168 15169 * If signature or public key algorithm is unrecognized print out its 15170 OID rather that just UNKNOWN. 15171 15172 *Steve Henson* 15173 15174 * Change OCSP_cert_to_id() to tolerate a NULL subject certificate and 15175 OCSP_cert_id_new() a NULL serialNumber. This allows a partial certificate 15176 ID to be generated from the issuer certificate alone which can then be 15177 passed to OCSP_id_issuer_cmp(). 15178 15179 *Steve Henson* 15180 15181 * New compilation option ASN1_ITEM_FUNCTIONS. This causes the new 15182 ASN1 modules to export functions returning ASN1_ITEM pointers 15183 instead of the ASN1_ITEM structures themselves. This adds several 15184 new macros which allow the underlying ASN1 function/structure to 15185 be accessed transparently. As a result code should not use ASN1_ITEM 15186 references directly (such as &X509_it) but instead use the relevant 15187 macros (such as ASN1_ITEM_rptr(X509)). This option is to allow 15188 use of the new ASN1 code on platforms where exporting structures 15189 is problematical (for example in shared libraries) but exporting 15190 functions returning pointers to structures is not. 15191 15192 *Steve Henson* 15193 15194 * Add support for overriding the generation of SSL/TLS session IDs. 15195 These callbacks can be registered either in an SSL_CTX or per SSL. 15196 The purpose of this is to allow applications to control, if they wish, 15197 the arbitrary values chosen for use as session IDs, particularly as it 15198 can be useful for session caching in multiple-server environments. A 15199 command-line switch for testing this (and any client code that wishes 15200 to use such a feature) has been added to "s_server". 15201 15202 *Geoff Thorpe, Lutz Jaenicke* 15203 15204 * Modify mkdef.pl to recognise and parse preprocessor conditionals 15205 of the form `#if defined(...) || defined(...) || ...` and 15206 `#if !defined(...) && !defined(...) && ...`. This also avoids 15207 the growing number of special cases it was previously handling. 15208 15209 *Richard Levitte* 15210 15211 * Make all configuration macros available for application by making 15212 sure they are available in opensslconf.h, by giving them names starting 15213 with `OPENSSL_` to avoid conflicts with other packages and by making 15214 sure e_os2.h will cover all platform-specific cases together with 15215 opensslconf.h. 15216 Additionally, it is now possible to define configuration/platform- 15217 specific names (called "system identities"). In the C code, these 15218 are prefixed with `OPENSSL_SYSNAME_`. e_os2.h will create another 15219 macro with the name beginning with `OPENSSL_SYS_`, which is determined 15220 from `OPENSSL_SYSNAME_*` or compiler-specific macros depending on 15221 what is available. 15222 15223 *Richard Levitte* 15224 15225 * New option -set_serial to 'req' and 'x509' this allows the serial 15226 number to use to be specified on the command line. Previously self 15227 signed certificates were hard coded with serial number 0 and the 15228 CA options of 'x509' had to use a serial number in a file which was 15229 auto incremented. 15230 15231 *Steve Henson* 15232 15233 * New options to 'ca' utility to support V2 CRL entry extensions. 15234 Currently CRL reason, invalidity date and hold instruction are 15235 supported. Add new CRL extensions to V3 code and some new objects. 15236 15237 *Steve Henson* 15238 15239 * New function EVP_CIPHER_CTX_set_padding() this is used to 15240 disable standard block padding (aka PKCS#5 padding) in the EVP 15241 API, which was previously mandatory. This means that the data is 15242 not padded in any way and so the total length much be a multiple 15243 of the block size, otherwise an error occurs. 15244 15245 *Steve Henson* 15246 15247 * Initial (incomplete) OCSP SSL support. 15248 15249 *Steve Henson* 15250 15251 * New function OCSP_parse_url(). This splits up a URL into its host, 15252 port and path components: primarily to parse OCSP URLs. New -url 15253 option to ocsp utility. 15254 15255 *Steve Henson* 15256 15257 * New nonce behavior. The return value of OCSP_check_nonce() now 15258 reflects the various checks performed. Applications can decide 15259 whether to tolerate certain situations such as an absent nonce 15260 in a response when one was present in a request: the ocsp application 15261 just prints out a warning. New function OCSP_add1_basic_nonce() 15262 this is to allow responders to include a nonce in a response even if 15263 the request is nonce-less. 15264 15265 *Steve Henson* 15266 15267 * Disable stdin buffering in `load_cert()` (`apps/apps.c`) so that no certs are 15268 skipped when using openssl x509 multiple times on a single input file, 15269 e.g. `(openssl x509 -out cert1; openssl x509 -out cert2) <certs`. 15270 15271 *Bodo Moeller* 15272 15273 * Make ASN1_UTCTIME_set_string() and ASN1_GENERALIZEDTIME_set_string() 15274 set string type: to handle setting ASN1_TIME structures. Fix ca 15275 utility to correctly initialize revocation date of CRLs. 15276 15277 *Steve Henson* 15278 15279 * New option SSL_OP_CIPHER_SERVER_PREFERENCE allows the server to override 15280 the clients preferred ciphersuites and rather use its own preferences. 15281 Should help to work around M$ SGC (Server Gated Cryptography) bug in 15282 Internet Explorer by ensuring unchanged hash method during stepup. 15283 (Also replaces the broken/deactivated SSL_OP_NON_EXPORT_FIRST option.) 15284 15285 *Lutz Jaenicke* 15286 15287 * Make mkdef.pl recognise all DECLARE_ASN1 macros, change rijndael 15288 to aes and add a new 'exist' option to print out symbols that don't 15289 appear to exist. 15290 15291 *Steve Henson* 15292 15293 * Additional options to ocsp utility to allow flags to be set and 15294 additional certificates supplied. 15295 15296 *Steve Henson* 15297 15298 * Add the option -VAfile to 'openssl ocsp', so the user can give the 15299 OCSP client a number of certificate to only verify the response 15300 signature against. 15301 15302 *Richard Levitte* 15303 15304 * Update Rijndael code to version 3.0 and change EVP AES ciphers to 15305 handle the new API. Currently only ECB, CBC modes supported. Add new 15306 AES OIDs. 15307 15308 Add TLS AES ciphersuites as described in RFC3268, "Advanced 15309 Encryption Standard (AES) Ciphersuites for Transport Layer 15310 Security (TLS)". (In beta versions of OpenSSL 0.9.7, these were 15311 not enabled by default and were not part of the "ALL" ciphersuite 15312 alias because they were not yet official; they could be 15313 explicitly requested by specifying the "AESdraft" ciphersuite 15314 group alias. In the final release of OpenSSL 0.9.7, the group 15315 alias is called "AES" and is part of "ALL".) 15316 15317 *Ben Laurie, Steve Henson, Bodo Moeller* 15318 15319 * New function OCSP_copy_nonce() to copy nonce value (if present) from 15320 request to response. 15321 15322 *Steve Henson* 15323 15324 * Functions for OCSP responders. OCSP_request_onereq_count(), 15325 OCSP_request_onereq_get0(), OCSP_onereq_get0_id() and OCSP_id_get0_info() 15326 extract information from a certificate request. OCSP_response_create() 15327 creates a response and optionally adds a basic response structure. 15328 OCSP_basic_add1_status() adds a complete single response to a basic 15329 response and returns the OCSP_SINGLERESP structure just added (to allow 15330 extensions to be included for example). OCSP_basic_add1_cert() adds a 15331 certificate to a basic response and OCSP_basic_sign() signs a basic 15332 response with various flags. New helper functions ASN1_TIME_check() 15333 (checks validity of ASN1_TIME structure) and ASN1_TIME_to_generalizedtime() 15334 (converts ASN1_TIME to GeneralizedTime). 15335 15336 *Steve Henson* 15337 15338 * Various new functions. EVP_Digest() combines EVP_Digest{Init,Update,Final}() 15339 in a single operation. X509_get0_pubkey_bitstr() extracts the public_key 15340 structure from a certificate. X509_pubkey_digest() digests the public_key 15341 contents: this is used in various key identifiers. 15342 15343 *Steve Henson* 15344 15345 * Make sk_sort() tolerate a NULL argument. 15346 15347 *Steve Henson reported by Massimiliano Pala <madwolf@comune.modena.it>* 15348 15349 * New OCSP verify flag OCSP_TRUSTOTHER. When set the "other" certificates 15350 passed by the function are trusted implicitly. If any of them signed the 15351 response then it is assumed to be valid and is not verified. 15352 15353 *Steve Henson* 15354 15355 * In PKCS7_set_type() initialise content_type in PKCS7_ENC_CONTENT 15356 to data. This was previously part of the PKCS7 ASN1 code. This 15357 was causing problems with OpenSSL created PKCS#12 and PKCS#7 structures. 15358 *Steve Henson, reported by Kenneth R. Robinette 15359 <support@securenetterm.com>* 15360 15361 * Add CRYPTO_push_info() and CRYPTO_pop_info() calls to new ASN1 15362 routines: without these tracing memory leaks is very painful. 15363 Fix leaks in PKCS12 and PKCS7 routines. 15364 15365 *Steve Henson* 15366 15367 * Make X509_time_adj() cope with the new behaviour of ASN1_TIME_new(). 15368 Previously it initialised the 'type' argument to V_ASN1_UTCTIME which 15369 effectively meant GeneralizedTime would never be used. Now it 15370 is initialised to -1 but X509_time_adj() now has to check the value 15371 and use ASN1_TIME_set() if the value is not V_ASN1_UTCTIME or 15372 V_ASN1_GENERALIZEDTIME, without this it always uses GeneralizedTime. 15373 *Steve Henson, reported by Kenneth R. Robinette 15374 <support@securenetterm.com>* 15375 15376 * Fixes to BN_to_ASN1_INTEGER when bn is zero. This would previously 15377 result in a zero length in the ASN1_INTEGER structure which was 15378 not consistent with the structure when d2i_ASN1_INTEGER() was used 15379 and would cause ASN1_INTEGER_cmp() to fail. Enhance s2i_ASN1_INTEGER() 15380 to cope with hex and negative integers. Fix bug in i2a_ASN1_INTEGER() 15381 where it did not print out a minus for negative ASN1_INTEGER. 15382 15383 *Steve Henson* 15384 15385 * Add summary printout to ocsp utility. The various functions which 15386 convert status values to strings have been renamed to: 15387 OCSP_response_status_str(), OCSP_cert_status_str() and 15388 OCSP_crl_reason_str() and are no longer static. New options 15389 to verify nonce values and to disable verification. OCSP response 15390 printout format cleaned up. 15391 15392 *Steve Henson* 15393 15394 * Add additional OCSP certificate checks. These are those specified 15395 in RFC2560. This consists of two separate checks: the CA of the 15396 certificate being checked must either be the OCSP signer certificate 15397 or the issuer of the OCSP signer certificate. In the latter case the 15398 OCSP signer certificate must contain the OCSP signing extended key 15399 usage. This check is performed by attempting to match the OCSP 15400 signer or the OCSP signer CA to the issuerNameHash and issuerKeyHash 15401 in the OCSP_CERTID structures of the response. 15402 15403 *Steve Henson* 15404 15405 * Initial OCSP certificate verification added to OCSP_basic_verify() 15406 and related routines. This uses the standard OpenSSL certificate 15407 verify routines to perform initial checks (just CA validity) and 15408 to obtain the certificate chain. Then additional checks will be 15409 performed on the chain. Currently the root CA is checked to see 15410 if it is explicitly trusted for OCSP signing. This is used to set 15411 a root CA as a global signing root: that is any certificate that 15412 chains to that CA is an acceptable OCSP signing certificate. 15413 15414 *Steve Henson* 15415 15416 * New '-extfile ...' option to 'openssl ca' for reading X.509v3 15417 extensions from a separate configuration file. 15418 As when reading extensions from the main configuration file, 15419 the '-extensions ...' option may be used for specifying the 15420 section to use. 15421 15422 *Massimiliano Pala <madwolf@comune.modena.it>* 15423 15424 * New OCSP utility. Allows OCSP requests to be generated or 15425 read. The request can be sent to a responder and the output 15426 parsed, outputted or printed in text form. Not complete yet: 15427 still needs to check the OCSP response validity. 15428 15429 *Steve Henson* 15430 15431 * New subcommands for 'openssl ca': 15432 `openssl ca -status <serial>` prints the status of the cert with 15433 the given serial number (according to the index file). 15434 `openssl ca -updatedb` updates the expiry status of certificates 15435 in the index file. 15436 15437 *Massimiliano Pala <madwolf@comune.modena.it>* 15438 15439 * New '-newreq-nodes' command option to CA.pl. This is like 15440 '-newreq', but calls 'openssl req' with the '-nodes' option 15441 so that the resulting key is not encrypted. 15442 15443 *Damien Miller <djm@mindrot.org>* 15444 15445 * New configuration for the GNU Hurd. 15446 15447 *Jonathan Bartlett <johnnyb@wolfram.com> via Richard Levitte* 15448 15449 * Initial code to implement OCSP basic response verify. This 15450 is currently incomplete. Currently just finds the signer's 15451 certificate and verifies the signature on the response. 15452 15453 *Steve Henson* 15454 15455 * New SSLeay_version code SSLEAY_DIR to determine the compiled-in 15456 value of OPENSSLDIR. This is available via the new '-d' option 15457 to 'openssl version', and is also included in 'openssl version -a'. 15458 15459 *Bodo Moeller* 15460 15461 * Allowing defining memory allocation callbacks that will be given 15462 file name and line number information in additional arguments 15463 (a `const char*` and an int). The basic functionality remains, as 15464 well as the original possibility to just replace malloc(), 15465 realloc() and free() by functions that do not know about these 15466 additional arguments. To register and find out the current 15467 settings for extended allocation functions, the following 15468 functions are provided: 15469 15470 CRYPTO_set_mem_ex_functions 15471 CRYPTO_set_locked_mem_ex_functions 15472 CRYPTO_get_mem_ex_functions 15473 CRYPTO_get_locked_mem_ex_functions 15474 15475 These work the same way as CRYPTO_set_mem_functions and friends. 15476 `CRYPTO_get_[locked_]mem_functions` now writes 0 where such an 15477 extended allocation function is enabled. 15478 Similarly, `CRYPTO_get_[locked_]mem_ex_functions` writes 0 where 15479 a conventional allocation function is enabled. 15480 15481 *Richard Levitte, Bodo Moeller* 15482 15483 * Finish off removing the remaining LHASH function pointer casts. 15484 There should no longer be any prototype-casting required when using 15485 the LHASH abstraction, and any casts that remain are "bugs". See 15486 the callback types and macros at the head of lhash.h for details 15487 (and "OBJ_cleanup" in crypto/objects/obj_dat.c as an example). 15488 15489 *Geoff Thorpe* 15490 15491 * Add automatic query of EGD sockets in RAND_poll() for the unix variant. 15492 If /dev/[u]random devices are not available or do not return enough 15493 entropy, EGD style sockets (served by EGD or PRNGD) will automatically 15494 be queried. 15495 The locations /var/run/egd-pool, /dev/egd-pool, /etc/egd-pool, and 15496 /etc/entropy will be queried once each in this sequence, querying stops 15497 when enough entropy was collected without querying more sockets. 15498 15499 *Lutz Jaenicke* 15500 15501 * Change the Unix RAND_poll() variant to be able to poll several 15502 random devices, as specified by DEVRANDOM, until a sufficient amount 15503 of data has been collected. We spend at most 10 ms on each file 15504 (select timeout) and read in non-blocking mode. DEVRANDOM now 15505 defaults to the list "/dev/urandom", "/dev/random", "/dev/srandom" 15506 (previously it was just the string "/dev/urandom"), so on typical 15507 platforms the 10 ms delay will never occur. 15508 Also separate out the Unix variant to its own file, rand_unix.c. 15509 For VMS, there's a currently-empty rand_vms.c. 15510 15511 *Richard Levitte* 15512 15513 * Move OCSP client related routines to ocsp_cl.c. These 15514 provide utility functions which an application needing 15515 to issue a request to an OCSP responder and analyse the 15516 response will typically need: as opposed to those which an 15517 OCSP responder itself would need which will be added later. 15518 15519 OCSP_request_sign() signs an OCSP request with an API similar 15520 to PKCS7_sign(). OCSP_response_status() returns status of OCSP 15521 response. OCSP_response_get1_basic() extracts basic response 15522 from response. OCSP_resp_find_status(): finds and extracts status 15523 information from an OCSP_CERTID structure (which will be created 15524 when the request structure is built). These are built from lower 15525 level functions which work on OCSP_SINGLERESP structures but 15526 won't normally be used unless the application wishes to examine 15527 extensions in the OCSP response for example. 15528 15529 Replace nonce routines with a pair of functions. 15530 OCSP_request_add1_nonce() adds a nonce value and optionally 15531 generates a random value. OCSP_check_nonce() checks the 15532 validity of the nonce in an OCSP response. 15533 15534 *Steve Henson* 15535 15536 * Change function OCSP_request_add() to OCSP_request_add0_id(). 15537 This doesn't copy the supplied OCSP_CERTID and avoids the 15538 need to free up the newly created id. Change return type 15539 to OCSP_ONEREQ to return the internal OCSP_ONEREQ structure. 15540 This can then be used to add extensions to the request. 15541 Deleted OCSP_request_new(), since most of its functionality 15542 is now in OCSP_REQUEST_new() (and the case insensitive name 15543 clash) apart from the ability to set the request name which 15544 will be added elsewhere. 15545 15546 *Steve Henson* 15547 15548 * Update OCSP API. Remove obsolete extensions argument from 15549 various functions. Extensions are now handled using the new 15550 OCSP extension code. New simple OCSP HTTP function which 15551 can be used to send requests and parse the response. 15552 15553 *Steve Henson* 15554 15555 * Fix the PKCS#7 (S/MIME) code to work with new ASN1. Two new 15556 ASN1_ITEM structures help with sign and verify. PKCS7_ATTR_SIGN 15557 uses the special reorder version of SET OF to sort the attributes 15558 and reorder them to match the encoded order. This resolves a long 15559 standing problem: a verify on a PKCS7 structure just after signing 15560 it used to fail because the attribute order did not match the 15561 encoded order. PKCS7_ATTR_VERIFY does not reorder the attributes: 15562 it uses the received order. This is necessary to tolerate some broken 15563 software that does not order SET OF. This is handled by encoding 15564 as a SEQUENCE OF but using implicit tagging (with UNIVERSAL class) 15565 to produce the required SET OF. 15566 15567 *Steve Henson* 15568 15569 * Have mk1mf.pl generate the macros OPENSSL_BUILD_SHLIBCRYPTO and 15570 OPENSSL_BUILD_SHLIBSSL and use them appropriately in the header 15571 files to get correct declarations of the ASN.1 item variables. 15572 15573 *Richard Levitte* 15574 15575 * Rewrite of PKCS#12 code to use new ASN1 functionality. Replace many 15576 PKCS#12 macros with real functions. Fix two unrelated ASN1 bugs: 15577 asn1_check_tlen() would sometimes attempt to use 'ctx' when it was 15578 NULL and ASN1_TYPE was not dereferenced properly in asn1_ex_c2i(). 15579 New ASN1 macro: DECLARE_ASN1_ITEM() which just declares the relevant 15580 ASN1_ITEM and no wrapper functions. 15581 15582 *Steve Henson* 15583 15584 * New functions or ASN1_item_d2i_fp() and ASN1_item_d2i_bio(). These 15585 replace the old function pointer based I/O routines. Change most of 15586 the `*_d2i_bio()` and `*_d2i_fp()` functions to use these. 15587 15588 *Steve Henson* 15589 15590 * Enhance mkdef.pl to be more accepting about spacing in C preprocessor 15591 lines, recognize more "algorithms" that can be deselected, and make 15592 it complain about algorithm deselection that isn't recognised. 15593 15594 *Richard Levitte* 15595 15596 * New ASN1 functions to handle dup, sign, verify, digest, pack and 15597 unpack operations in terms of ASN1_ITEM. Modify existing wrappers 15598 to use new functions. Add NO_ASN1_OLD which can be set to remove 15599 some old style ASN1 functions: this can be used to determine if old 15600 code will still work when these eventually go away. 15601 15602 *Steve Henson* 15603 15604 * New extension functions for OCSP structures, these follow the 15605 same conventions as certificates and CRLs. 15606 15607 *Steve Henson* 15608 15609 * New function X509V3_add1_i2d(). This automatically encodes and 15610 adds an extension. Its behaviour can be customised with various 15611 flags to append, replace or delete. Various wrappers added for 15612 certificates and CRLs. 15613 15614 *Steve Henson* 15615 15616 * Fix to avoid calling the underlying ASN1 print routine when 15617 an extension cannot be parsed. Correct a typo in the 15618 OCSP_SERVICELOC extension. Tidy up print OCSP format. 15619 15620 *Steve Henson* 15621 15622 * Make mkdef.pl parse some of the ASN1 macros and add appropriate 15623 entries for variables. 15624 15625 *Steve Henson* 15626 15627 * Add functionality to `apps/openssl.c` for detecting locking 15628 problems: As the program is single-threaded, all we have 15629 to do is register a locking callback using an array for 15630 storing which locks are currently held by the program. 15631 15632 *Bodo Moeller* 15633 15634 * Use a lock around the call to CRYPTO_get_ex_new_index() in 15635 SSL_get_ex_data_X509_STORE_idx(), which is used in 15636 ssl_verify_cert_chain() and thus can be called at any time 15637 during TLS/SSL handshakes so that thread-safety is essential. 15638 Unfortunately, the ex_data design is not at all suited 15639 for multi-threaded use, so it probably should be abolished. 15640 15641 *Bodo Moeller* 15642 15643 * Added Broadcom "ubsec" ENGINE to OpenSSL. 15644 15645 *Broadcom, tweaked and integrated by Geoff Thorpe* 15646 15647 * Move common extension printing code to new function 15648 X509V3_print_extensions(). Reorganise OCSP print routines and 15649 implement some needed OCSP ASN1 functions. Add OCSP extensions. 15650 15651 *Steve Henson* 15652 15653 * New function X509_signature_print() to remove duplication in some 15654 print routines. 15655 15656 *Steve Henson* 15657 15658 * Add a special meaning when SET OF and SEQUENCE OF flags are both 15659 set (this was treated exactly the same as SET OF previously). This 15660 is used to reorder the STACK representing the structure to match the 15661 encoding. This will be used to get round a problem where a PKCS7 15662 structure which was signed could not be verified because the STACK 15663 order did not reflect the encoded order. 15664 15665 *Steve Henson* 15666 15667 * Reimplement the OCSP ASN1 module using the new code. 15668 15669 *Steve Henson* 15670 15671 * Update the X509V3 code to permit the use of an ASN1_ITEM structure 15672 for its ASN1 operations. The old style function pointers still exist 15673 for now but they will eventually go away. 15674 15675 *Steve Henson* 15676 15677 * Merge in replacement ASN1 code from the ASN1 branch. This almost 15678 completely replaces the old ASN1 functionality with a table driven 15679 encoder and decoder which interprets an ASN1_ITEM structure describing 15680 the ASN1 module. Compatibility with the existing ASN1 API (i2d,d2i) is 15681 largely maintained. Almost all of the old asn1_mac.h macro based ASN1 15682 has also been converted to the new form. 15683 15684 *Steve Henson* 15685 15686 * Change BN_mod_exp_recp so that negative moduli are tolerated 15687 (the sign is ignored). Similarly, ignore the sign in BN_MONT_CTX_set 15688 so that BN_mod_exp_mont and BN_mod_exp_mont_word work 15689 for negative moduli. 15690 15691 *Bodo Moeller* 15692 15693 * Fix BN_uadd and BN_usub: Always return non-negative results instead 15694 of not touching the result's sign bit. 15695 15696 *Bodo Moeller* 15697 15698 * BN_div bugfix: If the result is 0, the sign (res->neg) must not be 15699 set. 15700 15701 *Bodo Moeller* 15702 15703 * Changed the LHASH code to use prototypes for callbacks, and created 15704 macros to declare and implement thin (optionally static) functions 15705 that provide type-safety and avoid function pointer casting for the 15706 type-specific callbacks. 15707 15708 *Geoff Thorpe* 15709 15710 * Added Kerberos Cipher Suites to be used with TLS, as written in 15711 RFC 2712. 15712 *Veers Staats <staatsvr@asc.hpc.mil>, 15713 Jeffrey Altman <jaltman@columbia.edu>, via Richard Levitte* 15714 15715 * Reformat the FAQ so the different questions and answers can be divided 15716 in sections depending on the subject. 15717 15718 *Richard Levitte* 15719 15720 * Have the zlib compression code load ZLIB.DLL dynamically under 15721 Windows. 15722 15723 *Richard Levitte* 15724 15725 * New function BN_mod_sqrt for computing square roots modulo a prime 15726 (using the probabilistic Tonelli-Shanks algorithm unless 15727 p == 3 (mod 4) or p == 5 (mod 8), which are cases that can 15728 be handled deterministically). 15729 15730 *Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller* 15731 15732 * Make BN_mod_inverse faster by explicitly handling small quotients 15733 in the Euclid loop. (Speed gain about 20% for small moduli [256 or 15734 512 bits], about 30% for larger ones [1024 or 2048 bits].) 15735 15736 *Bodo Moeller* 15737 15738 * New function BN_kronecker. 15739 15740 *Bodo Moeller* 15741 15742 * Fix BN_gcd so that it works on negative inputs; the result is 15743 positive unless both parameters are zero. 15744 Previously something reasonably close to an infinite loop was 15745 possible because numbers could be growing instead of shrinking 15746 in the implementation of Euclid's algorithm. 15747 15748 *Bodo Moeller* 15749 15750 * Fix BN_is_word() and BN_is_one() macros to take into account the 15751 sign of the number in question. 15752 15753 Fix BN_is_word(a,w) to work correctly for w == 0. 15754 15755 The old BN_is_word(a,w) macro is now called BN_abs_is_word(a,w) 15756 because its test if the absolute value of 'a' equals 'w'. 15757 Note that BN_abs_is_word does *not* handle w == 0 reliably; 15758 it exists mostly for use in the implementations of BN_is_zero(), 15759 BN_is_one(), and BN_is_word(). 15760 15761 *Bodo Moeller* 15762 15763 * New function BN_swap. 15764 15765 *Bodo Moeller* 15766 15767 * Use BN_nnmod instead of BN_mod in crypto/bn/bn_exp.c so that 15768 the exponentiation functions are more likely to produce reasonable 15769 results on negative inputs. 15770 15771 *Bodo Moeller* 15772 15773 * Change BN_mod_mul so that the result is always non-negative. 15774 Previously, it could be negative if one of the factors was negative; 15775 I don't think anyone really wanted that behaviour. 15776 15777 *Bodo Moeller* 15778 15779 * Move `BN_mod_...` functions into new file `crypto/bn/bn_mod.c` 15780 (except for exponentiation, which stays in `crypto/bn/bn_exp.c`, 15781 and `BN_mod_mul_reciprocal`, which stays in `crypto/bn/bn_recp.c`) 15782 and add new functions: 15783 15784 BN_nnmod 15785 BN_mod_sqr 15786 BN_mod_add 15787 BN_mod_add_quick 15788 BN_mod_sub 15789 BN_mod_sub_quick 15790 BN_mod_lshift1 15791 BN_mod_lshift1_quick 15792 BN_mod_lshift 15793 BN_mod_lshift_quick 15794 15795 These functions always generate non-negative results. 15796 15797 `BN_nnmod` otherwise is `like BN_mod` (if `BN_mod` computes a remainder `r` 15798 such that `|m| < r < 0`, `BN_nnmod` will output `rem + |m|` instead). 15799 15800 `BN_mod_XXX_quick(r, a, [b,] m)` generates the same result as 15801 `BN_mod_XXX(r, a, [b,] m, ctx)`, but requires that `a` [and `b`] 15802 be reduced modulo `m`. 15803 15804 *Lenka Fibikova <fibikova@exp-math.uni-essen.de>, Bodo Moeller* 15805 15806<!-- 15807 The following entry accidentally appeared in the CHANGES file 15808 distributed with OpenSSL 0.9.7. The modifications described in 15809 it do *not* apply to OpenSSL 0.9.7. 15810 15811 * Remove a few calls to bn_wexpand() in BN_sqr() (the one in there 15812 was actually never needed) and in BN_mul(). The removal in BN_mul() 15813 required a small change in bn_mul_part_recursive() and the addition 15814 of the functions bn_cmp_part_words(), bn_sub_part_words() and 15815 bn_add_part_words(), which do the same thing as bn_cmp_words(), 15816 bn_sub_words() and bn_add_words() except they take arrays with 15817 differing sizes. 15818 15819 *Richard Levitte* 15820--> 15821 15822 * In 'openssl passwd', verify passwords read from the terminal 15823 unless the '-salt' option is used (which usually means that 15824 verification would just waste user's time since the resulting 15825 hash is going to be compared with some given password hash) 15826 or the new '-noverify' option is used. 15827 15828 This is an incompatible change, but it does not affect 15829 non-interactive use of 'openssl passwd' (passwords on the command 15830 line, '-stdin' option, '-in ...' option) and thus should not 15831 cause any problems. 15832 15833 *Bodo Moeller* 15834 15835 * Remove all references to RSAref, since there's no more need for it. 15836 15837 *Richard Levitte* 15838 15839 * Make DSO load along a path given through an environment variable 15840 (SHLIB_PATH) with shl_load(). 15841 15842 *Richard Levitte* 15843 15844 * Constify the ENGINE code as a result of BIGNUM constification. 15845 Also constify the RSA code and most things related to it. In a 15846 few places, most notable in the depth of the ASN.1 code, ugly 15847 casts back to non-const were required (to be solved at a later 15848 time) 15849 15850 *Richard Levitte* 15851 15852 * Make it so the openssl application has all engines loaded by default. 15853 15854 *Richard Levitte* 15855 15856 * Constify the BIGNUM routines a little more. 15857 15858 *Richard Levitte* 15859 15860 * Add the following functions: 15861 15862 ENGINE_load_cswift() 15863 ENGINE_load_chil() 15864 ENGINE_load_atalla() 15865 ENGINE_load_nuron() 15866 ENGINE_load_builtin_engines() 15867 15868 That way, an application can itself choose if external engines that 15869 are built-in in OpenSSL shall ever be used or not. The benefit is 15870 that applications won't have to be linked with libdl or other dso 15871 libraries unless it's really needed. 15872 15873 Changed 'openssl engine' to load all engines on demand. 15874 Changed the engine header files to avoid the duplication of some 15875 declarations (they differed!). 15876 15877 *Richard Levitte* 15878 15879 * 'openssl engine' can now list capabilities. 15880 15881 *Richard Levitte* 15882 15883 * Better error reporting in 'openssl engine'. 15884 15885 *Richard Levitte* 15886 15887 * Never call load_dh_param(NULL) in s_server. 15888 15889 *Bodo Moeller* 15890 15891 * Add engine application. It can currently list engines by name and 15892 identity, and test if they are actually available. 15893 15894 *Richard Levitte* 15895 15896 * Improve RPM specification file by forcing symbolic linking and making 15897 sure the installed documentation is also owned by root.root. 15898 15899 *Damien Miller <djm@mindrot.org>* 15900 15901 * Give the OpenSSL applications more possibilities to make use of 15902 keys (public as well as private) handled by engines. 15903 15904 *Richard Levitte* 15905 15906 * Add OCSP code that comes from CertCo. 15907 15908 *Richard Levitte* 15909 15910 * Add VMS support for the Rijndael code. 15911 15912 *Richard Levitte* 15913 15914 * Added untested support for Nuron crypto accelerator. 15915 15916 *Ben Laurie* 15917 15918 * Add support for external cryptographic devices. This code was 15919 previously distributed separately as the "engine" branch. 15920 15921 *Geoff Thorpe, Richard Levitte* 15922 15923 * Rework the filename-translation in the DSO code. It is now possible to 15924 have far greater control over how a "name" is turned into a filename 15925 depending on the operating environment and any oddities about the 15926 different shared library filenames on each system. 15927 15928 *Geoff Thorpe* 15929 15930 * Support threads on FreeBSD-elf in Configure. 15931 15932 *Richard Levitte* 15933 15934 * Fix for SHA1 assembly problem with MASM: it produces 15935 warnings about corrupt line number information when assembling 15936 with debugging information. This is caused by the overlapping 15937 of two sections. 15938 15939 *Bernd Matthes <mainbug@celocom.de>, Steve Henson* 15940 15941 * NCONF changes. 15942 NCONF_get_number() has no error checking at all. As a replacement, 15943 NCONF_get_number_e() is defined (`_e` for "error checking") and is 15944 promoted strongly. The old NCONF_get_number is kept around for 15945 binary backward compatibility. 15946 Make it possible for methods to load from something other than a BIO, 15947 by providing a function pointer that is given a name instead of a BIO. 15948 For example, this could be used to load configuration data from an 15949 LDAP server. 15950 15951 *Richard Levitte* 15952 15953 * Fix for non blocking accept BIOs. Added new I/O special reason 15954 BIO_RR_ACCEPT to cover this case. Previously use of accept BIOs 15955 with non blocking I/O was not possible because no retry code was 15956 implemented. Also added new SSL code SSL_WANT_ACCEPT to cover 15957 this case. 15958 15959 *Steve Henson* 15960 15961 * Added the beginnings of Rijndael support. 15962 15963 *Ben Laurie* 15964 15965 * Fix for bug in DirectoryString mask setting. Add support for 15966 X509_NAME_print_ex() in 'req' and X509_print_ex() function 15967 to allow certificate printing to more controllable, additional 15968 'certopt' option to 'x509' to allow new printing options to be 15969 set. 15970 15971 *Steve Henson* 15972 15973 * Clean old EAY MD5 hack from e_os.h. 15974 15975 *Richard Levitte* 15976 15977### Changes between 0.9.6l and 0.9.6m [17 Mar 2004] 15978 15979 * Fix null-pointer assignment in do_change_cipher_spec() revealed 15980 by using the Codenomicon TLS Test Tool ([CVE-2004-0079]) 15981 15982 *Joe Orton, Steve Henson* 15983 15984### Changes between 0.9.6k and 0.9.6l [04 Nov 2003] 15985 15986 * Fix additional bug revealed by the NISCC test suite: 15987 15988 Stop bug triggering large recursion when presented with 15989 certain ASN.1 tags ([CVE-2003-0851]) 15990 15991 *Steve Henson* 15992 15993### Changes between 0.9.6j and 0.9.6k [30 Sep 2003] 15994 15995 * Fix various bugs revealed by running the NISCC test suite: 15996 15997 Stop out of bounds reads in the ASN1 code when presented with 15998 invalid tags (CVE-2003-0543 and CVE-2003-0544). 15999 16000 If verify callback ignores invalid public key errors don't try to check 16001 certificate signature with the NULL public key. 16002 16003 *Steve Henson* 16004 16005 * In ssl3_accept() (ssl/s3_srvr.c) only accept a client certificate 16006 if the server requested one: as stated in TLS 1.0 and SSL 3.0 16007 specifications. 16008 16009 *Steve Henson* 16010 16011 * In ssl3_get_client_hello() (ssl/s3_srvr.c), tolerate additional 16012 extra data after the compression methods not only for TLS 1.0 16013 but also for SSL 3.0 (as required by the specification). 16014 16015 *Bodo Moeller; problem pointed out by Matthias Loepfe* 16016 16017 * Change X509_certificate_type() to mark the key as exported/exportable 16018 when it's 512 *bits* long, not 512 bytes. 16019 16020 *Richard Levitte* 16021 16022### Changes between 0.9.6i and 0.9.6j [10 Apr 2003] 16023 16024 * Countermeasure against the Klima-Pokorny-Rosa extension of 16025 Bleichbacher's attack on PKCS #1 v1.5 padding: treat 16026 a protocol version number mismatch like a decryption error 16027 in ssl3_get_client_key_exchange (ssl/s3_srvr.c). 16028 16029 *Bodo Moeller* 16030 16031 * Turn on RSA blinding by default in the default implementation 16032 to avoid a timing attack. Applications that don't want it can call 16033 RSA_blinding_off() or use the new flag RSA_FLAG_NO_BLINDING. 16034 They would be ill-advised to do so in most cases. 16035 16036 *Ben Laurie, Steve Henson, Geoff Thorpe, Bodo Moeller* 16037 16038 * Change RSA blinding code so that it works when the PRNG is not 16039 seeded (in this case, the secret RSA exponent is abused as 16040 an unpredictable seed -- if it is not unpredictable, there 16041 is no point in blinding anyway). Make RSA blinding thread-safe 16042 by remembering the creator's thread ID in rsa->blinding and 16043 having all other threads use local one-time blinding factors 16044 (this requires more computation than sharing rsa->blinding, but 16045 avoids excessive locking; and if an RSA object is not shared 16046 between threads, blinding will still be very fast). 16047 16048 *Bodo Moeller* 16049 16050### Changes between 0.9.6h and 0.9.6i [19 Feb 2003] 16051 16052 * In ssl3_get_record (ssl/s3_pkt.c), minimize information leaked 16053 via timing by performing a MAC computation even if incorrect 16054 block cipher padding has been found. This is a countermeasure 16055 against active attacks where the attacker has to distinguish 16056 between bad padding and a MAC verification error. ([CVE-2003-0078]) 16057 16058 *Bodo Moeller; problem pointed out by Brice Canvel (EPFL), 16059 Alain Hiltgen (UBS), Serge Vaudenay (EPFL), and 16060 Martin Vuagnoux (EPFL, Ilion)* 16061 16062### Changes between 0.9.6g and 0.9.6h [5 Dec 2002] 16063 16064 * New function OPENSSL_cleanse(), which is used to cleanse a section of 16065 memory from its contents. This is done with a counter that will 16066 place alternating values in each byte. This can be used to solve 16067 two issues: 1) the removal of calls to memset() by highly optimizing 16068 compilers, and 2) cleansing with other values than 0, since those can 16069 be read through on certain media, for example a swap space on disk. 16070 16071 *Geoff Thorpe* 16072 16073 * Bugfix: client side session caching did not work with external caching, 16074 because the session->cipher setting was not restored when reloading 16075 from the external cache. This problem was masked, when 16076 SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG (part of SSL_OP_ALL) was set. 16077 (Found by Steve Haslam <steve@araqnid.ddts.net>.) 16078 16079 *Lutz Jaenicke* 16080 16081 * Fix client_certificate (ssl/s2_clnt.c): The permissible total 16082 length of the REQUEST-CERTIFICATE message is 18 .. 34, not 17 .. 33. 16083 16084 *Zeev Lieber <zeev-l@yahoo.com>* 16085 16086 * Undo an undocumented change introduced in 0.9.6e which caused 16087 repeated calls to OpenSSL_add_all_ciphers() and 16088 OpenSSL_add_all_digests() to be ignored, even after calling 16089 EVP_cleanup(). 16090 16091 *Richard Levitte* 16092 16093 * Change the default configuration reader to deal with last line not 16094 being properly terminated. 16095 16096 *Richard Levitte* 16097 16098 * Change X509_NAME_cmp() so it applies the special rules on handling 16099 DN values that are of type PrintableString, as well as RDNs of type 16100 emailAddress where the value has the type ia5String. 16101 16102 *stefank@valicert.com via Richard Levitte* 16103 16104 * Add an SSL_SESS_CACHE_NO_INTERNAL_STORE flag to take over half 16105 the job SSL_SESS_CACHE_NO_INTERNAL_LOOKUP was inconsistently 16106 doing, define a new flag (SSL_SESS_CACHE_NO_INTERNAL) to be 16107 the bitwise-OR of the two for use by the majority of applications 16108 wanting this behaviour, and update the docs. The documented 16109 behaviour and actual behaviour were inconsistent and had been 16110 changing anyway, so this is more a bug-fix than a behavioural 16111 change. 16112 16113 *Geoff Thorpe, diagnosed by Nadav Har'El* 16114 16115 * Don't impose a 16-byte length minimum on session IDs in ssl/s3_clnt.c 16116 (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes). 16117 16118 *Bodo Moeller* 16119 16120 * Fix initialization code race conditions in 16121 SSLv23_method(), SSLv23_client_method(), SSLv23_server_method(), 16122 SSLv2_method(), SSLv2_client_method(), SSLv2_server_method(), 16123 SSLv3_method(), SSLv3_client_method(), SSLv3_server_method(), 16124 TLSv1_method(), TLSv1_client_method(), TLSv1_server_method(), 16125 ssl2_get_cipher_by_char(), 16126 ssl3_get_cipher_by_char(). 16127 16128 *Patrick McCormick <patrick@tellme.com>, Bodo Moeller* 16129 16130 * Reorder cleanup sequence in SSL_CTX_free(): only remove the ex_data after 16131 the cached sessions are flushed, as the remove_cb() might use ex_data 16132 contents. Bug found by Sam Varshavchik <mrsam@courier-mta.com> 16133 (see [openssl.org #212]). 16134 16135 *Geoff Thorpe, Lutz Jaenicke* 16136 16137 * Fix typo in OBJ_txt2obj which incorrectly passed the content 16138 length, instead of the encoding length to d2i_ASN1_OBJECT. 16139 16140 *Steve Henson* 16141 16142### Changes between 0.9.6f and 0.9.6g [9 Aug 2002] 16143 16144 * [In 0.9.6g-engine release:] 16145 Fix crypto/engine/vendor_defns/cswift.h for WIN32 (use `_stdcall`). 16146 16147 *Lynn Gazis <lgazis@rainbow.com>* 16148 16149### Changes between 0.9.6e and 0.9.6f [8 Aug 2002] 16150 16151 * Fix ASN1 checks. Check for overflow by comparing with LONG_MAX 16152 and get fix the header length calculation. 16153 *Florian Weimer <Weimer@CERT.Uni-Stuttgart.DE>, 16154 Alon Kantor <alonk@checkpoint.com> (and others), Steve Henson* 16155 16156 * Use proper error handling instead of 'assertions' in buffer 16157 overflow checks added in 0.9.6e. This prevents DoS (the 16158 assertions could call abort()). 16159 16160 *Arne Ansper <arne@ats.cyber.ee>, Bodo Moeller* 16161 16162### Changes between 0.9.6d and 0.9.6e [30 Jul 2002] 16163 16164 * Add various sanity checks to asn1_get_length() to reject 16165 the ASN1 length bytes if they exceed sizeof(long), will appear 16166 negative or the content length exceeds the length of the 16167 supplied buffer. 16168 16169 *Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>* 16170 16171 * Fix cipher selection routines: ciphers without encryption had no flags 16172 for the cipher strength set and where therefore not handled correctly 16173 by the selection routines (PR #130). 16174 16175 *Lutz Jaenicke* 16176 16177 * Fix EVP_dsa_sha macro. 16178 16179 *Nils Larsch* 16180 16181 * New option 16182 SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 16183 for disabling the SSL 3.0/TLS 1.0 CBC vulnerability countermeasure 16184 that was added in OpenSSL 0.9.6d. 16185 16186 As the countermeasure turned out to be incompatible with some 16187 broken SSL implementations, the new option is part of SSL_OP_ALL. 16188 SSL_OP_ALL is usually employed when compatibility with weird SSL 16189 implementations is desired (e.g. '-bugs' option to 's_client' and 16190 's_server'), so the new option is automatically set in many 16191 applications. 16192 16193 *Bodo Moeller* 16194 16195 * Changes in security patch: 16196 16197 Changes marked "(CHATS)" were sponsored by the Defense Advanced 16198 Research Projects Agency (DARPA) and Air Force Research Laboratory, 16199 Air Force Materiel Command, USAF, under agreement number 16200 F30602-01-2-0537. 16201 16202 * Add various sanity checks to asn1_get_length() to reject 16203 the ASN1 length bytes if they exceed sizeof(long), will appear 16204 negative or the content length exceeds the length of the 16205 supplied buffer. ([CVE-2002-0659]) 16206 16207 *Steve Henson, Adi Stav <stav@mercury.co.il>, James Yonan <jim@ntlp.com>* 16208 16209 * Assertions for various potential buffer overflows, not known to 16210 happen in practice. 16211 16212 *Ben Laurie (CHATS)* 16213 16214 * Various temporary buffers to hold ASCII versions of integers were 16215 too small for 64 bit platforms. ([CVE-2002-0655]) 16216 *Matthew Byng-Maddick <mbm@aldigital.co.uk> and Ben Laurie (CHATS)>* 16217 16218 * Remote buffer overflow in SSL3 protocol - an attacker could 16219 supply an oversized session ID to a client. ([CVE-2002-0656]) 16220 16221 *Ben Laurie (CHATS)* 16222 16223 * Remote buffer overflow in SSL2 protocol - an attacker could 16224 supply an oversized client master key. ([CVE-2002-0656]) 16225 16226 *Ben Laurie (CHATS)* 16227 16228### Changes between 0.9.6c and 0.9.6d [9 May 2002] 16229 16230 * Fix crypto/asn1/a_sign.c so that 'parameters' is omitted (not 16231 encoded as NULL) with id-dsa-with-sha1. 16232 16233 *Nils Larsch <nla@trustcenter.de>; problem pointed out by Bodo Moeller* 16234 16235 * Check various `X509_...()` return values in `apps/req.c`. 16236 16237 *Nils Larsch <nla@trustcenter.de>* 16238 16239 * Fix BASE64 decode (EVP_DecodeUpdate) for data with CR/LF ended lines: 16240 an end-of-file condition would erroneously be flagged, when the CRLF 16241 was just at the end of a processed block. The bug was discovered when 16242 processing data through a buffering memory BIO handing the data to a 16243 BASE64-decoding BIO. Bug fund and patch submitted by Pavel Tsekov 16244 <ptsekov@syntrex.com> and Nedelcho Stanev. 16245 16246 *Lutz Jaenicke* 16247 16248 * Implement a countermeasure against a vulnerability recently found 16249 in CBC ciphersuites in SSL 3.0/TLS 1.0: Send an empty fragment 16250 before application data chunks to avoid the use of known IVs 16251 with data potentially chosen by the attacker. 16252 16253 *Bodo Moeller* 16254 16255 * Fix length checks in ssl3_get_client_hello(). 16256 16257 *Bodo Moeller* 16258 16259 * TLS/SSL library bugfix: use s->s3->in_read_app_data differently 16260 to prevent ssl3_read_internal() from incorrectly assuming that 16261 ssl3_read_bytes() found application data while handshake 16262 processing was enabled when in fact s->s3->in_read_app_data was 16263 merely automatically cleared during the initial handshake. 16264 16265 *Bodo Moeller; problem pointed out by Arne Ansper <arne@ats.cyber.ee>* 16266 16267 * Fix object definitions for Private and Enterprise: they were not 16268 recognized in their shortname (=lowercase) representation. Extend 16269 obj_dat.pl to issue an error when using undefined keywords instead 16270 of silently ignoring the problem (Svenning Sorensen 16271 <sss@sss.dnsalias.net>). 16272 16273 *Lutz Jaenicke* 16274 16275 * Fix DH_generate_parameters() so that it works for 'non-standard' 16276 generators, i.e. generators other than 2 and 5. (Previously, the 16277 code did not properly initialise the 'add' and 'rem' values to 16278 BN_generate_prime().) 16279 16280 In the new general case, we do not insist that 'generator' is 16281 actually a primitive root: This requirement is rather pointless; 16282 a generator of the order-q subgroup is just as good, if not 16283 better. 16284 16285 *Bodo Moeller* 16286 16287 * Map new X509 verification errors to alerts. Discovered and submitted by 16288 Tom Wu <tom@arcot.com>. 16289 16290 *Lutz Jaenicke* 16291 16292 * Fix ssl3_pending() (ssl/s3_lib.c) to prevent SSL_pending() from 16293 returning non-zero before the data has been completely received 16294 when using non-blocking I/O. 16295 16296 *Bodo Moeller; problem pointed out by John Hughes* 16297 16298 * Some of the ciphers missed the strength entry (SSL_LOW etc). 16299 16300 *Ben Laurie, Lutz Jaenicke* 16301 16302 * Fix bug in SSL_clear(): bad sessions were not removed (found by 16303 Yoram Zahavi <YoramZ@gilian.com>). 16304 16305 *Lutz Jaenicke* 16306 16307 * Add information about CygWin 1.3 and on, and preserve proper 16308 configuration for the versions before that. 16309 16310 *Corinna Vinschen <vinschen@redhat.com> and Richard Levitte* 16311 16312 * Make removal from session cache (SSL_CTX_remove_session()) more robust: 16313 check whether we deal with a copy of a session and do not delete from 16314 the cache in this case. Problem reported by "Izhar Shoshani Levi" 16315 <izhar@checkpoint.com>. 16316 16317 *Lutz Jaenicke* 16318 16319 * Do not store session data into the internal session cache, if it 16320 is never intended to be looked up (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 16321 flag is set). Proposed by Aslam <aslam@funk.com>. 16322 16323 *Lutz Jaenicke* 16324 16325 * Have ASN1_BIT_STRING_set_bit() really clear a bit when the requested 16326 value is 0. 16327 16328 *Richard Levitte* 16329 16330 * [In 0.9.6d-engine release:] 16331 Fix a crashbug and a logic bug in hwcrhk_load_pubkey(). 16332 16333 *Toomas Kiisk <vix@cyber.ee> via Richard Levitte* 16334 16335 * Add the configuration target linux-s390x. 16336 16337 *Neale Ferguson <Neale.Ferguson@SoftwareAG-USA.com> via Richard Levitte* 16338 16339 * The earlier bugfix for the SSL3_ST_SW_HELLO_REQ_C case of 16340 ssl3_accept (ssl/s3_srvr.c) incorrectly used a local flag 16341 variable as an indication that a ClientHello message has been 16342 received. As the flag value will be lost between multiple 16343 invocations of ssl3_accept when using non-blocking I/O, the 16344 function may not be aware that a handshake has actually taken 16345 place, thus preventing a new session from being added to the 16346 session cache. 16347 16348 To avoid this problem, we now set s->new_session to 2 instead of 16349 using a local variable. 16350 16351 *Lutz Jaenicke, Bodo Moeller* 16352 16353 * Bugfix: Return -1 from ssl3_get_server_done (ssl3/s3_clnt.c) 16354 if the SSL_R_LENGTH_MISMATCH error is detected. 16355 16356 *Geoff Thorpe, Bodo Moeller* 16357 16358 * New 'shared_ldflag' column in Configure platform table. 16359 16360 *Richard Levitte* 16361 16362 * Fix EVP_CIPHER_mode macro. 16363 16364 *"Dan S. Camper" <dan@bti.net>* 16365 16366 * Fix ssl3_read_bytes (ssl/s3_pkt.c): To ignore messages of unknown 16367 type, we must throw them away by setting rr->length to 0. 16368 16369 *D P Chang <dpc@qualys.com>* 16370 16371### Changes between 0.9.6b and 0.9.6c [21 dec 2001] 16372 16373 * Fix BN_rand_range bug pointed out by Dominikus Scherkl 16374 <Dominikus.Scherkl@biodata.com>. (The previous implementation 16375 worked incorrectly for those cases where range = `10..._2` and 16376 `3*range` is two bits longer than range.) 16377 16378 *Bodo Moeller* 16379 16380 * Only add signing time to PKCS7 structures if it is not already 16381 present. 16382 16383 *Steve Henson* 16384 16385 * Fix crypto/objects/objects.h: "ld-ce" should be "id-ce", 16386 OBJ_ld_ce should be OBJ_id_ce. 16387 Also some ip-pda OIDs in crypto/objects/objects.txt were 16388 incorrect (cf. RFC 3039). 16389 16390 *Matt Cooper, Frederic Giudicelli, Bodo Moeller* 16391 16392 * Release CRYPTO_LOCK_DYNLOCK when CRYPTO_destroy_dynlockid() 16393 returns early because it has nothing to do. 16394 16395 *Andy Schneider <andy.schneider@bjss.co.uk>* 16396 16397 * [In 0.9.6c-engine release:] 16398 Fix mutex callback return values in crypto/engine/hw_ncipher.c. 16399 16400 *Andy Schneider <andy.schneider@bjss.co.uk>* 16401 16402 * [In 0.9.6c-engine release:] 16403 Add support for Cryptographic Appliance's keyserver technology. 16404 (Use engine 'keyclient') 16405 16406 *Cryptographic Appliances and Geoff Thorpe* 16407 16408 * Add a configuration entry for OS/390 Unix. The C compiler 'c89' 16409 is called via tools/c89.sh because arguments have to be 16410 rearranged (all '-L' options must appear before the first object 16411 modules). 16412 16413 *Richard Shapiro <rshapiro@abinitio.com>* 16414 16415 * [In 0.9.6c-engine release:] 16416 Add support for Broadcom crypto accelerator cards, backported 16417 from 0.9.7. 16418 16419 *Broadcom, Nalin Dahyabhai <nalin@redhat.com>, Mark Cox* 16420 16421 * [In 0.9.6c-engine release:] 16422 Add support for SureWare crypto accelerator cards from 16423 Baltimore Technologies. (Use engine 'sureware') 16424 16425 *Baltimore Technologies and Mark Cox* 16426 16427 * [In 0.9.6c-engine release:] 16428 Add support for crypto accelerator cards from Accelerated 16429 Encryption Processing, www.aep.ie. (Use engine 'aep') 16430 16431 *AEP Inc. and Mark Cox* 16432 16433 * Add a configuration entry for gcc on UnixWare. 16434 16435 *Gary Benson <gbenson@redhat.com>* 16436 16437 * Change ssl/s2_clnt.c and ssl/s2_srvr.c so that received handshake 16438 messages are stored in a single piece (fixed-length part and 16439 variable-length part combined) and fix various bugs found on the way. 16440 16441 *Bodo Moeller* 16442 16443 * Disable caching in BIO_gethostbyname(), directly use gethostbyname() 16444 instead. BIO_gethostbyname() does not know what timeouts are 16445 appropriate, so entries would stay in cache even when they have 16446 become invalid. 16447 *Bodo Moeller; problem pointed out by Rich Salz <rsalz@zolera.com>* 16448 16449 * Change ssl23_get_client_hello (ssl/s23_srvr.c) behaviour when 16450 faced with a pathologically small ClientHello fragment that does 16451 not contain client_version: Instead of aborting with an error, 16452 simply choose the highest available protocol version (i.e., 16453 TLS 1.0 unless it is disabled). In practice, ClientHello 16454 messages are never sent like this, but this change gives us 16455 strictly correct behaviour at least for TLS. 16456 16457 *Bodo Moeller* 16458 16459 * Fix SSL handshake functions and SSL_clear() such that SSL_clear() 16460 never resets s->method to s->ctx->method when called from within 16461 one of the SSL handshake functions. 16462 16463 *Bodo Moeller; problem pointed out by Niko Baric* 16464 16465 * In ssl3_get_client_hello (ssl/s3_srvr.c), generate a fatal alert 16466 (sent using the client's version number) if client_version is 16467 smaller than the protocol version in use. Also change 16468 ssl23_get_client_hello (ssl/s23_srvr.c) to select TLS 1.0 if 16469 the client demanded SSL 3.0 but only TLS 1.0 is enabled; then 16470 the client will at least see that alert. 16471 16472 *Bodo Moeller* 16473 16474 * Fix ssl3_get_message (ssl/s3_both.c) to handle message fragmentation 16475 correctly. 16476 16477 *Bodo Moeller* 16478 16479 * Avoid infinite loop in ssl3_get_message (ssl/s3_both.c) if a 16480 client receives HelloRequest while in a handshake. 16481 16482 *Bodo Moeller; bug noticed by Andy Schneider <andy.schneider@bjss.co.uk>* 16483 16484 * Bugfix in ssl3_accept (ssl/s3_srvr.c): Case SSL3_ST_SW_HELLO_REQ_C 16485 should end in 'break', not 'goto end' which circumvents various 16486 cleanups done in state SSL_ST_OK. But session related stuff 16487 must be disabled for SSL_ST_OK in the case that we just sent a 16488 HelloRequest. 16489 16490 Also avoid some overhead by not calling ssl_init_wbio_buffer() 16491 before just sending a HelloRequest. 16492 16493 *Bodo Moeller, Eric Rescorla <ekr@rtfm.com>* 16494 16495 * Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't 16496 reveal whether illegal block cipher padding was found or a MAC 16497 verification error occurred. (Neither SSLerr() codes nor alerts 16498 are directly visible to potential attackers, but the information 16499 may leak via logfiles.) 16500 16501 Similar changes are not required for the SSL 2.0 implementation 16502 because the number of padding bytes is sent in clear for SSL 2.0, 16503 and the extra bytes are just ignored. However ssl/s2_pkt.c 16504 failed to verify that the purported number of padding bytes is in 16505 the legal range. 16506 16507 *Bodo Moeller* 16508 16509 * Add OpenUNIX-8 support including shared libraries 16510 (Boyd Lynn Gerber <gerberb@zenez.com>). 16511 16512 *Lutz Jaenicke* 16513 16514 * Improve RSA_padding_check_PKCS1_OAEP() check again to avoid 16515 'wristwatch attack' using huge encoding parameters (cf. 16516 James H. Manger's CRYPTO 2001 paper). Note that the 16517 RSA_PKCS1_OAEP_PADDING case of RSA_private_decrypt() does not use 16518 encoding parameters and hence was not vulnerable. 16519 16520 *Bodo Moeller* 16521 16522 * BN_sqr() bug fix. 16523 16524 *Ulf Möller, reported by Jim Ellis <jim.ellis@cavium.com>* 16525 16526 * Rabin-Miller test analyses assume uniformly distributed witnesses, 16527 so use BN_pseudo_rand_range() instead of using BN_pseudo_rand() 16528 followed by modular reduction. 16529 16530 *Bodo Moeller; pointed out by Adam Young <AYoung1@NCSUS.JNJ.COM>* 16531 16532 * Add BN_pseudo_rand_range() with obvious functionality: BN_rand_range() 16533 equivalent based on BN_pseudo_rand() instead of BN_rand(). 16534 16535 *Bodo Moeller* 16536 16537 * s3_srvr.c: allow sending of large client certificate lists (> 16 kB). 16538 This function was broken, as the check for a new client hello message 16539 to handle SGC did not allow these large messages. 16540 (Tracked down by "Douglas E. Engert" <deengert@anl.gov>.) 16541 16542 *Lutz Jaenicke* 16543 16544 * Add alert descriptions for TLSv1 to `SSL_alert_desc_string[_long]()`. 16545 16546 *Lutz Jaenicke* 16547 16548 * Fix buggy behaviour of BIO_get_num_renegotiates() and BIO_ctrl() 16549 for BIO_C_GET_WRITE_BUF_SIZE ("Stephen Hinton" <shinton@netopia.com>). 16550 16551 *Lutz Jaenicke* 16552 16553 * Rework the configuration and shared library support for Tru64 Unix. 16554 The configuration part makes use of modern compiler features and 16555 still retains old compiler behavior for those that run older versions 16556 of the OS. The shared library support part includes a variant that 16557 uses the RPATH feature, and is available through the special 16558 configuration target "alpha-cc-rpath", which will never be selected 16559 automatically. 16560 16561 *Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu> via Richard Levitte* 16562 16563 * In ssl3_get_key_exchange (ssl/s3_clnt.c), call ssl3_get_message() 16564 with the same message size as in ssl3_get_certificate_request(). 16565 Otherwise, if no ServerKeyExchange message occurs, CertificateRequest 16566 messages might inadvertently be reject as too long. 16567 16568 *Petr Lampa <lampa@fee.vutbr.cz>* 16569 16570 * Enhanced support for IA-64 Unix platforms (well, Linux and HP-UX). 16571 16572 *Andy Polyakov* 16573 16574 * Modified SSL library such that the verify_callback that has been set 16575 specifically for an SSL object with SSL_set_verify() is actually being 16576 used. Before the change, a verify_callback set with this function was 16577 ignored and the verify_callback() set in the SSL_CTX at the time of 16578 the call was used. New function X509_STORE_CTX_set_verify_cb() introduced 16579 to allow the necessary settings. 16580 16581 *Lutz Jaenicke* 16582 16583 * Initialize static variable in crypto/dsa/dsa_lib.c and crypto/dh/dh_lib.c 16584 explicitly to NULL, as at least on Solaris 8 this seems not always to be 16585 done automatically (in contradiction to the requirements of the C 16586 standard). This made problems when used from OpenSSH. 16587 16588 *Lutz Jaenicke* 16589 16590 * In OpenSSL 0.9.6a and 0.9.6b, crypto/dh/dh_key.c ignored 16591 dh->length and always used 16592 16593 BN_rand_range(priv_key, dh->p). 16594 16595 BN_rand_range() is not necessary for Diffie-Hellman, and this 16596 specific range makes Diffie-Hellman unnecessarily inefficient if 16597 dh->length (recommended exponent length) is much smaller than the 16598 length of dh->p. We could use BN_rand_range() if the order of 16599 the subgroup was stored in the DH structure, but we only have 16600 dh->length. 16601 16602 So switch back to 16603 16604 BN_rand(priv_key, l, ...) 16605 16606 where 'l' is dh->length if this is defined, or BN_num_bits(dh->p)-1 16607 otherwise. 16608 16609 *Bodo Moeller* 16610 16611 * In 16612 16613 RSA_eay_public_encrypt 16614 RSA_eay_private_decrypt 16615 RSA_eay_private_encrypt (signing) 16616 RSA_eay_public_decrypt (signature verification) 16617 16618 (default implementations for RSA_public_encrypt, 16619 RSA_private_decrypt, RSA_private_encrypt, RSA_public_decrypt), 16620 always reject numbers >= n. 16621 16622 *Bodo Moeller* 16623 16624 * In crypto/rand/md_rand.c, use a new short-time lock CRYPTO_LOCK_RAND2 16625 to synchronize access to 'locking_thread'. This is necessary on 16626 systems where access to 'locking_thread' (an 'unsigned long' 16627 variable) is not atomic. 16628 16629 *Bodo Moeller* 16630 16631 * In crypto/rand/md_rand.c, set 'locking_thread' to current thread's ID 16632 *before* setting the 'crypto_lock_rand' flag. The previous code had 16633 a race condition if 0 is a valid thread ID. 16634 16635 *Travis Vitek <vitek@roguewave.com>* 16636 16637 * Add support for shared libraries under Irix. 16638 16639 *Albert Chin-A-Young <china@thewrittenword.com>* 16640 16641 * Add configuration option to build on Linux on both big-endian and 16642 little-endian MIPS. 16643 16644 *Ralf Baechle <ralf@uni-koblenz.de>* 16645 16646 * Add the possibility to create shared libraries on HP-UX. 16647 16648 *Richard Levitte* 16649 16650### Changes between 0.9.6a and 0.9.6b [9 Jul 2001] 16651 16652 * Change ssleay_rand_bytes (crypto/rand/md_rand.c) 16653 to avoid an SSLeay/OpenSSL PRNG weakness pointed out by 16654 Markku-Juhani O. Saarinen <markku-juhani.saarinen@nokia.com>: 16655 PRNG state recovery was possible based on the output of 16656 one PRNG request appropriately sized to gain knowledge on 16657 'md' followed by enough consecutive 1-byte PRNG requests 16658 to traverse all of 'state'. 16659 16660 1. When updating 'md_local' (the current thread's copy of 'md') 16661 during PRNG output generation, hash all of the previous 16662 'md_local' value, not just the half used for PRNG output. 16663 16664 2. Make the number of bytes from 'state' included into the hash 16665 independent from the number of PRNG bytes requested. 16666 16667 The first measure alone would be sufficient to avoid 16668 Markku-Juhani's attack. (Actually it had never occurred 16669 to me that the half of 'md_local' used for chaining was the 16670 half from which PRNG output bytes were taken -- I had always 16671 assumed that the secret half would be used.) The second 16672 measure makes sure that additional data from 'state' is never 16673 mixed into 'md_local' in small portions; this heuristically 16674 further strengthens the PRNG. 16675 16676 *Bodo Moeller* 16677 16678 * Fix crypto/bn/asm/mips3.s. 16679 16680 *Andy Polyakov* 16681 16682 * When only the key is given to "enc", the IV is undefined. Print out 16683 an error message in this case. 16684 16685 *Lutz Jaenicke* 16686 16687 * Handle special case when X509_NAME is empty in X509 printing routines. 16688 16689 *Steve Henson* 16690 16691 * In dsa_do_verify (crypto/dsa/dsa_ossl.c), verify that r and s are 16692 positive and less than q. 16693 16694 *Bodo Moeller* 16695 16696 * Don't change `*pointer` in CRYPTO_add_lock() is add_lock_callback is 16697 used: it isn't thread safe and the add_lock_callback should handle 16698 that itself. 16699 16700 *Paul Rose <Paul.Rose@bridge.com>* 16701 16702 * Verify that incoming data obeys the block size in 16703 ssl3_enc (ssl/s3_enc.c) and tls1_enc (ssl/t1_enc.c). 16704 16705 *Bodo Moeller* 16706 16707 * Fix OAEP check. 16708 16709 *Ulf Möller, Bodo Möller* 16710 16711 * The countermeasure against Bleichbacher's attack on PKCS #1 v1.5 16712 RSA encryption was accidentally removed in s3_srvr.c in OpenSSL 0.9.5 16713 when fixing the server behaviour for backwards-compatible 'client 16714 hello' messages. (Note that the attack is impractical against 16715 SSL 3.0 and TLS 1.0 anyway because length and version checking 16716 means that the probability of guessing a valid ciphertext is 16717 around 2^-40; see section 5 in Bleichenbacher's CRYPTO '98 16718 paper.) 16719 16720 Before 0.9.5, the countermeasure (hide the error by generating a 16721 random 'decryption result') did not work properly because 16722 ERR_clear_error() was missing, meaning that SSL_get_error() would 16723 detect the supposedly ignored error. 16724 16725 Both problems are now fixed. 16726 16727 *Bodo Moeller* 16728 16729 * In crypto/bio/bf_buff.c, increase DEFAULT_BUFFER_SIZE to 4096 16730 (previously it was 1024). 16731 16732 *Bodo Moeller* 16733 16734 * Fix for compatibility mode trust settings: ignore trust settings 16735 unless some valid trust or reject settings are present. 16736 16737 *Steve Henson* 16738 16739 * Fix for blowfish EVP: its a variable length cipher. 16740 16741 *Steve Henson* 16742 16743 * Fix various bugs related to DSA S/MIME verification. Handle missing 16744 parameters in DSA public key structures and return an error in the 16745 DSA routines if parameters are absent. 16746 16747 *Steve Henson* 16748 16749 * In versions up to 0.9.6, RAND_file_name() resorted to file ".rnd" 16750 in the current directory if neither $RANDFILE nor $HOME was set. 16751 RAND_file_name() in 0.9.6a returned NULL in this case. This has 16752 caused some confusion to Windows users who haven't defined $HOME. 16753 Thus RAND_file_name() is changed again: e_os.h can define a 16754 DEFAULT_HOME, which will be used if $HOME is not set. 16755 For Windows, we use "C:"; on other platforms, we still require 16756 environment variables. 16757 16758 * Move 'if (!initialized) RAND_poll()' into regions protected by 16759 CRYPTO_LOCK_RAND. This is not strictly necessary, but avoids 16760 having multiple threads call RAND_poll() concurrently. 16761 16762 *Bodo Moeller* 16763 16764 * In crypto/rand/md_rand.c, replace 'add_do_not_lock' flag by a 16765 combination of a flag and a thread ID variable. 16766 Otherwise while one thread is in ssleay_rand_bytes (which sets the 16767 flag), *other* threads can enter ssleay_add_bytes without obeying 16768 the CRYPTO_LOCK_RAND lock (and may even illegally release the lock 16769 that they do not hold after the first thread unsets add_do_not_lock). 16770 16771 *Bodo Moeller* 16772 16773 * Change bctest again: '-x' expressions are not available in all 16774 versions of 'test'. 16775 16776 *Bodo Moeller* 16777 16778### Changes between 0.9.6 and 0.9.6a [5 Apr 2001] 16779 16780 * Fix a couple of memory leaks in PKCS7_dataDecode() 16781 16782 *Steve Henson, reported by Heyun Zheng <hzheng@atdsprint.com>* 16783 16784 * Change Configure and Makefiles to provide EXE_EXT, which will contain 16785 the default extension for executables, if any. Also, make the perl 16786 scripts that use symlink() to test if it really exists and use "cp" 16787 if it doesn't. All this made OpenSSL compilable and installable in 16788 CygWin. 16789 16790 *Richard Levitte* 16791 16792 * Fix for asn1_GetSequence() for indefinite length constructed data. 16793 If SEQUENCE is length is indefinite just set c->slen to the total 16794 amount of data available. 16795 16796 *Steve Henson, reported by shige@FreeBSD.org* 16797 16798 *This change does not apply to 0.9.7.* 16799 16800 * Change bctest to avoid here-documents inside command substitution 16801 (workaround for FreeBSD /bin/sh bug). 16802 For compatibility with Ultrix, avoid shell functions (introduced 16803 in the bctest version that searches along $PATH). 16804 16805 *Bodo Moeller* 16806 16807 * Rename 'des_encrypt' to 'des_encrypt1'. This avoids the clashes 16808 with des_encrypt() defined on some operating systems, like Solaris 16809 and UnixWare. 16810 16811 *Richard Levitte* 16812 16813 * Check the result of RSA-CRT (see D. Boneh, R. DeMillo, R. Lipton: 16814 On the Importance of Eliminating Errors in Cryptographic 16815 Computations, J. Cryptology 14 (2001) 2, 101-119, 16816 <http://theory.stanford.edu/~dabo/papers/faults.ps.gz>). 16817 16818 *Ulf Moeller* 16819 16820 * MIPS assembler BIGNUM division bug fix. 16821 16822 *Andy Polyakov* 16823 16824 * Disabled incorrect Alpha assembler code. 16825 16826 *Richard Levitte* 16827 16828 * Fix PKCS#7 decode routines so they correctly update the length 16829 after reading an EOC for the EXPLICIT tag. 16830 16831 *Steve Henson* 16832 16833 *This change does not apply to 0.9.7.* 16834 16835 * Fix bug in PKCS#12 key generation routines. This was triggered 16836 if a 3DES key was generated with a 0 initial byte. Include 16837 PKCS12_BROKEN_KEYGEN compilation option to retain the old 16838 (but broken) behaviour. 16839 16840 *Steve Henson* 16841 16842 * Enhance bctest to search for a working bc along $PATH and print 16843 it when found. 16844 16845 *Tim Rice <tim@multitalents.net> via Richard Levitte* 16846 16847 * Fix memory leaks in err.c: free err_data string if necessary; 16848 don't write to the wrong index in ERR_set_error_data. 16849 16850 *Bodo Moeller* 16851 16852 * Implement ssl23_peek (analogous to ssl23_read), which previously 16853 did not exist. 16854 16855 *Bodo Moeller* 16856 16857 * Replace rdtsc with `_emit` statements for VC++ version 5. 16858 16859 *Jeremy Cooper <jeremy@baymoo.org>* 16860 16861 * Make it possible to reuse SSLv2 sessions. 16862 16863 *Richard Levitte* 16864 16865 * In copy_email() check for >= 0 as a return value for 16866 X509_NAME_get_index_by_NID() since 0 is a valid index. 16867 16868 *Steve Henson reported by Massimiliano Pala <madwolf@opensca.org>* 16869 16870 * Avoid coredump with unsupported or invalid public keys by checking if 16871 X509_get_pubkey() fails in PKCS7_verify(). Fix memory leak when 16872 PKCS7_verify() fails with non detached data. 16873 16874 *Steve Henson* 16875 16876 * Don't use getenv in library functions when run as setuid/setgid. 16877 New function OPENSSL_issetugid(). 16878 16879 *Ulf Moeller* 16880 16881 * Avoid false positives in memory leak detection code (crypto/mem_dbg.c) 16882 due to incorrect handling of multi-threading: 16883 16884 1. Fix timing glitch in the MemCheck_off() portion of CRYPTO_mem_ctrl(). 16885 16886 2. Fix logical glitch in is_MemCheck_on() aka CRYPTO_is_mem_check_on(). 16887 16888 3. Count how many times MemCheck_off() has been called so that 16889 nested use can be treated correctly. This also avoids 16890 inband-signalling in the previous code (which relied on the 16891 assumption that thread ID 0 is impossible). 16892 16893 *Bodo Moeller* 16894 16895 * Add "-rand" option also to s_client and s_server. 16896 16897 *Lutz Jaenicke* 16898 16899 * Fix CPU detection on Irix 6.x. 16900 *Kurt Hockenbury <khockenb@stevens-tech.edu> and 16901 "Bruce W. Forsberg" <bruce.forsberg@baesystems.com>* 16902 16903 * Fix X509_NAME bug which produced incorrect encoding if X509_NAME 16904 was empty. 16905 16906 *Steve Henson* 16907 16908 *This change does not apply to 0.9.7.* 16909 16910 * Use the cached encoding of an X509_NAME structure rather than 16911 copying it. This is apparently the reason for the libsafe "errors" 16912 but the code is actually correct. 16913 16914 *Steve Henson* 16915 16916 * Add new function BN_rand_range(), and fix DSA_sign_setup() to prevent 16917 Bleichenbacher's DSA attack. 16918 Extend BN_[pseudo_]rand: As before, top=1 forces the highest two bits 16919 to be set and top=0 forces the highest bit to be set; top=-1 is new 16920 and leaves the highest bit random. 16921 16922 *Ulf Moeller, Bodo Moeller* 16923 16924 * In the `NCONF_...`-based implementations for `CONF_...` queries 16925 (crypto/conf/conf_lib.c), if the input LHASH is NULL, avoid using 16926 a temporary CONF structure with the data component set to NULL 16927 (which gives segmentation faults in lh_retrieve). 16928 Instead, use NULL for the CONF pointer in CONF_get_string and 16929 CONF_get_number (which may use environment variables) and directly 16930 return NULL from CONF_get_section. 16931 16932 *Bodo Moeller* 16933 16934 * Fix potential buffer overrun for EBCDIC. 16935 16936 *Ulf Moeller* 16937 16938 * Tolerate nonRepudiation as being valid for S/MIME signing and certSign 16939 keyUsage if basicConstraints absent for a CA. 16940 16941 *Steve Henson* 16942 16943 * Make SMIME_write_PKCS7() write mail header values with a format that 16944 is more generally accepted (no spaces before the semicolon), since 16945 some programs can't parse those values properly otherwise. Also make 16946 sure BIO's that break lines after each write do not create invalid 16947 headers. 16948 16949 *Richard Levitte* 16950 16951 * Make the CRL encoding routines work with empty SEQUENCE OF. The 16952 macros previously used would not encode an empty SEQUENCE OF 16953 and break the signature. 16954 16955 *Steve Henson* 16956 16957 *This change does not apply to 0.9.7.* 16958 16959 * Zero the premaster secret after deriving the master secret in 16960 DH ciphersuites. 16961 16962 *Steve Henson* 16963 16964 * Add some EVP_add_digest_alias registrations (as found in 16965 OpenSSL_add_all_digests()) to SSL_library_init() 16966 aka OpenSSL_add_ssl_algorithms(). This provides improved 16967 compatibility with peers using X.509 certificates 16968 with unconventional AlgorithmIdentifier OIDs. 16969 16970 *Bodo Moeller* 16971 16972 * Fix for Irix with NO_ASM. 16973 16974 *"Bruce W. Forsberg" <bruce.forsberg@baesystems.com>* 16975 16976 * ./config script fixes. 16977 16978 *Ulf Moeller, Richard Levitte* 16979 16980 * Fix 'openssl passwd -1'. 16981 16982 *Bodo Moeller* 16983 16984 * Change PKCS12_key_gen_asc() so it can cope with non null 16985 terminated strings whose length is passed in the passlen 16986 parameter, for example from PEM callbacks. This was done 16987 by adding an extra length parameter to asc2uni(). 16988 16989 *Steve Henson, reported by <oddissey@samsung.co.kr>* 16990 16991 * Fix C code generated by 'openssl dsaparam -C': If a BN_bin2bn 16992 call failed, free the DSA structure. 16993 16994 *Bodo Moeller* 16995 16996 * Fix to uni2asc() to cope with zero length Unicode strings. 16997 These are present in some PKCS#12 files. 16998 16999 *Steve Henson* 17000 17001 * Increase s2->wbuf allocation by one byte in ssl2_new (ssl/s2_lib.c). 17002 Otherwise do_ssl_write (ssl/s2_pkt.c) will write beyond buffer limits 17003 when writing a 32767 byte record. 17004 17005 *Bodo Moeller; problem reported by Eric Day <eday@concentric.net>* 17006 17007 * In `RSA_eay_public_{en,ed}crypt` and RSA_eay_mod_exp (rsa_eay.c), 17008 obtain lock CRYPTO_LOCK_RSA before setting `rsa->_method_mod_{n,p,q}`. 17009 17010 (RSA objects have a reference count access to which is protected 17011 by CRYPTO_LOCK_RSA [see rsa_lib.c, s3_srvr.c, ssl_cert.c, ssl_rsa.c], 17012 so they are meant to be shared between threads.) 17013 *Bodo Moeller, Geoff Thorpe; original patch submitted by 17014 "Reddie, Steven" <Steven.Reddie@ca.com>* 17015 17016 * Fix a deadlock in CRYPTO_mem_leaks(). 17017 17018 *Bodo Moeller* 17019 17020 * Use better test patterns in bntest. 17021 17022 *Ulf Möller* 17023 17024 * rand_win.c fix for Borland C. 17025 17026 *Ulf Möller* 17027 17028 * BN_rshift bugfix for n == 0. 17029 17030 *Bodo Moeller* 17031 17032 * Add a 'bctest' script that checks for some known 'bc' bugs 17033 so that 'make test' does not abort just because 'bc' is broken. 17034 17035 *Bodo Moeller* 17036 17037 * Store verify_result within SSL_SESSION also for client side to 17038 avoid potential security hole. (Reused sessions on the client side 17039 always resulted in verify_result==X509_V_OK, not using the original 17040 result of the server certificate verification.) 17041 17042 *Lutz Jaenicke* 17043 17044 * Fix ssl3_pending: If the record in s->s3->rrec is not of type 17045 SSL3_RT_APPLICATION_DATA, return 0. 17046 Similarly, change ssl2_pending to return 0 if SSL_in_init(s) is true. 17047 17048 *Bodo Moeller* 17049 17050 * Fix SSL_peek: 17051 Both ssl2_peek and ssl3_peek, which were totally broken in earlier 17052 releases, have been re-implemented by renaming the previous 17053 implementations of ssl2_read and ssl3_read to ssl2_read_internal 17054 and ssl3_read_internal, respectively, and adding 'peek' parameters 17055 to them. The new ssl[23]_{read,peek} functions are calls to 17056 ssl[23]_read_internal with the 'peek' flag set appropriately. 17057 A 'peek' parameter has also been added to ssl3_read_bytes, which 17058 does the actual work for ssl3_read_internal. 17059 17060 *Bodo Moeller* 17061 17062 * Initialise "ex_data" member of RSA/DSA/DH structures prior to calling 17063 the method-specific "init()" handler. Also clean up ex_data after 17064 calling the method-specific "finish()" handler. Previously, this was 17065 happening the other way round. 17066 17067 *Geoff Thorpe* 17068 17069 * Increase BN_CTX_NUM (the number of BIGNUMs in a BN_CTX) to 16. 17070 The previous value, 12, was not always sufficient for BN_mod_exp(). 17071 17072 *Bodo Moeller* 17073 17074 * Make sure that shared libraries get the internal name engine with 17075 the full version number and not just 0. This should mark the 17076 shared libraries as not backward compatible. Of course, this should 17077 be changed again when we can guarantee backward binary compatibility. 17078 17079 *Richard Levitte* 17080 17081 * Fix typo in get_cert_by_subject() in by_dir.c 17082 17083 *Jean-Marc Desperrier <jean-marc.desperrier@certplus.com>* 17084 17085 * Rework the system to generate shared libraries: 17086 17087 - Make note of the expected extension for the shared libraries and 17088 if there is a need for symbolic links from for example libcrypto.so.0 17089 to libcrypto.so.0.9.7. There is extended info in Configure for 17090 that. 17091 17092 - Make as few rebuilds of the shared libraries as possible. 17093 17094 - Still avoid linking the OpenSSL programs with the shared libraries. 17095 17096 - When installing, install the shared libraries separately from the 17097 static ones. 17098 17099 *Richard Levitte* 17100 17101 * Fix SSL_CTX_set_read_ahead macro to actually use its argument. 17102 17103 Copy SSL_CTX's read_ahead flag to SSL object directly in SSL_new 17104 and not in SSL_clear because the latter is also used by the 17105 accept/connect functions; previously, the settings made by 17106 SSL_set_read_ahead would be lost during the handshake. 17107 17108 *Bodo Moeller; problems reported by Anders Gertz <gertz@epact.se>* 17109 17110 * Correct util/mkdef.pl to be selective about disabled algorithms. 17111 Previously, it would create entries for disabled algorithms no 17112 matter what. 17113 17114 *Richard Levitte* 17115 17116 * Added several new manual pages for SSL_* function. 17117 17118 *Lutz Jaenicke* 17119 17120### Changes between 0.9.5a and 0.9.6 [24 Sep 2000] 17121 17122 * In ssl23_get_client_hello, generate an error message when faced 17123 with an initial SSL 3.0/TLS record that is too small to contain the 17124 first two bytes of the ClientHello message, i.e. client_version. 17125 (Note that this is a pathologic case that probably has never happened 17126 in real life.) The previous approach was to use the version number 17127 from the record header as a substitute; but our protocol choice 17128 should not depend on that one because it is not authenticated 17129 by the Finished messages. 17130 17131 *Bodo Moeller* 17132 17133 * More robust randomness gathering functions for Windows. 17134 17135 *Jeffrey Altman <jaltman@columbia.edu>* 17136 17137 * For compatibility reasons if the flag X509_V_FLAG_ISSUER_CHECK is 17138 not set then we don't setup the error code for issuer check errors 17139 to avoid possibly overwriting other errors which the callback does 17140 handle. If an application does set the flag then we assume it knows 17141 what it is doing and can handle the new informational codes 17142 appropriately. 17143 17144 *Steve Henson* 17145 17146 * Fix for a nasty bug in ASN1_TYPE handling. ASN1_TYPE is used for 17147 a general "ANY" type, as such it should be able to decode anything 17148 including tagged types. However it didn't check the class so it would 17149 wrongly interpret tagged types in the same way as their universal 17150 counterpart and unknown types were just rejected. Changed so that the 17151 tagged and unknown types are handled in the same way as a SEQUENCE: 17152 that is the encoding is stored intact. There is also a new type 17153 "V_ASN1_OTHER" which is used when the class is not universal, in this 17154 case we have no idea what the actual type is so we just lump them all 17155 together. 17156 17157 *Steve Henson* 17158 17159 * On VMS, stdout may very well lead to a file that is written to 17160 in a record-oriented fashion. That means that every write() will 17161 write a separate record, which will be read separately by the 17162 programs trying to read from it. This can be very confusing. 17163 17164 The solution is to put a BIO filter in the way that will buffer 17165 text until a linefeed is reached, and then write everything a 17166 line at a time, so every record written will be an actual line, 17167 not chunks of lines and not (usually doesn't happen, but I've 17168 seen it once) several lines in one record. BIO_f_linebuffer() is 17169 the answer. 17170 17171 Currently, it's a VMS-only method, because that's where it has 17172 been tested well enough. 17173 17174 *Richard Levitte* 17175 17176 * Remove 'optimized' squaring variant in BN_mod_mul_montgomery, 17177 it can return incorrect results. 17178 (Note: The buggy variant was not enabled in OpenSSL 0.9.5a, 17179 but it was in 0.9.6-beta[12].) 17180 17181 *Bodo Moeller* 17182 17183 * Disable the check for content being present when verifying detached 17184 signatures in pk7_smime.c. Some versions of Netscape (wrongly) 17185 include zero length content when signing messages. 17186 17187 *Steve Henson* 17188 17189 * New BIO_shutdown_wr macro, which invokes the BIO_C_SHUTDOWN_WR 17190 BIO_ctrl (for BIO pairs). 17191 17192 *Bodo Möller* 17193 17194 * Add DSO method for VMS. 17195 17196 *Richard Levitte* 17197 17198 * Bug fix: Montgomery multiplication could produce results with the 17199 wrong sign. 17200 17201 *Ulf Möller* 17202 17203 * Add RPM specification openssl.spec and modify it to build three 17204 packages. The default package contains applications, application 17205 documentation and run-time libraries. The devel package contains 17206 include files, static libraries and function documentation. The 17207 doc package contains the contents of the doc directory. The original 17208 openssl.spec was provided by Damien Miller <djm@mindrot.org>. 17209 17210 *Richard Levitte* 17211 17212 * Add a large number of documentation files for many SSL routines. 17213 17214 *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>* 17215 17216 * Add a configuration entry for Sony News 4. 17217 17218 *NAKAJI Hiroyuki <nakaji@tutrp.tut.ac.jp>* 17219 17220 * Don't set the two most significant bits to one when generating a 17221 random number < q in the DSA library. 17222 17223 *Ulf Möller* 17224 17225 * New SSL API mode 'SSL_MODE_AUTO_RETRY'. This disables the default 17226 behaviour that SSL_read may result in SSL_ERROR_WANT_READ (even if 17227 the underlying transport is blocking) if a handshake took place. 17228 (The default behaviour is needed by applications such as s_client 17229 and s_server that use select() to determine when to use SSL_read; 17230 but for applications that know in advance when to expect data, it 17231 just makes things more complicated.) 17232 17233 *Bodo Moeller* 17234 17235 * Add RAND_egd_bytes(), which gives control over the number of bytes read 17236 from EGD. 17237 17238 *Ben Laurie* 17239 17240 * Add a few more EBCDIC conditionals that make `req` and `x509` 17241 work better on such systems. 17242 17243 *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>* 17244 17245 * Add two demo programs for PKCS12_parse() and PKCS12_create(). 17246 Update PKCS12_parse() so it copies the friendlyName and the 17247 keyid to the certificates aux info. 17248 17249 *Steve Henson* 17250 17251 * Fix bug in PKCS7_verify() which caused an infinite loop 17252 if there was more than one signature. 17253 17254 *Sven Uszpelkat <su@celocom.de>* 17255 17256 * Major change in util/mkdef.pl to include extra information 17257 about each symbol, as well as presenting variables as well 17258 as functions. This change means that there's n more need 17259 to rebuild the .num files when some algorithms are excluded. 17260 17261 *Richard Levitte* 17262 17263 * Allow the verify time to be set by an application, 17264 rather than always using the current time. 17265 17266 *Steve Henson* 17267 17268 * Phase 2 verify code reorganisation. The certificate 17269 verify code now looks up an issuer certificate by a 17270 number of criteria: subject name, authority key id 17271 and key usage. It also verifies self signed certificates 17272 by the same criteria. The main comparison function is 17273 X509_check_issued() which performs these checks. 17274 17275 Lot of changes were necessary in order to support this 17276 without completely rewriting the lookup code. 17277 17278 Authority and subject key identifier are now cached. 17279 17280 The LHASH 'certs' is X509_STORE has now been replaced 17281 by a STACK_OF(X509_OBJECT). This is mainly because an 17282 LHASH can't store or retrieve multiple objects with 17283 the same hash value. 17284 17285 As a result various functions (which were all internal 17286 use only) have changed to handle the new X509_STORE 17287 structure. This will break anything that messed round 17288 with X509_STORE internally. 17289 17290 The functions X509_STORE_add_cert() now checks for an 17291 exact match, rather than just subject name. 17292 17293 The X509_STORE API doesn't directly support the retrieval 17294 of multiple certificates matching a given criteria, however 17295 this can be worked round by performing a lookup first 17296 (which will fill the cache with candidate certificates) 17297 and then examining the cache for matches. This is probably 17298 the best we can do without throwing out X509_LOOKUP 17299 entirely (maybe later...). 17300 17301 The X509_VERIFY_CTX structure has been enhanced considerably. 17302 17303 All certificate lookup operations now go via a get_issuer() 17304 callback. Although this currently uses an X509_STORE it 17305 can be replaced by custom lookups. This is a simple way 17306 to bypass the X509_STORE hackery necessary to make this 17307 work and makes it possible to use more efficient techniques 17308 in future. A very simple version which uses a simple 17309 STACK for its trusted certificate store is also provided 17310 using X509_STORE_CTX_trusted_stack(). 17311 17312 The verify_cb() and verify() callbacks now have equivalents 17313 in the X509_STORE_CTX structure. 17314 17315 X509_STORE_CTX also has a 'flags' field which can be used 17316 to customise the verify behaviour. 17317 17318 *Steve Henson* 17319 17320 * Add new PKCS#7 signing option PKCS7_NOSMIMECAP which 17321 excludes S/MIME capabilities. 17322 17323 *Steve Henson* 17324 17325 * When a certificate request is read in keep a copy of the 17326 original encoding of the signed data and use it when outputting 17327 again. Signatures then use the original encoding rather than 17328 a decoded, encoded version which may cause problems if the 17329 request is improperly encoded. 17330 17331 *Steve Henson* 17332 17333 * For consistency with other BIO_puts implementations, call 17334 buffer_write(b, ...) directly in buffer_puts instead of calling 17335 BIO_write(b, ...). 17336 17337 In BIO_puts, increment b->num_write as in BIO_write. 17338 17339 *Peter.Sylvester@EdelWeb.fr* 17340 17341 * Fix BN_mul_word for the case where the word is 0. (We have to use 17342 BN_zero, we may not return a BIGNUM with an array consisting of 17343 words set to zero.) 17344 17345 *Bodo Moeller* 17346 17347 * Avoid calling abort() from within the library when problems are 17348 detected, except if preprocessor symbols have been defined 17349 (such as REF_CHECK, BN_DEBUG etc.). 17350 17351 *Bodo Moeller* 17352 17353 * New openssl application 'rsautl'. This utility can be 17354 used for low-level RSA operations. DER public key 17355 BIO/fp routines also added. 17356 17357 *Steve Henson* 17358 17359 * New Configure entry and patches for compiling on QNX 4. 17360 17361 *Andreas Schneider <andreas@ds3.etech.fh-hamburg.de>* 17362 17363 * A demo state-machine implementation was sponsored by 17364 Nuron (<http://www.nuron.com/>) and is now available in 17365 demos/state_machine. 17366 17367 *Ben Laurie* 17368 17369 * New options added to the 'dgst' utility for signature 17370 generation and verification. 17371 17372 *Steve Henson* 17373 17374 * Unrecognized PKCS#7 content types are now handled via a 17375 catch all ASN1_TYPE structure. This allows unsupported 17376 types to be stored as a "blob" and an application can 17377 encode and decode it manually. 17378 17379 *Steve Henson* 17380 17381 * Fix various signed/unsigned issues to make a_strex.c 17382 compile under VC++. 17383 17384 *Oscar Jacobsson <oscar.jacobsson@celocom.com>* 17385 17386 * ASN1 fixes. i2d_ASN1_OBJECT was not returning the correct 17387 length if passed a buffer. ASN1_INTEGER_to_BN failed 17388 if passed a NULL BN and its argument was negative. 17389 17390 *Steve Henson, pointed out by Sven Heiberg <sven@tartu.cyber.ee>* 17391 17392 * Modification to PKCS#7 encoding routines to output definite 17393 length encoding. Since currently the whole structures are in 17394 memory there's not real point in using indefinite length 17395 constructed encoding. However if OpenSSL is compiled with 17396 the flag PKCS7_INDEFINITE_ENCODING the old form is used. 17397 17398 *Steve Henson* 17399 17400 * Added BIO_vprintf() and BIO_vsnprintf(). 17401 17402 *Richard Levitte* 17403 17404 * Added more prefixes to parse for in the strings written 17405 through a logging bio, to cover all the levels that are available 17406 through syslog. The prefixes are now: 17407 17408 PANIC, EMERG, EMR => LOG_EMERG 17409 ALERT, ALR => LOG_ALERT 17410 CRIT, CRI => LOG_CRIT 17411 ERROR, ERR => LOG_ERR 17412 WARNING, WARN, WAR => LOG_WARNING 17413 NOTICE, NOTE, NOT => LOG_NOTICE 17414 INFO, INF => LOG_INFO 17415 DEBUG, DBG => LOG_DEBUG 17416 17417 and as before, if none of those prefixes are present at the 17418 beginning of the string, LOG_ERR is chosen. 17419 17420 On Win32, the `LOG_*` levels are mapped according to this: 17421 17422 LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR => EVENTLOG_ERROR_TYPE 17423 LOG_WARNING => EVENTLOG_WARNING_TYPE 17424 LOG_NOTICE, LOG_INFO, LOG_DEBUG => EVENTLOG_INFORMATION_TYPE 17425 17426 *Richard Levitte* 17427 17428 * Made it possible to reconfigure with just the configuration 17429 argument "reconf" or "reconfigure". The command line arguments 17430 are stored in Makefile.ssl in the variable CONFIGURE_ARGS, 17431 and are retrieved from there when reconfiguring. 17432 17433 *Richard Levitte* 17434 17435 * MD4 implemented. 17436 17437 *Assar Westerlund <assar@sics.se>, Richard Levitte* 17438 17439 * Add the arguments -CAfile and -CApath to the pkcs12 utility. 17440 17441 *Richard Levitte* 17442 17443 * The obj_dat.pl script was messing up the sorting of object 17444 names. The reason was that it compared the quoted version 17445 of strings as a result "OCSP" > "OCSP Signing" because 17446 " > SPACE. Changed script to store unquoted versions of 17447 names and add quotes on output. It was also omitting some 17448 names from the lookup table if they were given a default 17449 value (that is if SN is missing it is given the same 17450 value as LN and vice versa), these are now added on the 17451 grounds that if an object has a name we should be able to 17452 look it up. Finally added warning output when duplicate 17453 short or long names are found. 17454 17455 *Steve Henson* 17456 17457 * Changes needed for Tandem NSK. 17458 17459 *Scott Uroff <scott@xypro.com>* 17460 17461 * Fix SSL 2.0 rollback checking: Due to an off-by-one error in 17462 RSA_padding_check_SSLv23(), special padding was never detected 17463 and thus the SSL 3.0/TLS 1.0 countermeasure against protocol 17464 version rollback attacks was not effective. 17465 17466 In s23_clnt.c, don't use special rollback-attack detection padding 17467 (RSA_SSLV23_PADDING) if SSL 2.0 is the only protocol enabled in the 17468 client; similarly, in s23_srvr.c, don't do the rollback check if 17469 SSL 2.0 is the only protocol enabled in the server. 17470 17471 *Bodo Moeller* 17472 17473 * Make it possible to get hexdumps of unprintable data with 'openssl 17474 asn1parse'. By implication, the functions ASN1_parse_dump() and 17475 BIO_dump_indent() are added. 17476 17477 *Richard Levitte* 17478 17479 * New functions ASN1_STRING_print_ex() and X509_NAME_print_ex() 17480 these print out strings and name structures based on various 17481 flags including RFC2253 support and proper handling of 17482 multibyte characters. Added options to the 'x509' utility 17483 to allow the various flags to be set. 17484 17485 *Steve Henson* 17486 17487 * Various fixes to use ASN1_TIME instead of ASN1_UTCTIME. 17488 Also change the functions X509_cmp_current_time() and 17489 X509_gmtime_adj() work with an ASN1_TIME structure, 17490 this will enable certificates using GeneralizedTime in validity 17491 dates to be checked. 17492 17493 *Steve Henson* 17494 17495 * Make the NEG_PUBKEY_BUG code (which tolerates invalid 17496 negative public key encodings) on by default, 17497 NO_NEG_PUBKEY_BUG can be set to disable it. 17498 17499 *Steve Henson* 17500 17501 * New function c2i_ASN1_OBJECT() which acts on ASN1_OBJECT 17502 content octets. An i2c_ASN1_OBJECT is unnecessary because 17503 the encoding can be trivially obtained from the structure. 17504 17505 *Steve Henson* 17506 17507 * crypto/err.c locking bugfix: Use write locks (`CRYPTO_w_[un]lock`), 17508 not read locks (`CRYPTO_r_[un]lock`). 17509 17510 *Bodo Moeller* 17511 17512 * A first attempt at creating official support for shared 17513 libraries through configuration. I've kept it so the 17514 default is static libraries only, and the OpenSSL programs 17515 are always statically linked for now, but there are 17516 preparations for dynamic linking in place. 17517 This has been tested on Linux and Tru64. 17518 17519 *Richard Levitte* 17520 17521 * Randomness polling function for Win9x, as described in: 17522 Peter Gutmann, Software Generation of Practically Strong 17523 Random Numbers. 17524 17525 *Ulf Möller* 17526 17527 * Fix so PRNG is seeded in req if using an already existing 17528 DSA key. 17529 17530 *Steve Henson* 17531 17532 * New options to smime application. -inform and -outform 17533 allow alternative formats for the S/MIME message including 17534 PEM and DER. The -content option allows the content to be 17535 specified separately. This should allow things like Netscape 17536 form signing output easier to verify. 17537 17538 *Steve Henson* 17539 17540 * Fix the ASN1 encoding of tags using the 'long form'. 17541 17542 *Steve Henson* 17543 17544 * New ASN1 functions, `i2c_*` and `c2i_*` for INTEGER and BIT 17545 STRING types. These convert content octets to and from the 17546 underlying type. The actual tag and length octets are 17547 already assumed to have been read in and checked. These 17548 are needed because all other string types have virtually 17549 identical handling apart from the tag. By having versions 17550 of the ASN1 functions that just operate on content octets 17551 IMPLICIT tagging can be handled properly. It also allows 17552 the ASN1_ENUMERATED code to be cut down because ASN1_ENUMERATED 17553 and ASN1_INTEGER are identical apart from the tag. 17554 17555 *Steve Henson* 17556 17557 * Change the handling of OID objects as follows: 17558 17559 - New object identifiers are inserted in objects.txt, following 17560 the syntax given in [crypto/objects/README.md](crypto/objects/README.md). 17561 - objects.pl is used to process obj_mac.num and create a new 17562 obj_mac.h. 17563 - obj_dat.pl is used to create a new obj_dat.h, using the data in 17564 obj_mac.h. 17565 17566 This is currently kind of a hack, and the perl code in objects.pl 17567 isn't very elegant, but it works as I intended. The simplest way 17568 to check that it worked correctly is to look in obj_dat.h and 17569 check the array nid_objs and make sure the objects haven't moved 17570 around (this is important!). Additions are OK, as well as 17571 consistent name changes. 17572 17573 *Richard Levitte* 17574 17575 * Add BSD-style MD5-based passwords to 'openssl passwd' (option '-1'). 17576 17577 *Bodo Moeller* 17578 17579 * Addition of the command line parameter '-rand file' to 'openssl req'. 17580 The given file adds to whatever has already been seeded into the 17581 random pool through the RANDFILE configuration file option or 17582 environment variable, or the default random state file. 17583 17584 *Richard Levitte* 17585 17586 * mkstack.pl now sorts each macro group into lexical order. 17587 Previously the output order depended on the order the files 17588 appeared in the directory, resulting in needless rewriting 17589 of safestack.h . 17590 17591 *Steve Henson* 17592 17593 * Patches to make OpenSSL compile under Win32 again. Mostly 17594 work arounds for the VC++ problem that it treats func() as 17595 func(void). Also stripped out the parts of mkdef.pl that 17596 added extra typesafe functions: these no longer exist. 17597 17598 *Steve Henson* 17599 17600 * Reorganisation of the stack code. The macros are now all 17601 collected in safestack.h . Each macro is defined in terms of 17602 a "stack macro" of the form `SKM_<name>(type, a, b)`. The 17603 DEBUG_SAFESTACK is now handled in terms of function casts, 17604 this has the advantage of retaining type safety without the 17605 use of additional functions. If DEBUG_SAFESTACK is not defined 17606 then the non typesafe macros are used instead. Also modified the 17607 mkstack.pl script to handle the new form. Needs testing to see 17608 if which (if any) compilers it chokes and maybe make DEBUG_SAFESTACK 17609 the default if no major problems. Similar behaviour for ASN1_SET_OF 17610 and PKCS12_STACK_OF. 17611 17612 *Steve Henson* 17613 17614 * When some versions of IIS use the 'NET' form of private key the 17615 key derivation algorithm is different. Normally MD5(password) is 17616 used as a 128 bit RC4 key. In the modified case 17617 MD5(MD5(password) + "SGCKEYSALT") is used instead. Added some 17618 new functions i2d_RSA_NET(), d2i_RSA_NET() etc which are the same 17619 as the old Netscape_RSA functions except they have an additional 17620 'sgckey' parameter which uses the modified algorithm. Also added 17621 an -sgckey command line option to the rsa utility. Thanks to 17622 Adrian Peck <bertie@ncipher.com> for posting details of the modified 17623 algorithm to openssl-dev. 17624 17625 *Steve Henson* 17626 17627 * The evp_local.h macros were using 'c.##kname' which resulted in 17628 invalid expansion on some systems (SCO 5.0.5 for example). 17629 Corrected to 'c.kname'. 17630 17631 *Phillip Porch <root@theporch.com>* 17632 17633 * New X509_get1_email() and X509_REQ_get1_email() functions that return 17634 a STACK of email addresses from a certificate or request, these look 17635 in the subject name and the subject alternative name extensions and 17636 omit any duplicate addresses. 17637 17638 *Steve Henson* 17639 17640 * Re-implement BN_mod_exp2_mont using independent (and larger) windows. 17641 This makes DSA verification about 2 % faster. 17642 17643 *Bodo Moeller* 17644 17645 * Increase maximum window size in `BN_mod_exp_...` to 6 bits instead of 5 17646 (meaning that now 2^5 values will be precomputed, which is only 4 KB 17647 plus overhead for 1024 bit moduli). 17648 This makes exponentiations about 0.5 % faster for 1024 bit 17649 exponents (as measured by "openssl speed rsa2048"). 17650 17651 *Bodo Moeller* 17652 17653 * Rename memory handling macros to avoid conflicts with other 17654 software: 17655 Malloc => OPENSSL_malloc 17656 Malloc_locked => OPENSSL_malloc_locked 17657 Realloc => OPENSSL_realloc 17658 Free => OPENSSL_free 17659 17660 *Richard Levitte* 17661 17662 * New function BN_mod_exp_mont_word for small bases (roughly 15% 17663 faster than BN_mod_exp_mont, i.e. 7% for a full DH exchange). 17664 17665 *Bodo Moeller* 17666 17667 * CygWin32 support. 17668 17669 *John Jarvie <jjarvie@newsguy.com>* 17670 17671 * The type-safe stack code has been rejigged. It is now only compiled 17672 in when OpenSSL is configured with the DEBUG_SAFESTACK option and 17673 by default all type-specific stack functions are "#define"d back to 17674 standard stack functions. This results in more streamlined output 17675 but retains the type-safety checking possibilities of the original 17676 approach. 17677 17678 *Geoff Thorpe* 17679 17680 * The STACK code has been cleaned up, and certain type declarations 17681 that didn't make a lot of sense have been brought in line. This has 17682 also involved a cleanup of sorts in safestack.h to more correctly 17683 map type-safe stack functions onto their plain stack counterparts. 17684 This work has also resulted in a variety of "const"ifications of 17685 lots of the code, especially `_cmp` operations which should normally 17686 be prototyped with "const" parameters anyway. 17687 17688 *Geoff Thorpe* 17689 17690 * When generating bytes for the first time in md_rand.c, 'stir the pool' 17691 by seeding with STATE_SIZE dummy bytes (with zero entropy count). 17692 (The PRNG state consists of two parts, the large pool 'state' and 'md', 17693 where all of 'md' is used each time the PRNG is used, but 'state' 17694 is used only indexed by a cyclic counter. As entropy may not be 17695 well distributed from the beginning, 'md' is important as a 17696 chaining variable. However, the output function chains only half 17697 of 'md', i.e. 80 bits. ssleay_rand_add, on the other hand, chains 17698 all of 'md', and seeding with STATE_SIZE dummy bytes will result 17699 in all of 'state' being rewritten, with the new values depending 17700 on virtually all of 'md'. This overcomes the 80 bit limitation.) 17701 17702 *Bodo Moeller* 17703 17704 * In ssl/s2_clnt.c and ssl/s3_clnt.c, call ERR_clear_error() when 17705 the handshake is continued after ssl_verify_cert_chain(); 17706 otherwise, if SSL_VERIFY_NONE is set, remaining error codes 17707 can lead to 'unexplainable' connection aborts later. 17708 17709 *Bodo Moeller; problem tracked down by Lutz Jaenicke* 17710 17711 * Major EVP API cipher revision. 17712 Add hooks for extra EVP features. This allows various cipher 17713 parameters to be set in the EVP interface. Support added for variable 17714 key length ciphers via the EVP_CIPHER_CTX_set_key_length() function and 17715 setting of RC2 and RC5 parameters. 17716 17717 Modify EVP_OpenInit() and EVP_SealInit() to cope with variable key length 17718 ciphers. 17719 17720 Remove lots of duplicated code from the EVP library. For example *every* 17721 cipher init() function handles the 'iv' in the same way according to the 17722 cipher mode. They also all do nothing if the 'key' parameter is NULL and 17723 for CFB and OFB modes they zero ctx->num. 17724 17725 New functionality allows removal of S/MIME code RC2 hack. 17726 17727 Most of the routines have the same form and so can be declared in terms 17728 of macros. 17729 17730 By shifting this to the top level EVP_CipherInit() it can be removed from 17731 all individual ciphers. If the cipher wants to handle IVs or keys 17732 differently it can set the EVP_CIPH_CUSTOM_IV or EVP_CIPH_ALWAYS_CALL_INIT 17733 flags. 17734 17735 Change lots of functions like EVP_EncryptUpdate() to now return a 17736 value: although software versions of the algorithms cannot fail 17737 any installed hardware versions can. 17738 17739 *Steve Henson* 17740 17741 * Implement SSL_OP_TLS_ROLLBACK_BUG: In ssl3_get_client_key_exchange, if 17742 this option is set, tolerate broken clients that send the negotiated 17743 protocol version number instead of the requested protocol version 17744 number. 17745 17746 *Bodo Moeller* 17747 17748 * Call dh_tmp_cb (set by `..._TMP_DH_CB`) with correct 'is_export' flag; 17749 i.e. non-zero for export ciphersuites, zero otherwise. 17750 Previous versions had this flag inverted, inconsistent with 17751 rsa_tmp_cb (..._TMP_RSA_CB). 17752 17753 *Bodo Moeller; problem reported by Amit Chopra* 17754 17755 * Add missing DSA library text string. Work around for some IIS 17756 key files with invalid SEQUENCE encoding. 17757 17758 *Steve Henson* 17759 17760 * Add a document (doc/standards.txt) that list all kinds of standards 17761 and so on that are implemented in OpenSSL. 17762 17763 *Richard Levitte* 17764 17765 * Enhance c_rehash script. Old version would mishandle certificates 17766 with the same subject name hash and wouldn't handle CRLs at all. 17767 Added -fingerprint option to crl utility, to support new c_rehash 17768 features. 17769 17770 *Steve Henson* 17771 17772 * Eliminate non-ANSI declarations in crypto.h and stack.h. 17773 17774 *Ulf Möller* 17775 17776 * Fix for SSL server purpose checking. Server checking was 17777 rejecting certificates which had extended key usage present 17778 but no ssl client purpose. 17779 17780 *Steve Henson, reported by Rene Grosser <grosser@hisolutions.com>* 17781 17782 * Make PKCS#12 code work with no password. The PKCS#12 spec 17783 is a little unclear about how a blank password is handled. 17784 Since the password in encoded as a BMPString with terminating 17785 double NULL a zero length password would end up as just the 17786 double NULL. However no password at all is different and is 17787 handled differently in the PKCS#12 key generation code. NS 17788 treats a blank password as zero length. MSIE treats it as no 17789 password on export: but it will try both on import. We now do 17790 the same: PKCS12_parse() tries zero length and no password if 17791 the password is set to "" or NULL (NULL is now a valid password: 17792 it wasn't before) as does the pkcs12 application. 17793 17794 *Steve Henson* 17795 17796 * Bugfixes in `apps/x509.c`: Avoid a memory leak; and don't use 17797 perror when PEM_read_bio_X509_REQ fails, the error message must 17798 be obtained from the error queue. 17799 17800 *Bodo Moeller* 17801 17802 * Avoid 'thread_hash' memory leak in crypto/err/err.c by freeing 17803 it in ERR_remove_state if appropriate, and change ERR_get_state 17804 accordingly to avoid race conditions (this is necessary because 17805 thread_hash is no longer constant once set). 17806 17807 *Bodo Moeller* 17808 17809 * Bugfix for linux-elf makefile.one. 17810 17811 *Ulf Möller* 17812 17813 * RSA_get_default_method() will now cause a default 17814 RSA_METHOD to be chosen if one doesn't exist already. 17815 Previously this was only set during a call to RSA_new() 17816 or RSA_new_method(NULL) meaning it was possible for 17817 RSA_get_default_method() to return NULL. 17818 17819 *Geoff Thorpe* 17820 17821 * Added native name translation to the existing DSO code 17822 that will convert (if the flag to do so is set) filenames 17823 that are sufficiently small and have no path information 17824 into a canonical native form. Eg. "blah" converted to 17825 "libblah.so" or "blah.dll" etc. 17826 17827 *Geoff Thorpe* 17828 17829 * New function ERR_error_string_n(e, buf, len) which is like 17830 ERR_error_string(e, buf), but writes at most 'len' bytes 17831 including the 0 terminator. For ERR_error_string_n, 'buf' 17832 may not be NULL. 17833 17834 *Damien Miller <djm@mindrot.org>, Bodo Moeller* 17835 17836 * CONF library reworked to become more general. A new CONF 17837 configuration file reader "class" is implemented as well as a 17838 new functions (`NCONF_*`, for "New CONF") to handle it. The now 17839 old `CONF_*` functions are still there, but are reimplemented to 17840 work in terms of the new functions. Also, a set of functions 17841 to handle the internal storage of the configuration data is 17842 provided to make it easier to write new configuration file 17843 reader "classes" (I can definitely see something reading a 17844 configuration file in XML format, for example), called `_CONF_*`, 17845 or "the configuration storage API"... 17846 17847 The new configuration file reading functions are: 17848 17849 NCONF_new, NCONF_free, NCONF_load, NCONF_load_fp, NCONF_load_bio, 17850 NCONF_get_section, NCONF_get_string, NCONF_get_numbre 17851 17852 NCONF_default, NCONF_WIN32 17853 17854 NCONF_dump_fp, NCONF_dump_bio 17855 17856 NCONF_default and NCONF_WIN32 are method (or "class") choosers, 17857 NCONF_new creates a new CONF object. This works in the same way 17858 as other interfaces in OpenSSL, like the BIO interface. 17859 `NCONF_dump_*` dump the internal storage of the configuration file, 17860 which is useful for debugging. All other functions take the same 17861 arguments as the old `CONF_*` functions with the exception of the 17862 first that must be a `CONF *` instead of a `LHASH *`. 17863 17864 To make it easier to use the new classes with the old `CONF_*` functions, 17865 the function CONF_set_default_method is provided. 17866 17867 *Richard Levitte* 17868 17869 * Add '-tls1' option to 'openssl ciphers', which was already 17870 mentioned in the documentation but had not been implemented. 17871 (This option is not yet really useful because even the additional 17872 experimental TLS 1.0 ciphers are currently treated as SSL 3.0 ciphers.) 17873 17874 *Bodo Moeller* 17875 17876 * Initial DSO code added into libcrypto for letting OpenSSL (and 17877 OpenSSL-based applications) load shared libraries and bind to 17878 them in a portable way. 17879 17880 *Geoff Thorpe, with contributions from Richard Levitte* 17881 17882### Changes between 0.9.5 and 0.9.5a [1 Apr 2000] 17883 17884 * Make sure _lrotl and _lrotr are only used with MSVC. 17885 17886 * Use lock CRYPTO_LOCK_RAND correctly in ssleay_rand_status 17887 (the default implementation of RAND_status). 17888 17889 * Rename openssl x509 option '-crlext', which was added in 0.9.5, 17890 to '-clrext' (= clear extensions), as intended and documented. 17891 *Bodo Moeller; inconsistency pointed out by Michael Attili 17892 <attili@amaxo.com>* 17893 17894 * Fix for HMAC. It wasn't zeroing the rest of the block if the key length 17895 was larger than the MD block size. 17896 17897 *Steve Henson, pointed out by Yost William <YostW@tce.com>* 17898 17899 * Modernise PKCS12_parse() so it uses STACK_OF(X509) for its ca argument 17900 fix a leak when the ca argument was passed as NULL. Stop X509_PUBKEY_set() 17901 using the passed key: if the passed key was a private key the result 17902 of X509_print(), for example, would be to print out all the private key 17903 components. 17904 17905 *Steve Henson* 17906 17907 * des_quad_cksum() byte order bug fix. 17908 *Ulf Möller, using the problem description in krb4-0.9.7, where 17909 the solution is attributed to Derrick J Brashear <shadow@DEMENTIA.ORG>* 17910 17911 * Fix so V_ASN1_APP_CHOOSE works again: however its use is strongly 17912 discouraged. 17913 17914 *Steve Henson, pointed out by Brian Korver <briank@cs.stanford.edu>* 17915 17916 * For easily testing in shell scripts whether some command 17917 'openssl XXX' exists, the new pseudo-command 'openssl no-XXX' 17918 returns with exit code 0 iff no command of the given name is available. 17919 'no-XXX' is printed in this case, 'XXX' otherwise. In both cases, 17920 the output goes to stdout and nothing is printed to stderr. 17921 Additional arguments are always ignored. 17922 17923 Since for each cipher there is a command of the same name, 17924 the 'no-cipher' compilation switches can be tested this way. 17925 17926 ('openssl no-XXX' is not able to detect pseudo-commands such 17927 as 'quit', 'list-XXX-commands', or 'no-XXX' itself.) 17928 17929 *Bodo Moeller* 17930 17931 * Update test suite so that 'make test' succeeds in 'no-rsa' configuration. 17932 17933 *Bodo Moeller* 17934 17935 * For SSL_[CTX_]set_tmp_dh, don't create a DH key if SSL_OP_SINGLE_DH_USE 17936 is set; it will be thrown away anyway because each handshake creates 17937 its own key. 17938 ssl_cert_dup, which is used by SSL_new, now copies DH keys in addition 17939 to parameters -- in previous versions (since OpenSSL 0.9.3) the 17940 'default key' from SSL_CTX_set_tmp_dh would always be lost, meaning 17941 you effectively got SSL_OP_SINGLE_DH_USE when using this macro. 17942 17943 *Bodo Moeller* 17944 17945 * New s_client option -ign_eof: EOF at stdin is ignored, and 17946 'Q' and 'R' lose their special meanings (quit/renegotiate). 17947 This is part of what -quiet does; unlike -quiet, -ign_eof 17948 does not suppress any output. 17949 17950 *Richard Levitte* 17951 17952 * Add compatibility options to the purpose and trust code. The 17953 purpose X509_PURPOSE_ANY is "any purpose" which automatically 17954 accepts a certificate or CA, this was the previous behaviour, 17955 with all the associated security issues. 17956 17957 X509_TRUST_COMPAT is the old trust behaviour: only and 17958 automatically trust self signed roots in certificate store. A 17959 new trust setting X509_TRUST_DEFAULT is used to specify that 17960 a purpose has no associated trust setting and it should instead 17961 use the value in the default purpose. 17962 17963 *Steve Henson* 17964 17965 * Fix the PKCS#8 DSA private key code so it decodes keys again 17966 and fix a memory leak. 17967 17968 *Steve Henson* 17969 17970 * In util/mkerr.pl (which implements 'make errors'), preserve 17971 reason strings from the previous version of the .c file, as 17972 the default to have only downcase letters (and digits) in 17973 automatically generated reasons codes is not always appropriate. 17974 17975 *Bodo Moeller* 17976 17977 * In ERR_load_ERR_strings(), build an ERR_LIB_SYS error reason table 17978 using strerror. Previously, ERR_reason_error_string() returned 17979 library names as reason strings for SYSerr; but SYSerr is a special 17980 case where small numbers are errno values, not library numbers. 17981 17982 *Bodo Moeller* 17983 17984 * Add '-dsaparam' option to 'openssl dhparam' application. This 17985 converts DSA parameters into DH parameters. (When creating parameters, 17986 DSA_generate_parameters is used.) 17987 17988 *Bodo Moeller* 17989 17990 * Include 'length' (recommended exponent length) in C code generated 17991 by 'openssl dhparam -C'. 17992 17993 *Bodo Moeller* 17994 17995 * The second argument to set_label in perlasm was already being used 17996 so couldn't be used as a "file scope" flag. Moved to third argument 17997 which was free. 17998 17999 *Steve Henson* 18000 18001 * In PEM_ASN1_write_bio and some other functions, use RAND_pseudo_bytes 18002 instead of RAND_bytes for encryption IVs and salts. 18003 18004 *Bodo Moeller* 18005 18006 * Include RAND_status() into RAND_METHOD instead of implementing 18007 it only for md_rand.c Otherwise replacing the PRNG by calling 18008 RAND_set_rand_method would be impossible. 18009 18010 *Bodo Moeller* 18011 18012 * Don't let DSA_generate_key() enter an infinite loop if the random 18013 number generation fails. 18014 18015 *Bodo Moeller* 18016 18017 * New 'rand' application for creating pseudo-random output. 18018 18019 *Bodo Moeller* 18020 18021 * Added configuration support for Linux/IA64 18022 18023 *Rolf Haberrecker <rolf@suse.de>* 18024 18025 * Assembler module support for Mingw32. 18026 18027 *Ulf Möller* 18028 18029 * Shared library support for HPUX (in shlib/). 18030 18031 *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE> and Anonymous* 18032 18033 * Shared library support for Solaris gcc. 18034 18035 *Lutz Behnke <behnke@trustcenter.de>* 18036 18037### Changes between 0.9.4 and 0.9.5 [28 Feb 2000] 18038 18039 * PKCS7_encrypt() was adding text MIME headers twice because they 18040 were added manually and by SMIME_crlf_copy(). 18041 18042 *Steve Henson* 18043 18044 * In bntest.c don't call BN_rand with zero bits argument. 18045 18046 *Steve Henson, pointed out by Andrew W. Gray <agray@iconsinc.com>* 18047 18048 * BN_mul bugfix: In bn_mul_part_recursion() only the a>a[n] && b>b[n] 18049 case was implemented. This caused BN_div_recp() to fail occasionally. 18050 18051 *Ulf Möller* 18052 18053 * Add an optional second argument to the set_label() in the perl 18054 assembly language builder. If this argument exists and is set 18055 to 1 it signals that the assembler should use a symbol whose 18056 scope is the entire file, not just the current function. This 18057 is needed with MASM which uses the format label:: for this scope. 18058 18059 *Steve Henson, pointed out by Peter Runestig <peter@runestig.com>* 18060 18061 * Change the ASN1 types so they are typedefs by default. Before 18062 almost all types were #define'd to ASN1_STRING which was causing 18063 STACK_OF() problems: you couldn't declare STACK_OF(ASN1_UTF8STRING) 18064 for example. 18065 18066 *Steve Henson* 18067 18068 * Change names of new functions to the new get1/get0 naming 18069 convention: After 'get1', the caller owns a reference count 18070 and has to call `..._free`; 'get0' returns a pointer to some 18071 data structure without incrementing reference counters. 18072 (Some of the existing 'get' functions increment a reference 18073 counter, some don't.) 18074 Similarly, 'set1' and 'add1' functions increase reference 18075 counters or duplicate objects. 18076 18077 *Steve Henson* 18078 18079 * Allow for the possibility of temp RSA key generation failure: 18080 the code used to assume it always worked and crashed on failure. 18081 18082 *Steve Henson* 18083 18084 * Fix potential buffer overrun problem in BIO_printf(). 18085 *Ulf Möller, using public domain code by Patrick Powell; problem 18086 pointed out by David Sacerdote <das33@cornell.edu>* 18087 18088 * Support EGD <http://www.lothar.com/tech/crypto/>. New functions 18089 RAND_egd() and RAND_status(). In the command line application, 18090 the EGD socket can be specified like a seed file using RANDFILE 18091 or -rand. 18092 18093 *Ulf Möller* 18094 18095 * Allow the string CERTIFICATE to be tolerated in PKCS#7 structures. 18096 Some CAs (e.g. Verisign) distribute certificates in this form. 18097 18098 *Steve Henson* 18099 18100 * Remove the SSL_ALLOW_ADH compile option and set the default cipher 18101 list to exclude them. This means that no special compilation option 18102 is needed to use anonymous DH: it just needs to be included in the 18103 cipher list. 18104 18105 *Steve Henson* 18106 18107 * Change the EVP_MD_CTX_type macro so its meaning consistent with 18108 EVP_MD_type. The old functionality is available in a new macro called 18109 EVP_MD_md(). Change code that uses it and update docs. 18110 18111 *Steve Henson* 18112 18113 * `..._ctrl` functions now have corresponding `..._callback_ctrl` functions 18114 where the `void *` argument is replaced by a function pointer argument. 18115 Previously `void *` was abused to point to functions, which works on 18116 many platforms, but is not correct. As these functions are usually 18117 called by macros defined in OpenSSL header files, most source code 18118 should work without changes. 18119 18120 *Richard Levitte* 18121 18122 * `<openssl/opensslconf.h>` (which is created by Configure) now contains 18123 sections with information on -D... compiler switches used for 18124 compiling the library so that applications can see them. To enable 18125 one of these sections, a pre-processor symbol `OPENSSL_..._DEFINES` 18126 must be defined. E.g., 18127 #define OPENSSL_ALGORITHM_DEFINES 18128 #include <openssl/opensslconf.h> 18129 defines all pertinent `NO_<algo>` symbols, such as NO_IDEA, NO_RSA, etc. 18130 18131 *Richard Levitte, Ulf and Bodo Möller* 18132 18133 * Bugfix: Tolerate fragmentation and interleaving in the SSL 3/TLS 18134 record layer. 18135 18136 *Bodo Moeller* 18137 18138 * Change the 'other' type in certificate aux info to a STACK_OF 18139 X509_ALGOR. Although not an AlgorithmIdentifier as such it has 18140 the required ASN1 format: arbitrary types determined by an OID. 18141 18142 *Steve Henson* 18143 18144 * Add some PEM_write_X509_REQ_NEW() functions and a command line 18145 argument to 'req'. This is not because the function is newer or 18146 better than others it just uses the work 'NEW' in the certificate 18147 request header lines. Some software needs this. 18148 18149 *Steve Henson* 18150 18151 * Reorganise password command line arguments: now passwords can be 18152 obtained from various sources. Delete the PEM_cb function and make 18153 it the default behaviour: i.e. if the callback is NULL and the 18154 usrdata argument is not NULL interpret it as a null terminated pass 18155 phrase. If usrdata and the callback are NULL then the pass phrase 18156 is prompted for as usual. 18157 18158 *Steve Henson* 18159 18160 * Add support for the Compaq Atalla crypto accelerator. If it is installed, 18161 the support is automatically enabled. The resulting binaries will 18162 autodetect the card and use it if present. 18163 18164 *Ben Laurie and Compaq Inc.* 18165 18166 * Work around for Netscape hang bug. This sends certificate request 18167 and server done in one record. Since this is perfectly legal in the 18168 SSL/TLS protocol it isn't a "bug" option and is on by default. See 18169 the bugs/SSLv3 entry for more info. 18170 18171 *Steve Henson* 18172 18173 * HP-UX tune-up: new unified configs, HP C compiler bug workaround. 18174 18175 *Andy Polyakov* 18176 18177 * Add -rand argument to smime and pkcs12 applications and read/write 18178 of seed file. 18179 18180 *Steve Henson* 18181 18182 * New 'passwd' tool for crypt(3) and apr1 password hashes. 18183 18184 *Bodo Moeller* 18185 18186 * Add command line password options to the remaining applications. 18187 18188 *Steve Henson* 18189 18190 * Bug fix for BN_div_recp() for numerators with an even number of 18191 bits. 18192 18193 *Ulf Möller* 18194 18195 * More tests in bntest.c, and changed test_bn output. 18196 18197 *Ulf Möller* 18198 18199 * ./config recognizes MacOS X now. 18200 18201 *Andy Polyakov* 18202 18203 * Bug fix for BN_div() when the first words of num and divisor are 18204 equal (it gave wrong results if `(rem=(n1-q*d0)&BN_MASK2) < d0)`. 18205 18206 *Ulf Möller* 18207 18208 * Add support for various broken PKCS#8 formats, and command line 18209 options to produce them. 18210 18211 *Steve Henson* 18212 18213 * New functions BN_CTX_start(), BN_CTX_get() and BT_CTX_end() to 18214 get temporary BIGNUMs from a BN_CTX. 18215 18216 *Ulf Möller* 18217 18218 * Correct return values in BN_mod_exp_mont() and BN_mod_exp2_mont() 18219 for p == 0. 18220 18221 *Ulf Möller* 18222 18223 * Change the `SSLeay_add_all_*()` functions to `OpenSSL_add_all_*()` and 18224 include a #define from the old name to the new. The original intent 18225 was that statically linked binaries could for example just call 18226 SSLeay_add_all_ciphers() to just add ciphers to the table and not 18227 link with digests. This never worked because SSLeay_add_all_digests() 18228 and SSLeay_add_all_ciphers() were in the same source file so calling 18229 one would link with the other. They are now in separate source files. 18230 18231 *Steve Henson* 18232 18233 * Add a new -notext option to 'ca' and a -pubkey option to 'spkac'. 18234 18235 *Steve Henson* 18236 18237 * Use a less unusual form of the Miller-Rabin primality test (it used 18238 a binary algorithm for exponentiation integrated into the Miller-Rabin 18239 loop, our standard modexp algorithms are faster). 18240 18241 *Bodo Moeller* 18242 18243 * Support for the EBCDIC character set completed. 18244 18245 *Martin Kraemer <Martin.Kraemer@Mch.SNI.De>* 18246 18247 * Source code cleanups: use const where appropriate, eliminate casts, 18248 use `void *` instead of `char *` in lhash. 18249 18250 *Ulf Möller* 18251 18252 * Bugfix: ssl3_send_server_key_exchange was not restartable 18253 (the state was not changed to SSL3_ST_SW_KEY_EXCH_B, and because of 18254 this the server could overwrite ephemeral keys that the client 18255 has already seen). 18256 18257 *Bodo Moeller* 18258 18259 * Turn DSA_is_prime into a macro that calls BN_is_prime, 18260 using 50 iterations of the Rabin-Miller test. 18261 18262 DSA_generate_parameters now uses BN_is_prime_fasttest (with 50 18263 iterations of the Rabin-Miller test as required by the appendix 18264 to FIPS PUB 186[-1]) instead of DSA_is_prime. 18265 As BN_is_prime_fasttest includes trial division, DSA parameter 18266 generation becomes much faster. 18267 18268 This implies a change for the callback functions in DSA_is_prime 18269 and DSA_generate_parameters: The callback function is called once 18270 for each positive witness in the Rabin-Miller test, not just 18271 occasionally in the inner loop; and the parameters to the 18272 callback function now provide an iteration count for the outer 18273 loop rather than for the current invocation of the inner loop. 18274 DSA_generate_parameters additionally can call the callback 18275 function with an 'iteration count' of -1, meaning that a 18276 candidate has passed the trial division test (when q is generated 18277 from an application-provided seed, trial division is skipped). 18278 18279 *Bodo Moeller* 18280 18281 * New function BN_is_prime_fasttest that optionally does trial 18282 division before starting the Rabin-Miller test and has 18283 an additional BN_CTX * argument (whereas BN_is_prime always 18284 has to allocate at least one BN_CTX). 18285 'callback(1, -1, cb_arg)' is called when a number has passed the 18286 trial division stage. 18287 18288 *Bodo Moeller* 18289 18290 * Fix for bug in CRL encoding. The validity dates weren't being handled 18291 as ASN1_TIME. 18292 18293 *Steve Henson* 18294 18295 * New -pkcs12 option to CA.pl script to write out a PKCS#12 file. 18296 18297 *Steve Henson* 18298 18299 * New function BN_pseudo_rand(). 18300 18301 *Ulf Möller* 18302 18303 * Clean up BN_mod_mul_montgomery(): replace the broken (and unreadable) 18304 bignum version of BN_from_montgomery() with the working code from 18305 SSLeay 0.9.0 (the word based version is faster anyway), and clean up 18306 the comments. 18307 18308 *Ulf Möller* 18309 18310 * Avoid a race condition in s2_clnt.c (function get_server_hello) that 18311 made it impossible to use the same SSL_SESSION data structure in 18312 SSL2 clients in multiple threads. 18313 18314 *Bodo Moeller* 18315 18316 * The return value of RAND_load_file() no longer counts bytes obtained 18317 by stat(). RAND_load_file(..., -1) is new and uses the complete file 18318 to seed the PRNG (previously an explicit byte count was required). 18319 18320 *Ulf Möller, Bodo Möller* 18321 18322 * Clean up CRYPTO_EX_DATA functions, some of these didn't have prototypes 18323 used `char *` instead of `void *` and had casts all over the place. 18324 18325 *Steve Henson* 18326 18327 * Make BN_generate_prime() return NULL on error if ret!=NULL. 18328 18329 *Ulf Möller* 18330 18331 * Retain source code compatibility for BN_prime_checks macro: 18332 BN_is_prime(..., BN_prime_checks, ...) now uses 18333 BN_prime_checks_for_size to determine the appropriate number of 18334 Rabin-Miller iterations. 18335 18336 *Ulf Möller* 18337 18338 * Diffie-Hellman uses "safe" primes: DH_check() return code renamed to 18339 DH_CHECK_P_NOT_SAFE_PRIME. 18340 (Check if this is true? OpenPGP calls them "strong".) 18341 18342 *Ulf Möller* 18343 18344 * Merge the functionality of "dh" and "gendh" programs into a new program 18345 "dhparam". The old programs are retained for now but will handle DH keys 18346 (instead of parameters) in future. 18347 18348 *Steve Henson* 18349 18350 * Make the ciphers, s_server and s_client programs check the return values 18351 when a new cipher list is set. 18352 18353 *Steve Henson* 18354 18355 * Enhance the SSL/TLS cipher mechanism to correctly handle the TLS 56bit 18356 ciphers. Before when the 56bit ciphers were enabled the sorting was 18357 wrong. 18358 18359 The syntax for the cipher sorting has been extended to support sorting by 18360 cipher-strength (using the strength_bits hard coded in the tables). 18361 The new command is `@STRENGTH` (see also `doc/apps/ciphers.pod`). 18362 18363 Fix a bug in the cipher-command parser: when supplying a cipher command 18364 string with an "undefined" symbol (neither command nor alphanumeric 18365 *A-Za-z0-9*, ssl_set_cipher_list used to hang in an endless loop. Now 18366 an error is flagged. 18367 18368 Due to the strength-sorting extension, the code of the 18369 ssl_create_cipher_list() function was completely rearranged. I hope that 18370 the readability was also increased :-) 18371 18372 *Lutz Jaenicke <Lutz.Jaenicke@aet.TU-Cottbus.DE>* 18373 18374 * Minor change to 'x509' utility. The -CAcreateserial option now uses 1 18375 for the first serial number and places 2 in the serial number file. This 18376 avoids problems when the root CA is created with serial number zero and 18377 the first user certificate has the same issuer name and serial number 18378 as the root CA. 18379 18380 *Steve Henson* 18381 18382 * Fixes to X509_ATTRIBUTE utilities, change the 'req' program so it uses 18383 the new code. Add documentation for this stuff. 18384 18385 *Steve Henson* 18386 18387 * Changes to X509_ATTRIBUTE utilities. These have been renamed from 18388 `X509_*()` to `X509at_*()` on the grounds that they don't handle X509 18389 structures and behave in an analogous way to the X509v3 functions: 18390 they shouldn't be called directly but wrapper functions should be used 18391 instead. 18392 18393 So we also now have some wrapper functions that call the X509at functions 18394 when passed certificate requests. (TO DO: similar things can be done with 18395 PKCS#7 signed and unsigned attributes, PKCS#12 attributes and a few other 18396 things. Some of these need some d2i or i2d and print functionality 18397 because they handle more complex structures.) 18398 18399 *Steve Henson* 18400 18401 * Add missing #ifndefs that caused missing symbols when building libssl 18402 as a shared library without RSA. Use #ifndef NO_SSL2 instead of 18403 NO_RSA in `ssl/s2*.c`. 18404 18405 *Kris Kennaway <kris@hub.freebsd.org>, modified by Ulf Möller* 18406 18407 * Precautions against using the PRNG uninitialized: RAND_bytes() now 18408 has a return value which indicates the quality of the random data 18409 (1 = ok, 0 = not seeded). Also an error is recorded on the thread's 18410 error queue. New function RAND_pseudo_bytes() generates output that is 18411 guaranteed to be unique but not unpredictable. RAND_add is like 18412 RAND_seed, but takes an extra argument for an entropy estimate 18413 (RAND_seed always assumes full entropy). 18414 18415 *Ulf Möller* 18416 18417 * Do more iterations of Rabin-Miller probable prime test (specifically, 18418 3 for 1024-bit primes, 6 for 512-bit primes, 12 for 256-bit primes 18419 instead of only 2 for all lengths; see BN_prime_checks_for_size definition 18420 in crypto/bn/bn_prime.c for the complete table). This guarantees a 18421 false-positive rate of at most 2^-80 for random input. 18422 18423 *Bodo Moeller* 18424 18425 * Rewrite ssl3_read_n (ssl/s3_pkt.c) avoiding a couple of bugs. 18426 18427 *Bodo Moeller* 18428 18429 * New function X509_CTX_rget_chain() (renamed to X509_CTX_get1_chain 18430 in the 0.9.5 release), this returns the chain 18431 from an X509_CTX structure with a dup of the stack and all 18432 the X509 reference counts upped: so the stack will exist 18433 after X509_CTX_cleanup() has been called. Modify pkcs12.c 18434 to use this. 18435 18436 Also make SSL_SESSION_print() print out the verify return 18437 code. 18438 18439 *Steve Henson* 18440 18441 * Add manpage for the pkcs12 command. Also change the default 18442 behaviour so MAC iteration counts are used unless the new 18443 -nomaciter option is used. This improves file security and 18444 only older versions of MSIE (4.0 for example) need it. 18445 18446 *Steve Henson* 18447 18448 * Honor the no-xxx Configure options when creating .DEF files. 18449 18450 *Ulf Möller* 18451 18452 * Add PKCS#10 attributes to field table: challengePassword, 18453 unstructuredName and unstructuredAddress. These are taken from 18454 draft PKCS#9 v2.0 but are compatible with v1.2 provided no 18455 international characters are used. 18456 18457 More changes to X509_ATTRIBUTE code: allow the setting of types 18458 based on strings. Remove the 'loc' parameter when adding 18459 attributes because these will be a SET OF encoding which is sorted 18460 in ASN1 order. 18461 18462 *Steve Henson* 18463 18464 * Initial changes to the 'req' utility to allow request generation 18465 automation. This will allow an application to just generate a template 18466 file containing all the field values and have req construct the 18467 request. 18468 18469 Initial support for X509_ATTRIBUTE handling. Stacks of these are 18470 used all over the place including certificate requests and PKCS#7 18471 structures. They are currently handled manually where necessary with 18472 some primitive wrappers for PKCS#7. The new functions behave in a 18473 manner analogous to the X509 extension functions: they allow 18474 attributes to be looked up by NID and added. 18475 18476 Later something similar to the X509V3 code would be desirable to 18477 automatically handle the encoding, decoding and printing of the 18478 more complex types. The string types like challengePassword can 18479 be handled by the string table functions. 18480 18481 Also modified the multi byte string table handling. Now there is 18482 a 'global mask' which masks out certain types. The table itself 18483 can use the flag STABLE_NO_MASK to ignore the mask setting: this 18484 is useful when for example there is only one permissible type 18485 (as in countryName) and using the mask might result in no valid 18486 types at all. 18487 18488 *Steve Henson* 18489 18490 * Clean up 'Finished' handling, and add functions SSL_get_finished and 18491 SSL_get_peer_finished to allow applications to obtain the latest 18492 Finished messages sent to the peer or expected from the peer, 18493 respectively. (SSL_get_peer_finished is usually the Finished message 18494 actually received from the peer, otherwise the protocol will be aborted.) 18495 18496 As the Finished message are message digests of the complete handshake 18497 (with a total of 192 bits for TLS 1.0 and more for SSL 3.0), they can 18498 be used for external authentication procedures when the authentication 18499 provided by SSL/TLS is not desired or is not enough. 18500 18501 *Bodo Moeller* 18502 18503 * Enhanced support for Alpha Linux is added. Now ./config checks if 18504 the host supports BWX extension and if Compaq C is present on the 18505 $PATH. Just exploiting of the BWX extension results in 20-30% 18506 performance kick for some algorithms, e.g. DES and RC4 to mention 18507 a couple. Compaq C in turn generates ~20% faster code for MD5 and 18508 SHA1. 18509 18510 *Andy Polyakov* 18511 18512 * Add support for MS "fast SGC". This is arguably a violation of the 18513 SSL3/TLS protocol. Netscape SGC does two handshakes: the first with 18514 weak crypto and after checking the certificate is SGC a second one 18515 with strong crypto. MS SGC stops the first handshake after receiving 18516 the server certificate message and sends a second client hello. Since 18517 a server will typically do all the time consuming operations before 18518 expecting any further messages from the client (server key exchange 18519 is the most expensive) there is little difference between the two. 18520 18521 To get OpenSSL to support MS SGC we have to permit a second client 18522 hello message after we have sent server done. In addition we have to 18523 reset the MAC if we do get this second client hello. 18524 18525 *Steve Henson* 18526 18527 * Add a function 'd2i_AutoPrivateKey()' this will automatically decide 18528 if a DER encoded private key is RSA or DSA traditional format. Changed 18529 d2i_PrivateKey_bio() to use it. This is only needed for the "traditional" 18530 format DER encoded private key. Newer code should use PKCS#8 format which 18531 has the key type encoded in the ASN1 structure. Added DER private key 18532 support to pkcs8 application. 18533 18534 *Steve Henson* 18535 18536 * SSL 3/TLS 1 servers now don't request certificates when an anonymous 18537 ciphersuites has been selected (as required by the SSL 3/TLS 1 18538 specifications). Exception: When SSL_VERIFY_FAIL_IF_NO_PEER_CERT 18539 is set, we interpret this as a request to violate the specification 18540 (the worst that can happen is a handshake failure, and 'correct' 18541 behaviour would result in a handshake failure anyway). 18542 18543 *Bodo Moeller* 18544 18545 * In SSL_CTX_add_session, take into account that there might be multiple 18546 SSL_SESSION structures with the same session ID (e.g. when two threads 18547 concurrently obtain them from an external cache). 18548 The internal cache can handle only one SSL_SESSION with a given ID, 18549 so if there's a conflict, we now throw out the old one to achieve 18550 consistency. 18551 18552 *Bodo Moeller* 18553 18554 * Add OIDs for idea and blowfish in CBC mode. This will allow both 18555 to be used in PKCS#5 v2.0 and S/MIME. Also add checking to 18556 some routines that use cipher OIDs: some ciphers do not have OIDs 18557 defined and so they cannot be used for S/MIME and PKCS#5 v2.0 for 18558 example. 18559 18560 *Steve Henson* 18561 18562 * Simplify the trust setting structure and code. Now we just have 18563 two sequences of OIDs for trusted and rejected settings. These will 18564 typically have values the same as the extended key usage extension 18565 and any application specific purposes. 18566 18567 The trust checking code now has a default behaviour: it will just 18568 check for an object with the same NID as the passed id. Functions can 18569 be provided to override either the default behaviour or the behaviour 18570 for a given id. SSL client, server and email already have functions 18571 in place for compatibility: they check the NID and also return "trusted" 18572 if the certificate is self signed. 18573 18574 *Steve Henson* 18575 18576 * Add d2i,i2d bio/fp functions for PrivateKey: these convert the 18577 traditional format into an EVP_PKEY structure. 18578 18579 *Steve Henson* 18580 18581 * Add a password callback function PEM_cb() which either prompts for 18582 a password if usr_data is NULL or otherwise assumes it is a null 18583 terminated password. Allow passwords to be passed on command line 18584 environment or config files in a few more utilities. 18585 18586 *Steve Henson* 18587 18588 * Add a bunch of DER and PEM functions to handle PKCS#8 format private 18589 keys. Add some short names for PKCS#8 PBE algorithms and allow them 18590 to be specified on the command line for the pkcs8 and pkcs12 utilities. 18591 Update documentation. 18592 18593 *Steve Henson* 18594 18595 * Support for ASN1 "NULL" type. This could be handled before by using 18596 ASN1_TYPE but there wasn't any function that would try to read a NULL 18597 and produce an error if it couldn't. For compatibility we also have 18598 ASN1_NULL_new() and ASN1_NULL_free() functions but these are faked and 18599 don't allocate anything because they don't need to. 18600 18601 *Steve Henson* 18602 18603 * Initial support for MacOS is now provided. Examine INSTALL.MacOS 18604 for details. 18605 18606 *Andy Polyakov, Roy Woods <roy@centicsystems.ca>* 18607 18608 * Rebuild of the memory allocation routines used by OpenSSL code and 18609 possibly others as well. The purpose is to make an interface that 18610 provide hooks so anyone can build a separate set of allocation and 18611 deallocation routines to be used by OpenSSL, for example memory 18612 pool implementations, or something else, which was previously hard 18613 since Malloc(), Realloc() and Free() were defined as macros having 18614 the values malloc, realloc and free, respectively (except for Win32 18615 compilations). The same is provided for memory debugging code. 18616 OpenSSL already comes with functionality to find memory leaks, but 18617 this gives people a chance to debug other memory problems. 18618 18619 With these changes, a new set of functions and macros have appeared: 18620 18621 CRYPTO_set_mem_debug_functions() [F] 18622 CRYPTO_get_mem_debug_functions() [F] 18623 CRYPTO_dbg_set_options() [F] 18624 CRYPTO_dbg_get_options() [F] 18625 CRYPTO_malloc_debug_init() [M] 18626 18627 The memory debug functions are NULL by default, unless the library 18628 is compiled with CRYPTO_MDEBUG or friends is defined. If someone 18629 wants to debug memory anyway, CRYPTO_malloc_debug_init() (which 18630 gives the standard debugging functions that come with OpenSSL) or 18631 CRYPTO_set_mem_debug_functions() (tells OpenSSL to use functions 18632 provided by the library user) must be used. When the standard 18633 debugging functions are used, CRYPTO_dbg_set_options can be used to 18634 request additional information: 18635 CRYPTO_dbg_set_options(V_CYRPTO_MDEBUG_xxx) corresponds to setting 18636 the CRYPTO_MDEBUG_xxx macro when compiling the library. 18637 18638 Also, things like CRYPTO_set_mem_functions will always give the 18639 expected result (the new set of functions is used for allocation 18640 and deallocation) at all times, regardless of platform and compiler 18641 options. 18642 18643 To finish it up, some functions that were never use in any other 18644 way than through macros have a new API and new semantic: 18645 18646 CRYPTO_dbg_malloc() 18647 CRYPTO_dbg_realloc() 18648 CRYPTO_dbg_free() 18649 18650 All macros of value have retained their old syntax. 18651 18652 *Richard Levitte and Bodo Moeller* 18653 18654 * Some S/MIME fixes. The OID for SMIMECapabilities was wrong, the 18655 ordering of SMIMECapabilities wasn't in "strength order" and there 18656 was a missing NULL in the AlgorithmIdentifier for the SHA1 signature 18657 algorithm. 18658 18659 *Steve Henson* 18660 18661 * Some ASN1 types with illegal zero length encoding (INTEGER, 18662 ENUMERATED and OBJECT IDENTIFIER) choked the ASN1 routines. 18663 18664 *Frans Heymans <fheymans@isaserver.be>, modified by Steve Henson* 18665 18666 * Merge in my S/MIME library for OpenSSL. This provides a simple 18667 S/MIME API on top of the PKCS#7 code, a MIME parser (with enough 18668 functionality to handle multipart/signed properly) and a utility 18669 called 'smime' to call all this stuff. This is based on code I 18670 originally wrote for Celo who have kindly allowed it to be 18671 included in OpenSSL. 18672 18673 *Steve Henson* 18674 18675 * Add variants des_set_key_checked and des_set_key_unchecked of 18676 des_set_key (aka des_key_sched). Global variable des_check_key 18677 decides which of these is called by des_set_key; this way 18678 des_check_key behaves as it always did, but applications and 18679 the library itself, which was buggy for des_check_key == 1, 18680 have a cleaner way to pick the version they need. 18681 18682 *Bodo Moeller* 18683 18684 * New function PKCS12_newpass() which changes the password of a 18685 PKCS12 structure. 18686 18687 *Steve Henson* 18688 18689 * Modify X509_TRUST and X509_PURPOSE so it also uses a static and 18690 dynamic mix. In both cases the ids can be used as an index into the 18691 table. Also modified the X509_TRUST_add() and X509_PURPOSE_add() 18692 functions so they accept a list of the field values and the 18693 application doesn't need to directly manipulate the X509_TRUST 18694 structure. 18695 18696 *Steve Henson* 18697 18698 * Modify the ASN1_STRING_TABLE stuff so it also uses bsearch and doesn't 18699 need initialising. 18700 18701 *Steve Henson* 18702 18703 * Modify the way the V3 extension code looks up extensions. This now 18704 works in a similar way to the object code: we have some "standard" 18705 extensions in a static table which is searched with OBJ_bsearch() 18706 and the application can add dynamic ones if needed. The file 18707 crypto/x509v3/ext_dat.h now has the info: this file needs to be 18708 updated whenever a new extension is added to the core code and kept 18709 in ext_nid order. There is a simple program 'tabtest.c' which checks 18710 this. New extensions are not added too often so this file can readily 18711 be maintained manually. 18712 18713 There are two big advantages in doing things this way. The extensions 18714 can be looked up immediately and no longer need to be "added" using 18715 X509V3_add_standard_extensions(): this function now does nothing. 18716 Side note: I get *lots* of email saying the extension code doesn't 18717 work because people forget to call this function. 18718 Also no dynamic allocation is done unless new extensions are added: 18719 so if we don't add custom extensions there is no need to call 18720 X509V3_EXT_cleanup(). 18721 18722 *Steve Henson* 18723 18724 * Modify enc utility's salting as follows: make salting the default. Add a 18725 magic header, so unsalted files fail gracefully instead of just decrypting 18726 to garbage. This is because not salting is a big security hole, so people 18727 should be discouraged from doing it. 18728 18729 *Ben Laurie* 18730 18731 * Fixes and enhancements to the 'x509' utility. It allowed a message 18732 digest to be passed on the command line but it only used this 18733 parameter when signing a certificate. Modified so all relevant 18734 operations are affected by the digest parameter including the 18735 -fingerprint and -x509toreq options. Also -x509toreq choked if a 18736 DSA key was used because it didn't fix the digest. 18737 18738 *Steve Henson* 18739 18740 * Initial certificate chain verify code. Currently tests the untrusted 18741 certificates for consistency with the verify purpose (which is set 18742 when the X509_STORE_CTX structure is set up) and checks the pathlength. 18743 18744 There is a NO_CHAIN_VERIFY compilation option to keep the old behaviour: 18745 this is because it will reject chains with invalid extensions whereas 18746 every previous version of OpenSSL and SSLeay made no checks at all. 18747 18748 Trust code: checks the root CA for the relevant trust settings. Trust 18749 settings have an initial value consistent with the verify purpose: e.g. 18750 if the verify purpose is for SSL client use it expects the CA to be 18751 trusted for SSL client use. However the default value can be changed to 18752 permit custom trust settings: one example of this would be to only trust 18753 certificates from a specific "secure" set of CAs. 18754 18755 Also added X509_STORE_CTX_new() and X509_STORE_CTX_free() functions 18756 which should be used for version portability: especially since the 18757 verify structure is likely to change more often now. 18758 18759 SSL integration. Add purpose and trust to SSL_CTX and SSL and functions 18760 to set them. If not set then assume SSL clients will verify SSL servers 18761 and vice versa. 18762 18763 Two new options to the verify program: -untrusted allows a set of 18764 untrusted certificates to be passed in and -purpose which sets the 18765 intended purpose of the certificate. If a purpose is set then the 18766 new chain verify code is used to check extension consistency. 18767 18768 *Steve Henson* 18769 18770 * Support for the authority information access extension. 18771 18772 *Steve Henson* 18773 18774 * Modify RSA and DSA PEM read routines to transparently handle 18775 PKCS#8 format private keys. New *_PUBKEY_* functions that handle 18776 public keys in a format compatible with certificate 18777 SubjectPublicKeyInfo structures. Unfortunately there were already 18778 functions called *_PublicKey_* which used various odd formats so 18779 these are retained for compatibility: however the DSA variants were 18780 never in a public release so they have been deleted. Changed dsa/rsa 18781 utilities to handle the new format: note no releases ever handled public 18782 keys so we should be OK. 18783 18784 The primary motivation for this change is to avoid the same fiasco 18785 that dogs private keys: there are several incompatible private key 18786 formats some of which are standard and some OpenSSL specific and 18787 require various evil hacks to allow partial transparent handling and 18788 even then it doesn't work with DER formats. Given the option anything 18789 other than PKCS#8 should be dumped: but the other formats have to 18790 stay in the name of compatibility. 18791 18792 With public keys and the benefit of hindsight one standard format 18793 is used which works with EVP_PKEY, RSA or DSA structures: though 18794 it clearly returns an error if you try to read the wrong kind of key. 18795 18796 Added a -pubkey option to the 'x509' utility to output the public key. 18797 Also rename the `EVP_PKEY_get_*()` to `EVP_PKEY_rget_*()` 18798 (renamed to `EVP_PKEY_get1_*()` in the OpenSSL 0.9.5 release) and add 18799 `EVP_PKEY_rset_*()` functions (renamed to `EVP_PKEY_set1_*()`) 18800 that do the same as the `EVP_PKEY_assign_*()` except they up the 18801 reference count of the added key (they don't "swallow" the 18802 supplied key). 18803 18804 *Steve Henson* 18805 18806 * Fixes to crypto/x509/by_file.c the code to read in certificates and 18807 CRLs would fail if the file contained no certificates or no CRLs: 18808 added a new function to read in both types and return the number 18809 read: this means that if none are read it will be an error. The 18810 DER versions of the certificate and CRL reader would always fail 18811 because it isn't possible to mix certificates and CRLs in DER format 18812 without choking one or the other routine. Changed this to just read 18813 a certificate: this is the best we can do. Also modified the code 18814 in `apps/verify.c` to take notice of return codes: it was previously 18815 attempting to read in certificates from NULL pointers and ignoring 18816 any errors: this is one reason why the cert and CRL reader seemed 18817 to work. It doesn't check return codes from the default certificate 18818 routines: these may well fail if the certificates aren't installed. 18819 18820 *Steve Henson* 18821 18822 * Code to support otherName option in GeneralName. 18823 18824 *Steve Henson* 18825 18826 * First update to verify code. Change the verify utility 18827 so it warns if it is passed a self signed certificate: 18828 for consistency with the normal behaviour. X509_verify 18829 has been modified to it will now verify a self signed 18830 certificate if *exactly* the same certificate appears 18831 in the store: it was previously impossible to trust a 18832 single self signed certificate. This means that: 18833 openssl verify ss.pem 18834 now gives a warning about a self signed certificate but 18835 openssl verify -CAfile ss.pem ss.pem 18836 is OK. 18837 18838 *Steve Henson* 18839 18840 * For servers, store verify_result in SSL_SESSION data structure 18841 (and add it to external session representation). 18842 This is needed when client certificate verifications fails, 18843 but an application-provided verification callback (set by 18844 SSL_CTX_set_cert_verify_callback) allows accepting the session 18845 anyway (i.e. leaves x509_store_ctx->error != X509_V_OK 18846 but returns 1): When the session is reused, we have to set 18847 ssl->verify_result to the appropriate error code to avoid 18848 security holes. 18849 18850 *Bodo Moeller, problem pointed out by Lutz Jaenicke* 18851 18852 * Fix a bug in the new PKCS#7 code: it didn't consider the 18853 case in PKCS7_dataInit() where the signed PKCS7 structure 18854 didn't contain any existing data because it was being created. 18855 18856 *Po-Cheng Chen <pocheng@nst.com.tw>, slightly modified by Steve Henson* 18857 18858 * Add a salt to the key derivation routines in enc.c. This 18859 forms the first 8 bytes of the encrypted file. Also add a 18860 -S option to allow a salt to be input on the command line. 18861 18862 *Steve Henson* 18863 18864 * New function X509_cmp(). Oddly enough there wasn't a function 18865 to compare two certificates. We do this by working out the SHA1 18866 hash and comparing that. X509_cmp() will be needed by the trust 18867 code. 18868 18869 *Steve Henson* 18870 18871 * SSL_get1_session() is like SSL_get_session(), but increments 18872 the reference count in the SSL_SESSION returned. 18873 18874 *Geoff Thorpe <geoff@eu.c2.net>* 18875 18876 * Fix for 'req': it was adding a null to request attributes. 18877 Also change the X509_LOOKUP and X509_INFO code to handle 18878 certificate auxiliary information. 18879 18880 *Steve Henson* 18881 18882 * Add support for 40 and 64 bit RC2 and RC4 algorithms: document 18883 the 'enc' command. 18884 18885 *Steve Henson* 18886 18887 * Add the possibility to add extra information to the memory leak 18888 detecting output, to form tracebacks, showing from where each 18889 allocation was originated: CRYPTO_push_info("constant string") adds 18890 the string plus current file name and line number to a per-thread 18891 stack, CRYPTO_pop_info() does the obvious, CRYPTO_remove_all_info() 18892 is like calling CYRPTO_pop_info() until the stack is empty. 18893 Also updated memory leak detection code to be multi-thread-safe. 18894 18895 *Richard Levitte* 18896 18897 * Add options -text and -noout to pkcs7 utility and delete the 18898 encryption options which never did anything. Update docs. 18899 18900 *Steve Henson* 18901 18902 * Add options to some of the utilities to allow the pass phrase 18903 to be included on either the command line (not recommended on 18904 OSes like Unix) or read from the environment. Update the 18905 manpages and fix a few bugs. 18906 18907 *Steve Henson* 18908 18909 * Add a few manpages for some of the openssl commands. 18910 18911 *Steve Henson* 18912 18913 * Fix the -revoke option in ca. It was freeing up memory twice, 18914 leaking and not finding already revoked certificates. 18915 18916 *Steve Henson* 18917 18918 * Extensive changes to support certificate auxiliary information. 18919 This involves the use of X509_CERT_AUX structure and X509_AUX 18920 functions. An X509_AUX function such as PEM_read_X509_AUX() 18921 can still read in a certificate file in the usual way but it 18922 will also read in any additional "auxiliary information". By 18923 doing things this way a fair degree of compatibility can be 18924 retained: existing certificates can have this information added 18925 using the new 'x509' options. 18926 18927 Current auxiliary information includes an "alias" and some trust 18928 settings. The trust settings will ultimately be used in enhanced 18929 certificate chain verification routines: currently a certificate 18930 can only be trusted if it is self signed and then it is trusted 18931 for all purposes. 18932 18933 *Steve Henson* 18934 18935 * Fix assembler for Alpha (tested only on DEC OSF not Linux or `*BSD`). 18936 The problem was that one of the replacement routines had not been working 18937 since SSLeay releases. For now the offending routine has been replaced 18938 with non-optimised assembler. Even so, this now gives around 95% 18939 performance improvement for 1024 bit RSA signs. 18940 18941 *Mark Cox* 18942 18943 * Hack to fix PKCS#7 decryption when used with some unorthodox RC2 18944 handling. Most clients have the effective key size in bits equal to 18945 the key length in bits: so a 40 bit RC2 key uses a 40 bit (5 byte) key. 18946 A few however don't do this and instead use the size of the decrypted key 18947 to determine the RC2 key length and the AlgorithmIdentifier to determine 18948 the effective key length. In this case the effective key length can still 18949 be 40 bits but the key length can be 168 bits for example. This is fixed 18950 by manually forcing an RC2 key into the EVP_PKEY structure because the 18951 EVP code can't currently handle unusual RC2 key sizes: it always assumes 18952 the key length and effective key length are equal. 18953 18954 *Steve Henson* 18955 18956 * Add a bunch of functions that should simplify the creation of 18957 X509_NAME structures. Now you should be able to do: 18958 X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC, "Steve", -1, -1, 0); 18959 and have it automatically work out the correct field type and fill in 18960 the structures. The more adventurous can try: 18961 X509_NAME_add_entry_by_txt(nm, field, MBSTRING_UTF8, str, -1, -1, 0); 18962 and it will (hopefully) work out the correct multibyte encoding. 18963 18964 *Steve Henson* 18965 18966 * Change the 'req' utility to use the new field handling and multibyte 18967 copy routines. Before the DN field creation was handled in an ad hoc 18968 way in req, ca, and x509 which was rather broken and didn't support 18969 BMPStrings or UTF8Strings. Since some software doesn't implement 18970 BMPStrings or UTF8Strings yet, they can be enabled using the config file 18971 using the dirstring_type option. See the new comment in the default 18972 openssl.cnf for more info. 18973 18974 *Steve Henson* 18975 18976 * Make crypto/rand/md_rand.c more robust: 18977 - Assure unique random numbers after fork(). 18978 - Make sure that concurrent threads access the global counter and 18979 md serializably so that we never lose entropy in them 18980 or use exactly the same state in multiple threads. 18981 Access to the large state is not always serializable because 18982 the additional locking could be a performance killer, and 18983 md should be large enough anyway. 18984 18985 *Bodo Moeller* 18986 18987 * New file `apps/app_rand.c` with commonly needed functionality 18988 for handling the random seed file. 18989 18990 Use the random seed file in some applications that previously did not: 18991 ca, 18992 dsaparam -genkey (which also ignored its '-rand' option), 18993 s_client, 18994 s_server, 18995 x509 (when signing). 18996 Except on systems with /dev/urandom, it is crucial to have a random 18997 seed file at least for key creation, DSA signing, and for DH exchanges; 18998 for RSA signatures we could do without one. 18999 19000 gendh and gendsa (unlike genrsa) used to read only the first byte 19001 of each file listed in the '-rand' option. The function as previously 19002 found in genrsa is now in app_rand.c and is used by all programs 19003 that support '-rand'. 19004 19005 *Bodo Moeller* 19006 19007 * In RAND_write_file, use mode 0600 for creating files; 19008 don't just chmod when it may be too late. 19009 19010 *Bodo Moeller* 19011 19012 * Report an error from X509_STORE_load_locations 19013 when X509_LOOKUP_load_file or X509_LOOKUP_add_dir failed. 19014 19015 *Bill Perry* 19016 19017 * New function ASN1_mbstring_copy() this copies a string in either 19018 ASCII, Unicode, Universal (4 bytes per character) or UTF8 format 19019 into an ASN1_STRING type. A mask of permissible types is passed 19020 and it chooses the "minimal" type to use or an error if not type 19021 is suitable. 19022 19023 *Steve Henson* 19024 19025 * Add function equivalents to the various macros in asn1.h. The old 19026 macros are retained with an `M_` prefix. Code inside the library can 19027 use the `M_` macros. External code (including the openssl utility) 19028 should *NOT* in order to be "shared library friendly". 19029 19030 *Steve Henson* 19031 19032 * Add various functions that can check a certificate's extensions 19033 to see if it usable for various purposes such as SSL client, 19034 server or S/MIME and CAs of these types. This is currently 19035 VERY EXPERIMENTAL but will ultimately be used for certificate chain 19036 verification. Also added a -purpose flag to x509 utility to 19037 print out all the purposes. 19038 19039 *Steve Henson* 19040 19041 * Add a CRYPTO_EX_DATA to X509 certificate structure and associated 19042 functions. 19043 19044 *Steve Henson* 19045 19046 * New `X509V3_{X509,CRL,REVOKED}_get_d2i()` functions. These will search 19047 for, obtain and decode and extension and obtain its critical flag. 19048 This allows all the necessary extension code to be handled in a 19049 single function call. 19050 19051 *Steve Henson* 19052 19053 * RC4 tune-up featuring 30-40% performance improvement on most RISC 19054 platforms. See crypto/rc4/rc4_enc.c for further details. 19055 19056 *Andy Polyakov* 19057 19058 * New -noout option to asn1parse. This causes no output to be produced 19059 its main use is when combined with -strparse and -out to extract data 19060 from a file (which may not be in ASN.1 format). 19061 19062 *Steve Henson* 19063 19064 * Fix for pkcs12 program. It was hashing an invalid certificate pointer 19065 when producing the local key id. 19066 19067 *Richard Levitte <levitte@stacken.kth.se>* 19068 19069 * New option -dhparam in s_server. This allows a DH parameter file to be 19070 stated explicitly. If it is not stated then it tries the first server 19071 certificate file. The previous behaviour hard coded the filename 19072 "server.pem". 19073 19074 *Steve Henson* 19075 19076 * Add -pubin and -pubout options to the rsa and dsa commands. These allow 19077 a public key to be input or output. For example: 19078 openssl rsa -in key.pem -pubout -out pubkey.pem 19079 Also added necessary DSA public key functions to handle this. 19080 19081 *Steve Henson* 19082 19083 * Fix so PKCS7_dataVerify() doesn't crash if no certificates are contained 19084 in the message. This was handled by allowing 19085 X509_find_by_issuer_and_serial() to tolerate a NULL passed to it. 19086 19087 *Steve Henson, reported by Sampo Kellomaki <sampo@mail.neuronio.pt>* 19088 19089 * Fix for bug in d2i_ASN1_bytes(): other ASN1 functions add an extra null 19090 to the end of the strings whereas this didn't. This would cause problems 19091 if strings read with d2i_ASN1_bytes() were later modified. 19092 19093 *Steve Henson, reported by Arne Ansper <arne@ats.cyber.ee>* 19094 19095 * Fix for base64 decode bug. When a base64 bio reads only one line of 19096 data and it contains EOF it will end up returning an error. This is 19097 caused by input 46 bytes long. The cause is due to the way base64 19098 BIOs find the start of base64 encoded data. They do this by trying a 19099 trial decode on each line until they find one that works. When they 19100 do a flag is set and it starts again knowing it can pass all the 19101 data directly through the decoder. Unfortunately it doesn't reset 19102 the context it uses. This means that if EOF is reached an attempt 19103 is made to pass two EOFs through the context and this causes the 19104 resulting error. This can also cause other problems as well. As is 19105 usual with these problems it takes *ages* to find and the fix is 19106 trivial: move one line. 19107 19108 *Steve Henson, reported by ian@uns.ns.ac.yu (Ivan Nejgebauer)* 19109 19110 * Ugly workaround to get s_client and s_server working under Windows. The 19111 old code wouldn't work because it needed to select() on sockets and the 19112 tty (for keypresses and to see if data could be written). Win32 only 19113 supports select() on sockets so we select() with a 1s timeout on the 19114 sockets and then see if any characters are waiting to be read, if none 19115 are present then we retry, we also assume we can always write data to 19116 the tty. This isn't nice because the code then blocks until we've 19117 received a complete line of data and it is effectively polling the 19118 keyboard at 1s intervals: however it's quite a bit better than not 19119 working at all :-) A dedicated Windows application might handle this 19120 with an event loop for example. 19121 19122 *Steve Henson* 19123 19124 * Enhance RSA_METHOD structure. Now there are two extra methods, rsa_sign 19125 and rsa_verify. When the RSA_FLAGS_SIGN_VER option is set these functions 19126 will be called when RSA_sign() and RSA_verify() are used. This is useful 19127 if rsa_pub_dec() and rsa_priv_enc() equivalents are not available. 19128 For this to work properly RSA_public_decrypt() and RSA_private_encrypt() 19129 should *not* be used: RSA_sign() and RSA_verify() must be used instead. 19130 This necessitated the support of an extra signature type NID_md5_sha1 19131 for SSL signatures and modifications to the SSL library to use it instead 19132 of calling RSA_public_decrypt() and RSA_private_encrypt(). 19133 19134 *Steve Henson* 19135 19136 * Add new -verify -CAfile and -CApath options to the crl program, these 19137 will lookup a CRL issuers certificate and verify the signature in a 19138 similar way to the verify program. Tidy up the crl program so it 19139 no longer accesses structures directly. Make the ASN1 CRL parsing a bit 19140 less strict. It will now permit CRL extensions even if it is not 19141 a V2 CRL: this will allow it to tolerate some broken CRLs. 19142 19143 *Steve Henson* 19144 19145 * Initialize all non-automatic variables each time one of the openssl 19146 sub-programs is started (this is necessary as they may be started 19147 multiple times from the "OpenSSL>" prompt). 19148 19149 *Lennart Bang, Bodo Moeller* 19150 19151 * Preliminary compilation option RSA_NULL which disables RSA crypto without 19152 removing all other RSA functionality (this is what NO_RSA does). This 19153 is so (for example) those in the US can disable those operations covered 19154 by the RSA patent while allowing storage and parsing of RSA keys and RSA 19155 key generation. 19156 19157 *Steve Henson* 19158 19159 * Non-copying interface to BIO pairs. 19160 (still largely untested) 19161 19162 *Bodo Moeller* 19163 19164 * New function ASN1_tag2str() to convert an ASN1 tag to a descriptive 19165 ASCII string. This was handled independently in various places before. 19166 19167 *Steve Henson* 19168 19169 * New functions UTF8_getc() and UTF8_putc() that parse and generate 19170 UTF8 strings a character at a time. 19171 19172 *Steve Henson* 19173 19174 * Use client_version from client hello to select the protocol 19175 (s23_srvr.c) and for RSA client key exchange verification 19176 (s3_srvr.c), as required by the SSL 3.0/TLS 1.0 specifications. 19177 19178 *Bodo Moeller* 19179 19180 * Add various utility functions to handle SPKACs, these were previously 19181 handled by poking round in the structure internals. Added new function 19182 NETSCAPE_SPKI_print() to print out SPKAC and a new utility 'spkac' to 19183 print, verify and generate SPKACs. Based on an original idea from 19184 Massimiliano Pala <madwolf@comune.modena.it> but extensively modified. 19185 19186 *Steve Henson* 19187 19188 * RIPEMD160 is operational on all platforms and is back in 'make test'. 19189 19190 *Andy Polyakov* 19191 19192 * Allow the config file extension section to be overwritten on the 19193 command line. Based on an original idea from Massimiliano Pala 19194 <madwolf@comune.modena.it>. The new option is called -extensions 19195 and can be applied to ca, req and x509. Also -reqexts to override 19196 the request extensions in req and -crlexts to override the crl extensions 19197 in ca. 19198 19199 *Steve Henson* 19200 19201 * Add new feature to the SPKAC handling in ca. Now you can include 19202 the same field multiple times by preceding it by "XXXX." for example: 19203 1.OU="Unit name 1" 19204 2.OU="Unit name 2" 19205 this is the same syntax as used in the req config file. 19206 19207 *Steve Henson* 19208 19209 * Allow certificate extensions to be added to certificate requests. These 19210 are specified in a 'req_extensions' option of the req section of the 19211 config file. They can be printed out with the -text option to req but 19212 are otherwise ignored at present. 19213 19214 *Steve Henson* 19215 19216 * Fix a horrible bug in enc_read() in crypto/evp/bio_enc.c: if the first 19217 data read consists of only the final block it would not decrypted because 19218 EVP_CipherUpdate() would correctly report zero bytes had been decrypted. 19219 A misplaced 'break' also meant the decrypted final block might not be 19220 copied until the next read. 19221 19222 *Steve Henson* 19223 19224 * Initial support for DH_METHOD. Again based on RSA_METHOD. Also added 19225 a few extra parameters to the DH structure: these will be useful if 19226 for example we want the value of 'q' or implement X9.42 DH. 19227 19228 *Steve Henson* 19229 19230 * Initial support for DSA_METHOD. This is based on the RSA_METHOD and 19231 provides hooks that allow the default DSA functions or functions on a 19232 "per key" basis to be replaced. This allows hardware acceleration and 19233 hardware key storage to be handled without major modification to the 19234 library. Also added low-level modexp hooks and CRYPTO_EX structure and 19235 associated functions. 19236 19237 *Steve Henson* 19238 19239 * Add a new flag to memory BIOs, BIO_FLAG_MEM_RDONLY. This marks the BIO 19240 as "read only": it can't be written to and the buffer it points to will 19241 not be freed. Reading from a read only BIO is much more efficient than 19242 a normal memory BIO. This was added because there are several times when 19243 an area of memory needs to be read from a BIO. The previous method was 19244 to create a memory BIO and write the data to it, this results in two 19245 copies of the data and an O(n^2) reading algorithm. There is a new 19246 function BIO_new_mem_buf() which creates a read only memory BIO from 19247 an area of memory. Also modified the PKCS#7 routines to use read only 19248 memory BIOs. 19249 19250 *Steve Henson* 19251 19252 * Bugfix: ssl23_get_client_hello did not work properly when called in 19253 state SSL23_ST_SR_CLNT_HELLO_B, i.e. when the first 7 bytes of 19254 an SSLv2-compatible client hello for SSLv3 or TLSv1 could be read, 19255 but a retry condition occurred while trying to read the rest. 19256 19257 *Bodo Moeller* 19258 19259 * The PKCS7_ENC_CONTENT_new() function was setting the content type as 19260 NID_pkcs7_encrypted by default: this was wrong since this should almost 19261 always be NID_pkcs7_data. Also modified the PKCS7_set_type() to handle 19262 the encrypted data type: this is a more sensible place to put it and it 19263 allows the PKCS#12 code to be tidied up that duplicated this 19264 functionality. 19265 19266 *Steve Henson* 19267 19268 * Changed obj_dat.pl script so it takes its input and output files on 19269 the command line. This should avoid shell escape redirection problems 19270 under Win32. 19271 19272 *Steve Henson* 19273 19274 * Initial support for certificate extension requests, these are included 19275 in things like Xenroll certificate requests. Included functions to allow 19276 extensions to be obtained and added. 19277 19278 *Steve Henson* 19279 19280 * -crlf option to s_client and s_server for sending newlines as 19281 CRLF (as required by many protocols). 19282 19283 *Bodo Moeller* 19284 19285### Changes between 0.9.3a and 0.9.4 [09 Aug 1999] 19286 19287 * Install libRSAglue.a when OpenSSL is built with RSAref. 19288 19289 *Ralf S. Engelschall* 19290 19291 * A few more `#ifndef NO_FP_API / #endif` pairs for consistency. 19292 19293 *Andrija Antonijevic <TheAntony2@bigfoot.com>* 19294 19295 * Fix -startdate and -enddate (which was missing) arguments to 'ca' 19296 program. 19297 19298 *Steve Henson* 19299 19300 * New function DSA_dup_DH, which duplicates DSA parameters/keys as 19301 DH parameters/keys (q is lost during that conversion, but the resulting 19302 DH parameters contain its length). 19303 19304 For 1024-bit p, DSA_generate_parameters followed by DSA_dup_DH is 19305 much faster than DH_generate_parameters (which creates parameters 19306 where `p = 2*q + 1`), and also the smaller q makes DH computations 19307 much more efficient (160-bit exponentiation instead of 1024-bit 19308 exponentiation); so this provides a convenient way to support DHE 19309 ciphersuites in SSL/TLS servers (see ssl/ssltest.c). It is of 19310 utter importance to use 19311 SSL_CTX_set_options(s_ctx, SSL_OP_SINGLE_DH_USE); 19312 or 19313 SSL_set_options(s_ctx, SSL_OP_SINGLE_DH_USE); 19314 when such DH parameters are used, because otherwise small subgroup 19315 attacks may become possible! 19316 19317 *Bodo Moeller* 19318 19319 * Avoid memory leak in i2d_DHparams. 19320 19321 *Bodo Moeller* 19322 19323 * Allow the -k option to be used more than once in the enc program: 19324 this allows the same encrypted message to be read by multiple recipients. 19325 19326 *Steve Henson* 19327 19328 * New function OBJ_obj2txt(buf, buf_len, a, no_name), this converts 19329 an ASN1_OBJECT to a text string. If the "no_name" parameter is set then 19330 it will always use the numerical form of the OID, even if it has a short 19331 or long name. 19332 19333 *Steve Henson* 19334 19335 * Added an extra RSA flag: RSA_FLAG_EXT_PKEY. Previously the rsa_mod_exp 19336 method only got called if p,q,dmp1,dmq1,iqmp components were present, 19337 otherwise bn_mod_exp was called. In the case of hardware keys for example 19338 no private key components need be present and it might store extra data 19339 in the RSA structure, which cannot be accessed from bn_mod_exp. 19340 By setting RSA_FLAG_EXT_PKEY rsa_mod_exp will always be called for 19341 private key operations. 19342 19343 *Steve Henson* 19344 19345 * Added support for SPARC Linux. 19346 19347 *Andy Polyakov* 19348 19349 * pem_password_cb function type incompatibly changed from 19350 typedef int pem_password_cb(char *buf, int size, int rwflag); 19351 to 19352 ....(char *buf, int size, int rwflag, void *userdata); 19353 so that applications can pass data to their callbacks: 19354 The `PEM[_ASN1]_{read,write}...` functions and macros now take an 19355 additional void * argument, which is just handed through whenever 19356 the password callback is called. 19357 19358 *Damien Miller <dmiller@ilogic.com.au>; tiny changes by Bodo Moeller* 19359 19360 New function SSL_CTX_set_default_passwd_cb_userdata. 19361 19362 Compatibility note: As many C implementations push function arguments 19363 onto the stack in reverse order, the new library version is likely to 19364 interoperate with programs that have been compiled with the old 19365 pem_password_cb definition (PEM_whatever takes some data that 19366 happens to be on the stack as its last argument, and the callback 19367 just ignores this garbage); but there is no guarantee whatsoever that 19368 this will work. 19369 19370 * The -DPLATFORM="\"$(PLATFORM)\"" definition and the similar -DCFLAGS=... 19371 (both in crypto/Makefile.ssl for use by crypto/cversion.c) caused 19372 problems not only on Windows, but also on some Unix platforms. 19373 To avoid problematic command lines, these definitions are now in an 19374 auto-generated file crypto/buildinf.h (created by crypto/Makefile.ssl 19375 for standard "make" builds, by util/mk1mf.pl for "mk1mf" builds). 19376 19377 *Bodo Moeller* 19378 19379 * MIPS III/IV assembler module is reimplemented. 19380 19381 *Andy Polyakov* 19382 19383 * More DES library cleanups: remove references to srand/rand and 19384 delete an unused file. 19385 19386 *Ulf Möller* 19387 19388 * Add support for the free Netwide assembler (NASM) under Win32, 19389 since not many people have MASM (ml) and it can be hard to obtain. 19390 This is currently experimental but it seems to work OK and pass all 19391 the tests. Check out INSTALL.W32 for info. 19392 19393 *Steve Henson* 19394 19395 * Fix memory leaks in s3_clnt.c: All non-anonymous SSL3/TLS1 connections 19396 without temporary keys kept an extra copy of the server key, 19397 and connections with temporary keys did not free everything in case 19398 of an error. 19399 19400 *Bodo Moeller* 19401 19402 * New function RSA_check_key and new openssl rsa option -check 19403 for verifying the consistency of RSA keys. 19404 19405 *Ulf Moeller, Bodo Moeller* 19406 19407 * Various changes to make Win32 compile work: 19408 1. Casts to avoid "loss of data" warnings in p5_crpt2.c 19409 2. Change unsigned int to int in b_dump.c to avoid "signed/unsigned 19410 comparison" warnings. 19411 3. Add `sk_<TYPE>_sort` to DEF file generator and do make update. 19412 19413 *Steve Henson* 19414 19415 * Add a debugging option to PKCS#5 v2 key generation function: when 19416 you #define DEBUG_PKCS5V2 passwords, salts, iteration counts and 19417 derived keys are printed to stderr. 19418 19419 *Steve Henson* 19420 19421 * Copy the flags in ASN1_STRING_dup(). 19422 19423 *Roman E. Pavlov <pre@mo.msk.ru>* 19424 19425 * The x509 application mishandled signing requests containing DSA 19426 keys when the signing key was also DSA and the parameters didn't match. 19427 19428 It was supposed to omit the parameters when they matched the signing key: 19429 the verifying software was then supposed to automatically use the CA's 19430 parameters if they were absent from the end user certificate. 19431 19432 Omitting parameters is no longer recommended. The test was also 19433 the wrong way round! This was probably due to unusual behaviour in 19434 EVP_cmp_parameters() which returns 1 if the parameters match. 19435 This meant that parameters were omitted when they *didn't* match and 19436 the certificate was useless. Certificates signed with 'ca' didn't have 19437 this bug. 19438 19439 *Steve Henson, reported by Doug Erickson <Doug.Erickson@Part.NET>* 19440 19441 * Memory leak checking (-DCRYPTO_MDEBUG) had some problems. 19442 The interface is as follows: 19443 Applications can use 19444 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) aka MemCheck_start(), 19445 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) aka MemCheck_stop(); 19446 "off" is now the default. 19447 The library internally uses 19448 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) aka MemCheck_off(), 19449 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) aka MemCheck_on() 19450 to disable memory-checking temporarily. 19451 19452 Some inconsistent states that previously were possible (and were 19453 even the default) are now avoided. 19454 19455 -DCRYPTO_MDEBUG_TIME is new and additionally stores the current time 19456 with each memory chunk allocated; this is occasionally more helpful 19457 than just having a counter. 19458 19459 -DCRYPTO_MDEBUG_THREAD is also new and adds the thread ID. 19460 19461 -DCRYPTO_MDEBUG_ALL enables all of the above, plus any future 19462 extensions. 19463 19464 *Bodo Moeller* 19465 19466 * Introduce "mode" for SSL structures (with defaults in SSL_CTX), 19467 which largely parallels "options", but is for changing API behaviour, 19468 whereas "options" are about protocol behaviour. 19469 Initial "mode" flags are: 19470 19471 SSL_MODE_ENABLE_PARTIAL_WRITE Allow SSL_write to report success when 19472 a single record has been written. 19473 SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER Don't insist that SSL_write 19474 retries use the same buffer location. 19475 (But all of the contents must be 19476 copied!) 19477 19478 *Bodo Moeller* 19479 19480 * Bugfix: SSL_set_options ignored its parameter, only SSL_CTX_set_options 19481 worked. 19482 19483 * Fix problems with no-hmac etc. 19484 19485 *Ulf Möller, pointed out by Brian Wellington <bwelling@tislabs.com>* 19486 19487 * New functions RSA_get_default_method(), RSA_set_method() and 19488 RSA_get_method(). These allows replacement of RSA_METHODs without having 19489 to mess around with the internals of an RSA structure. 19490 19491 *Steve Henson* 19492 19493 * Fix memory leaks in DSA_do_sign and DSA_is_prime. 19494 Also really enable memory leak checks in openssl.c and in some 19495 test programs. 19496 19497 *Chad C. Mulligan, Bodo Moeller* 19498 19499 * Fix a bug in d2i_ASN1_INTEGER() and i2d_ASN1_INTEGER() which can mess 19500 up the length of negative integers. This has now been simplified to just 19501 store the length when it is first determined and use it later, rather 19502 than trying to keep track of where data is copied and updating it to 19503 point to the end. 19504 *Steve Henson, reported by Brien Wheeler <bwheeler@authentica-security.com>* 19505 19506 * Add a new function PKCS7_signatureVerify. This allows the verification 19507 of a PKCS#7 signature but with the signing certificate passed to the 19508 function itself. This contrasts with PKCS7_dataVerify which assumes the 19509 certificate is present in the PKCS#7 structure. This isn't always the 19510 case: certificates can be omitted from a PKCS#7 structure and be 19511 distributed by "out of band" means (such as a certificate database). 19512 19513 *Steve Henson* 19514 19515 * Complete the `PEM_*` macros with DECLARE_PEM versions to replace the 19516 function prototypes in pem.h, also change util/mkdef.pl to add the 19517 necessary function names. 19518 19519 *Steve Henson* 19520 19521 * mk1mf.pl (used by Windows builds) did not properly read the 19522 options set by Configure in the top level Makefile, and Configure 19523 was not even able to write more than one option correctly. 19524 Fixed, now "no-idea no-rc5 -DCRYPTO_MDEBUG" etc. works as intended. 19525 19526 *Bodo Moeller* 19527 19528 * New functions CONF_load_bio() and CONF_load_fp() to allow a config 19529 file to be loaded from a BIO or FILE pointer. The BIO version will 19530 for example allow memory BIOs to contain config info. 19531 19532 *Steve Henson* 19533 19534 * New function "CRYPTO_num_locks" that returns CRYPTO_NUM_LOCKS. 19535 Whoever hopes to achieve shared-library compatibility across versions 19536 must use this, not the compile-time macro. 19537 (Exercise 0.9.4: Which is the minimum library version required by 19538 such programs?) 19539 Note: All this applies only to multi-threaded programs, others don't 19540 need locks. 19541 19542 *Bodo Moeller* 19543 19544 * Add missing case to s3_clnt.c state machine -- one of the new SSL tests 19545 through a BIO pair triggered the default case, i.e. 19546 SSLerr(...,SSL_R_UNKNOWN_STATE). 19547 19548 *Bodo Moeller* 19549 19550 * New "BIO pair" concept (crypto/bio/bss_bio.c) so that applications 19551 can use the SSL library even if none of the specific BIOs is 19552 appropriate. 19553 19554 *Bodo Moeller* 19555 19556 * Fix a bug in i2d_DSAPublicKey() which meant it returned the wrong value 19557 for the encoded length. 19558 19559 *Jeon KyoungHo <khjeon@sds.samsung.co.kr>* 19560 19561 * Add initial documentation of the X509V3 functions. 19562 19563 *Steve Henson* 19564 19565 * Add a new pair of functions PEM_write_PKCS8PrivateKey() and 19566 PEM_write_bio_PKCS8PrivateKey() that are equivalent to 19567 PEM_write_PrivateKey() and PEM_write_bio_PrivateKey() but use the more 19568 secure PKCS#8 private key format with a high iteration count. 19569 19570 *Steve Henson* 19571 19572 * Fix determination of Perl interpreter: A perl or perl5 19573 *directory* in $PATH was also accepted as the interpreter. 19574 19575 *Ralf S. Engelschall* 19576 19577 * Fix demos/sign/sign.c: well there wasn't anything strictly speaking 19578 wrong with it but it was very old and did things like calling 19579 PEM_ASN1_read() directly and used MD5 for the hash not to mention some 19580 unusual formatting. 19581 19582 *Steve Henson* 19583 19584 * Fix demos/selfsign.c: it used obsolete and deleted functions, changed 19585 to use the new extension code. 19586 19587 *Steve Henson* 19588 19589 * Implement the PEM_read/PEM_write functions in crypto/pem/pem_all.c 19590 with macros. This should make it easier to change their form, add extra 19591 arguments etc. Fix a few PEM prototypes which didn't have cipher as a 19592 constant. 19593 19594 *Steve Henson* 19595 19596 * Add to configuration table a new entry that can specify an alternative 19597 name for unistd.h (for pre-POSIX systems); we need this for NeXTstep, 19598 according to Mark Crispin <MRC@Panda.COM>. 19599 19600 *Bodo Moeller* 19601 19602 * DES CBC did not update the IV. Weird. 19603 19604 *Ben Laurie* 19605lse 19606 des_cbc_encrypt does not update the IV, but des_ncbc_encrypt does. 19607 Changing the behaviour of the former might break existing programs -- 19608 where IV updating is needed, des_ncbc_encrypt can be used. 19609ndif 19610 19611 * When bntest is run from "make test" it drives bc to check its 19612 calculations, as well as internally checking them. If an internal check 19613 fails, it needs to cause bc to give a non-zero result or make test carries 19614 on without noticing the failure. Fixed. 19615 19616 *Ben Laurie* 19617 19618 * DES library cleanups. 19619 19620 *Ulf Möller* 19621 19622 * Add support for PKCS#5 v2.0 PBE algorithms. This will permit PKCS#8 to be 19623 used with any cipher unlike PKCS#5 v1.5 which can at most handle 64 bit 19624 ciphers. NOTE: although the key derivation function has been verified 19625 against some published test vectors it has not been extensively tested 19626 yet. Added a -v2 "cipher" option to pkcs8 application to allow the use 19627 of v2.0. 19628 19629 *Steve Henson* 19630 19631 * Instead of "mkdir -p", which is not fully portable, use new 19632 Perl script "util/mkdir-p.pl". 19633 19634 *Bodo Moeller* 19635 19636 * Rewrite the way password based encryption (PBE) is handled. It used to 19637 assume that the ASN1 AlgorithmIdentifier parameter was a PBEParameter 19638 structure. This was true for the PKCS#5 v1.5 and PKCS#12 PBE algorithms 19639 but doesn't apply to PKCS#5 v2.0 where it can be something else. Now 19640 the 'parameter' field of the AlgorithmIdentifier is passed to the 19641 underlying key generation function so it must do its own ASN1 parsing. 19642 This has also changed the EVP_PBE_CipherInit() function which now has a 19643 'parameter' argument instead of literal salt and iteration count values 19644 and the function EVP_PBE_ALGOR_CipherInit() has been deleted. 19645 19646 *Steve Henson* 19647 19648 * Support for PKCS#5 v1.5 compatible password based encryption algorithms 19649 and PKCS#8 functionality. New 'pkcs8' application linked to openssl. 19650 Needed to change the PEM_STRING_EVP_PKEY value which was just "PRIVATE 19651 KEY" because this clashed with PKCS#8 unencrypted string. Since this 19652 value was just used as a "magic string" and not used directly its 19653 value doesn't matter. 19654 19655 *Steve Henson* 19656 19657 * Introduce some semblance of const correctness to BN. Shame C doesn't 19658 support mutable. 19659 19660 *Ben Laurie* 19661 19662 * "linux-sparc64" configuration (ultrapenguin). 19663 19664 *Ray Miller <ray.miller@oucs.ox.ac.uk>* 19665 "linux-sparc" configuration. 19666 19667 *Christian Forster <fo@hawo.stw.uni-erlangen.de>* 19668 19669 * config now generates no-xxx options for missing ciphers. 19670 19671 *Ulf Möller* 19672 19673 * Support the EBCDIC character set (work in progress). 19674 File ebcdic.c not yet included because it has a different license. 19675 19676 *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>* 19677 19678 * Support BS2000/OSD-POSIX. 19679 19680 *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>* 19681 19682 * Make callbacks for key generation use `void *` instead of `char *`. 19683 19684 *Ben Laurie* 19685 19686 * Make S/MIME samples compile (not yet tested). 19687 19688 *Ben Laurie* 19689 19690 * Additional typesafe stacks. 19691 19692 *Ben Laurie* 19693 19694 * New configuration variants "bsdi-elf-gcc" (BSD/OS 4.x). 19695 19696 *Bodo Moeller* 19697 19698### Changes between 0.9.3 and 0.9.3a [29 May 1999] 19699 19700 * New configuration variant "sco5-gcc". 19701 19702 * Updated some demos. 19703 19704 *Sean O Riordain, Wade Scholine* 19705 19706 * Add missing BIO_free at exit of pkcs12 application. 19707 19708 *Wu Zhigang* 19709 19710 * Fix memory leak in conf.c. 19711 19712 *Steve Henson* 19713 19714 * Updates for Win32 to assembler version of MD5. 19715 19716 *Steve Henson* 19717 19718 * Set #! path to perl in `apps/der_chop` to where we found it 19719 instead of using a fixed path. 19720 19721 *Bodo Moeller* 19722 19723 * SHA library changes for irix64-mips4-cc. 19724 19725 *Andy Polyakov* 19726 19727 * Improvements for VMS support. 19728 19729 *Richard Levitte* 19730 19731### Changes between 0.9.2b and 0.9.3 [24 May 1999] 19732 19733 * Bignum library bug fix. IRIX 6 passes "make test" now! 19734 This also avoids the problems with SC4.2 and unpatched SC5. 19735 19736 *Andy Polyakov <appro@fy.chalmers.se>* 19737 19738 * New functions sk_num, sk_value and sk_set to replace the previous macros. 19739 These are required because of the typesafe stack would otherwise break 19740 existing code. If old code used a structure member which used to be STACK 19741 and is now STACK_OF (for example cert in a PKCS7_SIGNED structure) with 19742 sk_num or sk_value it would produce an error because the num, data members 19743 are not present in STACK_OF. Now it just produces a warning. sk_set 19744 replaces the old method of assigning a value to sk_value 19745 (e.g. sk_value(x, i) = y) which the library used in a few cases. Any code 19746 that does this will no longer work (and should use sk_set instead) but 19747 this could be regarded as a "questionable" behaviour anyway. 19748 19749 *Steve Henson* 19750 19751 * Fix most of the other PKCS#7 bugs. The "experimental" code can now 19752 correctly handle encrypted S/MIME data. 19753 19754 *Steve Henson* 19755 19756 * Change type of various DES function arguments from des_cblock 19757 (which means, in function argument declarations, pointer to char) 19758 to des_cblock * (meaning pointer to array with 8 char elements), 19759 which allows the compiler to do more typechecking; it was like 19760 that back in SSLeay, but with lots of ugly casts. 19761 19762 Introduce new type const_des_cblock. 19763 19764 *Bodo Moeller* 19765 19766 * Reorganise the PKCS#7 library and get rid of some of the more obvious 19767 problems: find RecipientInfo structure that matches recipient certificate 19768 and initialise the ASN1 structures properly based on passed cipher. 19769 19770 *Steve Henson* 19771 19772 * Belatedly make the BN tests actually check the results. 19773 19774 *Ben Laurie* 19775 19776 * Fix the encoding and decoding of negative ASN1 INTEGERS and conversion 19777 to and from BNs: it was completely broken. New compilation option 19778 NEG_PUBKEY_BUG to allow for some broken certificates that encode public 19779 key elements as negative integers. 19780 19781 *Steve Henson* 19782 19783 * Reorganize and speed up MD5. 19784 19785 *Andy Polyakov <appro@fy.chalmers.se>* 19786 19787 * VMS support. 19788 19789 *Richard Levitte <richard@levitte.org>* 19790 19791 * New option -out to asn1parse to allow the parsed structure to be 19792 output to a file. This is most useful when combined with the -strparse 19793 option to examine the output of things like OCTET STRINGS. 19794 19795 *Steve Henson* 19796 19797 * Make SSL library a little more fool-proof by not requiring any longer 19798 that `SSL_set_{accept,connect}_state` be called before 19799 `SSL_{accept,connect}` may be used (`SSL_set_..._state` is omitted 19800 in many applications because usually everything *appeared* to work as 19801 intended anyway -- now it really works as intended). 19802 19803 *Bodo Moeller* 19804 19805 * Move openssl.cnf out of lib/. 19806 19807 *Ulf Möller* 19808 19809 * Fix various things to let OpenSSL even pass "egcc -pipe -O2 -Wall 19810 -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes 19811 -Wmissing-declarations -Wnested-externs -Winline" with EGCS 1.1.2+ 19812 19813 *Ralf S. Engelschall* 19814 19815 * Various fixes to the EVP and PKCS#7 code. It may now be able to 19816 handle PKCS#7 enveloped data properly. 19817 19818 *Sebastian Akerman <sak@parallelconsulting.com>, modified by Steve* 19819 19820 * Create a duplicate of the SSL_CTX's CERT in SSL_new instead of 19821 copying pointers. The cert_st handling is changed by this in 19822 various ways (and thus what used to be known as ctx->default_cert 19823 is now called ctx->cert, since we don't resort to `s->ctx->[default_]cert` 19824 any longer when s->cert does not give us what we need). 19825 ssl_cert_instantiate becomes obsolete by this change. 19826 As soon as we've got the new code right (possibly it already is?), 19827 we have solved a couple of bugs of the earlier code where s->cert 19828 was used as if it could not have been shared with other SSL structures. 19829 19830 Note that using the SSL API in certain dirty ways now will result 19831 in different behaviour than observed with earlier library versions: 19832 Changing settings for an `SSL_CTX *ctx` after having done s = SSL_new(ctx) 19833 does not influence s as it used to. 19834 19835 In order to clean up things more thoroughly, inside SSL_SESSION 19836 we don't use CERT any longer, but a new structure SESS_CERT 19837 that holds per-session data (if available); currently, this is 19838 the peer's certificate chain and, for clients, the server's certificate 19839 and temporary key. CERT holds only those values that can have 19840 meaningful defaults in an SSL_CTX. 19841 19842 *Bodo Moeller* 19843 19844 * New function X509V3_EXT_i2d() to create an X509_EXTENSION structure 19845 from the internal representation. Various PKCS#7 fixes: remove some 19846 evil casts and set the enc_dig_alg field properly based on the signing 19847 key type. 19848 19849 *Steve Henson* 19850 19851 * Allow PKCS#12 password to be set from the command line or the 19852 environment. Let 'ca' get its config file name from the environment 19853 variables "OPENSSL_CONF" or "SSLEAY_CONF" (for consistency with 'req' 19854 and 'x509'). 19855 19856 *Steve Henson* 19857 19858 * Allow certificate policies extension to use an IA5STRING for the 19859 organization field. This is contrary to the PKIX definition but 19860 VeriSign uses it and IE5 only recognises this form. Document 'x509' 19861 extension option. 19862 19863 *Steve Henson* 19864 19865 * Add PEDANTIC compiler flag to allow compilation with gcc -pedantic, 19866 without disallowing inline assembler and the like for non-pedantic builds. 19867 19868 *Ben Laurie* 19869 19870 * Support Borland C++ builder. 19871 19872 *Janez Jere <jj@void.si>, modified by Ulf Möller* 19873 19874 * Support Mingw32. 19875 19876 *Ulf Möller* 19877 19878 * SHA-1 cleanups and performance enhancements. 19879 19880 *Andy Polyakov <appro@fy.chalmers.se>* 19881 19882 * Sparc v8plus assembler for the bignum library. 19883 19884 *Andy Polyakov <appro@fy.chalmers.se>* 19885 19886 * Accept any -xxx and +xxx compiler options in Configure. 19887 19888 *Ulf Möller* 19889 19890 * Update HPUX configuration. 19891 19892 *Anonymous* 19893 19894 * Add missing `sk_<type>_unshift()` function to safestack.h 19895 19896 *Ralf S. Engelschall* 19897 19898 * New function SSL_CTX_use_certificate_chain_file that sets the 19899 "extra_cert"s in addition to the certificate. (This makes sense 19900 only for "PEM" format files, as chains as a whole are not 19901 DER-encoded.) 19902 19903 *Bodo Moeller* 19904 19905 * Support verify_depth from the SSL API. 19906 x509_vfy.c had what can be considered an off-by-one-error: 19907 Its depth (which was not part of the external interface) 19908 was actually counting the number of certificates in a chain; 19909 now it really counts the depth. 19910 19911 *Bodo Moeller* 19912 19913 * Bugfix in crypto/x509/x509_cmp.c: The SSLerr macro was used 19914 instead of X509err, which often resulted in confusing error 19915 messages since the error codes are not globally unique 19916 (e.g. an alleged error in ssl3_accept when a certificate 19917 didn't match the private key). 19918 19919 * New function SSL_CTX_set_session_id_context that allows to set a default 19920 value (so that you don't need SSL_set_session_id_context for each 19921 connection using the SSL_CTX). 19922 19923 *Bodo Moeller* 19924 19925 * OAEP decoding bug fix. 19926 19927 *Ulf Möller* 19928 19929 * Support INSTALL_PREFIX for package builders, as proposed by 19930 David Harris. 19931 19932 *Bodo Moeller* 19933 19934 * New Configure options "threads" and "no-threads". For systems 19935 where the proper compiler options are known (currently Solaris 19936 and Linux), "threads" is the default. 19937 19938 *Bodo Moeller* 19939 19940 * New script util/mklink.pl as a faster substitute for util/mklink.sh. 19941 19942 *Bodo Moeller* 19943 19944 * Install various scripts to $(OPENSSLDIR)/misc, not to 19945 $(INSTALLTOP)/bin -- they shouldn't clutter directories 19946 such as /usr/local/bin. 19947 19948 *Bodo Moeller* 19949 19950 * "make linux-shared" to build shared libraries. 19951 19952 *Niels Poppe <niels@netbox.org>* 19953 19954 * New Configure option `no-<cipher>` (rsa, idea, rc5, ...). 19955 19956 *Ulf Möller* 19957 19958 * Add the PKCS#12 API documentation to openssl.txt. Preliminary support for 19959 extension adding in x509 utility. 19960 19961 *Steve Henson* 19962 19963 * Remove NOPROTO sections and error code comments. 19964 19965 *Ulf Möller* 19966 19967 * Partial rewrite of the DEF file generator to now parse the ANSI 19968 prototypes. 19969 19970 *Steve Henson* 19971 19972 * New Configure options --prefix=DIR and --openssldir=DIR. 19973 19974 *Ulf Möller* 19975 19976 * Complete rewrite of the error code script(s). It is all now handled 19977 by one script at the top level which handles error code gathering, 19978 header rewriting and C source file generation. It should be much better 19979 than the old method: it now uses a modified version of Ulf's parser to 19980 read the ANSI prototypes in all header files (thus the old K&R definitions 19981 aren't needed for error creation any more) and do a better job of 19982 translating function codes into names. The old 'ASN1 error code embedded 19983 in a comment' is no longer necessary and it doesn't use .err files which 19984 have now been deleted. Also the error code call doesn't have to appear all 19985 on one line (which resulted in some large lines...). 19986 19987 *Steve Henson* 19988 19989 * Change #include filenames from `<foo.h>` to `<openssl/foo.h>`. 19990 19991 *Bodo Moeller* 19992 19993 * Change behaviour of ssl2_read when facing length-0 packets: Don't return 19994 0 (which usually indicates a closed connection), but continue reading. 19995 19996 *Bodo Moeller* 19997 19998 * Fix some race conditions. 19999 20000 *Bodo Moeller* 20001 20002 * Add support for CRL distribution points extension. Add Certificate 20003 Policies and CRL distribution points documentation. 20004 20005 *Steve Henson* 20006 20007 * Move the autogenerated header file parts to crypto/opensslconf.h. 20008 20009 *Ulf Möller* 20010 20011 * Fix new 56-bit DES export ciphersuites: they were using 7 bytes instead of 20012 8 of keying material. Merlin has also confirmed interop with this fix 20013 between OpenSSL and Baltimore C/SSL 2.0 and J/SSL 2.0. 20014 20015 *Merlin Hughes <merlin@baltimore.ie>* 20016 20017 * Fix lots of warnings. 20018 20019 *Richard Levitte <levitte@stacken.kth.se>* 20020 20021 * In add_cert_dir() in crypto/x509/by_dir.c, break out of the loop if 20022 the directory spec didn't end with a LIST_SEPARATOR_CHAR. 20023 20024 *Richard Levitte <levitte@stacken.kth.se>* 20025 20026 * Fix problems with sizeof(long) == 8. 20027 20028 *Andy Polyakov <appro@fy.chalmers.se>* 20029 20030 * Change functions to ANSI C. 20031 20032 *Ulf Möller* 20033 20034 * Fix typos in error codes. 20035 20036 *Martin Kraemer <Martin.Kraemer@MchP.Siemens.De>, Ulf Möller* 20037 20038 * Remove defunct assembler files from Configure. 20039 20040 *Ulf Möller* 20041 20042 * SPARC v8 assembler BIGNUM implementation. 20043 20044 *Andy Polyakov <appro@fy.chalmers.se>* 20045 20046 * Support for Certificate Policies extension: both print and set. 20047 Various additions to support the r2i method this uses. 20048 20049 *Steve Henson* 20050 20051 * A lot of constification, and fix a bug in X509_NAME_oneline() that could 20052 return a const string when you are expecting an allocated buffer. 20053 20054 *Ben Laurie* 20055 20056 * Add support for ASN1 types UTF8String and VISIBLESTRING, also the CHOICE 20057 types DirectoryString and DisplayText. 20058 20059 *Steve Henson* 20060 20061 * Add code to allow r2i extensions to access the configuration database, 20062 add an LHASH database driver and add several ctx helper functions. 20063 20064 *Steve Henson* 20065 20066 * Fix an evil bug in bn_expand2() which caused various BN functions to 20067 fail when they extended the size of a BIGNUM. 20068 20069 *Steve Henson* 20070 20071 * Various utility functions to handle SXNet extension. Modify mkdef.pl to 20072 support typesafe stack. 20073 20074 *Steve Henson* 20075 20076 * Fix typo in SSL_[gs]et_options(). 20077 20078 *Nils Frostberg <nils@medcom.se>* 20079 20080 * Delete various functions and files that belonged to the (now obsolete) 20081 old X509V3 handling code. 20082 20083 *Steve Henson* 20084 20085 * New Configure option "rsaref". 20086 20087 *Ulf Möller* 20088 20089 * Don't auto-generate pem.h. 20090 20091 *Bodo Moeller* 20092 20093 * Introduce type-safe ASN.1 SETs. 20094 20095 *Ben Laurie* 20096 20097 * Convert various additional casted stacks to type-safe STACK_OF() variants. 20098 20099 *Ben Laurie, Ralf S. Engelschall, Steve Henson* 20100 20101 * Introduce type-safe STACKs. This will almost certainly break lots of code 20102 that links with OpenSSL (well at least cause lots of warnings), but fear 20103 not: the conversion is trivial, and it eliminates loads of evil casts. A 20104 few STACKed things have been converted already. Feel free to convert more. 20105 In the fullness of time, I'll do away with the STACK type altogether. 20106 20107 *Ben Laurie* 20108 20109 * Add `openssl ca -revoke <certfile>` facility which revokes a certificate 20110 specified in `<certfile>` by updating the entry in the index.txt file. 20111 This way one no longer has to edit the index.txt file manually for 20112 revoking a certificate. The -revoke option does the gory details now. 20113 20114 *Massimiliano Pala <madwolf@openca.org>, Ralf S. Engelschall* 20115 20116 * Fix `openssl crl -noout -text` combination where `-noout` killed the 20117 `-text` option at all and this way the `-noout -text` combination was 20118 inconsistent in `openssl crl` with the friends in `openssl x509|rsa|dsa`. 20119 20120 *Ralf S. Engelschall* 20121 20122 * Make sure a corresponding plain text error message exists for the 20123 X509_V_ERR_CERT_REVOKED/23 error number which can occur when a 20124 verify callback function determined that a certificate was revoked. 20125 20126 *Ralf S. Engelschall* 20127 20128 * Bugfix: In test/testenc, don't test `openssl <cipher>` for 20129 ciphers that were excluded, e.g. by -DNO_IDEA. Also, test 20130 all available ciphers including rc5, which was forgotten until now. 20131 In order to let the testing shell script know which algorithms 20132 are available, a new (up to now undocumented) command 20133 `openssl list-cipher-commands` is used. 20134 20135 *Bodo Moeller* 20136 20137 * Bugfix: s_client occasionally would sleep in select() when 20138 it should have checked SSL_pending() first. 20139 20140 *Bodo Moeller* 20141 20142 * New functions DSA_do_sign and DSA_do_verify to provide access to 20143 the raw DSA values prior to ASN.1 encoding. 20144 20145 *Ulf Möller* 20146 20147 * Tweaks to Configure 20148 20149 *Niels Poppe <niels@netbox.org>* 20150 20151 * Add support for PKCS#5 v2.0 ASN1 PBES2 structures. No other support, 20152 yet... 20153 20154 *Steve Henson* 20155 20156 * New variables $(RANLIB) and $(PERL) in the Makefiles. 20157 20158 *Ulf Möller* 20159 20160 * New config option to avoid instructions that are illegal on the 80386. 20161 The default code is faster, but requires at least a 486. 20162 20163 *Ulf Möller* 20164 20165 * Got rid of old SSL2_CLIENT_VERSION (inconsistently used) and 20166 SSL2_SERVER_VERSION (not used at all) macros, which are now the 20167 same as SSL2_VERSION anyway. 20168 20169 *Bodo Moeller* 20170 20171 * New "-showcerts" option for s_client. 20172 20173 *Bodo Moeller* 20174 20175 * Still more PKCS#12 integration. Add pkcs12 application to openssl 20176 application. Various cleanups and fixes. 20177 20178 *Steve Henson* 20179 20180 * More PKCS#12 integration. Add new pkcs12 directory with Makefile.ssl and 20181 modify error routines to work internally. Add error codes and PBE init 20182 to library startup routines. 20183 20184 *Steve Henson* 20185 20186 * Further PKCS#12 integration. Added password based encryption, PKCS#8 and 20187 packing functions to asn1 and evp. Changed function names and error 20188 codes along the way. 20189 20190 *Steve Henson* 20191 20192 * PKCS12 integration: and so it begins... First of several patches to 20193 slowly integrate PKCS#12 functionality into OpenSSL. Add PKCS#12 20194 objects to objects.h 20195 20196 *Steve Henson* 20197 20198 * Add a new 'indent' option to some X509V3 extension code. Initial ASN1 20199 and display support for Thawte strong extranet extension. 20200 20201 *Steve Henson* 20202 20203 * Add LinuxPPC support. 20204 20205 *Jeff Dubrule <igor@pobox.org>* 20206 20207 * Get rid of redundant BN file bn_mulw.c, and rename bn_div64 to 20208 bn_div_words in alpha.s. 20209 20210 *Hannes Reinecke <H.Reinecke@hw.ac.uk> and Ben Laurie* 20211 20212 * Make sure the RSA OAEP test is skipped under -DRSAref because 20213 OAEP isn't supported when OpenSSL is built with RSAref. 20214 20215 *Ulf Moeller <ulf@fitug.de>* 20216 20217 * Move definitions of IS_SET/IS_SEQUENCE inside crypto/asn1/asn1.h 20218 so they no longer are missing under -DNOPROTO. 20219 20220 *Soren S. Jorvang <soren@t.dk>* 20221 20222### Changes between 0.9.1c and 0.9.2b [22 Mar 1999] 20223 20224 * Make SSL_get_peer_cert_chain() work in servers. Unfortunately, it still 20225 doesn't work when the session is reused. Coming soon! 20226 20227 *Ben Laurie* 20228 20229 * Fix a security hole, that allows sessions to be reused in the wrong 20230 context thus bypassing client cert protection! All software that uses 20231 client certs and session caches in multiple contexts NEEDS PATCHING to 20232 allow session reuse! A fuller solution is in the works. 20233 20234 *Ben Laurie, problem pointed out by Holger Reif, Bodo Moeller (and ???)* 20235 20236 * Some more source tree cleanups (removed obsolete files 20237 crypto/bf/asm/bf586.pl, test/test.txt and crypto/sha/asm/f.s; changed 20238 permission on "config" script to be executable) and a fix for the INSTALL 20239 document. 20240 20241 *Ulf Moeller <ulf@fitug.de>* 20242 20243 * Remove some legacy and erroneous uses of malloc, free instead of 20244 Malloc, Free. 20245 20246 *Lennart Bang <lob@netstream.se>, with minor changes by Steve* 20247 20248 * Make rsa_oaep_test return non-zero on error. 20249 20250 *Ulf Moeller <ulf@fitug.de>* 20251 20252 * Add support for native Solaris shared libraries. Configure 20253 solaris-sparc-sc4-pic, make, then run shlib/solaris-sc4.sh. It'd be nice 20254 if someone would make that last step automatic. 20255 20256 *Matthias Loepfe <Matthias.Loepfe@AdNovum.CH>* 20257 20258 * ctx_size was not built with the right compiler during "make links". Fixed. 20259 20260 *Ben Laurie* 20261 20262 * Change the meaning of 'ALL' in the cipher list. It now means "everything 20263 except NULL ciphers". This means the default cipher list will no longer 20264 enable NULL ciphers. They need to be specifically enabled e.g. with 20265 the string "DEFAULT:eNULL". 20266 20267 *Steve Henson* 20268 20269 * Fix to RSA private encryption routines: if p < q then it would 20270 occasionally produce an invalid result. This will only happen with 20271 externally generated keys because OpenSSL (and SSLeay) ensure p > q. 20272 20273 *Steve Henson* 20274 20275 * Be less restrictive and allow also `perl util/perlpath.pl 20276 /path/to/bin/perl` in addition to `perl util/perlpath.pl /path/to/bin`, 20277 because this way one can also use an interpreter named `perl5` (which is 20278 usually the name of Perl 5.xxx on platforms where an Perl 4.x is still 20279 installed as `perl`). 20280 20281 *Matthias Loepfe <Matthias.Loepfe@adnovum.ch>* 20282 20283 * Let util/clean-depend.pl work also with older Perl 5.00x versions. 20284 20285 *Matthias Loepfe <Matthias.Loepfe@adnovum.ch>* 20286 20287 * Fix Makefile.org so CC,CFLAG etc are passed to 'make links' add 20288 advapi32.lib to Win32 build and change the pem test comparison 20289 to fc.exe (thanks to Ulrich Kroener <kroneru@yahoo.com> for the 20290 suggestion). Fix misplaced ASNI prototypes and declarations in evp.h 20291 and crypto/des/ede_cbcm_enc.c. 20292 20293 *Steve Henson* 20294 20295 * DES quad checksum was broken on big-endian architectures. Fixed. 20296 20297 *Ben Laurie* 20298 20299 * Comment out two functions in bio.h that aren't implemented. Fix up the 20300 Win32 test batch file so it (might) work again. The Win32 test batch file 20301 is horrible: I feel ill.... 20302 20303 *Steve Henson* 20304 20305 * Move various #ifdefs around so NO_SYSLOG, NO_DIRENT etc are now selected 20306 in e_os.h. Audit of header files to check ANSI and non ANSI 20307 sections: 10 functions were absent from non ANSI section and not exported 20308 from Windows DLLs. Fixed up libeay.num for new functions. 20309 20310 *Steve Henson* 20311 20312 * Make `openssl version` output lines consistent. 20313 20314 *Ralf S. Engelschall* 20315 20316 * Fix Win32 symbol export lists for BIO functions: Added 20317 BIO_get_ex_new_index, BIO_get_ex_num, BIO_get_ex_data and BIO_set_ex_data 20318 to ms/libeay{16,32}.def. 20319 20320 *Ralf S. Engelschall* 20321 20322 * Second round of fixing the OpenSSL perl/ stuff. It now at least compiled 20323 fine under Unix and passes some trivial tests I've now added. But the 20324 whole stuff is horribly incomplete, so a README.1ST with a disclaimer was 20325 added to make sure no one expects that this stuff really works in the 20326 OpenSSL 0.9.2 release. Additionally I've started to clean the XS sources 20327 up and fixed a few little bugs and inconsistencies in OpenSSL.{pm,xs} and 20328 openssl_bio.xs. 20329 20330 *Ralf S. Engelschall* 20331 20332 * Fix the generation of two part addresses in perl. 20333 20334 *Kenji Miyake <kenji@miyake.org>, integrated by Ben Laurie* 20335 20336 * Add config entry for Linux on MIPS. 20337 20338 *John Tobey <jtobey@channel1.com>* 20339 20340 * Make links whenever Configure is run, unless we are on Windoze. 20341 20342 *Ben Laurie* 20343 20344 * Permit extensions to be added to CRLs using crl_section in openssl.cnf. 20345 Currently only issuerAltName and AuthorityKeyIdentifier make any sense 20346 in CRLs. 20347 20348 *Steve Henson* 20349 20350 * Add a useful kludge to allow package maintainers to specify compiler and 20351 other platforms details on the command line without having to patch the 20352 Configure script every time: One now can use 20353 `perl Configure <id>:<details>`, 20354 i.e. platform ids are allowed to have details appended 20355 to them (separated by colons). This is treated as there would be a static 20356 pre-configured entry in Configure's %table under key `<id>` with value 20357 `<details>` and `perl Configure <id>` is called. So, when you want to 20358 perform a quick test-compile under FreeBSD 3.1 with pgcc and without 20359 assembler stuff you can use `perl Configure "FreeBSD-elf:pgcc:-O6:::"` 20360 now, which overrides the FreeBSD-elf entry on-the-fly. 20361 20362 *Ralf S. Engelschall* 20363 20364 * Disable new TLS1 ciphersuites by default: they aren't official yet. 20365 20366 *Ben Laurie* 20367 20368 * Allow DSO flags like -fpic, -fPIC, -KPIC etc. to be specified 20369 on the `perl Configure ...` command line. This way one can compile 20370 OpenSSL libraries with Position Independent Code (PIC) which is needed 20371 for linking it into DSOs. 20372 20373 *Ralf S. Engelschall* 20374 20375 * Remarkably, export ciphers were totally broken and no-one had noticed! 20376 Fixed. 20377 20378 *Ben Laurie* 20379 20380 * Cleaned up the LICENSE document: The official contact for any license 20381 questions now is the OpenSSL core team under openssl-core@openssl.org. 20382 And add a paragraph about the dual-license situation to make sure people 20383 recognize that _BOTH_ the OpenSSL license _AND_ the SSLeay license apply 20384 to the OpenSSL toolkit. 20385 20386 *Ralf S. Engelschall* 20387 20388 * General source tree makefile cleanups: Made `making xxx in yyy...` 20389 display consistent in the source tree and replaced `/bin/rm` by `rm`. 20390 Additionally cleaned up the `make links` target: Remove unnecessary 20391 semicolons, subsequent redundant removes, inline point.sh into mklink.sh 20392 to speed processing and no longer clutter the display with confusing 20393 stuff. Instead only the actually done links are displayed. 20394 20395 *Ralf S. Engelschall* 20396 20397 * Permit null encryption ciphersuites, used for authentication only. It used 20398 to be necessary to set the preprocessor define SSL_ALLOW_ENULL to do this. 20399 It is now necessary to set SSL_FORBID_ENULL to prevent the use of null 20400 encryption. 20401 20402 *Ben Laurie* 20403 20404 * Add a bunch of fixes to the PKCS#7 stuff. It used to sometimes reorder 20405 signed attributes when verifying signatures (this would break them), 20406 the detached data encoding was wrong and public keys obtained using 20407 X509_get_pubkey() weren't freed. 20408 20409 *Steve Henson* 20410 20411 * Add text documentation for the BUFFER functions. Also added a work around 20412 to a Win95 console bug. This was triggered by the password read stuff: the 20413 last character typed gets carried over to the next fread(). If you were 20414 generating a new cert request using 'req' for example then the last 20415 character of the passphrase would be CR which would then enter the first 20416 field as blank. 20417 20418 *Steve Henson* 20419 20420 * Added the new 'Includes OpenSSL Cryptography Software' button as 20421 doc/openssl_button.{gif,html} which is similar in style to the old SSLeay 20422 button and can be used by applications based on OpenSSL to show the 20423 relationship to the OpenSSL project. 20424 20425 *Ralf S. Engelschall* 20426 20427 * Remove confusing variables in function signatures in files 20428 ssl/ssl_lib.c and ssl/ssl.h. 20429 20430 *Lennart Bong <lob@kulthea.stacken.kth.se>* 20431 20432 * Don't install bss_file.c under PREFIX/include/ 20433 20434 *Lennart Bong <lob@kulthea.stacken.kth.se>* 20435 20436 * Get the Win32 compile working again. Modify mkdef.pl so it can handle 20437 functions that return function pointers and has support for NT specific 20438 stuff. Fix mk1mf.pl and VC-32.pl to support NT differences also. Various 20439 #ifdef WIN32 and WINNTs sprinkled about the place and some changes from 20440 unsigned to signed types: this was killing the Win32 compile. 20441 20442 *Steve Henson* 20443 20444 * Add new certificate file to stack functions, 20445 SSL_add_dir_cert_subjects_to_stack() and 20446 SSL_add_file_cert_subjects_to_stack(). These largely supplant 20447 SSL_load_client_CA_file(), and can be used to add multiple certs easily 20448 to a stack (usually this is then handed to SSL_CTX_set_client_CA_list()). 20449 This means that Apache-SSL and similar packages don't have to mess around 20450 to add as many CAs as they want to the preferred list. 20451 20452 *Ben Laurie* 20453 20454 * Experiment with doxygen documentation. Currently only partially applied to 20455 ssl/ssl_lib.c. 20456 See <http://www.stack.nl/~dimitri/doxygen/index.html>, and run doxygen with 20457 openssl.doxy as the configuration file. 20458 20459 *Ben Laurie* 20460 20461 * Get rid of remaining C++-style comments which strict C compilers hate. 20462 20463 *Ralf S. Engelschall, pointed out by Carlos Amengual* 20464 20465 * Changed BN_RECURSION in bn_mont.c to BN_RECURSION_MONT so it is not 20466 compiled in by default: it has problems with large keys. 20467 20468 *Steve Henson* 20469 20470 * Add a bunch of SSL_xxx() functions for configuring the temporary RSA and 20471 DH private keys and/or callback functions which directly correspond to 20472 their SSL_CTX_xxx() counterparts but work on a per-connection basis. This 20473 is needed for applications which have to configure certificates on a 20474 per-connection basis (e.g. Apache+mod_ssl) instead of a per-context basis 20475 (e.g. s_server). 20476 For the RSA certificate situation is makes no difference, but 20477 for the DSA certificate situation this fixes the "no shared cipher" 20478 problem where the OpenSSL cipher selection procedure failed because the 20479 temporary keys were not overtaken from the context and the API provided 20480 no way to reconfigure them. 20481 The new functions now let applications reconfigure the stuff and they 20482 are in detail: SSL_need_tmp_RSA, SSL_set_tmp_rsa, SSL_set_tmp_dh, 20483 SSL_set_tmp_rsa_callback and SSL_set_tmp_dh_callback. Additionally a new 20484 non-public-API function ssl_cert_instantiate() is used as a helper 20485 function and also to reduce code redundancy inside ssl_rsa.c. 20486 20487 *Ralf S. Engelschall* 20488 20489 * Move s_server -dcert and -dkey options out of the undocumented feature 20490 area because they are useful for the DSA situation and should be 20491 recognized by the users. 20492 20493 *Ralf S. Engelschall* 20494 20495 * Fix the cipher decision scheme for export ciphers: the export bits are 20496 *not* within SSL_MKEY_MASK or SSL_AUTH_MASK, they are within 20497 SSL_EXP_MASK. So, the original variable has to be used instead of the 20498 already masked variable. 20499 20500 *Richard Levitte <levitte@stacken.kth.se>* 20501 20502 * Fix `port` variable from `int` to `unsigned int` in crypto/bio/b_sock.c 20503 20504 *Richard Levitte <levitte@stacken.kth.se>* 20505 20506 * Change type of another md_len variable in pk7_doit.c:PKCS7_dataFinal() 20507 from `int` to `unsigned int` because it is a length and initialized by 20508 EVP_DigestFinal() which expects an `unsigned int *`. 20509 20510 *Richard Levitte <levitte@stacken.kth.se>* 20511 20512 * Don't hard-code path to Perl interpreter on shebang line of Configure 20513 script. Instead use the usual Shell->Perl transition trick. 20514 20515 *Ralf S. Engelschall* 20516 20517 * Make `openssl x509 -noout -modulus`' functional also for DSA certificates 20518 (in addition to RSA certificates) to match the behaviour of `openssl dsa 20519 -noout -modulus` as it's already the case for `openssl rsa -noout 20520 -modulus`. For RSA the -modulus is the real "modulus" while for DSA 20521 currently the public key is printed (a decision which was already done by 20522 `openssl dsa -modulus` in the past) which serves a similar purpose. 20523 Additionally the NO_RSA no longer completely removes the whole -modulus 20524 option; it now only avoids using the RSA stuff. Same applies to NO_DSA 20525 now, too. 20526 20527 *Ralf S. Engelschall* 20528 20529 * Add Arne Ansper's reliable BIO - this is an encrypted, block-digested 20530 BIO. See the source (crypto/evp/bio_ok.c) for more info. 20531 20532 *Arne Ansper <arne@ats.cyber.ee>* 20533 20534 * Dump the old yucky req code that tried (and failed) to allow raw OIDs 20535 to be added. Now both 'req' and 'ca' can use new objects defined in the 20536 config file. 20537 20538 *Steve Henson* 20539 20540 * Add cool BIO that does syslog (or event log on NT). 20541 20542 *Arne Ansper <arne@ats.cyber.ee>, integrated by Ben Laurie* 20543 20544 * Add support for new TLS ciphersuites, TLS_RSA_EXPORT56_WITH_RC4_56_MD5, 20545 TLS_RSA_EXPORT56_WITH_RC2_CBC_56_MD5 and 20546 TLS_RSA_EXPORT56_WITH_DES_CBC_SHA, as specified in "56-bit Export Cipher 20547 Suites For TLS", draft-ietf-tls-56-bit-ciphersuites-00.txt. 20548 20549 *Ben Laurie* 20550 20551 * Add preliminary config info for new extension code. 20552 20553 *Steve Henson* 20554 20555 * Make RSA_NO_PADDING really use no padding. 20556 20557 *Ulf Moeller <ulf@fitug.de>* 20558 20559 * Generate errors when private/public key check is done. 20560 20561 *Ben Laurie* 20562 20563 * Overhaul for 'crl' utility. New function X509_CRL_print. Partial support 20564 for some CRL extensions and new objects added. 20565 20566 *Steve Henson* 20567 20568 * Really fix the ASN1 IMPLICIT bug this time... Partial support for private 20569 key usage extension and fuller support for authority key id. 20570 20571 *Steve Henson* 20572 20573 * Add OAEP encryption for the OpenSSL crypto library. OAEP is the improved 20574 padding method for RSA, which is recommended for new applications in PKCS 20575 #1 v2.0 (RFC 2437, October 1998). 20576 OAEP (Optimal Asymmetric Encryption Padding) has better theoretical 20577 foundations than the ad-hoc padding used in PKCS #1 v1.5. It is secure 20578 against Bleichbacher's attack on RSA. 20579 *Ulf Moeller <ulf@fitug.de>, reformatted, corrected and integrated by 20580 Ben Laurie* 20581 20582 * Updates to the new SSL compression code 20583 20584 *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)* 20585 20586 * Fix so that the version number in the master secret, when passed 20587 via RSA, checks that if TLS was proposed, but we roll back to SSLv3 20588 (because the server will not accept higher), that the version number 20589 is 0x03,0x01, not 0x03,0x00 20590 20591 *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)* 20592 20593 * Run extensive memory leak checks on SSL commands. Fixed *lots* of memory 20594 leaks in `ssl/` relating to new `X509_get_pubkey()` behaviour. Also fixes 20595 in `apps/` and an unrelated leak in `crypto/dsa/dsa_vrf.c`. 20596 20597 *Steve Henson* 20598 20599 * Support for RAW extensions where an arbitrary extension can be 20600 created by including its DER encoding. See `apps/openssl.cnf` for 20601 an example. 20602 20603 *Steve Henson* 20604 20605 * Make sure latest Perl versions don't interpret some generated C array 20606 code as Perl array code in the crypto/err/err_genc.pl script. 20607 20608 *Lars Weber <3weber@informatik.uni-hamburg.de>* 20609 20610 * Modify ms/do_ms.bat to not generate assembly language makefiles since 20611 not many people have the assembler. Various Win32 compilation fixes and 20612 update to the INSTALL.W32 file with (hopefully) more accurate Win32 20613 build instructions. 20614 20615 *Steve Henson* 20616 20617 * Modify configure script 'Configure' to automatically create crypto/date.h 20618 file under Win32 and also build pem.h from pem.org. New script 20619 util/mkfiles.pl to create the MINFO file on environments that can't do a 20620 'make files': perl util/mkfiles.pl >MINFO should work. 20621 20622 *Steve Henson* 20623 20624 * Major rework of DES function declarations, in the pursuit of correctness 20625 and purity. As a result, many evil casts evaporated, and some weirdness, 20626 too. You may find this causes warnings in your code. Zapping your evil 20627 casts will probably fix them. Mostly. 20628 20629 *Ben Laurie* 20630 20631 * Fix for a typo in asn1.h. Bug fix to object creation script 20632 obj_dat.pl. It considered a zero in an object definition to mean 20633 "end of object": none of the objects in objects.h have any zeros 20634 so it wasn't spotted. 20635 20636 *Steve Henson, reported by Erwann ABALEA <eabalea@certplus.com>* 20637 20638 * Add support for Triple DES Cipher Block Chaining with Output Feedback 20639 Masking (CBCM). In the absence of test vectors, the best I have been able 20640 to do is check that the decrypt undoes the encrypt, so far. Send me test 20641 vectors if you have them. 20642 20643 *Ben Laurie* 20644 20645 * Correct calculation of key length for export ciphers (too much space was 20646 allocated for null ciphers). This has not been tested! 20647 20648 *Ben Laurie* 20649 20650 * Modifications to the mkdef.pl for Win32 DEF file creation. The usage 20651 message is now correct (it understands "crypto" and "ssl" on its 20652 command line). There is also now an "update" option. This will update 20653 the util/ssleay.num and util/libeay.num files with any new functions. 20654 If you do a: 20655 perl util/mkdef.pl crypto ssl update 20656 it will update them. 20657 20658 *Steve Henson* 20659 20660 * Overhauled the Perl interface: 20661 - ported BN stuff to OpenSSL's different BN library 20662 - made the perl/ source tree CVS-aware 20663 - renamed the package from SSLeay to OpenSSL (the files still contain 20664 their history because I've copied them in the repository) 20665 - removed obsolete files (the test scripts will be replaced 20666 by better Test::Harness variants in the future) 20667 20668 *Ralf S. Engelschall* 20669 20670 * First cut for a very conservative source tree cleanup: 20671 1. merge various obsolete readme texts into doc/ssleay.txt 20672 where we collect the old documents and readme texts. 20673 2. remove the first part of files where I'm already sure that we no 20674 longer need them because of three reasons: either they are just temporary 20675 files which were left by Eric or they are preserved original files where 20676 I've verified that the diff is also available in the CVS via "cvs diff 20677 -rSSLeay_0_8_1b" or they were renamed (as it was definitely the case for 20678 the crypto/md/ stuff). 20679 20680 *Ralf S. Engelschall* 20681 20682 * More extension code. Incomplete support for subject and issuer alt 20683 name, issuer and authority key id. Change the i2v function parameters 20684 and add an extra 'crl' parameter in the X509V3_CTX structure: guess 20685 what that's for :-) Fix to ASN1 macro which messed up 20686 IMPLICIT tag and add f_enum.c which adds a2i, i2a for ENUMERATED. 20687 20688 *Steve Henson* 20689 20690 * Preliminary support for ENUMERATED type. This is largely copied from the 20691 INTEGER code. 20692 20693 *Steve Henson* 20694 20695 * Add new function, EVP_MD_CTX_copy() to replace frequent use of memcpy. 20696 20697 *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)* 20698 20699 * Make sure `make rehash` target really finds the `openssl` program. 20700 20701 *Ralf S. Engelschall, Matthias Loepfe <Matthias.Loepfe@adnovum.ch>* 20702 20703 * Squeeze another 7% of speed out of MD5 assembler, at least on a P2. I'd 20704 like to hear about it if this slows down other processors. 20705 20706 *Ben Laurie* 20707 20708 * Add CygWin32 platform information to Configure script. 20709 20710 *Alan Batie <batie@aahz.jf.intel.com>* 20711 20712 * Fixed ms/32all.bat script: `no_asm` -> `no-asm` 20713 20714 *Rainer W. Gerling <gerling@mpg-gv.mpg.de>* 20715 20716 * New program nseq to manipulate netscape certificate sequences 20717 20718 *Steve Henson* 20719 20720 * Modify crl2pkcs7 so it supports multiple -certfile arguments. Fix a 20721 few typos. 20722 20723 *Steve Henson* 20724 20725 * Fixes to BN code. Previously the default was to define BN_RECURSION 20726 but the BN code had some problems that would cause failures when 20727 doing certificate verification and some other functions. 20728 20729 *Eric A. Young, (from changes to C2Net SSLeay, integrated by Mark Cox)* 20730 20731 * Add ASN1 and PEM code to support netscape certificate sequences. 20732 20733 *Steve Henson* 20734 20735 * Add ASN1 and PEM code to support netscape certificate sequences. 20736 20737 *Steve Henson* 20738 20739 * Add several PKIX and private extended key usage OIDs. 20740 20741 *Steve Henson* 20742 20743 * Modify the 'ca' program to handle the new extension code. Modify 20744 openssl.cnf for new extension format, add comments. 20745 20746 *Steve Henson* 20747 20748 * More X509 V3 changes. Fix typo in v3_bitstr.c. Add support to 'req' 20749 and add a sample to openssl.cnf so req -x509 now adds appropriate 20750 CA extensions. 20751 20752 *Steve Henson* 20753 20754 * Continued X509 V3 changes. Add to other makefiles, integrate with the 20755 error code, add initial support to X509_print() and x509 application. 20756 20757 *Steve Henson* 20758 20759 * Takes a deep breath and start adding X509 V3 extension support code. Add 20760 files in crypto/x509v3. Move original stuff to crypto/x509v3/old. All this 20761 stuff is currently isolated and isn't even compiled yet. 20762 20763 *Steve Henson* 20764 20765 * Continuing patches for GeneralizedTime. Fix up certificate and CRL 20766 ASN1 to use ASN1_TIME and modify print routines to use ASN1_TIME_print. 20767 Removed the versions check from X509 routines when loading extensions: 20768 this allows certain broken certificates that don't set the version 20769 properly to be processed. 20770 20771 *Steve Henson* 20772 20773 * Deal with irritating shit to do with dependencies, in YAAHW (Yet Another 20774 Ad Hoc Way) - Makefile.ssls now all contain local dependencies, which 20775 can still be regenerated with "make depend". 20776 20777 *Ben Laurie* 20778 20779 * Spelling mistake in C version of CAST-128. 20780 20781 *Ben Laurie, reported by Jeremy Hylton <jeremy@cnri.reston.va.us>* 20782 20783 * Changes to the error generation code. The perl script err-code.pl 20784 now reads in the old error codes and retains the old numbers, only 20785 adding new ones if necessary. It also only changes the .err files if new 20786 codes are added. The makefiles have been modified to only insert errors 20787 when needed (to avoid needlessly modifying header files). This is done 20788 by only inserting errors if the .err file is newer than the auto generated 20789 C file. To rebuild all the error codes from scratch (the old behaviour) 20790 either modify crypto/Makefile.ssl to pass the -regen flag to err_code.pl 20791 or delete all the .err files. 20792 20793 *Steve Henson* 20794 20795 * CAST-128 was incorrectly implemented for short keys. The C version has 20796 been fixed, but is untested. The assembler versions are also fixed, but 20797 new assembler HAS NOT BEEN GENERATED FOR WIN32 - the Makefile needs fixing 20798 to regenerate it if needed. 20799 *Ben Laurie, reported (with fix for C version) by Jun-ichiro itojun 20800 Hagino <itojun@kame.net>* 20801 20802 * File was opened incorrectly in randfile.c. 20803 20804 *Ulf Möller <ulf@fitug.de>* 20805 20806 * Beginning of support for GeneralizedTime. d2i, i2d, check and print 20807 functions. Also ASN1_TIME suite which is a CHOICE of UTCTime or 20808 GeneralizedTime. ASN1_TIME is the proper type used in certificates et 20809 al: it's just almost always a UTCTime. Note this patch adds new error 20810 codes so do a "make errors" if there are problems. 20811 20812 *Steve Henson* 20813 20814 * Correct Linux 1 recognition in config. 20815 20816 *Ulf Möller <ulf@fitug.de>* 20817 20818 * Remove pointless MD5 hash when using DSA keys in ca. 20819 20820 *Anonymous <nobody@replay.com>* 20821 20822 * Generate an error if given an empty string as a cert directory. Also 20823 generate an error if handed NULL (previously returned 0 to indicate an 20824 error, but didn't set one). 20825 20826 *Ben Laurie, reported by Anonymous <nobody@replay.com>* 20827 20828 * Add prototypes to SSL methods. Make SSL_write's buffer const, at last. 20829 20830 *Ben Laurie* 20831 20832 * Fix the dummy function BN_ref_mod_exp() in rsaref.c to have the correct 20833 parameters. This was causing a warning which killed off the Win32 compile. 20834 20835 *Steve Henson* 20836 20837 * Remove C++ style comments from crypto/bn/bn_local.h. 20838 20839 *Neil Costigan <neil.costigan@celocom.com>* 20840 20841 * The function OBJ_txt2nid was broken. It was supposed to return a nid 20842 based on a text string, looking up short and long names and finally 20843 "dot" format. The "dot" format stuff didn't work. Added new function 20844 OBJ_txt2obj to do the same but return an ASN1_OBJECT and rewrote 20845 OBJ_txt2nid to use it. OBJ_txt2obj can also return objects even if the 20846 OID is not part of the table. 20847 20848 *Steve Henson* 20849 20850 * Add prototypes to X509 lookup/verify methods, fixing a bug in 20851 X509_LOOKUP_by_alias(). 20852 20853 *Ben Laurie* 20854 20855 * Sort openssl functions by name. 20856 20857 *Ben Laurie* 20858 20859 * Get the `gendsa` command working and add it to the `list` command. Remove 20860 encryption from sample DSA keys (in case anyone is interested the password 20861 was "1234"). 20862 20863 *Steve Henson* 20864 20865 * Make *all* `*_free` functions accept a NULL pointer. 20866 20867 *Frans Heymans <fheymans@isaserver.be>* 20868 20869 * If a DH key is generated in s3_srvr.c, don't blow it by trying to use 20870 NULL pointers. 20871 20872 *Anonymous <nobody@replay.com>* 20873 20874 * s_server should send the CAfile as acceptable CAs, not its own cert. 20875 20876 *Bodo Moeller <3moeller@informatik.uni-hamburg.de>* 20877 20878 * Don't blow it for numeric `-newkey` arguments to `apps/req`. 20879 20880 *Bodo Moeller <3moeller@informatik.uni-hamburg.de>* 20881 20882 * Temp key "for export" tests were wrong in s3_srvr.c. 20883 20884 *Anonymous <nobody@replay.com>* 20885 20886 * Add prototype for temp key callback functions 20887 SSL_CTX_set_tmp_{rsa,dh}_callback(). 20888 20889 *Ben Laurie* 20890 20891 * Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and 20892 DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey(). 20893 20894 *Steve Henson* 20895 20896 * X509_name_add_entry() freed the wrong thing after an error. 20897 20898 *Arne Ansper <arne@ats.cyber.ee>* 20899 20900 * rsa_eay.c would attempt to free a NULL context. 20901 20902 *Arne Ansper <arne@ats.cyber.ee>* 20903 20904 * BIO_s_socket() had a broken should_retry() on Windoze. 20905 20906 *Arne Ansper <arne@ats.cyber.ee>* 20907 20908 * BIO_f_buffer() didn't pass on BIO_CTRL_FLUSH. 20909 20910 *Arne Ansper <arne@ats.cyber.ee>* 20911 20912 * Make sure the already existing X509_STORE->depth variable is initialized 20913 in X509_STORE_new(), but document the fact that this variable is still 20914 unused in the certificate verification process. 20915 20916 *Ralf S. Engelschall* 20917 20918 * Fix the various library and `apps/` files to free up pkeys obtained from 20919 X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions. 20920 20921 *Steve Henson* 20922 20923 * Fix reference counting in X509_PUBKEY_get(). This makes 20924 demos/maurice/example2.c work, amongst others, probably. 20925 20926 *Steve Henson and Ben Laurie* 20927 20928 * First cut of a cleanup for `apps/`. First the `ssleay` program is now named 20929 `openssl` and second, the shortcut symlinks for the `openssl <command>` 20930 are no longer created. This way we have a single and consistent command 20931 line interface `openssl <command>`, similar to `cvs <command>`. 20932 20933 *Ralf S. Engelschall, Paul Sutton and Ben Laurie* 20934 20935 * ca.c: move test for DSA keys inside #ifndef NO_DSA. Make pubkey 20936 BIT STRING wrapper always have zero unused bits. 20937 20938 *Steve Henson* 20939 20940 * Add CA.pl, perl version of CA.sh, add extended key usage OID. 20941 20942 *Steve Henson* 20943 20944 * Make the top-level INSTALL documentation easier to understand. 20945 20946 *Paul Sutton* 20947 20948 * Makefiles updated to exit if an error occurs in a sub-directory 20949 make (including if user presses ^C) [Paul Sutton] 20950 20951 * Make Montgomery context stuff explicit in RSA data structure. 20952 20953 *Ben Laurie* 20954 20955 * Fix build order of pem and err to allow for generated pem.h. 20956 20957 *Ben Laurie* 20958 20959 * Fix renumbering bug in X509_NAME_delete_entry(). 20960 20961 *Ben Laurie* 20962 20963 * Enhanced the err-ins.pl script so it makes the error library number 20964 global and can add a library name. This is needed for external ASN1 and 20965 other error libraries. 20966 20967 *Steve Henson* 20968 20969 * Fixed sk_insert which never worked properly. 20970 20971 *Steve Henson* 20972 20973 * Fix ASN1 macros so they can handle indefinite length constructed 20974 EXPLICIT tags. Some non standard certificates use these: they can now 20975 be read in. 20976 20977 *Steve Henson* 20978 20979 * Merged the various old/obsolete SSLeay documentation files (doc/xxx.doc) 20980 into a single doc/ssleay.txt bundle. This way the information is still 20981 preserved but no longer messes up this directory. Now it's new room for 20982 the new set of documentation files. 20983 20984 *Ralf S. Engelschall* 20985 20986 * SETs were incorrectly DER encoded. This was a major pain, because they 20987 shared code with SEQUENCEs, which aren't coded the same. This means that 20988 almost everything to do with SETs or SEQUENCEs has either changed name or 20989 number of arguments. 20990 20991 *Ben Laurie, based on a partial fix by GP Jayan <gp@nsj.co.jp>* 20992 20993 * Fix test data to work with the above. 20994 20995 *Ben Laurie* 20996 20997 * Fix the RSA header declarations that hid a bug I fixed in 0.9.0b but 20998 was already fixed by Eric for 0.9.1 it seems. 20999 21000 *Ben Laurie - pointed out by Ulf Möller <ulf@fitug.de>* 21001 21002 * Autodetect FreeBSD3. 21003 21004 *Ben Laurie* 21005 21006 * Fix various bugs in Configure. This affects the following platforms: 21007 nextstep 21008 ncr-scde 21009 unixware-2.0 21010 unixware-2.0-pentium 21011 sco5-cc. 21012 21013 *Ben Laurie* 21014 21015 * Eliminate generated files from CVS. Reorder tests to regenerate files 21016 before they are needed. 21017 21018 *Ben Laurie* 21019 21020 * Generate Makefile.ssl from Makefile.org (to keep CVS happy). 21021 21022 *Ben Laurie* 21023 21024### Changes between 0.9.1b and 0.9.1c [23-Dec-1998] 21025 21026 * Added OPENSSL_VERSION_NUMBER to crypto/crypto.h and 21027 changed SSLeay to OpenSSL in version strings. 21028 21029 *Ralf S. Engelschall* 21030 21031 * Some fixups to the top-level documents. 21032 21033 *Paul Sutton* 21034 21035 * Fixed the nasty bug where rsaref.h was not found under compile-time 21036 because the symlink to include/ was missing. 21037 21038 *Ralf S. Engelschall* 21039 21040 * Incorporated the popular no-RSA/DSA-only patches 21041 which allow to compile an RSA-free SSLeay. 21042 21043 *Andrew Cooke / Interrader Ldt., Ralf S. Engelschall* 21044 21045 * Fixed nasty rehash problem under `make -f Makefile.ssl links` 21046 when "ssleay" is still not found. 21047 21048 *Ralf S. Engelschall* 21049 21050 * Added more platforms to Configure: Cray T3E, HPUX 11, 21051 21052 *Ralf S. Engelschall, Beckmann <beckman@acl.lanl.gov>* 21053 21054 * Updated the README file. 21055 21056 *Ralf S. Engelschall* 21057 21058 * Added various .cvsignore files in the CVS repository subdirs 21059 to make a "cvs update" really silent. 21060 21061 *Ralf S. Engelschall* 21062 21063 * Recompiled the error-definition header files and added 21064 missing symbols to the Win32 linker tables. 21065 21066 *Ralf S. Engelschall* 21067 21068 * Cleaned up the top-level documents; 21069 o new files: CHANGES and LICENSE 21070 o merged VERSION, HISTORY* and README* files a CHANGES.SSLeay 21071 o merged COPYRIGHT into LICENSE 21072 o removed obsolete TODO file 21073 o renamed MICROSOFT to INSTALL.W32 21074 21075 *Ralf S. Engelschall* 21076 21077 * Removed dummy files from the 0.9.1b source tree: 21078 crypto/asn1/x crypto/bio/cd crypto/bio/fg crypto/bio/grep crypto/bio/vi 21079 crypto/bn/asm/......add.c crypto/bn/asm/a.out crypto/dsa/f crypto/md5/f 21080 crypto/pem/gmon.out crypto/perlasm/f crypto/pkcs7/build crypto/rsa/f 21081 crypto/sha/asm/f crypto/threads/f ms/zzz ssl/f ssl/f.mak test/f 21082 util/f.mak util/pl/f util/pl/f.mak crypto/bf/bf_locl.old apps/f 21083 21084 *Ralf S. Engelschall* 21085 21086 * Added various platform portability fixes. 21087 21088 *Mark J. Cox* 21089 21090 * The Genesis of the OpenSSL rpject: 21091 We start with the latest (unreleased) SSLeay version 0.9.1b which Eric A. 21092 Young and Tim J. Hudson created while they were working for C2Net until 21093 summer 1998. 21094 21095 *The OpenSSL Project* 21096 21097### Changes between 0.9.0b and 0.9.1b [not released] 21098 21099 * Updated a few CA certificates under certs/ 21100 21101 *Eric A. Young* 21102 21103 * Changed some BIGNUM api stuff. 21104 21105 *Eric A. Young* 21106 21107 * Various platform ports: OpenBSD, Ultrix, IRIX 64bit, NetBSD, 21108 DGUX x86, Linux Alpha, etc. 21109 21110 *Eric A. Young* 21111 21112 * New COMP library [crypto/comp/] for SSL Record Layer Compression: 21113 RLE (dummy implemented) and ZLIB (really implemented when ZLIB is 21114 available). 21115 21116 *Eric A. Young* 21117 21118 * Add -strparse option to asn1pars program which parses nested 21119 binary structures 21120 21121 *Dr Stephen Henson <shenson@bigfoot.com>* 21122 21123 * Added "oid_file" to ssleay.cnf for "ca" and "req" programs. 21124 21125 *Eric A. Young* 21126 21127 * DSA fix for "ca" program. 21128 21129 *Eric A. Young* 21130 21131 * Added "-genkey" option to "dsaparam" program. 21132 21133 *Eric A. Young* 21134 21135 * Added RIPE MD160 (rmd160) message digest. 21136 21137 *Eric A. Young* 21138 21139 * Added -a (all) option to "ssleay version" command. 21140 21141 *Eric A. Young* 21142 21143 * Added PLATFORM define which is the id given to Configure. 21144 21145 *Eric A. Young* 21146 21147 * Added MemCheck_XXXX functions to crypto/mem.c for memory checking. 21148 21149 *Eric A. Young* 21150 21151 * Extended the ASN.1 parser routines. 21152 21153 *Eric A. Young* 21154 21155 * Extended BIO routines to support REUSEADDR, seek, tell, etc. 21156 21157 *Eric A. Young* 21158 21159 * Added a BN_CTX to the BN library. 21160 21161 *Eric A. Young* 21162 21163 * Fixed the weak key values in DES library 21164 21165 *Eric A. Young* 21166 21167 * Changed API in EVP library for cipher aliases. 21168 21169 *Eric A. Young* 21170 21171 * Added support for RC2/64bit cipher. 21172 21173 *Eric A. Young* 21174 21175 * Converted the lhash library to the crypto/mem.c functions. 21176 21177 *Eric A. Young* 21178 21179 * Added more recognized ASN.1 object ids. 21180 21181 *Eric A. Young* 21182 21183 * Added more RSA padding checks for SSL/TLS. 21184 21185 *Eric A. Young* 21186 21187 * Added BIO proxy/filter functionality. 21188 21189 *Eric A. Young* 21190 21191 * Added extra_certs to SSL_CTX which can be used 21192 send extra CA certificates to the client in the CA cert chain sending 21193 process. It can be configured with SSL_CTX_add_extra_chain_cert(). 21194 21195 *Eric A. Young* 21196 21197 * Now Fortezza is denied in the authentication phase because 21198 this is key exchange mechanism is not supported by SSLeay at all. 21199 21200 *Eric A. Young* 21201 21202 * Additional PKCS1 checks. 21203 21204 *Eric A. Young* 21205 21206 * Support the string "TLSv1" for all TLS v1 ciphers. 21207 21208 *Eric A. Young* 21209 21210 * Added function SSL_get_ex_data_X509_STORE_CTX_idx() which gives the 21211 ex_data index of the SSL context in the X509_STORE_CTX ex_data. 21212 21213 *Eric A. Young* 21214 21215 * Fixed a few memory leaks. 21216 21217 *Eric A. Young* 21218 21219 * Fixed various code and comment typos. 21220 21221 *Eric A. Young* 21222 21223 * A minor bug in ssl/s3_clnt.c where there would always be 4 0 21224 bytes sent in the client random. 21225 21226 *Edward Bishop <ebishop@spyglass.com>* 21227 21228<!-- Links --> 21229 21230[CVE-2025-4575]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-4575 21231[CVE-2024-13176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-13176 21232[CVE-2024-9143]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-9143 21233[CVE-2024-6119]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-6119 21234[CVE-2024-5535]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-5535 21235[CVE-2024-4741]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4741 21236[CVE-2024-4603]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4603 21237[CVE-2024-2511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-2511 21238[CVE-2024-0727]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-0727 21239[CVE-2023-6237]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6237 21240[CVE-2023-6129]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6129 21241[CVE-2023-5678]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-5678 21242[CVE-2023-5363]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-5363 21243[CVE-2023-4807]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-4807 21244[CVE-2023-3817]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-3817 21245[CVE-2023-3446]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-3446 21246[CVE-2023-2975]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-2975 21247[RFC 2578 (STD 58), section 3.5]: https://datatracker.ietf.org/doc/html/rfc2578#section-3.5 21248[CVE-2023-2650]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-2650 21249[CVE-2023-1255]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-1255 21250[CVE-2023-0466]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0466 21251[CVE-2023-0465]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0465 21252[CVE-2023-0464]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0464 21253[CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401 21254[CVE-2023-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0286 21255[CVE-2023-0217]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0217 21256[CVE-2023-0216]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0216 21257[CVE-2023-0215]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0215 21258[CVE-2022-4450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4450 21259[CVE-2022-4304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4304 21260[CVE-2022-4203]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4203 21261[CVE-2022-3996]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-3996 21262[CVE-2022-2274]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2274 21263[CVE-2022-2097]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2097 21264[CVE-2020-1971]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1971 21265[CVE-2020-1967]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1967 21266[CVE-2019-1563]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1563 21267[CVE-2019-1559]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1559 21268[CVE-2019-1552]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1552 21269[CVE-2019-1551]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1551 21270[CVE-2019-1549]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1549 21271[CVE-2019-1547]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1547 21272[CVE-2019-1543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2019-1543 21273[CVE-2018-5407]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-5407 21274[CVE-2018-0739]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0739 21275[CVE-2018-0737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0737 21276[CVE-2018-0735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0735 21277[CVE-2018-0734]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0734 21278[CVE-2018-0733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0733 21279[CVE-2018-0732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2018-0732 21280[CVE-2017-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3738 21281[CVE-2017-3737]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3737 21282[CVE-2017-3736]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3736 21283[CVE-2017-3735]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3735 21284[CVE-2017-3733]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3733 21285[CVE-2017-3732]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3732 21286[CVE-2017-3731]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3731 21287[CVE-2017-3730]: https://www.openssl.org/news/vulnerabilities.html#CVE-2017-3730 21288[CVE-2016-7055]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7055 21289[CVE-2016-7054]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7054 21290[CVE-2016-7053]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7053 21291[CVE-2016-7052]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-7052 21292[CVE-2016-6309]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6309 21293[CVE-2016-6308]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6308 21294[CVE-2016-6307]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6307 21295[CVE-2016-6306]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6306 21296[CVE-2016-6305]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6305 21297[CVE-2016-6304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6304 21298[CVE-2016-6303]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6303 21299[CVE-2016-6302]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-6302 21300[CVE-2016-2183]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2183 21301[CVE-2016-2182]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2182 21302[CVE-2016-2181]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2181 21303[CVE-2016-2180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2180 21304[CVE-2016-2179]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2179 21305[CVE-2016-2178]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2178 21306[CVE-2016-2177]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2177 21307[CVE-2016-2176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2176 21308[CVE-2016-2109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2109 21309[CVE-2016-2107]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2107 21310[CVE-2016-2106]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2106 21311[CVE-2016-2105]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-2105 21312[CVE-2016-0800]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0800 21313[CVE-2016-0799]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0799 21314[CVE-2016-0798]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0798 21315[CVE-2016-0797]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0797 21316[CVE-2016-0705]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0705 21317[CVE-2016-0702]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0702 21318[CVE-2016-0701]: https://www.openssl.org/news/vulnerabilities.html#CVE-2016-0701 21319[CVE-2015-3197]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3197 21320[CVE-2015-3196]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3196 21321[CVE-2015-3195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3195 21322[CVE-2015-3194]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3194 21323[CVE-2015-3193]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-3193 21324[CVE-2015-1793]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1793 21325[CVE-2015-1792]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1792 21326[CVE-2015-1791]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1791 21327[CVE-2015-1790]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1790 21328[CVE-2015-1789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1789 21329[CVE-2015-1788]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1788 21330[CVE-2015-1787]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-1787 21331[CVE-2015-0293]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0293 21332[CVE-2015-0291]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0291 21333[CVE-2015-0290]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0290 21334[CVE-2015-0289]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0289 21335[CVE-2015-0288]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0288 21336[CVE-2015-0287]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0287 21337[CVE-2015-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0286 21338[CVE-2015-0285]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0285 21339[CVE-2015-0209]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0209 21340[CVE-2015-0208]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0208 21341[CVE-2015-0207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0207 21342[CVE-2015-0206]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0206 21343[CVE-2015-0205]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0205 21344[CVE-2015-0204]: https://www.openssl.org/news/vulnerabilities.html#CVE-2015-0204 21345[CVE-2014-8275]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-8275 21346[CVE-2014-5139]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-5139 21347[CVE-2014-3572]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3572 21348[CVE-2014-3571]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3571 21349[CVE-2014-3570]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3570 21350[CVE-2014-3569]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3569 21351[CVE-2014-3568]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3568 21352[CVE-2014-3567]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3567 21353[CVE-2014-3566]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3566 21354[CVE-2014-3513]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3513 21355[CVE-2014-3512]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3512 21356[CVE-2014-3511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3511 21357[CVE-2014-3510]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3510 21358[CVE-2014-3509]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3509 21359[CVE-2014-3508]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3508 21360[CVE-2014-3507]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3507 21361[CVE-2014-3506]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3506 21362[CVE-2014-3505]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3505 21363[CVE-2014-3470]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-3470 21364[CVE-2014-0224]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0224 21365[CVE-2014-0221]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0221 21366[CVE-2014-0195]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0195 21367[CVE-2014-0160]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0160 21368[CVE-2014-0076]: https://www.openssl.org/news/vulnerabilities.html#CVE-2014-0076 21369[CVE-2013-6450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-6450 21370[CVE-2013-4353]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-4353 21371[CVE-2013-0169]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0169 21372[CVE-2013-0166]: https://www.openssl.org/news/vulnerabilities.html#CVE-2013-0166 21373[CVE-2012-2686]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2686 21374[CVE-2012-2333]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2333 21375[CVE-2012-2110]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-2110 21376[CVE-2012-0884]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0884 21377[CVE-2012-0050]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0050 21378[CVE-2012-0027]: https://www.openssl.org/news/vulnerabilities.html#CVE-2012-0027 21379[CVE-2011-4619]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4619 21380[CVE-2011-4577]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4577 21381[CVE-2011-4576]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4576 21382[CVE-2011-4109]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4109 21383[CVE-2011-4108]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-4108 21384[CVE-2011-3210]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3210 21385[CVE-2011-3207]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-3207 21386[CVE-2011-0014]: https://www.openssl.org/news/vulnerabilities.html#CVE-2011-0014 21387[CVE-2010-4252]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4252 21388[CVE-2010-4180]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-4180 21389[CVE-2010-3864]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-3864 21390[CVE-2010-1633]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-1633 21391[CVE-2010-0740]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0740 21392[CVE-2010-0433]: https://www.openssl.org/news/vulnerabilities.html#CVE-2010-0433 21393[CVE-2009-4355]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-4355 21394[CVE-2009-3555]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3555 21395[CVE-2009-3245]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-3245 21396[CVE-2009-1386]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1386 21397[CVE-2009-1379]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1379 21398[CVE-2009-1378]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1378 21399[CVE-2009-1377]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-1377 21400[CVE-2009-0789]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0789 21401[CVE-2009-0591]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0591 21402[CVE-2009-0590]: https://www.openssl.org/news/vulnerabilities.html#CVE-2009-0590 21403[CVE-2008-5077]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-5077 21404[CVE-2008-1678]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1678 21405[CVE-2008-1672]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-1672 21406[CVE-2008-0891]: https://www.openssl.org/news/vulnerabilities.html#CVE-2008-0891 21407[CVE-2007-5135]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-5135 21408[CVE-2007-4995]: https://www.openssl.org/news/vulnerabilities.html#CVE-2007-4995 21409[CVE-2006-4343]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4343 21410[CVE-2006-4339]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-4339 21411[CVE-2006-3738]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-3738 21412[CVE-2006-2940]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2940 21413[CVE-2006-2937]: https://www.openssl.org/news/vulnerabilities.html#CVE-2006-2937 21414[CVE-2005-2969]: https://www.openssl.org/news/vulnerabilities.html#CVE-2005-2969 21415[CVE-2004-0112]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0112 21416[CVE-2004-0079]: https://www.openssl.org/news/vulnerabilities.html#CVE-2004-0079 21417[CVE-2003-0851]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0851 21418[CVE-2003-0545]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0545 21419[CVE-2003-0544]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0544 21420[CVE-2003-0543]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0543 21421[CVE-2003-0078]: https://www.openssl.org/news/vulnerabilities.html#CVE-2003-0078 21422[CVE-2002-0659]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0659 21423[CVE-2002-0657]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0657 21424[CVE-2002-0656]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0656 21425[CVE-2002-0655]: https://www.openssl.org/news/vulnerabilities.html#CVE-2002-0655 21426[CMVP]: https://csrc.nist.gov/projects/cryptographic-module-validation-program 21427[ESV]: https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations 21428