aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2014-10-22 09:51:46 -0700
committerAlex Gaynor <alex.gaynor@gmail.com>2014-10-22 09:51:46 -0700
commit633caacfe7e86f9098bb8cb64cfc12a9fe5cc35c (patch)
tree007cfe0a59150d2681c153323b15d1f8d00ab4c2 /tests
parent67a4dd1a2227af1a3461c92edc5316ab9fe7a942 (diff)
parent60d8640bc3aa8eb48273e1df6de94607a38f8ec3 (diff)
downloadcryptography-633caacfe7e86f9098bb8cb64cfc12a9fe5cc35c.tar.gz
cryptography-633caacfe7e86f9098bb8cb64cfc12a9fe5cc35c.tar.bz2
cryptography-633caacfe7e86f9098bb8cb64cfc12a9fe5cc35c.zip
Merge branch 'master' into verify-interfaces
Conflicts: cryptography/utils.py
Diffstat (limited to 'tests')
-rw-r--r--tests/hazmat/backends/test_multibackend.py9
-rw-r--r--tests/test_fernet.py36
2 files changed, 44 insertions, 1 deletions
diff --git a/tests/hazmat/backends/test_multibackend.py b/tests/hazmat/backends/test_multibackend.py
index 93934ad6..c50b6cf6 100644
--- a/tests/hazmat/backends/test_multibackend.py
+++ b/tests/hazmat/backends/test_multibackend.py
@@ -131,6 +131,9 @@ class DummyDSABackend(object):
def load_dsa_public_numbers(self, numbers):
pass
+ def load_dsa_parameter_numbers(self, numbers):
+ pass
+
@utils.register_interface(CMACBackend)
class DummyCMACBackend(object):
@@ -330,6 +333,7 @@ class TestMultiBackend(object):
backend.dsa_parameters_supported(1, 2, 3)
backend.load_dsa_private_numbers("numbers")
backend.load_dsa_public_numbers("numbers")
+ backend.load_dsa_parameter_numbers("numbers")
backend = MultiBackend([])
with raises_unsupported_algorithm(
@@ -367,6 +371,11 @@ class TestMultiBackend(object):
):
backend.load_dsa_public_numbers("numbers")
+ with raises_unsupported_algorithm(
+ _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM
+ ):
+ backend.load_dsa_parameter_numbers("numbers")
+
def test_cmac(self):
backend = MultiBackend([
DummyCMACBackend([algorithms.AES])
diff --git a/tests/test_fernet.py b/tests/test_fernet.py
index 0b4e3e87..5c630b9e 100644
--- a/tests/test_fernet.py
+++ b/tests/test_fernet.py
@@ -24,7 +24,7 @@ import pytest
import six
-from cryptography.fernet import Fernet, InvalidToken
+from cryptography.fernet import Fernet, InvalidToken, MultiFernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.ciphers import algorithms, modes
@@ -115,3 +115,37 @@ class TestFernet(object):
def test_bad_key(self, backend):
with pytest.raises(ValueError):
Fernet(base64.urlsafe_b64encode(b"abc"), backend=backend)
+
+
+@pytest.mark.supported(
+ only_if=lambda backend: backend.cipher_supported(
+ algorithms.AES("\x00" * 32), modes.CBC("\x00" * 16)
+ ),
+ skip_message="Does not support AES CBC",
+)
+class TestMultiFernet(object):
+ def test_encrypt(self, backend):
+ f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend)
+ f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend)
+ f = MultiFernet([f1, f2])
+
+ assert f1.decrypt(f.encrypt(b"abc")) == b"abc"
+
+ def test_decrypt(self, backend):
+ f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend)
+ f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend)
+ f = MultiFernet([f1, f2])
+
+ assert f.decrypt(f1.encrypt(b"abc")) == b"abc"
+ assert f.decrypt(f2.encrypt(b"abc")) == b"abc"
+
+ with pytest.raises(InvalidToken):
+ f.decrypt(b"\x00" * 16)
+
+ def test_no_fernets(self, backend):
+ with pytest.raises(ValueError):
+ MultiFernet([])
+
+ def test_non_iterable_argument(self, backend):
+ with pytest.raises(TypeError):
+ MultiFernet(None)