blob: ab1072d4f42fe87799e9c371b3bc570dedb61c8d [file] [log] [blame]
Hynek Schlawack682443f2015-10-25 16:15:12 +01001Changelog
2=========
3
Hynek Schlawack65e4def2016-03-13 15:07:52 +01004Versions are year-based with a strict backward-compatibility policy.
Hynek Schlawack682443f2015-10-25 16:15:12 +01005The third digit is only for regressions.
6
Hynek Schlawack29add1d2016-10-16 11:20:04 +02007
Hynek Schlawacka4212762017-06-30 18:28:08 +0200817.2.0 (UNRELEASED)
9-------------------
10
11
12Backward-incompatible changes:
13^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14
15*none*
16
17
18Deprecations:
19^^^^^^^^^^^^^
20
21*none*
22
23
24Changes:
25^^^^^^^^
26
27*none*
28
29
30----
31
32
Hynek Schlawacka46d2342017-06-30 17:33:08 +02003317.1.0 (2017-06-30)
Hynek Schlawack7706e142017-04-20 14:54:05 +020034-------------------
35
36
37Backward-incompatible changes:
38^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
39
Hynek Schlawack941f9032017-06-30 16:20:00 +020040- Removed the deprecated ``OpenSSL.rand.egd()`` function.
Alex Gaynor3ed62732017-05-31 05:03:27 -040041 Applications should prefer ``os.urandom()`` for random number generation.
42 `#630 <https://github.com/pyca/pyopenssl/pull/630>`_
Alex Gaynor173e4ba2017-06-30 08:01:12 -070043- Removed the deprecated default ``digest`` argument to ``OpenSSL.crypto.CRL.export()``.
44 Callers must now always pass an explicit ``digest``.
45 `#652 <https://github.com/pyca/pyopenssl/pull/652>`_
Hynek Schlawack941f9032017-06-30 16:20:00 +020046- Fixed a bug with ``ASN1_TIME`` casting in ``X509.set_notBefore()``,
47 ``X509.set_notAfter()``, ``Revoked.set_rev_date()``, ``Revoked.set_nextUpdate()``,
48 and ``Revoked.set_lastUpdate()``. You must now pass times in the form
Paul Kehrerce98ee62017-06-21 06:59:58 -100049 ``YYYYMMDDhhmmssZ``. ``YYYYMMDDhhmmss+hhmm`` and ``YYYYMMDDhhmmss-hhmm``
50 will no longer work. `#612 <https://github.com/pyca/pyopenssl/pull/612>`_
Hynek Schlawack7706e142017-04-20 14:54:05 +020051
52
53Deprecations:
54^^^^^^^^^^^^^
55
Alex Gaynor10d30832017-06-29 15:31:39 -070056
Hynek Schlawack941f9032017-06-30 16:20:00 +020057- Deprecated the legacy "Type" aliases: ``ContextType``, ``ConnectionType``, ``PKeyType``, ``X509NameType``, ``X509ExtensionType``, ``X509ReqType``, ``X509Type``, ``X509StoreType``, ``CRLType``, ``PKCS7Type``, ``PKCS12Type``, ``NetscapeSPKIType``.
58 The names without the "Type"-suffix should be used instead.
Hynek Schlawack7706e142017-04-20 14:54:05 +020059
60
61Changes:
62^^^^^^^^
63
Hynek Schlawack941f9032017-06-30 16:20:00 +020064- Added ``OpenSSL.crypto.X509.from_cryptography()`` and ``OpenSSL.crypto.X509.to_cryptography()`` for converting X.509 certificate to and from pyca/cryptography objects.
65 `#640 <https://github.com/pyca/pyopenssl/pull/640>`_
66- Added ``OpenSSL.crypto.X509Req.from_cryptography()``, ``OpenSSL.crypto.X509Req.to_cryptography()``, ``OpenSSL.crypto.CRL.from_cryptography()``, and ``OpenSSL.crypto.CRL.to_cryptography()`` for converting X.509 CSRs and CRLs to and from pyca/cryptography objects.
67 `#645 <https://github.com/pyca/pyopenssl/pull/645>`_
Hynek Schlawackd52975c2017-05-13 17:44:27 +020068- Added ``OpenSSL.debug`` that allows to get an overview of used library versions (including linked OpenSSL) and other useful runtime information using ``python -m OpenSSL.debug``.
69 `#620 <https://github.com/pyca/pyopenssl/pull/620>`_
Hynek Schlawacka46d2342017-06-30 17:33:08 +020070- Added a fallback path to ``Context.set_default_verify_paths()`` to accommodate the upcoming release of ``cryptography`` ``manylinux1`` wheels.
Hynek Schlawack941f9032017-06-30 16:20:00 +020071 `#633 <https://github.com/pyca/pyopenssl/pull/633>`_
Hynek Schlawack7706e142017-04-20 14:54:05 +020072
73
74----
75
76
Hynek Schlawack79705082017-04-20 13:32:49 +02007717.0.0 (2017-04-20)
Hynek Schlawack29add1d2016-10-16 11:20:04 +020078-------------------
79
80Backward-incompatible changes:
81^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
82
83*none*
84
85
86Deprecations:
87^^^^^^^^^^^^^
88
89*none*
90
91
92Changes:
93^^^^^^^^
94
Thomas Sileoe15e60a2016-11-22 18:13:30 +010095- Added ``OpenSSL.X509Store.set_time()`` to set a custom verification time when verifying certificate chains.
96 `#567 <https://github.com/pyca/pyopenssl/pull/567>`_
Cory Benfield496652a2017-01-24 11:42:56 +000097- Added a collection of functions for working with OCSP stapling.
98 None of these functions make it possible to validate OCSP assertions, only to staple them into the handshake and to retrieve the stapled assertion if provided.
99 Users will need to write their own code to handle OCSP assertions.
Hynek Schlawack941f9032017-06-30 16:20:00 +0200100 We specifically added: ``Context.set_ocsp_server_callback()``, ``Context.set_ocsp_client_callback()``, and ``Connection.request_ocsp()``.
Cory Benfield685483b2017-01-24 14:00:45 +0000101 `#580 <https://github.com/pyca/pyopenssl/pull/580>`_
Cory Benfielde62840e2016-11-28 12:17:08 +0000102- Changed the ``SSL`` module's memory allocation policy to avoid zeroing memory it allocates when unnecessary.
103 This reduces CPU usage and memory allocation time by an amount proportional to the size of the allocation.
104 For applications that process a lot of TLS data or that use very lage allocations this can provide considerable performance improvements.
105 `#578 <https://github.com/pyca/pyopenssl/pull/578>`_
Paul Kehrer6c6bf862016-12-19 06:03:48 -0600106- Automatically set ``SSL_CTX_set_ecdh_auto()`` on ``OpenSSL.SSL.Context``.
107 `#575 <https://github.com/pyca/pyopenssl/pull/575>`_
Greg Bowser36eb2de2017-01-24 11:38:55 -0500108- Fix empty exceptions from ``OpenSSL.crypto.load_privatekey()``.
109 `#581 <https://github.com/pyca/pyopenssl/pull/581>`_
Hynek Schlawack29add1d2016-10-16 11:20:04 +0200110
111
112----
113
114
Hynek Schlawackc3b38e52016-10-15 14:56:14 +020011516.2.0 (2016-10-15)
Paul Kehrer8e99fef2016-08-26 19:36:46 +0800116-------------------
117
118Backward-incompatible changes:
119^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
120
121*none*
122
123
124Deprecations:
125^^^^^^^^^^^^^
126
127*none*
128
129
130Changes:
131^^^^^^^^
132
Alex Gaynor0cc56372016-09-24 11:15:55 -0400133- Fixed compatibility errors with OpenSSL 1.1.0.
Paul Kehrerfe2a0a12016-10-06 12:00:54 +0200134- Fixed an issue that caused failures with subinterpreters and embedded Pythons.
135 `#552 <https://github.com/pyca/pyopenssl/pull/552>`_
Paul Kehrer8e99fef2016-08-26 19:36:46 +0800136
Hynek Schlawackc3b38e52016-10-15 14:56:14 +0200137
Paul Kehrer8e99fef2016-08-26 19:36:46 +0800138----
139
Hynek Schlawack682443f2015-10-25 16:15:12 +0100140
Paul Kehrerd0513ab2016-08-26 16:33:23 +080014116.1.0 (2016-08-26)
Hynek Schlawack156f1742016-03-19 12:37:12 +0100142-------------------
143
144Backward-incompatible changes:
145^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
146
147*none*
148
149
150Deprecations:
151^^^^^^^^^^^^^
152
Alex Gaynor2a522852016-08-31 12:17:55 -0400153- Dropped support for OpenSSL 0.9.8.
Hynek Schlawack156f1742016-03-19 12:37:12 +0100154
155
156Changes:
157^^^^^^^^
158
Hynek Schlawack11e43ad2016-07-03 14:40:20 +0200159- Fix memory leak in ``OpenSSL.crypto.dump_privatekey()`` with ``FILETYPE_TEXT``.
160 `#496 <https://github.com/pyca/pyopenssl/pull/496>`_
Dan Sully44e767a2016-06-04 18:05:27 -0700161- Enable use of CRL (and more) in verify context.
162 `#483 <https://github.com/pyca/pyopenssl/pull/483>`_
Paul Kehrer72d968b2016-07-29 15:31:04 +0800163- ``OpenSSL.crypto.PKey`` can now be constructed from ``cryptography`` objects and also exported as such.
164 `#439 <https://github.com/pyca/pyopenssl/pull/439>`_
Paul Kehrerd0513ab2016-08-26 16:33:23 +0800165- Support newer versions of ``cryptography`` which use opaque structs for OpenSSL 1.1.0 compatibility.
Hynek Schlawack156f1742016-03-19 12:37:12 +0100166
167
168----
169
170
Hynek Schlawackb62041b2016-03-19 10:00:09 +010017116.0.0 (2016-03-19)
Hynek Schlawack682443f2015-10-25 16:15:12 +0100172-------------------
173
174This is the first release under full stewardship of PyCA.
175We have made *many* changes to make local development more pleasing.
176The test suite now passes both on Linux and OS X with OpenSSL 0.9.8, 1.0.1, and 1.0.2.
Hynek Schlawackf6c96af2017-04-20 12:34:58 +0200177It has been moved to `pytest <https://docs.pytest.org/>`_, all CI test runs are part of `tox <https://tox.readthedocs.io/>`_ and the source code has been made fully `flake8 <https://flake8.readthedocs.io/>`_ compliant.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100178
Cory Benfield0820ac22015-10-28 17:39:28 +0900179We hope to have lowered the barrier for contributions significantly but are open to hear about any remaining frustrations.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100180
181
182Backward-incompatible changes:
183^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
184
185- Python 3.2 support has been dropped.
186 It never had significant real world usage and has been dropped by our main dependency ``cryptography``.
187 Affected users should upgrade to Python 3.3 or later.
188
189
190Deprecations:
191^^^^^^^^^^^^^
192
193- The support for EGD has been removed.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100194 The only affected function ``OpenSSL.rand.egd()`` now uses ``os.urandom()`` to seed the internal PRNG instead.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100195 Please see `pyca/cryptography#1636 <https://github.com/pyca/cryptography/pull/1636>`_ for more background information on this decision.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100196 In accordance with our backward compatibility policy ``OpenSSL.rand.egd()`` will be *removed* no sooner than a year from the release of 16.0.0.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100197
Hynek Schlawackc3b38e52016-10-15 14:56:14 +0200198 Please note that you should `use urandom <https://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers/>`_ for all your secure random number needs.
Hynek Schlawack046d3f42016-03-13 08:33:04 +0100199- Python 2.6 support has been deprecated.
200 Our main dependency ``cryptography`` deprecated 2.6 in version 0.9 (2015-05-14) with no time table for actually dropping it.
201 pyOpenSSL will drop Python 2.6 support once ``cryptography`` does.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100202
203
204Changes:
205^^^^^^^^
206
Hynek Schlawackb875d512016-03-16 13:56:33 +0100207- Fixed ``OpenSSL.SSL.Context.set_session_id``, ``OpenSSL.SSL.Connection.renegotiate``, ``OpenSSL.SSL.Connection.renegotiate_pending``, and ``OpenSSL.SSL.Context.load_client_ca``.
Hynek Schlawackb1f3ca82016-02-13 09:10:04 +0100208 They were lacking an implementation since 0.14.
Hynek Schlawackb875d512016-03-16 13:56:33 +0100209 `#422 <https://github.com/pyca/pyopenssl/pull/422>`_
Paul Kehrer8fc6ec02016-03-02 13:20:58 -0600210- Fixed segmentation fault when using keys larger than 4096-bit to sign data.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100211 `#428 <https://github.com/pyca/pyopenssl/pull/428>`_
212- Fixed ``AttributeError`` when ``OpenSSL.SSL.Connection.get_app_data()`` was called before setting any app data.
213 `#304 <https://github.com/pyca/pyopenssl/pull/304>`_
214- Added ``OpenSSL.crypto.dump_publickey()`` to dump ``OpenSSL.crypto.PKey`` objects that represent public keys, and ``OpenSSL.crypto.load_publickey()`` to load such objects from serialized representations.
215 `#382 <https://github.com/pyca/pyopenssl/pull/382>`_
216- Added ``OpenSSL.crypto.dump_crl()`` to dump a certificate revocation list out to a string buffer.
217 `#368 <https://github.com/pyca/pyopenssl/pull/368>`_
Hynek Schlawackea94f2b2016-03-13 16:17:53 +0100218- Added ``OpenSSL.SSL.Connection.get_state_string()`` using the OpenSSL binding ``state_string_long``.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100219 `#358 <https://github.com/pyca/pyopenssl/pull/358>`_
220- Added support for the ``socket.MSG_PEEK`` flag to ``OpenSSL.SSL.Connection.recv()`` and ``OpenSSL.SSL.Connection.recv_into()``.
221 `#294 <https://github.com/pyca/pyopenssl/pull/294>`_
222- Added ``OpenSSL.SSL.Connection.get_protocol_version()`` and ``OpenSSL.SSL.Connection.get_protocol_version_name()``.
223 `#244 <https://github.com/pyca/pyopenssl/pull/244>`_
224- Switched to ``utf8string`` mask by default.
225 OpenSSL formerly defaulted to a ``T61String`` if there were UTF-8 characters present.
226 This was changed to default to ``UTF8String`` in the config around 2005, but the actual code didn't change it until late last year.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100227 This will default us to the setting that actually works.
228 To revert this you can call ``OpenSSL.crypto._lib.ASN1_STRING_set_default_mask_asc(b"default")``.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100229 `#234 <https://github.com/pyca/pyopenssl/pull/234>`_
Hynek Schlawack682443f2015-10-25 16:15:12 +0100230
231
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100232----
233
Hynek Schlawack682443f2015-10-25 16:15:12 +0100234
235Older Changelog Entries
236-----------------------
237
Hynek Schlawack0cc61542016-01-19 14:09:32 +0100238The changes from before release 16.0.0 are preserved in the `repository <https://github.com/pyca/pyopenssl/blob/master/doc/ChangeLog_old.txt>`_.