This repository has been archived on 2024-12-26. You can view files and clone it, but cannot push or open issues or pull requests.
PyBitmessage-2024-12-26/mockenv/lib/python3.6/site-packages/pybitmessage/fallback/__init__.py
2022-07-22 16:13:59 +05:30

33 lines
777 B
Python

"""
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 RIPEMD160
except ImportError:
RIPEMD160Hash = None
else:
RIPEMD160Hash = RIPEMD160.new
else:
def RIPEMD160Hash(data=None):
"""hashlib based RIPEMD160Hash"""
hasher = hashlib.new('ripemd160')
if data:
hasher.update(data)
return hasher