1# Change Log 2 3## [Unreleased] 4 5## [v0.10.32] - 2020-12-24 6 7### Fixed 8 9* Fixed `Ssl::new` to take a `&SslContextRef` rather than `&SslContext`. 10 11### Added 12 13* Added the `encrypt` module to support asymmetric encryption and decryption with `PKey`s. 14* Added `MessageDigest::from_name`. 15* Added `ConnectConfiguration::into_ssl`. 16* Added the ability to create unconnected `SslStream`s directly from an `Ssl` and transport stream 17 without performing any part of the handshake with `SslStream::new`. 18* Added `SslStream::{read_early_data, write_early_data, connect, accept, do_handshake, stateless}`. 19* Implemented `ToOwned` for `SslContextRef`. 20* Added `SslRef::{set_connect_state, set_accept_state}`. 21 22### Deprecated 23 24* Deprecated `SslStream::from_raw_parts` in favor of `Ssl::from_ptr` and `SslStream::new`. 25* Deprecated `SslStreamBuilder` in favor of methods on `Ssl` and `SslStream`. 26 27## [v0.10.31] - 2020-12-09 28 29### Added 30 31* Added `Asn1Object::from_str`. 32* Added `Dh::from_pgq`, `DhRef::prime_p`, `DhRef::prime_q`, `DhRef::generator`, `DhRef::generate_params`, 33 `DhRef::generate_key`, `DhRef::public_key`, and `DhRef::compute_key`. 34* Added `Pkcs7::from_der` and `Pkcs7Ref::to_der`. 35* Added `Id::X25519`, `Id::X448`, `PKey::generate_x25519`, and `PKey::generate_x448`. 36* Added `SrtpProfileId::SRTP_AEAD_AES_128_GCM` and `SrtpProfileId::SRTP_AEAD_AES_256_GCM`. 37* Added `SslContextBuilder::verify_param` and `SslContextBuilder::verify_param_mut`. 38* Added `X509Ref::subject_name_hash` and `X509Ref::version`. 39* Added `X509StoreBuilderRef::add_lookup`, and the `X509Lookup` type. 40* Added `X509VerifyFlags`, `X509VerifyParamRef::set_flags`, `X509VerifyParamRef::clear_flags` 41 `X509VerifyParamRef::get_flags`. 42 43## [v0.10.30] - 2020-06-25 44 45### Fixed 46 47* `DsaRef::private_key_to_pem` can no longer be called without a private key. 48 49### Changed 50 51* Improved the `Debug` implementations of many types. 52 53### Added 54 55* Added `is_empty` implementations for `Asn1StringRef` and `Asn1BitStringRef`. 56* Added `EcPointRef::{to_pem, to_dir}` and `EcKeyRef::{public_key_from_pem, public_key_from_der}`. 57* Added `Default` implementations for many types. 58* Added `Debug` implementations for many types. 59* Added `SslStream::from_raw_parts`. 60* Added `SslRef::set_mtu`. 61* Added `Cipher::{aes_128_ocb, aes_192_ocb, aes_256_ocb}`. 62 63### Deprecated 64 65* Deprecated `SslStreamBuilder::set_dtls_mtu_size` in favor of `SslRef::set_mtu`. 66 67## [v0.10.29] - 2020-04-07 68 69### Fixed 70 71* Fixed a memory leak in `X509Builder::append_extension`. 72 73### Added 74 75* Added `SslConnector::into_context` and `SslConnector::context`. 76* Added `SslAcceptor::into_context` and `SslAcceptor::context`. 77* Added `SslMethod::tls_client` and `SslMethod::tls_server`. 78* Added `SslContextBuilder::set_cert_store`. 79* Added `SslContextRef::verify_mode` and `SslRef::verify_mode`. 80* Added `SslRef::is_init_finished`. 81* Added `X509Object`. 82* Added `X509StoreRef::objects`. 83 84## [v0.10.28] - 2020-02-04 85 86### Fixed 87 88* Fixed the mutability of `Signer::sign_oneshot` and `Verifier::verify_oneshot`. This is unfortunately a breaking 89 change, but a necessary soundness fix. 90 91## [v0.10.27] - 2020-01-29 92 93### Added 94 95* Added `MessageDigest::null`. 96* Added `PKey::private_key_from_pkcs8`. 97* Added `SslOptions::NO_RENEGOTIATION`. 98* Added `SslStreamBuilder::set_dtls_mtu_size`. 99 100## [v0.10.26] - 2019-11-22 101 102### Fixed 103 104* Fixed improper handling of the IV buffer in `envelope::{Seal, Unseal}`. 105 106### Added 107 108* Added `Asn1TimeRef::{diff, compare}`. 109* Added `Asn1Time::from_unix`. 110* Added `PartialEq` and `PartialOrd` implementations for `Asn1Time` and `Asn1TimeRef`. 111* Added `base64::{encode_block, decode_block}`. 112* Added `EcGroupRef::order_bits`. 113* Added `Clone` implementations for `Sha1`, `Sha224`, `Sha256`, `Sha384`, and `Sha512`. 114* Added `SslContextBuilder::{set_sigalgs_list, set_groups_list}`. 115 116## [v0.10.25] - 2019-10-02 117 118### Fixed 119 120* Fixed a memory leak in `EcdsaSig::from_private_components` when using OpenSSL 1.0.x. 121 122### Added 123 124* Added support for Ed25519 and Ed448 keys. 125* Implemented `ToOwned` for `PKeyRef` and `Clone` for `PKey`. 126 127## [v0.10.24] - 2019-07-19 128 129### Fixed 130 131* Worked around an OpenSSL 1.0.x bug triggered by code calling `SSL_set_app_data`. 132 133### Added 134 135* Added `aes::{wrap_key, unwrap_key}`. 136* Added `CmsContentInfoRef::to_pem` and `CmsContentInfo::from_pem`. 137* Added `DsaRef::private_key_to_pem`. 138* Added `EcGroupRef::{cofactor, generator}`. 139* Added `EcPointRef::to_owned`. 140* Added a `Debug` implementation for `EcKey`. 141* Added `SslAcceptor::{mozilla_intermediate_v5, mozilla_modern_v5}`. 142* Added `Cipher::{aes_128_ofb, aes_192_ecb, aes_192_cbc, aes_192_ctr, aes_192_cfb1, aes_192_cfb128, aes_192_cfb8, 143 aes_192_gcm, aes_192_ccm, aes_192_ofb, aes_256_ofb}`. 144 145## [v0.10.23] - 2019-05-18 146 147### Fixed 148 149* Fixed session callbacks when an `Ssl`'s context is replaced. 150 151### Added 152 153* Added `SslContextBuilder::add_client_ca`. 154 155## [v0.10.22] - 2019-05-08 156 157### Added 158 159* Added support for the LibreSSL 2.9.x series. 160 161## [v0.10.21] - 2019-04-30 162 163### Fixed 164 165* Fixed overly conservatifve buffer size checks in `Crypter` when using stream ciphers. 166 167### Added 168 169* Added bindings to envelope encryption APIs. 170* Added `PkeyRef::size`. 171 172## [v0.10.20] - 2019-03-20 173 174### Added 175 176* Added `CmsContentInfo::from_der` and `CmsContentInfo::encrypt`. 177* Added `X509Ref::verify` and `X509ReqRef::verify`. 178* Implemented `PartialEq` and `Eq` for `MessageDigest`. 179* Added `MessageDigest::type_` and `EcGroupRef::curve_name`. 180 181## [v0.10.19] - 2019-03-01 182 183### Added 184 185* The openssl-sys build script now logs the values of environment variables. 186* Added `ERR_PACK` to openssl-sys. 187* The `ERR_*` functions in openssl-sys are const functions when building against newer Rust versions. 188* Implemented `Clone` for `Dsa`. 189* Added `SslContextRef::add_session` and `SslContextRef::remove_session`. 190* Added `SslSessionRef::time`, `SslSessionRef::timeout`, and `SslSessionRef::protocol_version`. 191* Added `SslContextBuilder::set_session_cache_size` and `SslContextRef::session_cache_size`. 192 193## [v0.10.18] - 2019-02-22 194 195### Fixed 196 197* Fixed the return type of `ssl::cipher_name`. 198 199## [v0.10.17] - 2019-02-22 200 201### Added 202 203* Implemented `AsRef<str>` and `AsRef<[u8]>` for `OpenSslString`. 204* Added `Asn1Integer::from_bn`. 205* Added `RsaRef::check_key`. 206* Added `Asn1Time::from_str` and `Asn1Time::from_str_x509`. 207* Added `Rsa::generate_with_e`. 208* Added `Cipher::des_ede3_cfb64`. 209* Added `SslCipherRef::standard_name` and `ssl::cipher_name`. 210 211## [v0.10.16] - 2018-12-16 212 213### Added 214 215* Added SHA3 and SHAKE to `MessageDigest`. 216* Added `rand::keep_random_devices_open`. 217* Added support for LibreSSL 2.9.0. 218 219## [v0.10.15] - 2018-10-22 220 221### Added 222 223* Implemented `DoubleEndedIterator` for stack iterators. 224 225## [v0.10.14] - 2018-10-18 226 227### Fixed 228 229* Made some accidentally exposed internal functions private. 230 231### Added 232 233* Added support for LibreSSL 2.8. 234 235### Changed 236 237* The OpenSSL version used with the `vendored` feature has been upgraded from 1.1.0 to 1.1.1. 238 239## [v0.10.13] - 2018-10-14 240 241### Fixed 242 243* Fixed a double-free in the `SslContextBuilder::set_get_session_callback` API. 244 245### Added 246 247* Added `SslContextBuilder::set_client_hello_callback`. 248* Added support for LibreSSL 2.8.1. 249* Added `EcdsaSig::from_der` and `EcdsaSig::to_der`. 250* Added PKCS#7 support. 251 252## [v0.10.12] - 2018-09-13 253 254### Fixed 255 256* Fixed handling of SNI callbacks during renegotiation. 257 258### Added 259 260* Added `SslRef::get_shutdown` and `SslRef::set_shutdown`. 261* Added support for SRTP in DTLS sessions. 262* Added support for LibreSSL 2.8.0. 263 264## [v0.10.11] - 2018-08-04 265 266### Added 267 268* The new `vendored` cargo feature will cause openssl-sys to compile and statically link to a 269 vendored copy of OpenSSL. 270* Added `SslContextBuilder::set_psk_server_callback`. 271* Added `DsaRef::pub_key` and `DsaRef::priv_key`. 272* Added `Dsa::from_private_components` and `Dsa::from_public_components`. 273* Added `X509NameRef::entries`. 274 275### Deprecated 276 277* `SslContextBuilder::set_psk_callback` has been renamed to 278 `SslContextBuilder::set_psk_client_callback` and deprecated. 279 280## [v0.10.10] - 2018-06-06 281 282### Added 283 284* Added `SslRef::set_alpn_protos`. 285* Added `SslContextBuilder::set_ciphersuites`. 286 287## [v0.10.9] - 2018-06-01 288 289### Fixed 290 291* Fixed a use-after-free in `CmsContentInfo::sign`. 292* `SslRef::servername` now returns `None` rather than panicking on a non-UTF8 name. 293 294### Added 295 296* Added `MessageDigest::from_nid`. 297* Added `Nid::signature_algorithms`, `Nid::long_name`, and `Nid::short_name`. 298* Added early data and early keying material export support for TLS 1.3. 299* Added `SslRef::verified_chain`. 300* Added `SslRef::servername_raw` which returns a `&[u8]` rather than `&str`. 301* Added `SslRef::finished` and `SslRef::peer_finished`. 302* Added `X509Ref::digest` to replace `X509Ref::fingerprint`. 303* `X509StoreBuilder` and `X509Store` now implement `Sync` and `Send`. 304 305### Deprecated 306 307* `X509Ref::fingerprint` has been deprecated in favor of `X509Ref::digest`. 308 309## [v0.10.8] - 2018-05-20 310 311### Fixed 312 313* `openssl-sys` will now detect Homebrew-installed OpenSSL when installed to a non-default 314 directory. 315* The `X509_V_ERR_INVALID_CALL`, `X509_V_ERR_STORE_LOOKUP`, and 316 `X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION` constants in `openssl-sys` are now only present when 317 building against 1.1.0g and up rather than 1.1.0. 318* `SslContextBuilder::max_proto_version` and `SslContextBuilder::min_proto_version` are only present 319 when building against 1.1.0g and up rather than 1.1.0. 320 321### Added 322 323* Added `CmsContentInfo::sign`. 324* Added `Clone` and `ToOwned` implementations to `Rsa` and `RsaRef` respectively. 325* The `min_proto_version` and `max_proto_version` methods are available when linking against 326 LibreSSL 2.6.1 and up in addition to OpenSSL. 327* `X509VerifyParam` is available when linking against LibreSSL 2.6.1 and up in addition to OpenSSL. 328* ALPN support is available when linking against LibreSSL 2.6.1 and up in addition to OpenSSL. 329* `Stack` and `StackRef` are now `Sync` and `Send`. 330 331## [v0.10.7] - 2018-04-30 332 333### Added 334 335* Added `X509Req::public_key` and `X509Req::extensions`. 336* Added `RsaPrivateKeyBuilder` to allow control over initialization of optional components of an RSA 337 private key. 338* Added DER encode/decode support to `SslSession`. 339* openssl-sys now provides the `DEP_OPENSSL_VERSION_NUMBER` and 340 `DEP_OPENSSL_LIBRESSL_VERSION_NUMBER` environment variables to downstream build scripts which 341 contains the hex-encoded version number of the OpenSSL or LibreSSL distribution being built 342 against. The other variables are deprecated. 343 344## [v0.10.6] - 2018-03-05 345 346### Added 347 348* Added `SslOptions::ENABLE_MIDDLEBOX_COMPAT`. 349* Added more `Sync` and `Send` implementations. 350* Added `PKeyRef::id`. 351* Added `Padding::PKCS1_PSS`. 352* Added `Signer::set_rsa_pss_saltlen`, `Signer::set_rsa_mgf1_md`, `Signer::set_rsa_pss_saltlen`, and 353 `Signer::set_rsa_mgf1_md` 354* Added `X509StoreContextRef::verify` to directly verify certificates. 355* Added low level ECDSA support. 356* Added support for TLSv1.3 custom extensions. (OpenSSL 1.1.1 only) 357* Added AES-CCM support. 358* Added `EcKey::from_private_components`. 359* Added CMAC support. 360* Added support for LibreSSL 2.7. 361* Added `X509Ref::serial_number`. 362* Added `Asn1IntegerRef::to_bn`. 363* Added support for TLSv1.3 stateless handshakes. (OpenSSL 1.1.1 only) 364 365### Changed 366 367* The Cargo features previously used to gate access to version-specific OpenSSL APIs have been 368 removed. Those APIs will be available automatically when building against an appropriate OpenSSL 369 version. 370* Fixed `PKey::private_key_from_der` to return a `PKey<Private>` rather than a `PKey<Public>`. This 371 is technically a breaking change but the function was pretty useless previously. 372 373### Deprecated 374 375* `X509CheckFlags::FLAG_NO_WILDCARDS` has been renamed to `X509CheckFlags::NO_WILDCARDS` and the old 376 name deprecated. 377 378## [v0.10.5] - 2018-02-28 379 380### Fixed 381 382* `ErrorStack`'s `Display` implementation no longer writes an empty string if it contains no errors. 383 384### Added 385 386* Added `SslRef::version2`. 387* Added `Cipher::des_ede3_cbc`. 388* Added `SslRef::export_keying_material`. 389* Added the ability to push an `Error` or `ErrorStack` back onto OpenSSL's error stack. Various 390 callback bindings use this to propagate errors properly. 391* Added `SslContextBuilder::set_cookie_generate_cb` and `SslContextBuilder::set_cookie_verify_cb`. 392* Added `SslContextBuilder::set_max_proto_version`, `SslContextBuilder::set_min_proto_version`, 393 `SslContextBuilder::max_proto_version`, and `SslContextBuilder::min_proto_version`. 394 395### Changed 396 397* Updated `SslConnector`'s default cipher list to match Python's. 398 399### Deprecated 400 401* `SslRef::version` has been deprecated. Use `SslRef::version_str` instead. 402 403## [v0.10.4] - 2018-02-18 404 405### Added 406 407* Added OpenSSL 1.1.1 support. 408* Added `Rsa::public_key_from_pem_pkcs1`. 409* Added `SslOptions::NO_TLSV1_3`. (OpenSSL 1.1.1 only) 410* Added `SslVersion`. 411* Added `SslSessionCacheMode` and `SslContextBuilder::set_session_cache_mode`. 412* Added `SslContextBuilder::set_new_session_callback`, 413 `SslContextBuilder::set_remove_session_callback`, and 414 `SslContextBuilder::set_get_session_callback`. 415* Added `SslContextBuilder::set_keylog_callback`. (OpenSSL 1.1.1 only) 416* Added `SslRef::client_random` and `SslRef::server_random`. (OpenSSL 1.1.0+ only) 417 418### Fixed 419 420* The `SslAcceptorBuilder::mozilla_modern` constructor now disables TLSv1.0 and TLSv1.1 in 421 accordance with Mozilla's recommendations. 422 423## [v0.10.3] - 2018-02-12 424 425### Added 426 427* OpenSSL is now automatically detected on FreeBSD systems. 428* Added `GeneralName` accessors for `rfc822Name` and `uri` variants. 429* Added DES-EDE3 support. 430 431### Fixed 432 433* Fixed a memory leak in `X509StoreBuilder::add_cert`. 434 435## [v0.10.2] - 2018-01-11 436 437### Added 438 439* Added `ConnectConfiguration::set_use_server_name_indication` and 440 `ConnectConfiguration::set_verify_hostname` for use in contexts where you don't have ownership 441 of the `ConnectConfiguration`. 442 443## [v0.10.1] - 2018-01-10 444 445### Added 446 447* Added a `From<ErrorStack> for ssl::Error` implementation. 448 449## [v0.10.0] - 2018-01-10 450 451### Compatibility 452 453* openssl 0.10 still uses openssl-sys 0.9, so openssl 0.9 and 0.10 can coexist without issue. 454 455### Added 456 457* The `ssl::select_next_proto` function can be used to easily implement the ALPN selection callback 458 in a "standard" way. 459* FIPS mode support is available in the `fips` module. 460* Accessors for the Issuer and Issuer Alternative Name fields of X509 certificates have been added. 461* The `X509VerifyResult` can now be set in the certificate verification callback via 462 `X509StoreContextRef::set_error`. 463 464### Changed 465 466* All constants have been moved to associated constants of their type. For example, `bn::MSB_ONE` 467 is now `bn::MsbOption::ONE`. 468* Asymmetric key types are now parameterized over what they contain. In OpenSSL, the same type is 469 used for key parameters, public keys, and private keys. Unfortunately, some APIs simply assume 470 that certain components are present and will segfault trying to use things that aren't there. 471 472 The `pkey` module contains new tag types named `Params`, `Public`, and `Private`, and the 473 `Dh`, `Dsa`, `EcKey`, `Rsa`, and `PKey` have a type parameter set to one of those values. This 474 allows the `Signer` constructor to indicate that it requires a private key at compile time for 475 example. Previously, `Signer` would simply segfault if provided a key without private 476 components. 477* ALPN support has been changed to more directly model OpenSSL's own APIs. Instead of a single 478 method used for both the server and client sides which performed everything automatically, the 479 `SslContextBuilder::set_alpn_protos` and `SslContextBuilder::set_alpn_select_callback` handle 480 the client and server sides respectively. 481* `SslConnector::danger_connect_without_providing_domain_for_certificate_verification_and_server_name_indication` 482 has been removed in favor of new methods which provide more control. The 483 `ConnectConfiguration::use_server_name_indication` method controls the use of Server Name 484 Indication (SNI), and the `ConnectConfiguration::verify_hostname` method controls the use of 485 hostname verification. These can be controlled independently, and if both are disabled, the 486 domain argument to `ConnectConfiguration::connect` is ignored. 487* Shared secret derivation is now handled by the new `derive::Deriver` type rather than 488 `pkey::PKeyContext`, which has been removed. 489* `ssl::Error` is now no longer an enum, and provides more direct access to the relevant state. 490* `SslConnectorBuilder::new` has been moved and renamed to `SslConnector::builder`. 491* `SslAcceptorBuilder::mozilla_intermediate` and `SslAcceptorBuilder::mozilla_modern` have been 492 moved to `SslAcceptor` and no longer take the private key and certificate chain. Install those 493 manually after creating the builder. 494* `X509VerifyError` is now `X509VerifyResult` and can now have the "ok" value in addition to error 495 values. 496* `x509::X509FileType` is now `ssl::SslFiletype`. 497* Asymmetric key serialization and deserialization methods now document the formats that they 498 correspond to, and some have been renamed to better indicate that. 499 500### Removed 501 502* All deprecated APIs have been removed. 503* NPN support has been removed. It has been supersceded by ALPN, and is hopefully no longer being 504 used in practice. If you still depend on it, please file an issue! 505* `SslRef::compression` has been removed. 506* Some `ssl::SslOptions` flags have been removed as they no longer do anything. 507 508## Older 509 510Look at the [release tags] for information about older releases. 511 512[Unreleased]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.32...master 513[v0.10.32]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.31...openssl-v0.10.32 514[v0.10.31]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.30...openssl-v0.10.31 515[v0.10.30]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.29...openssl-v0.10.30 516[v0.10.29]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.28...openssl-v0.10.29 517[v0.10.28]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.27...openssl-v0.10.28 518[v0.10.27]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.26...openssl-v0.10.27 519[v0.10.26]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.25...openssl-v0.10.26 520[v0.10.25]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.24...openssl-v0.10.25 521[v0.10.24]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.23...openssl-v0.10.24 522[v0.10.23]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.22...openssl-v0.10.23 523[v0.10.22]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.21...openssl-v0.10.22 524[v0.10.21]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.20...openssl-v0.10.21 525[v0.10.20]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.19...openssl-v0.10.20 526[v0.10.19]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.18...openssl-v0.10.19 527[v0.10.18]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.17...openssl-v0.10.18 528[v0.10.17]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.16...openssl-v0.10.17 529[v0.10.16]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.15...openssl-v0.10.16 530[v0.10.15]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.14...openssl-v0.10.15 531[v0.10.14]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.13...openssl-v0.10.14 532[v0.10.13]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.12...openssl-v0.10.13 533[v0.10.12]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.11...openssl-v0.10.12 534[v0.10.11]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.10...openssl-v0.10.11 535[v0.10.10]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.9...openssl-v0.10.10 536[v0.10.9]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.8...openssl-v0.10.9 537[v0.10.8]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.7...openssl-v0.10.8 538[v0.10.7]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.6...openssl-v0.10.7 539[v0.10.6]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.5...openssl-v0.10.6 540[v0.10.5]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.4...openssl-v0.10.5 541[v0.10.4]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.3...openssl-v0.10.4 542[v0.10.3]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.2...openssl-v0.10.3 543[v0.10.2]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.1...openssl-v0.10.2 544[v0.10.1]: https://github.com/sfackler/rust-openssl/compare/openssl-v0.10.0...openssl-v0.10.1 545[v0.10.0]: https://github.com/sfackler/rust-openssl/compare/v0.9.23...openssl-v0.10.0 546[release tags]: https://github.com/sfackler/rust-openssl/releases 547