obelisk

Electrum server using libbitcoin as its backend
git clone https://git.parazyd.org/obelisk
Log | Files | Refs | README | LICENSE

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()