hashes.py (1215B)
1 #!/usr/bin/env python3 2 # Copyright (C) 2020-2021 Ivan J. <parazyd@dyne.org> 3 # 4 # This file is part of obelisk 5 # 6 # This program is free software: you can redistribute it and/or modify 7 # it under the terms of the GNU Affero General Public License version 3 8 # as published by the Free Software Foundation. 9 # 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 # GNU Affero General Public License for more details. 14 # 15 # You should have received a copy of the GNU Affero General Public License 16 # along with this program. If not, see <http://www.gnu.org/licenses/>. 17 """ Cryptographic hash functions and helpers """ 18 import hashlib 19 20 _sha256 = hashlib.sha256 21 22 23 def sha256(inp): 24 """ Simple wrapper of hashlib sha256. """ 25 return _sha256(inp).digest() 26 27 28 def double_sha256(inp): 29 """ sha256 of sha256, as used extensively in bitcoin """ 30 return sha256(sha256(inp)) 31 32 33 def hash_to_hex_str(inp): 34 """Convert a big-endian binary hash to displayed hex string. 35 Display form of a binary hash is reversed and converted to hex. 36 """ 37 return bytes(reversed(inp)).hex()