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