PyBitmessage/src/fallback/__init__.py

33 lines
781 B
Python
Raw Normal View History

"""
2019-10-13 10:10:06 +00:00
Fallback expressions help PyBitmessage modules to run without some external
dependencies.
RIPEMD160Hash
-------------
We need to check :mod:`hashlib` for RIPEMD-160, as it won't be available
if OpenSSL is not linked against or the linked OpenSSL has RIPEMD disabled.
Try to use `pycryptodome <https://pypi.org/project/pycryptodome/>`_
in that case.
"""
import hashlib
try:
hashlib.new('ripemd160')
except ValueError:
try:
from Crypto.Hash import RIPEMD
except ImportError:
RIPEMD160Hash = None
else:
RIPEMD160Hash = RIPEMD.RIPEMD160Hash
else:
def RIPEMD160Hash(data=None):
"""hashlib based RIPEMD160Hash"""
hasher = hashlib.new('ripemd160')
if data:
hasher.update(data)
return hasher