Skip to content

Commit 6725ed9

Browse files
committed
gh-103256: Fix hmac algorithm to support fallback implementation
1 parent 96e1901 commit 6725ed9

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

Lib/test/test_hmac.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,16 @@ def test_with_digestmod_no_default(self):
373373
with self.assertRaisesRegex(TypeError, r'required.*digestmod'):
374374
hmac.HMAC(key, msg=data, digestmod='')
375375

376+
def test_with_fallback(self):
377+
cache = getattr(hashlib, '__builtin_constructor_cache')
378+
try:
379+
cache['foo'] = hashlib.md5
380+
digest = hmac.digest(b'key', b'message', 'foo')
381+
expected = binascii.unhexlify('4e4748e62b463521f6775fbf921234b5')
382+
self.assertEqual(digest, expected)
383+
finally:
384+
cache.pop('foo')
385+
376386

377387
class ConstructorTestCase(unittest.TestCase):
378388

Modules/_hashopenssl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ py_digest_by_name(PyObject *module, const char *name, enum Py_hash_type py_ht)
355355
}
356356
}
357357
if (digest == NULL) {
358-
_setException(PyExc_ValueError, "unsupported hash type %s", name);
358+
_setException(state->unsupported_digestmod_error, "unsupported hash type %s", name);
359359
return NULL;
360360
}
361361
return digest;

0 commit comments

Comments
 (0)