diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2017-05-23 20:31:03 -0700 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2017-05-23 20:31:03 -0700 |
commit | 6091e11cae1e2ca43709266d0e3ba84ded12ddfc (patch) | |
tree | 070abc134d8afff90dcb4a09ed0c659b999a8a1d | |
parent | 70e8f90b250ba65167943f67cb851495bc7b8add (diff) | |
download | cryptography-6091e11cae1e2ca43709266d0e3ba84ded12ddfc.tar.gz cryptography-6091e11cae1e2ca43709266d0e3ba84ded12ddfc.tar.bz2 cryptography-6091e11cae1e2ca43709266d0e3ba84ded12ddfc.zip |
Bump the minimum PyPy/cffi version and simplify as a result (#3585)
* Bump the minimum PyPy/cffi version and simplify as a result
* unused imports
* grumble, fix
-rw-r--r-- | .travis.yml | 5 | ||||
-rw-r--r-- | CHANGELOG.rst | 1 | ||||
-rw-r--r-- | setup.py | 8 | ||||
-rw-r--r-- | src/cryptography/hazmat/primitives/ciphers/base.py | 34 | ||||
-rw-r--r-- | tests/hazmat/primitives/test_block.py | 6 | ||||
-rw-r--r-- | tests/hazmat/primitives/test_ciphers.py | 48 | ||||
-rw-r--r-- | tox.ini | 8 |
7 files changed, 14 insertions, 96 deletions
diff --git a/.travis.yml b/.travis.yml index 21a4d7a1..87e4304e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,8 +23,7 @@ matrix: env: TOXENV=py35 - python: 3.6 env: TOXENV=py36 - - env: TOXENV=pypy-nocoverage PYPY_VERSION=2.6.1 - - env: TOXENV=pypy PYPY_VERSION=4.0.1 + - env: TOXENV=pypy PYPY_VERSION=5.3 - env: TOXENV=pypy PYPY_VERSION=5.7.1 - python: 2.7 env: TOXENV=py27 OPENSSL=1.1.0e @@ -65,7 +64,7 @@ matrix: - language: generic os: osx osx_image: xcode8.3 - env: TOXENV=pypy-nocoverage CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 PYPY_VERSION=5.7.1 + env: TOXENV=pypy CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 PYPY_VERSION=5.7.1 - language: generic os: osx osx_image: xcode8.3 diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 822a8c8a..0e7619e5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,6 +13,7 @@ Changelog has always been to check whether or not :class:`~cryptography.exceptions.InvalidSignature` was raised. * **BACKWARDS INCOMPATIBLE:** Dropped support for macOS 10.7 and 10.8. +* **BACKWARDS INCOMPATIBLE:** The minimum supported PyPy version is now 5.3. * Python 3.3 support has been deprecated, and will be removed in the ``cryptography`` release. * Add support for providing ``tag`` during @@ -47,14 +47,14 @@ if sys.version_info < (3, 3): requirements.append("ipaddress") if platform.python_implementation() == "PyPy": - if sys.pypy_version_info < (2, 6): + if sys.pypy_version_info < (5, 3): raise RuntimeError( - "cryptography 1.0 is not compatible with PyPy < 2.6. Please " + "cryptography 1.9 is not compatible with PyPy < 5.3. Please " "upgrade PyPy to use this library." ) else: - requirements.append("cffi>=1.4.1") - setup_requirements.append("cffi>=1.4.1") + requirements.append("cffi>=1.7") + setup_requirements.append("cffi>=1.7") test_requirements = [ "pytest>=2.9.0", diff --git a/src/cryptography/hazmat/primitives/ciphers/base.py b/src/cryptography/hazmat/primitives/ciphers/base.py index 826e23ef..f8570414 100644 --- a/src/cryptography/hazmat/primitives/ciphers/base.py +++ b/src/cryptography/hazmat/primitives/ciphers/base.py @@ -6,8 +6,6 @@ from __future__ import absolute_import, division, print_function import abc -import cffi - import six from cryptography import utils @@ -150,19 +148,10 @@ class _CipherContext(object): raise AlreadyFinalized("Context was already finalized.") return self._ctx.update(data) - # cffi 1.7 supports from_buffer on bytearray, which is required. We can - # remove this check in the future when we raise our minimum PyPy version. - if cffi.__version_info__ >= (1, 7): - def update_into(self, data, buf): - if self._ctx is None: - raise AlreadyFinalized("Context was already finalized.") - return self._ctx.update_into(data, buf) - else: - def update_into(self, data, buf): - raise NotImplementedError( - "update_into requires cffi 1.7+. To use this method please " - "update cffi." - ) + def update_into(self, data, buf): + if self._ctx is None: + raise AlreadyFinalized("Context was already finalized.") + return self._ctx.update_into(data, buf) def finalize(self): if self._ctx is None: @@ -199,18 +188,9 @@ class _AEADCipherContext(object): self._check_limit(len(data)) return self._ctx.update(data) - # cffi 1.7 supports from_buffer on bytearray, which is required. We can - # remove this check in the future when we raise our minimum PyPy version. - if cffi.__version_info__ >= (1, 7): - def update_into(self, data, buf): - self._check_limit(len(data)) - return self._ctx.update_into(data, buf) - else: - def update_into(self, data, buf): - raise NotImplementedError( - "update_into requires cffi 1.7+. To use this method please " - "update cffi." - ) + def update_into(self, data, buf): + self._check_limit(len(data)) + return self._ctx.update_into(data, buf) def finalize(self): if self._ctx is None: diff --git a/tests/hazmat/primitives/test_block.py b/tests/hazmat/primitives/test_block.py index 4c6ad18b..c053feaf 100644 --- a/tests/hazmat/primitives/test_block.py +++ b/tests/hazmat/primitives/test_block.py @@ -6,8 +6,6 @@ from __future__ import absolute_import, division, print_function import binascii -import cffi - import pytest from cryptography.exceptions import ( @@ -72,10 +70,6 @@ class TestCipherContext(object): with pytest.raises(AlreadyFinalized): decryptor.finalize() - @pytest.mark.skipif( - cffi.__version_info__ < (1, 7), - reason="cffi version too old" - ) def test_use_update_into_after_finalize(self, backend): cipher = Cipher( algorithms.AES(binascii.unhexlify(b"0" * 32)), diff --git a/tests/hazmat/primitives/test_ciphers.py b/tests/hazmat/primitives/test_ciphers.py index 60faa0c5..f1718c07 100644 --- a/tests/hazmat/primitives/test_ciphers.py +++ b/tests/hazmat/primitives/test_ciphers.py @@ -7,8 +7,6 @@ from __future__ import absolute_import, division, print_function import binascii import os -import cffi - import pytest from cryptography.exceptions import AlreadyFinalized, _Reasons @@ -141,10 +139,6 @@ def test_invalid_backend(): ciphers.Cipher(AES(b"AAAAAAAAAAAAAAAA"), modes.ECB, pretend_backend) -@pytest.mark.skipif( - cffi.__version_info__ < (1, 7), - reason="cffi version too old" -) @pytest.mark.supported( only_if=lambda backend: backend.cipher_supported( AES(b"\x00" * 16), modes.ECB() @@ -259,45 +253,3 @@ class TestCipherUpdateInto(object): buf = bytearray(5) with pytest.raises(ValueError): encryptor.update_into(b"testing", buf) - - -@pytest.mark.skipif( - cffi.__version_info__ >= (1, 7), - reason="cffi version too new" -) -@pytest.mark.requires_backend_interface(interface=CipherBackend) -class TestCipherUpdateIntoUnsupported(object): - def _too_old(self, mode, backend): - key = b"\x00" * 16 - c = ciphers.Cipher(AES(key), mode, backend) - encryptor = c.encryptor() - buf = bytearray(32) - with pytest.raises(NotImplementedError): - encryptor.update_into(b"\x00" * 16, buf) - - @pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - AES(b"\x00" * 16), modes.ECB() - ), - skip_message="Does not support AES ECB", - ) - def test_cffi_too_old_ecb(self, backend): - self._too_old(modes.ECB(), backend) - - @pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - AES(b"\x00" * 16), modes.CTR(b"0" * 16) - ), - skip_message="Does not support AES CTR", - ) - def test_cffi_too_old_ctr(self, backend): - self._too_old(modes.CTR(b"0" * 16), backend) - - @pytest.mark.supported( - only_if=lambda backend: backend.cipher_supported( - AES(b"\x00" * 16), modes.GCM(b"0" * 16) - ), - skip_message="Does not support AES GCM", - ) - def test_cffi_too_old_gcm(self, backend): - self._too_old(modes.GCM(b"0" * 16), backend) @@ -38,14 +38,6 @@ basepython = python2.7 commands = sphinx-build -W -b linkcheck docs docs/_build/html -# This target disables coverage on pypy because of performance problems with -# coverage.py on pypy. -[testenv:pypy-nocoverage] -basepython = pypy -commands = - pip list - py.test --capture=no --strict {posargs} - [testenv:pep8] extras = pep8test |