diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2013-10-18 23:58:33 -0700 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2013-10-18 23:58:33 -0700 |
commit | 2984b3f8fb433b4cbe5ec6712886db32f597e8af (patch) | |
tree | f682add3b8906c8df68895d74ba278ad06f7099d /tests/primitives/utils.py | |
parent | 5762647e8d7f53ed9f4abed90626382b6c903ee2 (diff) | |
parent | c21f968301b0d4cc848ea554403e9d9239327803 (diff) | |
download | cryptography-2984b3f8fb433b4cbe5ec6712886db32f597e8af.tar.gz cryptography-2984b3f8fb433b4cbe5ec6712886db32f597e8af.tar.bz2 cryptography-2984b3f8fb433b4cbe5ec6712886db32f597e8af.zip |
Merge branch 'master' into bind-pkcs12
Conflicts:
cryptography/bindings/openssl/api.py
Diffstat (limited to 'tests/primitives/utils.py')
-rw-r--r-- | tests/primitives/utils.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/tests/primitives/utils.py b/tests/primitives/utils.py index 3cf08c28..8b32700b 100644 --- a/tests/primitives/utils.py +++ b/tests/primitives/utils.py @@ -40,3 +40,81 @@ def encrypt_test(api, cipher_factory, mode_factory, params, only_if, actual_ciphertext = cipher.encrypt(binascii.unhexlify(plaintext)) actual_ciphertext += cipher.finalize() assert actual_ciphertext == binascii.unhexlify(ciphertext) + + +def generate_hash_test(param_loader, path, file_names, hash_cls, + only_if=lambda api: True, skip_message=None): + def test_hash(self): + for api in _ALL_APIS: + for file_name in file_names: + for params in param_loader(os.path.join(path, file_name)): + yield ( + hash_test, + api, + hash_cls, + params, + only_if, + skip_message + ) + return test_hash + + +def hash_test(api, hash_cls, params, only_if, skip_message): + if not only_if(api): + pytest.skip(skip_message) + msg = params[0] + md = params[1] + m = hash_cls(api=api) + m.update(binascii.unhexlify(msg)) + assert m.hexdigest() == md.replace(" ", "").lower() + + +def generate_base_hash_test(hash_cls, digest_size, block_size, + only_if=lambda api: True, skip_message=None): + def test_base_hash(self): + for api in _ALL_APIS: + yield ( + base_hash_test, + api, + hash_cls, + digest_size, + block_size, + only_if, + skip_message, + ) + return test_base_hash + + +def base_hash_test(api, hash_cls, digest_size, block_size, only_if, + skip_message): + if not only_if(api): + pytest.skip(skip_message) + m = hash_cls(api=api) + assert m.digest_size == digest_size + assert m.block_size == block_size + m_copy = m.copy() + assert m != m_copy + assert m._ctx != m_copy._ctx + + +def generate_long_string_hash_test(hash_factory, md, only_if=lambda api: True, + skip_message=None): + def test_long_string_hash(self): + for api in _ALL_APIS: + yield( + long_string_hash_test, + api, + hash_factory, + md, + only_if, + skip_message + ) + return test_long_string_hash + + +def long_string_hash_test(api, hash_factory, md, only_if, skip_message): + if not only_if(api): + pytest.skip(skip_message) + m = hash_factory(api) + m.update(b"a" * 1000000) + assert m.hexdigest() == md.lower() |