Improve blake2 comment for Victor (GH-20981)

Signed-off-by: Christian Heimes <christian@python.org>

Automerge-Triggered-By: @tiran
This commit is contained in:
Christian Heimes 2020-06-19 16:11:02 +02:00 committed by GitHub
parent 66a65ba43c
commit 8a0fe7b454
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 5 deletions

View File

@ -70,6 +70,11 @@ __all__ = __always_supported + ('new', 'algorithms_guaranteed',
__builtin_constructor_cache = {} __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 = { __block_openssl_constructor = {
'blake2b', 'blake2s', 'blake2b', 'blake2s',
} }
@ -120,7 +125,7 @@ def __get_builtin_constructor(name):
def __get_openssl_constructor(name): def __get_openssl_constructor(name):
if name in __block_openssl_constructor: if name in __block_openssl_constructor:
# Prefer our blake2 and sha3 implementation. # Prefer our builtin blake2 implementation.
return __get_builtin_constructor(name) return __get_builtin_constructor(name)
try: try:
# MD5, SHA1, and SHA2 are in all supported OpenSSL versions # MD5, SHA1, and SHA2 are in all supported OpenSSL versions
@ -149,10 +154,7 @@ def __hash_new(name, data=b'', **kwargs):
optionally initialized with data (which must be a bytes-like object). optionally initialized with data (which must be a bytes-like object).
""" """
if name in __block_openssl_constructor: if name in __block_openssl_constructor:
# Prefer our blake2 and sha3 implementation # Prefer our builtin blake2 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.
return __get_builtin_constructor(name)(data, **kwargs) return __get_builtin_constructor(name)(data, **kwargs)
try: try:
return _hashlib.new(name, data, **kwargs) return _hashlib.new(name, data, **kwargs)