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