aboutsummaryrefslogtreecommitdiffstats
path: root/tests/hazmat/backends
diff options
context:
space:
mode:
authorAlex Gaynor <alex.gaynor@gmail.com>2014-01-30 11:53:44 -0800
committerAlex Gaynor <alex.gaynor@gmail.com>2014-01-30 11:53:44 -0800
commit6ced2f6444c956b88d42cc61fe9a38751b912c9a (patch)
treecb09115ef820e2343da830f961b1a5612eb906d9 /tests/hazmat/backends
parent19e19ae75385f652e1161e1153e9aea599cd6a07 (diff)
downloadcryptography-6ced2f6444c956b88d42cc61fe9a38751b912c9a.tar.gz
cryptography-6ced2f6444c956b88d42cc61fe9a38751b912c9a.tar.bz2
cryptography-6ced2f6444c956b88d42cc61fe9a38751b912c9a.zip
Direct tests for the cipher support
Diffstat (limited to 'tests/hazmat/backends')
-rw-r--r--tests/hazmat/backends/test_multibackend.py50
1 files changed, 49 insertions, 1 deletions
diff --git a/tests/hazmat/backends/test_multibackend.py b/tests/hazmat/backends/test_multibackend.py
index aaf6d7c1..dc58a585 100644
--- a/tests/hazmat/backends/test_multibackend.py
+++ b/tests/hazmat/backends/test_multibackend.py
@@ -11,6 +11,54 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import pytest
+
+from cryptography.exceptions import UnsupportedAlgorithm
+from cryptography.hazmat.backends.multibackend import PrioritizedMultiBackend
+from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
+
+
+class DummyCipherBackend(object):
+ def __init__(self, supported_ciphers):
+ self._ciphers = supported_ciphers
+
+ def cipher_supported(self, algorithm, mode):
+ return (type(algorithm), type(mode)) in self._ciphers
+
+ def create_symmetric_encryption_ctx(self, algorithm, mode):
+ if not self.cipher_supported(algorithm, mode):
+ raise UnsupportedAlgorithm
+
+ def create_symmetric_decryption_ctx(self, algorithm, mode):
+ if not self.cipher_supported(algorithm, mode):
+ raise UnsupportedAlgorithm
+
class TestPrioritizedMultiBackend(object):
- pass
+ def test_ciphers(self):
+ backend = PrioritizedMultiBackend([
+ DummyCipherBackend([
+ (algorithms.AES, modes.CBC),
+ ])
+ ])
+ assert backend.cipher_supported(
+ algorithms.AES(b"\x00" * 16), modes.CBC(b"\x00" * 16)
+ )
+
+ cipher = Cipher(
+ algorithms.AES(b"\x00" * 16),
+ modes.CBC(b"\x00" * 16),
+ backend=backend
+ )
+ cipher.encryptor()
+ cipher.decryptor()
+
+ cipher = Cipher(
+ algorithms.Camellia(b"\x00" * 16),
+ modes.CBC(b"\x00" * 16),
+ backend=backend
+ )
+ with pytest.raises(UnsupportedAlgorithm):
+ cipher.encryptor()
+ with pytest.raises(UnsupportedAlgorithm):
+ cipher.decryptor()