There was an error while loading. Please reload this page.
1 parent 0cc4fd9 commit fb1d60cCopy full SHA for fb1d60c
2 files changed
Lib/hashlib.py
@@ -64,26 +64,29 @@
64
65
66
def __get_builtin_constructor(name):
67
- if name in ('SHA1', 'sha1'):
68
- import _sha
69
- return _sha.new
70
- elif name in ('MD5', 'md5'):
71
- import _md5
72
- return _md5.new
73
- elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
74
- import _sha256
75
- bs = name[3:]
76
- if bs == '256':
77
- return _sha256.sha256
78
- elif bs == '224':
79
- return _sha256.sha224
80
- elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'):
81
- import _sha512
82
83
- if bs == '512':
84
- return _sha512.sha512
85
- elif bs == '384':
86
- return _sha512.sha384
+ try:
+ if name in ('SHA1', 'sha1'):
+ import _sha
+ return _sha.new
+ elif name in ('MD5', 'md5'):
+ import _md5
+ return _md5.new
+ elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
+ import _sha256
+ bs = name[3:]
+ if bs == '256':
+ return _sha256.sha256
+ elif bs == '224':
+ return _sha256.sha224
+ elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'):
+ import _sha512
+ if bs == '512':
+ return _sha512.sha512
+ elif bs == '384':
87
+ return _sha512.sha384
88
+ except ImportError:
89
+ pass # no extension module, this hash is unsupported.
90
91
raise ValueError('unsupported hash type %s' % name)
92
Lib/test/test_hashlib.py
@@ -115,6 +115,24 @@ def test_unknown_hash(self):
115
else:
116
self.assertTrue(0 == "hashlib didn't reject bogus hash name")
117
118
+ def test_get_builtin_constructor(self):
119
+ get_builtin_constructor = hashlib.__dict__[
120
+ '__get_builtin_constructor']
121
+ self.assertRaises(ValueError, get_builtin_constructor, 'test')
122
123
124
125
+ pass
126
+ # This forces an ImportError for "import _md5" statements
127
+ sys.modules['_md5'] = None
128
129
+ self.assertRaises(ValueError, get_builtin_constructor, 'md5')
130
+ finally:
131
+ if '_md5' in locals():
132
+ sys.modules['_md5'] = _md5
133
+ else:
134
+ del sys.modules['_md5']
135
+
136
def test_hexdigest(self):
137
for name in self.supported_hash_names:
138
h = hashlib.new(name)
0 commit comments