electrum-obelisk

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

hash.py (1318B)


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