aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml5
-rw-r--r--CHANGELOG.rst1
-rw-r--r--setup.py8
-rw-r--r--src/cryptography/hazmat/primitives/ciphers/base.py34
-rw-r--r--tests/hazmat/primitives/test_block.py6
-rw-r--r--tests/hazmat/primitives/test_ciphers.py48
-rw-r--r--tox.ini8
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
diff --git a/setup.py b/setup.py
index 33b3b54e..b134e0a0 100644
--- a/setup.py
+++ b/setup.py
@@ -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)
diff --git a/tox.ini b/tox.ini
index 136b4ccf..525ffe2e 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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