-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
gh-136547: refactor hashlib_helper
for blocking and requesting digests
#136762
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gh-136547: refactor hashlib_helper
for blocking and requesting digests
#136762
Conversation
Urgh, so in my previous PR, I had some bad copy pastes in the wrappers. Fortunately, they were never used until now but my bad. |
!buildbot FIPS only |
🤖 New build scheduled with the buildbot fleet by @picnixz for commit 2b8d5f0 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F136762%2Fmerge The command will test the builders whose names match following regular expression: The builders matched are:
|
!buildbot FIPS only |
🤖 New build scheduled with the buildbot fleet by @picnixz for commit f4bf516 🤖 Results will be shown at: https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F136762%2Fmerge The command will test the builders whose names match following regular expression: The builders matched are:
|
…ests (python#136762) - Fix `hashlib_helper.block_algorithm` where the dummy functions were incorrectly defined. - Rename `hashlib_helper.HashAPI` to `hashlib_helper.HashInfo` and add more helper methods. - Simplify `hashlib_helper.requires_*()` functions. - Rewrite some private helpers in `hashlib_helper`. - Remove `find_{builtin,openssl}_hashdigest_constructor()` as they are no more needed and were not meant to be public in the first place. - Fix some tests in `test_hashlib` when FIPS mode is on.
I made some mistakes in my previous PR and the design I introduced for requesting hashes could actually be greatly simplified. As those two are tightly coupled, I've decided to do both the fix & refactoring at the same time.
Because of all build possibilities we can have, whether at runtime or not, and because some functions can't be given
usedforsecurity
, tests easily fail because of the underlying configurations. Default builds where we don't have some FIPS module are easy to test, but when FIPS mode is enabled, it's hard to know what is blocked and what is not.One really annoying thing is the treatment of BLAKE-2 which always falls back to the built-in implementations. Thus, blocking BLAKE-2 may be quite hard and quite different. Well, if we block BLAKE-2 and we don't have OpenSSL at all, then tests don't pass because hashlib.py can't even be imported. Anywsay, I'm opening a draft for now and I'll continue working on this tomorrow.