aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cryptography/primitives/block/ciphers.py6
-rw-r--r--tests/primitives/test_ciphers.py4
2 files changed, 10 insertions, 0 deletions
diff --git a/cryptography/primitives/block/ciphers.py b/cryptography/primitives/block/ciphers.py
index f40fc2a1..2bf936ee 100644
--- a/cryptography/primitives/block/ciphers.py
+++ b/cryptography/primitives/block/ciphers.py
@@ -14,11 +14,17 @@
class AES(object):
name = "AES"
+ key_sizes = {128, 192, 256}
def __init__(self, key):
super(AES, self).__init__()
self.key = key
+ if self.key_size not in self.key_sizes:
+ raise ValueError("Invalid key size (%s) for %s".format(
+ self.key_size, self.name
+ ))
+
@property
def key_size(self):
return len(self.key) * 8
diff --git a/tests/primitives/test_ciphers.py b/tests/primitives/test_ciphers.py
index 31b4275e..891c5cf8 100644
--- a/tests/primitives/test_ciphers.py
+++ b/tests/primitives/test_ciphers.py
@@ -27,3 +27,7 @@ class TestAES(object):
def test_key_size(self, key, keysize):
cipher = AES(binascii.unhexlify(key))
assert cipher.key_size == keysize
+
+ def test_invalid_key_size(self):
+ with pytest.raises(ValueError):
+ AES(binascii.unhexlify(b"0" * 12))