annotate Lib/test/test_hashlib.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 72d7b2185771
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
1 # Test hashlib module
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
2 #
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
3 # $Id$
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
4 #
58219
aadfc31b3f14 Merged revisions 77389 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 55593
diff changeset
5 # Copyright (C) 2005-2010 Gregory P. Smith (greg@krypto.org)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
6 # Licensed to PSF under a Contributor Agreement.
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
7 #
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
8
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58218
diff changeset
9 import array
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
10 import hashlib
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58218
diff changeset
11 import itertools
76999
0a1d7be10946 Issue #14693: Under non-Windows platforms, hashlib's fallback modules are always compiled, even if OpenSSL is present at build time.
Antoine Pitrou <solipsis@pitrou.net>
parents: 72642
diff changeset
12 import os
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
13 import sys
53727
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
14 try:
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
15 import threading
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
16 except ImportError:
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
17 threading = None
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
18 import unittest
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
19 import warnings
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 43297
diff changeset
20 from test import support
86467
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
21 from test.support import _4G, bigmemtest, import_fresh_module
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
22
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
23 # Were we compiled --with-pydebug or with #define Py_DEBUG?
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
24 COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount')
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
25
86467
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
26 c_hashlib = import_fresh_module('hashlib', fresh=['_hashlib'])
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
27 py_hashlib = import_fresh_module('hashlib', blocked=['_hashlib'])
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
28
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
29 def hexstr(s):
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
30 assert isinstance(s, bytes), repr(s)
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
31 h = "0123456789abcdef"
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
32 r = ''
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
33 for i in s:
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
34 r += h[(i >> 4) & 0xF] + h[i & 0xF]
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
35 return r
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
36
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
37
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
38 class HashLibTestCase(unittest.TestCase):
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
39 supported_hash_names = ( 'md5', 'MD5', 'sha1', 'SHA1',
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
40 'sha224', 'SHA224', 'sha256', 'SHA256',
79502
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
41 'sha384', 'SHA384', 'sha512', 'SHA512',
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
42 'sha3_224', 'sha3_256', 'sha3_384',
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
43 'sha3_512', 'SHA3_224', 'SHA3_256',
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
44 'SHA3_384', 'SHA3_512' )
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
45
76999
0a1d7be10946 Issue #14693: Under non-Windows platforms, hashlib's fallback modules are always compiled, even if OpenSSL is present at build time.
Antoine Pitrou <solipsis@pitrou.net>
parents: 72642
diff changeset
46 # Issue #14693: fallback modules are always compiled under POSIX
0a1d7be10946 Issue #14693: Under non-Windows platforms, hashlib's fallback modules are always compiled, even if OpenSSL is present at build time.
Antoine Pitrou <solipsis@pitrou.net>
parents: 72642
diff changeset
47 _warn_on_extension_import = os.name == 'posix' or COMPILED_WITH_PYDEBUG
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
48
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
49 def _conditional_import_module(self, module_name):
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
50 """Import a module and return a reference to it or None on failure."""
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
51 try:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
52 exec('import '+module_name)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
53 except ImportError as error:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
54 if self._warn_on_extension_import:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
55 warnings.warn('Did a C extension fail to compile? %s' % error)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
56 return locals().get(module_name)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
57
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
58 def __init__(self, *args, **kwargs):
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
59 algorithms = set()
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
60 for algorithm in self.supported_hash_names:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
61 algorithms.add(algorithm.lower())
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
62 self.constructors_to_test = {}
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
63 for algorithm in algorithms:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
64 self.constructors_to_test[algorithm] = set()
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
65
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
66 # For each algorithm, test the direct constructor and the use
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
67 # of hashlib.new given the algorithm name.
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
68 for algorithm, constructors in self.constructors_to_test.items():
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
69 constructors.add(getattr(hashlib, algorithm))
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
70 def _test_algorithm_via_hashlib_new(data=None, _alg=algorithm):
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
71 if data is None:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
72 return hashlib.new(_alg)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
73 return hashlib.new(_alg, data)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
74 constructors.add(_test_algorithm_via_hashlib_new)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
75
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
76 _hashlib = self._conditional_import_module('_hashlib')
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
77 if _hashlib:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
78 # These two algorithms should always be present when this module
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
79 # is compiled. If not, something was compiled wrong.
85044
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
80 self.assertTrue(hasattr(_hashlib, 'openssl_md5'))
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
81 self.assertTrue(hasattr(_hashlib, 'openssl_sha1'))
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
82 for algorithm, constructors in self.constructors_to_test.items():
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
83 constructor = getattr(_hashlib, 'openssl_'+algorithm, None)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
84 if constructor:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
85 constructors.add(constructor)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
86
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
87 def add_builtin_constructor(name):
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
88 constructor = getattr(hashlib, "__get_builtin_constructor")(name)
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
89 self.constructors_to_test[name].add(constructor)
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
90
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
91 _md5 = self._conditional_import_module('_md5')
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
92 if _md5:
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
93 add_builtin_constructor('md5')
58108
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58107
diff changeset
94 _sha1 = self._conditional_import_module('_sha1')
3856c764e1f5 Also fixes test_hashlib for the different extension module names in py3k.
Gregory P. Smith <greg@mad-scientist.com>
parents: 58107
diff changeset
95 if _sha1:
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
96 add_builtin_constructor('sha1')
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
97 _sha256 = self._conditional_import_module('_sha256')
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
98 if _sha256:
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
99 add_builtin_constructor('sha224')
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
100 add_builtin_constructor('sha256')
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
101 _sha512 = self._conditional_import_module('_sha512')
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
102 if _sha512:
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
103 add_builtin_constructor('sha384')
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
104 add_builtin_constructor('sha512')
79502
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
105 _sha3 = self._conditional_import_module('_sha3')
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
106 if _sha3:
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
107 add_builtin_constructor('sha3_224')
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
108 add_builtin_constructor('sha3_256')
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
109 add_builtin_constructor('sha3_384')
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
110 add_builtin_constructor('sha3_512')
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
111
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
112 super(HashLibTestCase, self).__init__(*args, **kwargs)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
113
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
114 @property
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
115 def hash_constructors(self):
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
116 constructors = self.constructors_to_test.values()
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
117 return itertools.chain.from_iterable(constructors)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
118
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58218
diff changeset
119 def test_hash_array(self):
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58218
diff changeset
120 a = array.array("b", range(10))
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
121 for cons in self.hash_constructors:
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58218
diff changeset
122 c = cons(a)
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58218
diff changeset
123 c.hexdigest()
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 58218
diff changeset
124
64488
49441e88ccc1 hashlib has two new constant attributes: algorithms_guaranteed and
Gregory P. Smith <greg@mad-scientist.com>
parents: 61073
diff changeset
125 def test_algorithms_guaranteed(self):
49441e88ccc1 hashlib has two new constant attributes: algorithms_guaranteed and
Gregory P. Smith <greg@mad-scientist.com>
parents: 61073
diff changeset
126 self.assertEqual(hashlib.algorithms_guaranteed,
67733
6f40b4709e9a Make the type consistent for hashlib algorithm constants. (Reviewed by Benjamin).
Raymond Hettinger <python@rcn.com>
parents: 66310
diff changeset
127 set(_algo for _algo in self.supported_hash_names
59212
9b4e0cd7817a Merged revisions 78528 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 58222
diff changeset
128 if _algo.islower()))
9b4e0cd7817a Merged revisions 78528 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 58222
diff changeset
129
64488
49441e88ccc1 hashlib has two new constant attributes: algorithms_guaranteed and
Gregory P. Smith <greg@mad-scientist.com>
parents: 61073
diff changeset
130 def test_algorithms_available(self):
49441e88ccc1 hashlib has two new constant attributes: algorithms_guaranteed and
Gregory P. Smith <greg@mad-scientist.com>
parents: 61073
diff changeset
131 self.assertTrue(set(hashlib.algorithms_guaranteed).
49441e88ccc1 hashlib has two new constant attributes: algorithms_guaranteed and
Gregory P. Smith <greg@mad-scientist.com>
parents: 61073
diff changeset
132 issubset(hashlib.algorithms_available))
49441e88ccc1 hashlib has two new constant attributes: algorithms_guaranteed and
Gregory P. Smith <greg@mad-scientist.com>
parents: 61073
diff changeset
133
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
134 def test_unknown_hash(self):
78235
c97cfe04880f Consistently raise a TypeError when a non str is passed to hashlib.new
Gregory P. Smith <greg@krypto.org>
parents: 72642
diff changeset
135 self.assertRaises(ValueError, hashlib.new, 'spam spam spam spam spam')
c97cfe04880f Consistently raise a TypeError when a non str is passed to hashlib.new
Gregory P. Smith <greg@krypto.org>
parents: 72642
diff changeset
136 self.assertRaises(TypeError, hashlib.new, 1)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
137
70122
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
138 def test_get_builtin_constructor(self):
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
139 get_builtin_constructor = getattr(hashlib,
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
140 '__get_builtin_constructor')
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
141 builtin_constructor_cache = getattr(hashlib,
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
142 '__builtin_constructor_cache')
70122
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
143 self.assertRaises(ValueError, get_builtin_constructor, 'test')
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
144 try:
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
145 import _md5
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
146 except ImportError:
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
147 pass
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
148 # This forces an ImportError for "import _md5" statements
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
149 sys.modules['_md5'] = None
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
150 # clear the cache
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
151 builtin_constructor_cache.clear()
70122
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
152 try:
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
153 self.assertRaises(ValueError, get_builtin_constructor, 'md5')
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
154 finally:
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
155 if '_md5' in locals():
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
156 sys.modules['_md5'] = _md5
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
157 else:
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
158 del sys.modules['_md5']
78235
c97cfe04880f Consistently raise a TypeError when a non str is passed to hashlib.new
Gregory P. Smith <greg@krypto.org>
parents: 72642
diff changeset
159 self.assertRaises(TypeError, get_builtin_constructor, 3)
86569
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
160 constructor = get_builtin_constructor('md5')
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
161 self.assertIs(constructor, _md5.md5)
72d7b2185771 Issue #18742: Rework the internal hashlib construtor to pave the road for ABCs.
Christian Heimes <christian@cheimes.de>
parents: 86479
diff changeset
162 self.assertEqual(sorted(builtin_constructor_cache), ['MD5', 'md5'])
70122
ad9249f35914 Fixes Issue #12059: Properly handle missing hash functions even when
Gregory P. Smith <greg@krypto.org>
parents: 68257
diff changeset
163
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
164 def test_hexdigest(self):
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
165 for cons in self.hash_constructors:
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
166 h = cons()
85044
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
167 self.assertIsInstance(h.digest(), bytes)
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
168 self.assertEqual(hexstr(h.digest()), h.hexdigest())
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
169
85038
238c37e4c395 Issue 18532: Added tests and documentation to formally specify the .name attribute on hashlib objects.
Jason R. Coombs <jaraco@jaraco.com>
parents: 84907
diff changeset
170 def test_name_attribute(self):
238c37e4c395 Issue 18532: Added tests and documentation to formally specify the .name attribute on hashlib objects.
Jason R. Coombs <jaraco@jaraco.com>
parents: 84907
diff changeset
171 for cons in self.hash_constructors:
238c37e4c395 Issue 18532: Added tests and documentation to formally specify the .name attribute on hashlib objects.
Jason R. Coombs <jaraco@jaraco.com>
parents: 84907
diff changeset
172 h = cons()
85044
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
173 self.assertIsInstance(h.name, str)
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
174 self.assertIn(h.name, self.supported_hash_names)
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
175 self.assertEqual(h.name, hashlib.new(h.name).name)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
176
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
177 def test_large_update(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
178 aas = b'a' * 128
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
179 bees = b'b' * 127
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
180 cees = b'c' * 126
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
181 dees = b'd' * 2048 # HASHLIB_GIL_MINSIZE
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
182
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
183 for cons in self.hash_constructors:
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
184 m1 = cons()
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
185 m1.update(aas)
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
186 m1.update(bees)
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
187 m1.update(cees)
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
188 m1.update(dees)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
189
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
190 m2 = cons()
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
191 m2.update(aas + bees + cees + dees)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
192 self.assertEqual(m1.digest(), m2.digest())
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
193
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
194 m3 = cons(aas + bees + cees + dees)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
195 self.assertEqual(m1.digest(), m3.digest())
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
196
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
197 # verify copy() doesn't touch original
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
198 m4 = cons(aas + bees + cees)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
199 m4_digest = m4.digest()
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
200 m4_copy = m4.copy()
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
201 m4_copy.update(dees)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
202 self.assertEqual(m1.digest(), m4_copy.digest())
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
203 self.assertEqual(m4.digest(), m4_digest)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
204
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
205 def check(self, name, data, hexdigest):
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
206 hexdigest = hexdigest.lower()
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
207 constructors = self.constructors_to_test[name]
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
208 # 2 is for hashlib.name(...) and hashlib.new(name, ...)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
209 self.assertGreaterEqual(len(constructors), 2)
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
210 for hash_object_constructor in constructors:
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
211 m = hash_object_constructor(data)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
212 computed = m.hexdigest()
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
213 self.assertEqual(
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
214 computed, hexdigest,
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
215 "Hash algorithm %s constructed using %s returned hexdigest"
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
216 " %r for %d byte input data that should have hashed to %r."
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
217 % (name, hash_object_constructor,
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
218 computed, len(data), hexdigest))
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
219 computed = m.digest()
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
220 digest = bytes.fromhex(hexdigest)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
221 self.assertEqual(computed, digest)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
222 self.assertEqual(len(digest), m.digest_size)
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
223
51543
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
224 def check_no_unicode(self, algorithm_name):
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
225 # Unicode objects are not allowed as input.
58107
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
226 constructors = self.constructors_to_test[algorithm_name]
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
227 for hash_object_constructor in constructors:
2a2399534591 Merged revisions 77257 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents: 55593
diff changeset
228 self.assertRaises(TypeError, hash_object_constructor, 'spam')
51543
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
229
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
230 def test_no_unicode(self):
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
231 self.check_no_unicode('md5')
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
232 self.check_no_unicode('sha1')
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
233 self.check_no_unicode('sha224')
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
234 self.check_no_unicode('sha256')
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
235 self.check_no_unicode('sha384')
2ac02daef2ee Fixes Issue #3745: Fix hashlib to always reject unicode and non
Gregory P. Smith <greg@mad-scientist.com>
parents: 50636
diff changeset
236 self.check_no_unicode('sha512')
79502
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
237 self.check_no_unicode('sha3_224')
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
238 self.check_no_unicode('sha3_256')
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
239 self.check_no_unicode('sha3_384')
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
240 self.check_no_unicode('sha3_512')
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
241
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
242 def check_blocksize_name(self, name, block_size=0, digest_size=0):
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
243 constructors = self.constructors_to_test[name]
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
244 for hash_object_constructor in constructors:
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
245 m = hash_object_constructor()
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
246 self.assertEqual(m.block_size, block_size)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
247 self.assertEqual(m.digest_size, digest_size)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
248 self.assertEqual(len(m.digest()), digest_size)
85179
9a4949f5d15c Change the builtin hash algorithms' names to lower case names
Christian Heimes <christian@cheimes.de>
parents: 85044
diff changeset
249 self.assertEqual(m.name, name)
84907
5fbf23e947d8 Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns
Christian Heimes <christian@cheimes.de>
parents: 84108 84906
diff changeset
250 # split for sha3_512 / _sha3.sha3 object
85179
9a4949f5d15c Change the builtin hash algorithms' names to lower case names
Christian Heimes <christian@cheimes.de>
parents: 85044
diff changeset
251 self.assertIn(name.split("_")[0], repr(m))
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
252
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
253 def test_blocksize_name(self):
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
254 self.check_blocksize_name('md5', 64, 16)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
255 self.check_blocksize_name('sha1', 64, 20)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
256 self.check_blocksize_name('sha224', 64, 28)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
257 self.check_blocksize_name('sha256', 64, 32)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
258 self.check_blocksize_name('sha384', 128, 48)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
259 self.check_blocksize_name('sha512', 128, 64)
84907
5fbf23e947d8 Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns
Christian Heimes <christian@cheimes.de>
parents: 84108 84906
diff changeset
260 self.check_blocksize_name('sha3_224', NotImplemented, 28)
5fbf23e947d8 Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns
Christian Heimes <christian@cheimes.de>
parents: 84108 84906
diff changeset
261 self.check_blocksize_name('sha3_256', NotImplemented, 32)
5fbf23e947d8 Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns
Christian Heimes <christian@cheimes.de>
parents: 84108 84906
diff changeset
262 self.check_blocksize_name('sha3_384', NotImplemented, 48)
5fbf23e947d8 Issue #18599: Fix name attribute of _sha1.sha1() object. It now returns
Christian Heimes <christian@cheimes.de>
parents: 84108 84906
diff changeset
263 self.check_blocksize_name('sha3_512', NotImplemented, 64)
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
264
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
265 def test_case_md5_0(self):
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
266 self.check('md5', b'', 'd41d8cd98f00b204e9800998ecf8427e')
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
267
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
268 def test_case_md5_1(self):
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
269 self.check('md5', b'abc', '900150983cd24fb0d6963f7d28e17f72')
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
270
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
271 def test_case_md5_2(self):
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
272 self.check('md5',
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
273 b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
274 'd174ab98d277d9f5a5611c2c9f419d9f')
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
275
72642
bf39434dd506 Start fixing test_bigmem:
Antoine Pitrou <solipsis@pitrou.net>
parents: 70122
diff changeset
276 @bigmemtest(size=_4G + 5, memuse=1)
49292
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
277 def test_case_md5_huge(self, size):
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
278 if size == _4G + 5:
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
279 try:
66118
65364c44e295 Merged revisions 86338 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 58219
diff changeset
280 self.check('md5', b'A'*size, 'c9af2dff37468ce5dfee8f2cfc0a9c6d')
49292
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
281 except OverflowError:
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
282 pass # 32-bit arch
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
283
72642
bf39434dd506 Start fixing test_bigmem:
Antoine Pitrou <solipsis@pitrou.net>
parents: 70122
diff changeset
284 @bigmemtest(size=_4G - 1, memuse=1)
49292
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
285 def test_case_md5_uintmax(self, size):
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
286 if size == _4G - 1:
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
287 try:
66118
65364c44e295 Merged revisions 86338 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 58219
diff changeset
288 self.check('md5', b'A'*size, '28138d306ff1b8281f1a9067e1a1a2b3')
49292
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
289 except OverflowError:
a00626f2d705 Merged revisions 66496 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
290 pass # 32-bit arch
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
291
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
292 # use the three examples from Federal Information Processing Standards
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
293 # Publication 180-1, Secure Hash Standard, 1995 April 17
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
294 # http://www.itl.nist.gov/div897/pubs/fip180-1.htm
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
295
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
296 def test_case_sha1_0(self):
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
297 self.check('sha1', b"",
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
298 "da39a3ee5e6b4b0d3255bfef95601890afd80709")
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
299
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
300 def test_case_sha1_1(self):
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
301 self.check('sha1', b"abc",
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
302 "a9993e364706816aba3e25717850c26c9cd0d89d")
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
303
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
304 def test_case_sha1_2(self):
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
305 self.check('sha1',
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
306 b"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
307 "84983e441c3bd26ebaae4aa1f95129e5e54670f1")
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
308
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
309 def test_case_sha1_3(self):
42166
78203298b42b Change hashlib to return bytes from digest() instead of str8.
Guido van Rossum <guido@python.org>
parents: 35375
diff changeset
310 self.check('sha1', b"a" * 1000000,
42181
3641a20630f3 Fix test_hashlib regression caused by my fixing hexdigest() to return
Guido van Rossum <guido@python.org>
parents: 42166
diff changeset
311 "34aa973cd4c4daa4f61eeb2bdbad27316534016f")
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
312
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
313
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
314 # use the examples from Federal Information Processing Standards
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
315 # Publication 180-2, Secure Hash Standard, 2002 August 1
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
316 # http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
317
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
318 def test_case_sha224_0(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
319 self.check('sha224', b"",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
320 "d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
321
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
322 def test_case_sha224_1(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
323 self.check('sha224', b"abc",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
324 "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
325
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
326 def test_case_sha224_2(self):
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
327 self.check('sha224',
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
328 b"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
329 "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
330
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
331 def test_case_sha224_3(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
332 self.check('sha224', b"a" * 1000000,
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
333 "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
334
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
335
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
336 def test_case_sha256_0(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
337 self.check('sha256', b"",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
338 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
339
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
340 def test_case_sha256_1(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
341 self.check('sha256', b"abc",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
342 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
343
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
344 def test_case_sha256_2(self):
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
345 self.check('sha256',
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
346 b"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
347 "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
348
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
349 def test_case_sha256_3(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
350 self.check('sha256', b"a" * 1000000,
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
351 "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
352
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
353
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
354 def test_case_sha384_0(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
355 self.check('sha384', b"",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
356 "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
357 "274edebfe76f65fbd51ad2f14898b95b")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
358
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
359 def test_case_sha384_1(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
360 self.check('sha384', b"abc",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
361 "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
362 "8086072ba1e7cc2358baeca134c825a7")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
363
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
364 def test_case_sha384_2(self):
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
365 self.check('sha384',
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
366 b"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"+
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
367 b"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
368 "09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
369 "fcc7c71a557e2db966c3e9fa91746039")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
370
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
371 def test_case_sha384_3(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
372 self.check('sha384', b"a" * 1000000,
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
373 "9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
374 "07b8b3dc38ecc4ebae97ddd87f3d8985")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
376
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
377 def test_case_sha512_0(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
378 self.check('sha512', b"",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
379 "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
380 "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
381
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
382 def test_case_sha512_1(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
383 self.check('sha512', b"abc",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
384 "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
385 "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
386
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
387 def test_case_sha512_2(self):
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
388 self.check('sha512',
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
389 b"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"+
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
390 b"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
391 "8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
392 "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
393
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
394 def test_case_sha512_3(self):
42918
9220931e4741 More changes needed to make things work once bytes and str are truly divorced.
Guido van Rossum <guido@python.org>
parents: 42181
diff changeset
395 self.check('sha512', b"a" * 1000000,
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
396 "e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973eb"+
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
397 "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b")
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
398
79502
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
399 # SHA-3 family
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
400 def test_case_sha3_224_0(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
401 self.check('sha3_224', b"",
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
402 "F71837502BA8E10837BDD8D365ADB85591895602FC552B48B7390ABD")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
403
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
404 def test_case_sha3_224_1(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
405 self.check('sha3_224', bytes.fromhex("CC"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
406 "A9CAB59EB40A10B246290F2D6086E32E3689FAF1D26B470C899F2802")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
407
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
408 def test_case_sha3_224_2(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
409 self.check('sha3_224', bytes.fromhex("41FB"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
410 "615BA367AFDC35AAC397BC7EB5D58D106A734B24986D5D978FEFD62C")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
411
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
412 def test_case_sha3_224_3(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
413 self.check('sha3_224', bytes.fromhex(
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
414 "433C5303131624C0021D868A30825475E8D0BD3052A022180398F4CA4423B9"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
415 "8214B6BEAAC21C8807A2C33F8C93BD42B092CC1B06CEDF3224D5ED1EC29784"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
416 "444F22E08A55AA58542B524B02CD3D5D5F6907AFE71C5D7462224A3F9D9E53"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
417 "E7E0846DCBB4CE"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
418 "62B10F1B6236EBC2DA72957742A8D4E48E213B5F8934604BFD4D2C3A")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
419
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
420 @bigmemtest(size=_4G + 5, memuse=1)
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
421 def test_case_sha3_224_huge(self, size):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
422 if size == _4G + 5:
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
423 try:
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
424 self.check('sha3_224', b'A'*size,
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
425 '58ef60057c9dddb6a87477e9ace5a26f0d9db01881cf9b10a9f8c224')
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
426 except OverflowError:
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
427 pass # 32-bit arch
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
428
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
429
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
430 def test_case_sha3_256_0(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
431 self.check('sha3_256', b"",
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
432 "C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
433
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
434 def test_case_sha3_256_1(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
435 self.check('sha3_256', bytes.fromhex("CC"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
436 "EEAD6DBFC7340A56CAEDC044696A168870549A6A7F6F56961E84A54BD9970B8A")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
437
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
438 def test_case_sha3_256_2(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
439 self.check('sha3_256', bytes.fromhex("41FB"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
440 "A8EACEDA4D47B3281A795AD9E1EA2122B407BAF9AABCB9E18B5717B7873537D2")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
441
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
442 def test_case_sha3_256_3(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
443 self.check('sha3_256', bytes.fromhex(
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
444 "433C5303131624C0021D868A30825475E8D0BD3052A022180398F4CA4423B9"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
445 "8214B6BEAAC21C8807A2C33F8C93BD42B092CC1B06CEDF3224D5ED1EC29784"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
446 "444F22E08A55AA58542B524B02CD3D5D5F6907AFE71C5D7462224A3F9D9E53"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
447 "E7E0846DCBB4CE"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
448 "CE87A5173BFFD92399221658F801D45C294D9006EE9F3F9D419C8D427748DC41")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
449
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
450
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
451 def test_case_sha3_384_0(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
452 self.check('sha3_384', b"",
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
453 "2C23146A63A29ACF99E73B88F8C24EAA7DC60AA771780CCC006AFBFA8FE2479B"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
454 "2DD2B21362337441AC12B515911957FF")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
455
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
456 def test_case_sha3_384_1(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
457 self.check('sha3_384', bytes.fromhex("CC"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
458 "1B84E62A46E5A201861754AF5DC95C4A1A69CAF4A796AE405680161E29572641"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
459 "F5FA1E8641D7958336EE7B11C58F73E9")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
460
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
461 def test_case_sha3_384_2(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
462 self.check('sha3_384', bytes.fromhex("41FB"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
463 "495CCE2714CD72C8C53C3363D22C58B55960FE26BE0BF3BBC7A3316DD563AD1D"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
464 "B8410E75EEFEA655E39D4670EC0B1792")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
465
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
466 def test_case_sha3_384_3(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
467 self.check('sha3_384', bytes.fromhex(
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
468 "433C5303131624C0021D868A30825475E8D0BD3052A022180398F4CA4423B9"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
469 "8214B6BEAAC21C8807A2C33F8C93BD42B092CC1B06CEDF3224D5ED1EC29784"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
470 "444F22E08A55AA58542B524B02CD3D5D5F6907AFE71C5D7462224A3F9D9E53"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
471 "E7E0846DCBB4CE"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
472 "135114508DD63E279E709C26F7817C0482766CDE49132E3EDF2EEDD8996F4E35"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
473 "96D184100B384868249F1D8B8FDAA2C9")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
474
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
475
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
476 def test_case_sha3_512_0(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
477 self.check('sha3_512', b"",
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
478 "0EAB42DE4C3CEB9235FC91ACFFE746B29C29A8C366B7C60E4E67C466F36A4304"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
479 "C00FA9CAF9D87976BA469BCBE06713B435F091EF2769FB160CDAB33D3670680E")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
480
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
481 def test_case_sha3_512_1(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
482 self.check('sha3_512', bytes.fromhex("CC"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
483 "8630C13CBD066EA74BBE7FE468FEC1DEE10EDC1254FB4C1B7C5FD69B646E4416"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
484 "0B8CE01D05A0908CA790DFB080F4B513BC3B6225ECE7A810371441A5AC666EB9")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
485
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
486 def test_case_sha3_512_2(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
487 self.check('sha3_512', bytes.fromhex("41FB"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
488 "551DA6236F8B96FCE9F97F1190E901324F0B45E06DBBB5CDB8355D6ED1DC34B3"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
489 "F0EAE7DCB68622FF232FA3CECE0D4616CDEB3931F93803662A28DF1CD535B731")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
490
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
491 def test_case_sha3_512_3(self):
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
492 self.check('sha3_512', bytes.fromhex(
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
493 "433C5303131624C0021D868A30825475E8D0BD3052A022180398F4CA4423B9"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
494 "8214B6BEAAC21C8807A2C33F8C93BD42B092CC1B06CEDF3224D5ED1EC29784"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
495 "444F22E08A55AA58542B524B02CD3D5D5F6907AFE71C5D7462224A3F9D9E53"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
496 "E7E0846DCBB4CE"),
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
497 "527D28E341E6B14F4684ADB4B824C496C6482E51149565D3D17226828884306B"+
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
498 "51D6148A72622C2B75F5D3510B799D8BDC03EAEDE453676A6EC8FE03A1AD0EAB")
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
499
11c9a894680e Issue #16113: integrade SHA-3 (Keccak) patch from http://hg.python.org/sandbox/cheimes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
500
50636
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
501 def test_gil(self):
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
502 # Check things work fine with an input larger than the size required
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
503 # for multithreaded operation (which is hardwired to 2048).
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
504 gil_minsize = 2048
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
505
84906
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
506 for cons in self.hash_constructors:
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
507 m = cons()
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
508 m.update(b'1')
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
509 m.update(b'#' * gil_minsize)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
510 m.update(b'1')
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
511
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
512 m = cons(b'x' * gil_minsize)
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
513 m.update(b'1')
10501d5f07b8 Add more tests for hashlib and hash object attributes
Christian Heimes <christian@cheimes.de>
parents: 78236
diff changeset
514
50636
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
515 m = hashlib.md5()
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
516 m.update(b'1')
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
517 m.update(b'#' * gil_minsize)
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
518 m.update(b'1')
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66118
diff changeset
519 self.assertEqual(m.hexdigest(), 'cb1e1a2cbc80be75e19935d621fb9b21')
50636
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
520
f9f5d9047a05 Issue #4751: hashlib now releases the GIL when hashing large buffers
Antoine Pitrou <solipsis@pitrou.net>
parents: 49292
diff changeset
521 m = hashlib.md5(b'x' * gil_minsize)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66118
diff changeset
522 self.assertEqual(m.hexdigest(), 'cfb767f225d58469c5de3632a8803958')
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
523
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59615
diff changeset
524 @unittest.skipUnless(threading, 'Threading required for this test.')
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59615
diff changeset
525 @support.reap_threads
53727
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
526 def test_threaded_hashing(self):
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
527 # Updating the same hash object from several threads at once
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
528 # using data chunk sizes containing the same byte sequences.
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
529 #
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
530 # If the internal locks are working to prevent multiple
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
531 # updates on the same object from running at once, the resulting
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
532 # hash will be the same as doing it single threaded upfront.
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
533 hasher = hashlib.sha1()
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
534 num_threads = 5
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
535 smallest_data = b'swineflu'
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
536 data = smallest_data*200000
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
537 expected_hash = hashlib.sha1(data*num_threads).hexdigest()
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
538
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
539 def hash_in_chunks(chunk_size, event):
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
540 index = 0
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
541 while index < len(data):
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
542 hasher.update(data[index:index+chunk_size])
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
543 index += chunk_size
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
544 event.set()
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
545
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
546 events = []
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
547 for threadnum in range(num_threads):
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
548 chunk_size = len(data) // (10**threadnum)
85044
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
549 self.assertGreater(chunk_size, 0)
c6d4564dc86f * Fix the assertions in hashlib to use unittest assertion methods instead of
Gregory P. Smith <greg@krypto.org>
parents: 85038
diff changeset
550 self.assertEqual(chunk_size % len(smallest_data), 0)
53727
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
551 event = threading.Event()
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
552 events.append(event)
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
553 threading.Thread(target=hash_in_chunks,
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
554 args=(chunk_size, event)).start()
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
555
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
556 for event in events:
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
557 event.wait()
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
558
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
559 self.assertEqual(expected_hash, hasher.hexdigest())
4cd437dface8 Merge refactoring I did when committing r72267 to trunk into the
Gregory P. Smith <greg@mad-scientist.com>
parents: 51543
diff changeset
560
86467
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
561
86479
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
562 class KDFTests(unittest.TestCase):
86467
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
563
86264
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
564 pbkdf2_test_vectors = [
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
565 (b'password', b'salt', 1, None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
566 (b'password', b'salt', 2, None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
567 (b'password', b'salt', 4096, None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
568 # too slow, it takes over a minute on a fast CPU.
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
569 #(b'password', b'salt', 16777216, None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
570 (b'passwordPASSWORDpassword', b'saltSALTsaltSALTsaltSALTsaltSALTsalt',
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
571 4096, -1),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
572 (b'pass\0word', b'sa\0lt', 4096, 16),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
573 ]
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
574
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
575 pbkdf2_results = {
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
576 "sha1": [
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
577 # offical test vectors from RFC 6070
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
578 (bytes.fromhex('0c60c80f961f0e71f3a9b524af6012062fe037a6'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
579 (bytes.fromhex('ea6c014dc72d6f8ccd1ed92ace1d41f0d8de8957'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
580 (bytes.fromhex('4b007901b765489abead49d926f721d065a429c1'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
581 #(bytes.fromhex('eefe3d61cd4da4e4e9945b3d6ba2158c2634e984'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
582 (bytes.fromhex('3d2eec4fe41c849b80c8d83662c0e44a8b291a964c'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
583 'f2f07038'), 25),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
584 (bytes.fromhex('56fa6aa75548099dcc37d7f03425e0c3'), None),],
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
585 "sha256": [
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
586 (bytes.fromhex('120fb6cffcf8b32c43e7225256c4f837'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
587 'a86548c92ccc35480805987cb70be17b'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
588 (bytes.fromhex('ae4d0c95af6b46d32d0adff928f06dd0'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
589 '2a303f8ef3c251dfd6e2d85a95474c43'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
590 (bytes.fromhex('c5e478d59288c841aa530db6845c4c8d'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
591 '962893a001ce4e11a4963873aa98134a'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
592 #(bytes.fromhex('cf81c66fe8cfc04d1f31ecb65dab4089'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
593 # 'f7f179e89b3b0bcb17ad10e3ac6eba46'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
594 (bytes.fromhex('348c89dbcbd32b2f32d814b8116e84cf2b17'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
595 '347ebc1800181c4e2a1fb8dd53e1c635518c7dac47e9'), 40),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
596 (bytes.fromhex('89b69d0516f829893c696226650a8687'), None),],
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
597 "sha512": [
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
598 (bytes.fromhex('867f70cf1ade02cff3752599a3a53dc4af34c7a669815ae5'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
599 'd513554e1c8cf252c02d470a285a0501bad999bfe943c08f'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
600 '050235d7d68b1da55e63f73b60a57fce'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
601 (bytes.fromhex('e1d9c16aa681708a45f5c7c4e215ceb66e011a2e9f004071'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
602 '3f18aefdb866d53cf76cab2868a39b9f7840edce4fef5a82'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
603 'be67335c77a6068e04112754f27ccf4e'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
604 (bytes.fromhex('d197b1b33db0143e018b12f3d1d1479e6cdebdcc97c5c0f8'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
605 '7f6902e072f457b5143f30602641b3d55cd335988cb36b84'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
606 '376060ecd532e039b742a239434af2d5'), None),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
607 (bytes.fromhex('8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b8'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
608 '68c005174dc4ee71115b59f9e60cd9532fa33e0f75aefe30'
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
609 '225c583a186cd82bd4daea9724a3d3b8'), 64),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
610 (bytes.fromhex('9d9e9c4cd21fe4be24d5b8244c759665'), None),],
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
611 }
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
612
86479
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
613 def _test_pbkdf2_hmac(self, pbkdf2):
86264
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
614 for digest_name, results in self.pbkdf2_results.items():
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
615 for i, vector in enumerate(self.pbkdf2_test_vectors):
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
616 password, salt, rounds, dklen = vector
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
617 expected, overwrite_dklen = results[i]
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
618 if overwrite_dklen:
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
619 dklen = overwrite_dklen
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
620 out = pbkdf2(digest_name, password, salt, rounds, dklen)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
621 self.assertEqual(out, expected,
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
622 (digest_name, password, salt, rounds, dklen))
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
623 out = pbkdf2(digest_name, memoryview(password),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
624 memoryview(salt), rounds, dklen)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
625 out = pbkdf2(digest_name, bytearray(password),
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
626 bytearray(salt), rounds, dklen)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
627 self.assertEqual(out, expected)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
628 if dklen is None:
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
629 out = pbkdf2(digest_name, password, salt, rounds)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
630 self.assertEqual(out, expected,
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
631 (digest_name, password, salt, rounds))
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
632
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
633 self.assertRaises(TypeError, pbkdf2, b'sha1', b'pass', b'salt', 1)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
634 self.assertRaises(TypeError, pbkdf2, 'sha1', 'pass', 'salt', 1)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
635 self.assertRaises(ValueError, pbkdf2, 'sha1', b'pass', b'salt', 0)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
636 self.assertRaises(ValueError, pbkdf2, 'sha1', b'pass', b'salt', -1)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
637 self.assertRaises(ValueError, pbkdf2, 'sha1', b'pass', b'salt', 1, 0)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
638 self.assertRaises(ValueError, pbkdf2, 'sha1', b'pass', b'salt', 1, -1)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
639 with self.assertRaisesRegex(ValueError, 'unsupported hash type'):
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
640 pbkdf2('unknown', b'pass', b'salt', 1)
5fd56d6d3fce Issue #18582: Add 'pbkdf2_hmac' to the hashlib module.
Christian Heimes <christian@cheimes.de>
parents: 85179
diff changeset
641
86479
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
642 def test_pbkdf2_hmac_py(self):
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
643 self._test_pbkdf2_hmac(py_hashlib.pbkdf2_hmac)
86467
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
644
86479
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
645 @unittest.skipUnless(hasattr(c_hashlib, 'pbkdf2_hmac'),
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
646 ' test requires OpenSSL > 1.0')
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
647 def test_pbkdf2_hmac_c(self):
a15fcb847515 Issue #18582: skip test of _hashlib.pbkdf2_hmac if OpenSSL is not available or too old
Christian Heimes <christian@cheimes.de>
parents: 86467
diff changeset
648 self._test_pbkdf2_hmac(c_hashlib.pbkdf2_hmac)
86467
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
649
e73627483d2f Issue #19254: Provide an optimized Python implementation of PBKDF2_HMAC
Christian Heimes <christian@cheimes.de>
parents: 86264
diff changeset
650
35375
624918e1c1b2 [ sf.net patch # 1121611 ]
Gregory P. Smith <greg@mad-scientist.com>
parents:
diff changeset
651 if __name__ == "__main__":
84108
05f7883ee92d Update various test modules to use unittest.main() for test discovery
Brett Cannon <brett@python.org>
parents: 79502
diff changeset
652 unittest.main()