blob: 63e74cbab88b4b2d2e692dbee3bf14f84173b6cd [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
Alex Gaynor4211b902020-12-15 10:30:35 -0500720.0.1 (2020-12-15)
Paul Kehrer1eb67662020-11-27 16:28:02 -06008-------------------
9
10Backward-incompatible changes:
11^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12
13Deprecations:
14^^^^^^^^^^^^^
15
16Changes:
17^^^^^^^^
18
Alex Gaynor4211b902020-12-15 10:30:35 -050019- Fixed compatibility with OpenSSL 1.1.0.
20
Paul Kehrerde2dbf72020-11-27 15:47:04 -06002120.0.0 (2020-11-27)
Paul Kehrerdaf6f002019-11-18 13:10:12 +080022-------------------
23
24
25Backward-incompatible changes:
26^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
27
Alex Gaynor124a0132020-10-27 00:15:17 -040028- The minimum ``cryptography`` version is now 3.2.
Benjamin Peterson2dca7a72020-05-22 11:32:07 -050029- Remove deprecated ``OpenSSL.tsafe`` module.
Paul Kehrer9a805762020-08-03 22:47:37 -050030- Removed deprecated ``OpenSSL.SSL.Context.set_npn_advertise_callback``, ``OpenSSL.SSL.Context.set_npn_select_callback``, and ``OpenSSL.SSL.Connection.get_next_proto_negotiated``.
Alex Gaynor1ede5842019-12-14 11:15:47 -050031- Drop support for Python 3.4
Alex Gaynor124a0132020-10-27 00:15:17 -040032- Drop support for OpenSSL 1.0.1 and 1.0.2
Paul Kehrerdaf6f002019-11-18 13:10:12 +080033
34Deprecations:
35^^^^^^^^^^^^^
36
Alex Gaynorbb971ae2020-08-05 01:14:16 -040037- Deprecated ``OpenSSL.crypto.loads_pkcs7`` and ``OpenSSL.crypto.loads_pkcs12``.
38
Paul Kehrerdaf6f002019-11-18 13:10:12 +080039Changes:
40^^^^^^^^
41
Sándor Oroszi83ef2302020-10-12 15:42:23 +020042- Added a new optional ``chain`` parameter to ``OpenSSL.crypto.X509StoreContext()``
43 where additional untrusted certificates can be specified to help chain building.
44 `#948 <https://github.com/pyca/pyopenssl/pull/948>`_
Sándor Oroszi43c97762020-09-11 17:17:31 +020045- Added ``OpenSSL.crypto.X509Store.load_locations`` to set trusted
46 certificate file bundles and/or directories for verification.
47 `#943 <https://github.com/pyca/pyopenssl/pull/943>`_
Maximilian Hilsb2bca412020-07-28 16:31:22 +020048- Added ``Context.set_keylog_callback`` to log key material.
49 `#910 <https://github.com/pyca/pyopenssl/pull/910>`_
Shane Harvey33c54992020-08-05 16:48:51 -070050- Added ``OpenSSL.SSL.Connection.get_verified_chain`` to retrieve the
51 verified certificate chain of the peer.
52 `#894 <https://github.com/pyca/pyopenssl/pull/894>`_.
Maximilian Hils79b9c792020-08-08 03:08:17 +020053- Make verification callback optional in ``Context.set_verify``.
54 If omitted, OpenSSL's default verification is used.
55 `#933 <https://github.com/pyca/pyopenssl/pull/933>`_
Huw Jonescdd66962020-10-13 05:14:19 +010056- Fixed a bug that could truncate or cause a zero-length key error due to a
57 null byte in private key passphrase in ``OpenSSL.crypto.load_privatekey``
58 and ``OpenSSL.crypto.dump_privatekey``.
59 `#947 <https://github.com/pyca/pyopenssl/pull/947>`_
Paul Kehrerdaf6f002019-11-18 13:10:12 +080060
Paul Kehrerda402f42019-11-18 12:47:22 +08006119.1.0 (2019-11-18)
Alex Gaynorf0a59cd2019-01-21 14:53:36 -050062-------------------
63
64
65Backward-incompatible changes:
66^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
67
Alex Gaynor01f90a12019-02-07 09:14:48 -050068- Removed deprecated ``ContextType``, ``ConnectionType``, ``PKeyType``, ``X509NameType``, ``X509ReqType``, ``X509Type``, ``X509StoreType``, ``CRLType``, ``PKCS7Type``, ``PKCS12Type``, and ``NetscapeSPKIType`` aliases.
69 Use the classes without the ``Type`` suffix instead.
70 `#814 <https://github.com/pyca/pyopenssl/pull/814>`_
Paul Kehrer85432862019-11-18 09:20:29 +080071- The minimum ``cryptography`` version is now 2.8 due to issues on macOS with a transitive dependency.
72 `#875 <https://github.com/pyca/pyopenssl/pull/875>`_
Alex Gaynorf0a59cd2019-01-21 14:53:36 -050073
74Deprecations:
75^^^^^^^^^^^^^
76
Alex Gaynorbe2bd542019-02-21 21:41:22 -050077- Deprecated ``OpenSSL.SSL.Context.set_npn_advertise_callback``, ``OpenSSL.SSL.Context.set_npn_select_callback``, and ``OpenSSL.SSL.Connection.get_next_proto_negotiated``.
78 ALPN should be used instead.
79 `#820 <https://github.com/pyca/pyopenssl/pull/820>`_
Alex Gaynorf0a59cd2019-01-21 14:53:36 -050080
81
82Changes:
83^^^^^^^^
84
Daniel Holth079c9632019-11-17 22:45:52 -050085- Support ``bytearray`` in ``SSL.Connection.send()`` by using cffi's from_buffer.
86 `#852 <https://github.com/pyca/pyopenssl/pull/852>`_
Mark Williams5d890a02019-11-17 19:56:26 -080087- The ``OpenSSL.SSL.Context.set_alpn_select_callback`` can return a new ``NO_OVERLAPPING_PROTOCOLS`` sentinel value
88 to allow a TLS handshake to complete without an application protocol.
Alex Gaynorf0a59cd2019-01-21 14:53:36 -050089
90
91----
92
Paul Kehrerc9a71e12019-01-21 13:22:19 -06009319.0.0 (2019-01-21)
Paul Kehrera40e8612018-05-16 17:23:50 -040094-------------------
95
96
97Backward-incompatible changes:
98^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
99
Paul Kehrer0e6c5532018-08-23 10:52:15 -0500100- ``X509Store.add_cert`` no longer raises an error if you add a duplicate cert.
101 `#787 <https://github.com/pyca/pyopenssl/pull/787>`_
Paul Kehrera40e8612018-05-16 17:23:50 -0400102
103
104Deprecations:
105^^^^^^^^^^^^^
106
107*none*
108
109
110Changes:
111^^^^^^^^
112
Paul Kehrerfd706322019-01-21 12:58:35 -0600113- pyOpenSSL now works with OpenSSL 1.1.1.
114 `#805 <https://github.com/pyca/pyopenssl/pull/805>`_
115- pyOpenSSL now handles NUL bytes in ``X509Name.get_components()``
116 `#804 <https://github.com/pyca/pyopenssl/pull/804>`_
117
Paul Kehrera40e8612018-05-16 17:23:50 -0400118
119
120----
121
Paul Kehrer74de8a12018-05-16 15:12:28 -040012218.0.0 (2018-05-16)
Paul Kehrer3d231f02017-12-01 20:31:06 +0800123-------------------
124
125
126Backward-incompatible changes:
127^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
128
Alex Gaynor4f9b7062018-05-14 13:25:05 -0400129- The minimum ``cryptography`` version is now 2.2.1.
130- Support for Python 2.6 has been dropped.
Paul Kehrer3d231f02017-12-01 20:31:06 +0800131
132
133Deprecations:
134^^^^^^^^^^^^^
135
136*none*
137
138
139Changes:
140^^^^^^^^
141
Jeremy Lainé460a19d2018-05-16 19:44:19 +0200142- Added ``Connection.get_certificate`` to retrieve the local certificate.
143 `#733 <https://github.com/pyca/pyopenssl/pull/733>`_
Paul Kehrer15c29352018-05-14 13:31:27 -0400144- ``OpenSSL.SSL.Connection`` now sets ``SSL_MODE_AUTO_RETRY`` by default.
145 `#753 <https://github.com/pyca/pyopenssl/pull/753>`_
Jeremy Lainé02261ad2018-05-16 18:33:25 +0200146- Added ``Context.set_tlsext_use_srtp`` to enable negotiation of SRTP keying material.
147 `#734 <https://github.com/pyca/pyopenssl/pull/734>`_
Paul Kehrer3d231f02017-12-01 20:31:06 +0800148
149
150----
151
Paul Kehrerd21fcd82017-12-01 10:13:50 +080015217.5.0 (2017-11-30)
Paul Kehrer57051a52017-11-22 11:40:12 +0800153-------------------
154
155
156Backward-incompatible changes:
157^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
158
Alex Gaynor4f9b7062018-05-14 13:25:05 -0400159- The minimum ``cryptography`` version is now 2.1.4.
Paul Kehrer57051a52017-11-22 11:40:12 +0800160
161
162Deprecations:
163^^^^^^^^^^^^^
164
165*none*
166
167
168Changes:
169^^^^^^^^
170
Paul Kehrere7381862017-11-30 20:55:25 +0800171- Fixed a potential use-after-free in the verify callback and resolved a memory leak when loading PKCS12 files with ``cacerts``.
172 `#723 <https://github.com/pyca/pyopenssl/pull/723>`_
Paul Kehrerbdb76392017-12-01 04:54:32 +0800173- Added ``Connection.export_keying_material`` for RFC 5705 compatible export of keying material.
174 `#725 <https://github.com/pyca/pyopenssl/pull/725>`_
Paul Kehrer57051a52017-11-22 11:40:12 +0800175
176----
177
178
179
Paul Kehrer5a3fb402017-11-22 02:20:14 +080018017.4.0 (2017-11-21)
Paul Kehrer1eac0e82017-09-14 11:28:15 +0800181-------------------
182
183
184Backward-incompatible changes:
185^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
186
187*none*
188
189
190Deprecations:
191^^^^^^^^^^^^^
192
193*none*
194
195
196Changes:
197^^^^^^^^
198
Paul Kehrer1eac0e82017-09-14 11:28:15 +0800199
Paul Kehreracbd6622017-11-20 22:25:18 +0800200- Re-added a subset of the ``OpenSSL.rand`` module.
201 This subset allows conscientious users to reseed the OpenSSL CSPRNG after fork.
202 `#708 <https://github.com/pyca/pyopenssl/pull/708>`_
Alex Gaynor4aa52c32017-11-20 09:04:08 -0500203- Corrected a use-after-free when reusing an issuer or subject from an ``X509`` object after the underlying object has been mutated.
204 `#709 <https://github.com/pyca/pyopenssl/pull/709>`_
Paul Kehrer1eac0e82017-09-14 11:28:15 +0800205
206----
207
Hynek Schlawack29add1d2016-10-16 11:20:04 +0200208
Paul Kehrer9bd33dc2017-09-14 10:53:56 +080020917.3.0 (2017-09-14)
Hynek Schlawacka723ba22017-07-20 12:22:01 +0200210-------------------
211
212
213Backward-incompatible changes:
214^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
215
Alex Gaynor209de942017-07-25 09:08:05 -0400216- Dropped support for Python 3.3.
217 `#677 <https://github.com/pyca/pyopenssl/pull/677>`_
Alex Gaynor23c965e2017-07-25 10:33:17 -0400218- Removed the deprecated ``OpenSSL.rand`` module.
219 This is being done ahead of our normal deprecation schedule due to its lack of use and the fact that it was becoming a maintenance burden.
220 ``os.urandom()`` should be used instead.
221 `#675 <https://github.com/pyca/pyopenssl/pull/675>`_
Hynek Schlawacka723ba22017-07-20 12:22:01 +0200222
223
224Deprecations:
225^^^^^^^^^^^^^
226
Alex Gaynora0792132017-07-22 09:13:57 -0400227- Deprecated ``OpenSSL.tsafe``.
228 `#673 <https://github.com/pyca/pyopenssl/pull/673>`_
Hynek Schlawacka723ba22017-07-20 12:22:01 +0200229
230Changes:
231^^^^^^^^
232
Paul Kehrer9bd33dc2017-09-14 10:53:56 +0800233- Fixed a memory leak in ``OpenSSL.crypto.CRL``.
234 `#690 <https://github.com/pyca/pyopenssl/pull/690>`_
235- Fixed a memory leak when verifying certificates with ``OpenSSL.crypto.X509StoreContext``.
236 `#691 <https://github.com/pyca/pyopenssl/pull/691>`_
Hynek Schlawacka723ba22017-07-20 12:22:01 +0200237
238
239----
240
241
Hynek Schlawackdd446622017-07-20 11:39:51 +020024217.2.0 (2017-07-20)
Hynek Schlawacka4212762017-06-30 18:28:08 +0200243-------------------
244
245
246Backward-incompatible changes:
247^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
248
249*none*
250
251
252Deprecations:
253^^^^^^^^^^^^^
254
Alex Gaynor8a1de8d2017-07-06 22:40:07 -0400255- Deprecated ``OpenSSL.rand`` - callers should use ``os.urandom()`` instead.
256 `#658 <https://github.com/pyca/pyopenssl/pull/658>`_
Hynek Schlawacka4212762017-06-30 18:28:08 +0200257
258
259Changes:
260^^^^^^^^
261
Hynek Schlawack81021282017-07-20 10:32:37 +0200262- Fixed a bug causing ``Context.set_default_verify_paths()`` to not work with cryptography ``manylinux1`` wheels on Python 3.x.
Paul Kehrera92a1a72017-07-19 15:53:23 +0200263 `#665 <https://github.com/pyca/pyopenssl/pull/665>`_
Paul Kehrer59d26252017-07-20 10:45:54 +0200264- Fixed a crash with (EC)DSA signatures in some cases.
265 `#670 <https://github.com/pyca/pyopenssl/pull/670>`_
Paul Kehrera92a1a72017-07-19 15:53:23 +0200266
Hynek Schlawacka4212762017-06-30 18:28:08 +0200267
268----
269
270
Hynek Schlawacka46d2342017-06-30 17:33:08 +020027117.1.0 (2017-06-30)
Hynek Schlawack7706e142017-04-20 14:54:05 +0200272-------------------
273
274
275Backward-incompatible changes:
276^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
277
Hynek Schlawack941f9032017-06-30 16:20:00 +0200278- Removed the deprecated ``OpenSSL.rand.egd()`` function.
Alex Gaynor3ed62732017-05-31 05:03:27 -0400279 Applications should prefer ``os.urandom()`` for random number generation.
280 `#630 <https://github.com/pyca/pyopenssl/pull/630>`_
Alex Gaynor173e4ba2017-06-30 08:01:12 -0700281- Removed the deprecated default ``digest`` argument to ``OpenSSL.crypto.CRL.export()``.
282 Callers must now always pass an explicit ``digest``.
283 `#652 <https://github.com/pyca/pyopenssl/pull/652>`_
Hynek Schlawack941f9032017-06-30 16:20:00 +0200284- Fixed a bug with ``ASN1_TIME`` casting in ``X509.set_notBefore()``,
285 ``X509.set_notAfter()``, ``Revoked.set_rev_date()``, ``Revoked.set_nextUpdate()``,
286 and ``Revoked.set_lastUpdate()``. You must now pass times in the form
Paul Kehrerce98ee62017-06-21 06:59:58 -1000287 ``YYYYMMDDhhmmssZ``. ``YYYYMMDDhhmmss+hhmm`` and ``YYYYMMDDhhmmss-hhmm``
288 will no longer work. `#612 <https://github.com/pyca/pyopenssl/pull/612>`_
Hynek Schlawack7706e142017-04-20 14:54:05 +0200289
290
291Deprecations:
292^^^^^^^^^^^^^
293
Alex Gaynor10d30832017-06-29 15:31:39 -0700294
Hynek Schlawack941f9032017-06-30 16:20:00 +0200295- Deprecated the legacy "Type" aliases: ``ContextType``, ``ConnectionType``, ``PKeyType``, ``X509NameType``, ``X509ExtensionType``, ``X509ReqType``, ``X509Type``, ``X509StoreType``, ``CRLType``, ``PKCS7Type``, ``PKCS12Type``, ``NetscapeSPKIType``.
296 The names without the "Type"-suffix should be used instead.
Hynek Schlawack7706e142017-04-20 14:54:05 +0200297
298
299Changes:
300^^^^^^^^
301
Hynek Schlawack941f9032017-06-30 16:20:00 +0200302- Added ``OpenSSL.crypto.X509.from_cryptography()`` and ``OpenSSL.crypto.X509.to_cryptography()`` for converting X.509 certificate to and from pyca/cryptography objects.
303 `#640 <https://github.com/pyca/pyopenssl/pull/640>`_
304- 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.
305 `#645 <https://github.com/pyca/pyopenssl/pull/645>`_
Hynek Schlawackd52975c2017-05-13 17:44:27 +0200306- 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``.
307 `#620 <https://github.com/pyca/pyopenssl/pull/620>`_
Hynek Schlawacka46d2342017-06-30 17:33:08 +0200308- 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 +0200309 `#633 <https://github.com/pyca/pyopenssl/pull/633>`_
Hynek Schlawack7706e142017-04-20 14:54:05 +0200310
311
312----
313
314
Hynek Schlawack79705082017-04-20 13:32:49 +020031517.0.0 (2017-04-20)
Hynek Schlawack29add1d2016-10-16 11:20:04 +0200316-------------------
317
318Backward-incompatible changes:
319^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
320
321*none*
322
323
324Deprecations:
325^^^^^^^^^^^^^
326
327*none*
328
329
330Changes:
331^^^^^^^^
332
Thomas Sileoe15e60a2016-11-22 18:13:30 +0100333- Added ``OpenSSL.X509Store.set_time()`` to set a custom verification time when verifying certificate chains.
334 `#567 <https://github.com/pyca/pyopenssl/pull/567>`_
Cory Benfield496652a2017-01-24 11:42:56 +0000335- Added a collection of functions for working with OCSP stapling.
336 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.
337 Users will need to write their own code to handle OCSP assertions.
Hynek Schlawack941f9032017-06-30 16:20:00 +0200338 We specifically added: ``Context.set_ocsp_server_callback()``, ``Context.set_ocsp_client_callback()``, and ``Connection.request_ocsp()``.
Cory Benfield685483b2017-01-24 14:00:45 +0000339 `#580 <https://github.com/pyca/pyopenssl/pull/580>`_
Cory Benfielde62840e2016-11-28 12:17:08 +0000340- Changed the ``SSL`` module's memory allocation policy to avoid zeroing memory it allocates when unnecessary.
341 This reduces CPU usage and memory allocation time by an amount proportional to the size of the allocation.
342 For applications that process a lot of TLS data or that use very lage allocations this can provide considerable performance improvements.
343 `#578 <https://github.com/pyca/pyopenssl/pull/578>`_
Paul Kehrer6c6bf862016-12-19 06:03:48 -0600344- Automatically set ``SSL_CTX_set_ecdh_auto()`` on ``OpenSSL.SSL.Context``.
345 `#575 <https://github.com/pyca/pyopenssl/pull/575>`_
Greg Bowser36eb2de2017-01-24 11:38:55 -0500346- Fix empty exceptions from ``OpenSSL.crypto.load_privatekey()``.
347 `#581 <https://github.com/pyca/pyopenssl/pull/581>`_
Hynek Schlawack29add1d2016-10-16 11:20:04 +0200348
349
350----
351
352
Hynek Schlawackc3b38e52016-10-15 14:56:14 +020035316.2.0 (2016-10-15)
Paul Kehrer8e99fef2016-08-26 19:36:46 +0800354-------------------
355
356Backward-incompatible changes:
357^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
358
359*none*
360
361
362Deprecations:
363^^^^^^^^^^^^^
364
365*none*
366
367
368Changes:
369^^^^^^^^
370
Alex Gaynor0cc56372016-09-24 11:15:55 -0400371- Fixed compatibility errors with OpenSSL 1.1.0.
Paul Kehrerfe2a0a12016-10-06 12:00:54 +0200372- Fixed an issue that caused failures with subinterpreters and embedded Pythons.
373 `#552 <https://github.com/pyca/pyopenssl/pull/552>`_
Paul Kehrer8e99fef2016-08-26 19:36:46 +0800374
Hynek Schlawackc3b38e52016-10-15 14:56:14 +0200375
Paul Kehrer8e99fef2016-08-26 19:36:46 +0800376----
377
Hynek Schlawack682443f2015-10-25 16:15:12 +0100378
Paul Kehrerd0513ab2016-08-26 16:33:23 +080037916.1.0 (2016-08-26)
Hynek Schlawack156f1742016-03-19 12:37:12 +0100380-------------------
381
382Backward-incompatible changes:
383^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
384
385*none*
386
387
388Deprecations:
389^^^^^^^^^^^^^
390
Alex Gaynor2a522852016-08-31 12:17:55 -0400391- Dropped support for OpenSSL 0.9.8.
Hynek Schlawack156f1742016-03-19 12:37:12 +0100392
393
394Changes:
395^^^^^^^^
396
Hynek Schlawack11e43ad2016-07-03 14:40:20 +0200397- Fix memory leak in ``OpenSSL.crypto.dump_privatekey()`` with ``FILETYPE_TEXT``.
398 `#496 <https://github.com/pyca/pyopenssl/pull/496>`_
Dan Sully44e767a2016-06-04 18:05:27 -0700399- Enable use of CRL (and more) in verify context.
400 `#483 <https://github.com/pyca/pyopenssl/pull/483>`_
Paul Kehrer72d968b2016-07-29 15:31:04 +0800401- ``OpenSSL.crypto.PKey`` can now be constructed from ``cryptography`` objects and also exported as such.
402 `#439 <https://github.com/pyca/pyopenssl/pull/439>`_
Paul Kehrerd0513ab2016-08-26 16:33:23 +0800403- Support newer versions of ``cryptography`` which use opaque structs for OpenSSL 1.1.0 compatibility.
Hynek Schlawack156f1742016-03-19 12:37:12 +0100404
405
406----
407
408
Hynek Schlawackb62041b2016-03-19 10:00:09 +010040916.0.0 (2016-03-19)
Hynek Schlawack682443f2015-10-25 16:15:12 +0100410-------------------
411
412This is the first release under full stewardship of PyCA.
413We have made *many* changes to make local development more pleasing.
414The 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 +0200415It 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 +0100416
Cory Benfield0820ac22015-10-28 17:39:28 +0900417We 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 +0100418
419
420Backward-incompatible changes:
421^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
422
423- Python 3.2 support has been dropped.
424 It never had significant real world usage and has been dropped by our main dependency ``cryptography``.
425 Affected users should upgrade to Python 3.3 or later.
426
427
428Deprecations:
429^^^^^^^^^^^^^
430
431- The support for EGD has been removed.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100432 The only affected function ``OpenSSL.rand.egd()`` now uses ``os.urandom()`` to seed the internal PRNG instead.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100433 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 +0100434 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 +0100435
Hynek Schlawackc3b38e52016-10-15 14:56:14 +0200436 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 +0100437- Python 2.6 support has been deprecated.
438 Our main dependency ``cryptography`` deprecated 2.6 in version 0.9 (2015-05-14) with no time table for actually dropping it.
439 pyOpenSSL will drop Python 2.6 support once ``cryptography`` does.
Hynek Schlawack682443f2015-10-25 16:15:12 +0100440
441
442Changes:
443^^^^^^^^
444
Hynek Schlawackb875d512016-03-16 13:56:33 +0100445- 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 +0100446 They were lacking an implementation since 0.14.
Hynek Schlawackb875d512016-03-16 13:56:33 +0100447 `#422 <https://github.com/pyca/pyopenssl/pull/422>`_
Paul Kehrer8fc6ec02016-03-02 13:20:58 -0600448- Fixed segmentation fault when using keys larger than 4096-bit to sign data.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100449 `#428 <https://github.com/pyca/pyopenssl/pull/428>`_
450- Fixed ``AttributeError`` when ``OpenSSL.SSL.Connection.get_app_data()`` was called before setting any app data.
451 `#304 <https://github.com/pyca/pyopenssl/pull/304>`_
452- 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.
453 `#382 <https://github.com/pyca/pyopenssl/pull/382>`_
454- Added ``OpenSSL.crypto.dump_crl()`` to dump a certificate revocation list out to a string buffer.
455 `#368 <https://github.com/pyca/pyopenssl/pull/368>`_
Hynek Schlawackea94f2b2016-03-13 16:17:53 +0100456- Added ``OpenSSL.SSL.Connection.get_state_string()`` using the OpenSSL binding ``state_string_long``.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100457 `#358 <https://github.com/pyca/pyopenssl/pull/358>`_
458- Added support for the ``socket.MSG_PEEK`` flag to ``OpenSSL.SSL.Connection.recv()`` and ``OpenSSL.SSL.Connection.recv_into()``.
459 `#294 <https://github.com/pyca/pyopenssl/pull/294>`_
460- Added ``OpenSSL.SSL.Connection.get_protocol_version()`` and ``OpenSSL.SSL.Connection.get_protocol_version_name()``.
461 `#244 <https://github.com/pyca/pyopenssl/pull/244>`_
462- Switched to ``utf8string`` mask by default.
463 OpenSSL formerly defaulted to a ``T61String`` if there were UTF-8 characters present.
464 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 +0100465 This will default us to the setting that actually works.
466 To revert this you can call ``OpenSSL.crypto._lib.ASN1_STRING_set_default_mask_asc(b"default")``.
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100467 `#234 <https://github.com/pyca/pyopenssl/pull/234>`_
Hynek Schlawack682443f2015-10-25 16:15:12 +0100468
469
Hynek Schlawack65e4def2016-03-13 15:07:52 +0100470----
471
Hynek Schlawack682443f2015-10-25 16:15:12 +0100472
473Older Changelog Entries
474-----------------------
475
Hynek Schlawack0cc61542016-01-19 14:09:32 +0100476The changes from before release 16.0.0 are preserved in the `repository <https://github.com/pyca/pyopenssl/blob/master/doc/ChangeLog_old.txt>`_.