Skip to content

Commit

Permalink
[3.9] Improve blake2 comment for Victor (GH-20981) (GH-20982)
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Heimes <christian@python.org>


(cherry picked from commit 8a0fe7b)


Co-authored-by: Christian Heimes <christian@python.org>
  • Loading branch information
miss-islington and tiran committed Jul 28, 2020
1 parent 67020a3 commit aa16ac7
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions Lib/hashlib.py
Expand Up @@ -70,6 +70,11 @@

__builtin_constructor_cache = {}

# Prefer our blake2 implementation
# OpenSSL 1.1.0 comes with a limited implementation of blake2b/s. The OpenSSL
# implementations neither support keyed blake2 (blake2 MAC) nor advanced
# features like salt, personalization, or tree hashing. OpenSSL hash-only
# variants are available as 'blake2b512' and 'blake2s256', though.
__block_openssl_constructor = {
'blake2b', 'blake2s',
}
Expand Down Expand Up @@ -120,7 +125,7 @@ def __get_builtin_constructor(name):

def __get_openssl_constructor(name):
if name in __block_openssl_constructor:
# Prefer our blake2 and sha3 implementation.
# Prefer our builtin blake2 implementation.
return __get_builtin_constructor(name)
try:
# MD5, SHA1, and SHA2 are in all supported OpenSSL versions
Expand Down Expand Up @@ -149,10 +154,7 @@ def __hash_new(name, data=b'', **kwargs):
optionally initialized with data (which must be a bytes-like object).
"""
if name in __block_openssl_constructor:
# Prefer our blake2 and sha3 implementation
# OpenSSL 1.1.0 comes with a limited implementation of blake2b/s.
# It does neither support keyed blake2 nor advanced features like
# salt, personal, tree hashing or SSE.
# Prefer our builtin blake2 implementation.
return __get_builtin_constructor(name)(data, **kwargs)
try:
return _hashlib.new(name, data, **kwargs)
Expand Down

0 comments on commit aa16ac7

Please sign in to comment.