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