Submit
Path:
~
/
/
usr
/
lib
/
python2.7
/
site-packages
/
passlib
/
tests
/
File Content:
test_crypto_builtin_md4.py
"""passlib.tests -- unittests for passlib.crypto._md4""" #============================================================================= # imports #============================================================================= from __future__ import with_statement, division # core from binascii import hexlify import hashlib # site # pkg # module from passlib.utils.compat import bascii_to_str, PY3, u from passlib.crypto.digest import lookup_hash from passlib.tests.utils import TestCase, skipUnless # local __all__ = [ "_Common_MD4_Test", "MD4_Builtin_Test", "MD4_SSL_Test", ] #============================================================================= # test pure-python MD4 implementation #============================================================================= class _Common_MD4_Test(TestCase): """common code for testing md4 backends""" vectors = [ # input -> hex digest # test vectors from http://www.faqs.org/rfcs/rfc1320.html - A.5 (b"", "31d6cfe0d16ae931b73c59d7e0c089c0"), (b"a", "bde52cb31de33e46245e05fbdbd6fb24"), (b"abc", "a448017aaf21d8525fc10ae87aa6729d"), (b"message digest", "d9130a8164549fe818874806e1c7014b"), (b"abcdefghijklmnopqrstuvwxyz", "d79e1c308aa5bbcdeea8ed63df412da9"), (b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "043f8582f241db351ce627e153e7f0e4"), (b"12345678901234567890123456789012345678901234567890123456789012345678901234567890", "e33b4ddc9c38f2199c3e7b164fcc0536"), ] def get_md4_const(self): """ get md4 constructor -- overridden by subclasses to use alternate backends. """ return lookup_hash("md4").const def test_attrs(self): """informational attributes""" h = self.get_md4_const()() self.assertEqual(h.name, "md4") self.assertEqual(h.digest_size, 16) self.assertEqual(h.block_size, 64) def test_md4_update(self): """update() method""" md4 = self.get_md4_const() h = md4(b'') self.assertEqual(h.hexdigest(), "31d6cfe0d16ae931b73c59d7e0c089c0") h.update(b'a') self.assertEqual(h.hexdigest(), "bde52cb31de33e46245e05fbdbd6fb24") h.update(b'bcdefghijklmnopqrstuvwxyz') self.assertEqual(h.hexdigest(), "d79e1c308aa5bbcdeea8ed63df412da9") if PY3: # reject unicode, hash should return digest of b'' h = md4() self.assertRaises(TypeError, h.update, u('a')) self.assertEqual(h.hexdigest(), "31d6cfe0d16ae931b73c59d7e0c089c0") else: # coerce unicode to ascii, hash should return digest of b'a' h = md4() h.update(u('a')) self.assertEqual(h.hexdigest(), "bde52cb31de33e46245e05fbdbd6fb24") def test_md4_hexdigest(self): """hexdigest() method""" md4 = self.get_md4_const() for input, hex in self.vectors: out = md4(input).hexdigest() self.assertEqual(out, hex) def test_md4_digest(self): """digest() method""" md4 = self.get_md4_const() for input, hex in self.vectors: out = bascii_to_str(hexlify(md4(input).digest())) self.assertEqual(out, hex) def test_md4_copy(self): """copy() method""" md4 = self.get_md4_const() h = md4(b'abc') h2 = h.copy() h2.update(b'def') self.assertEqual(h2.hexdigest(), '804e7f1c2586e50b49ac65db5b645131') h.update(b'ghi') self.assertEqual(h.hexdigest(), 'c5225580bfe176f6deeee33dee98732c') #------------------------------------------------------------------------ # create subclasses to test various backends #------------------------------------------------------------------------ def has_native_md4(): # pragma: no cover -- runtime detection """ check if hashlib natively supports md4. """ try: hashlib.new("md4") return True except ValueError: # not supported - ssl probably missing (e.g. ironpython) return False @skipUnless(has_native_md4(), "hashlib lacks ssl/md4 support") class MD4_SSL_Test(_Common_MD4_Test): descriptionPrefix = "hashlib.new('md4')" # NOTE: we trust ssl got md4 implementation right, # this is more to test our test is correct :) def setUp(self): super(MD4_SSL_Test, self).setUp() # make sure we're using right constructor. self.assertEqual(self.get_md4_const().__module__, "hashlib") class MD4_Builtin_Test(_Common_MD4_Test): descriptionPrefix = "passlib.crypto._md4.md4()" def setUp(self): super(MD4_Builtin_Test, self).setUp() if has_native_md4(): # Temporarily make lookup_hash() use builtin pure-python implementation, # by monkeypatching hashlib.new() to ensure we fall back to passlib's md4 class. orig = hashlib.new def wrapper(name, *args): if name == "md4": raise ValueError("md4 disabled for testing") return orig(name, *args) self.patchAttr(hashlib, "new", wrapper) # flush cache before & after test, since we're mucking with it. lookup_hash.clear_cache() self.addCleanup(lookup_hash.clear_cache) # make sure we're using right constructor. self.assertEqual(self.get_md4_const().__module__, "passlib.crypto._md4") #============================================================================= # eof #=============================================================================
Edit
Rename
Chmod
Delete
FILE
FOLDER
Name
Size
Permission
Action
__init__.py
20 bytes
0644
__init__.pyc
181 bytes
0644
__init__.pyo
181 bytes
0644
__main__.py
82 bytes
0644
__main__.pyc
293 bytes
0644
__main__.pyo
293 bytes
0644
_test_bad_register.py
541 bytes
0644
_test_bad_register.pyc
919 bytes
0644
_test_bad_register.pyo
919 bytes
0644
backports.py
2513 bytes
0644
backports.pyc
1258 bytes
0644
backports.pyo
1258 bytes
0644
sample1.cfg
243 bytes
0644
sample1b.cfg
252 bytes
0644
sample1c.cfg
490 bytes
0644
sample_config_1s.cfg
238 bytes
0644
test_apache.py
25208 bytes
0644
test_apache.pyc
20198 bytes
0644
test_apache.pyo
20198 bytes
0644
test_apps.py
5281 bytes
0644
test_apps.pyc
5972 bytes
0644
test_apps.pyo
5972 bytes
0644
test_context.py
75039 bytes
0644
test_context.pyc
42392 bytes
0644
test_context.pyo
42392 bytes
0644
test_context_deprecated.py
29282 bytes
0644
test_context_deprecated.pyc
20648 bytes
0644
test_context_deprecated.pyo
20569 bytes
0644
test_crypto_builtin_md4.py
5660 bytes
0644
test_crypto_builtin_md4.pyc
6010 bytes
0644
test_crypto_builtin_md4.pyo
6010 bytes
0644
test_crypto_des.py
8874 bytes
0644
test_crypto_des.pyc
6692 bytes
0644
test_crypto_des.pyo
6692 bytes
0644
test_crypto_digest.py
18670 bytes
0644
test_crypto_digest.pyc
13552 bytes
0644
test_crypto_digest.pyo
13552 bytes
0644
test_crypto_scrypt.py
25655 bytes
0644
test_crypto_scrypt.pyc
21381 bytes
0644
test_crypto_scrypt.pyo
21302 bytes
0644
test_ext_django.py
32811 bytes
0644
test_ext_django.pyc
21620 bytes
0644
test_ext_django.pyo
21345 bytes
0644
test_ext_django_source.py
11034 bytes
0644
test_ext_django_source.pyc
7075 bytes
0644
test_ext_django_source.pyo
7028 bytes
0644
test_handlers.py
62786 bytes
0644
test_handlers.pyc
60928 bytes
0644
test_handlers.pyo
60928 bytes
0644
test_handlers_argon2.py
16951 bytes
0644
test_handlers_argon2.pyc
13606 bytes
0644
test_handlers_argon2.pyo
13514 bytes
0644
test_handlers_bcrypt.py
23507 bytes
0644
test_handlers_bcrypt.pyc
19655 bytes
0644
test_handlers_bcrypt.pyo
19493 bytes
0644
test_handlers_cisco.py
20471 bytes
0644
test_handlers_cisco.pyc
17618 bytes
0644
test_handlers_cisco.pyo
17618 bytes
0644
test_handlers_django.py
15109 bytes
0644
test_handlers_django.pyc
16025 bytes
0644
test_handlers_django.pyo
15911 bytes
0644
test_handlers_pbkdf2.py
18788 bytes
0644
test_handlers_pbkdf2.pyc
17158 bytes
0644
test_handlers_pbkdf2.pyo
17158 bytes
0644
test_handlers_scrypt.py
4124 bytes
0644
test_handlers_scrypt.pyc
4089 bytes
0644
test_handlers_scrypt.pyo
4089 bytes
0644
test_hosts.py
3906 bytes
0644
test_hosts.pyc
3852 bytes
0644
test_hosts.pyo
3852 bytes
0644
test_pwd.py
7190 bytes
0644
test_pwd.pyc
6456 bytes
0644
test_pwd.pyo
6456 bytes
0644
test_registry.py
9459 bytes
0644
test_registry.pyc
7715 bytes
0644
test_registry.pyo
7715 bytes
0644
test_totp.py
65562 bytes
0644
test_totp.pyc
40189 bytes
0644
test_totp.pyo
40005 bytes
0644
test_utils.py
40242 bytes
0644
test_utils.pyc
30495 bytes
0644
test_utils.pyo
30495 bytes
0644
test_utils_handlers.py
32134 bytes
0644
test_utils_handlers.pyc
29250 bytes
0644
test_utils_handlers.pyo
29188 bytes
0644
test_utils_md4.py
1474 bytes
0644
test_utils_md4.pyc
1588 bytes
0644
test_utils_md4.pyo
1588 bytes
0644
test_utils_pbkdf2.py
12108 bytes
0644
test_utils_pbkdf2.pyc
10552 bytes
0644
test_utils_pbkdf2.pyo
10552 bytes
0644
test_win32.py
1920 bytes
0644
test_win32.pyc
2030 bytes
0644
test_win32.pyo
2030 bytes
0644
tox_support.py
2473 bytes
0644
tox_support.pyc
2842 bytes
0644
tox_support.pyo
2842 bytes
0644
utils.py
138326 bytes
0644
utils.pyc
95162 bytes
0644
utils.pyo
94702 bytes
0644
N4ST4R_ID | Naxtarrr