aboutsummaryrefslogtreecommitdiffstats
path: root/tests/hazmat
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-04-09 09:12:29 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-04-09 11:15:15 -0500
commit7e914c90611a2fc6c62d4697d40d0215dc33ce57 (patch)
treef310c9e42f64a177595d9add0f5409513af4982f /tests/hazmat
parent65a890d0f66bc611cb1ff1be979345c4933160d8 (diff)
downloadcryptography-7e914c90611a2fc6c62d4697d40d0215dc33ce57.tar.gz
cryptography-7e914c90611a2fc6c62d4697d40d0215dc33ce57.tar.bz2
cryptography-7e914c90611a2fc6c62d4697d40d0215dc33ce57.zip
add SEED docs, tests, small fixes
Diffstat (limited to 'tests/hazmat')
-rw-r--r--tests/hazmat/primitives/test_ciphers.py12
-rw-r--r--tests/hazmat/primitives/test_seed.py92
2 files changed, 103 insertions, 1 deletions
diff --git a/tests/hazmat/primitives/test_ciphers.py b/tests/hazmat/primitives/test_ciphers.py
index 9f8123eb..99ef043a 100644
--- a/tests/hazmat/primitives/test_ciphers.py
+++ b/tests/hazmat/primitives/test_ciphers.py
@@ -20,7 +20,7 @@ import pytest
from cryptography.exceptions import _Reasons
from cryptography.hazmat.primitives import ciphers
from cryptography.hazmat.primitives.ciphers.algorithms import (
- AES, ARC4, Blowfish, CAST5, Camellia, IDEA, TripleDES
+ AES, ARC4, Blowfish, CAST5, Camellia, IDEA, SEED, TripleDES
)
from cryptography.hazmat.primitives.ciphers.modes import ECB
@@ -127,6 +127,16 @@ class TestIDEA(object):
IDEA(b"\x00" * 17)
+class TestSEED(object):
+ def test_key_size(self):
+ cipher = SEED(b"\x00" * 16)
+ assert cipher.key_size == 128
+
+ def test_invalid_key_size(self):
+ with pytest.raises(ValueError):
+ SEED(b"\x00" * 17)
+
+
def test_invalid_backend():
pretend_backend = object()
diff --git a/tests/hazmat/primitives/test_seed.py b/tests/hazmat/primitives/test_seed.py
new file mode 100644
index 00000000..35f89e56
--- /dev/null
+++ b/tests/hazmat/primitives/test_seed.py
@@ -0,0 +1,92 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from __future__ import absolute_import, division, print_function
+
+import binascii
+import os
+
+import pytest
+
+from cryptography.hazmat.primitives.ciphers import algorithms, modes
+
+from .utils import generate_encrypt_test
+from ...utils import load_nist_vectors
+
+
+@pytest.mark.supported(
+ only_if=lambda backend: backend.cipher_supported(
+ algorithms.SEED("\x00" * 16), modes.ECB()
+ ),
+ skip_message="Does not support SEED ECB",
+)
+@pytest.mark.cipher
+class TestSEEDModeECB(object):
+ test_ECB = generate_encrypt_test(
+ load_nist_vectors,
+ os.path.join("ciphers", "SEED"),
+ ["rfc-4269.txt"],
+ lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))),
+ lambda **kwargs: modes.ECB(),
+ )
+
+
+@pytest.mark.supported(
+ only_if=lambda backend: backend.cipher_supported(
+ algorithms.SEED("\x00" * 16), modes.CBC("\x00" * 16)
+ ),
+ skip_message="Does not support SEED CBC",
+)
+@pytest.mark.cipher
+class TestSEEDModeCBC(object):
+ test_CBC = generate_encrypt_test(
+ load_nist_vectors,
+ os.path.join("ciphers", "SEED"),
+ ["rfc-4196.txt"],
+ lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))),
+ lambda iv, **kwargs: modes.CBC(binascii.unhexlify(iv))
+ )
+
+
+@pytest.mark.supported(
+ only_if=lambda backend: backend.cipher_supported(
+ algorithms.SEED("\x00" * 16), modes.OFB("\x00" * 16)
+ ),
+ skip_message="Does not support SEED OFB",
+)
+@pytest.mark.cipher
+class TestSEEDModeOFB(object):
+ test_OFB = generate_encrypt_test(
+ load_nist_vectors,
+ os.path.join("ciphers", "SEED"),
+ ["seed-ofb.txt"],
+ lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))),
+ lambda iv, **kwargs: modes.OFB(binascii.unhexlify(iv))
+ )
+
+
+@pytest.mark.supported(
+ only_if=lambda backend: backend.cipher_supported(
+ algorithms.SEED("\x00" * 16), modes.CFB("\x00" * 16)
+ ),
+ skip_message="Does not support SEED CFB",
+)
+@pytest.mark.cipher
+class TestSEEDModeCFB(object):
+ test_CFB = generate_encrypt_test(
+ load_nist_vectors,
+ os.path.join("ciphers", "SEED"),
+ ["seed-cfb.txt"],
+ lambda key, **kwargs: algorithms.SEED(binascii.unhexlify((key))),
+ lambda iv, **kwargs: modes.CFB(binascii.unhexlify(iv))
+ )