diff --git a/bigchaindb/core.py b/bigchaindb/core.py index 9122c13f..54f8f212 100644 --- a/bigchaindb/core.py +++ b/bigchaindb/core.py @@ -331,7 +331,7 @@ class Bigchain(object): # Calculate the hash of the new block block_data = util.serialize(block) - block_hash = util.hash_data(block_data) + block_hash = crypto.hash_data(block_data) block_signature = crypto.PrivateKey(self.me_private).sign(block_data) block = { @@ -357,7 +357,7 @@ class Bigchain(object): """ # 1. Check if current hash is correct - calculated_hash = util.hash_data(util.serialize(block['block'])) + calculated_hash = crypto.hash_data(util.serialize(block['block'])) if calculated_hash != block['id']: raise exceptions.InvalidHash() diff --git a/bigchaindb/crypto.py b/bigchaindb/crypto.py index fcec3686..bcbe0863 100644 --- a/bigchaindb/crypto.py +++ b/bigchaindb/crypto.py @@ -2,6 +2,8 @@ import binascii import base58 + +import sha3 import bitcoin from cryptography.hazmat.backends import default_backend @@ -144,3 +146,10 @@ def generate_key_pair(): return (private_value_base58, public_value_compressed_base58) + +def hash_data(data): + """Hash the provided data using SHA3-256""" + + return sha3.sha3_256(data.encode()).hexdigest() + + diff --git a/bigchaindb/util.py b/bigchaindb/util.py index b8c32b74..c6ca4d36 100644 --- a/bigchaindb/util.py +++ b/bigchaindb/util.py @@ -1,4 +1,3 @@ -import sha3 import json import time @@ -7,7 +6,7 @@ from datetime import datetime import bigchaindb from bigchaindb import exceptions -from bigchaindb.crypto import PrivateKey, PublicKey +from bigchaindb.crypto import PrivateKey, PublicKey, hash_data class ProcessGroup(object): @@ -158,10 +157,6 @@ def create_and_sign_tx(private_key, current_owner, new_owner, tx_input, operatio return sign_tx(tx, private_key) -def hash_data(data): - return sha3.sha3_256(data.encode()).hexdigest() - - def check_hash_and_signature(transaction): # Check hash of the transaction calculated_hash = hash_data(serialize(transaction['transaction'])) diff --git a/tests/db/test_bigchain_api.py b/tests/db/test_bigchain_api.py index bb20e25a..747f4a9a 100644 --- a/tests/db/test_bigchain_api.py +++ b/tests/db/test_bigchain_api.py @@ -8,8 +8,7 @@ import rethinkdb as r import bigchaindb from bigchaindb import util from bigchaindb import exceptions -from bigchaindb.crypto import PrivateKey, PublicKey, generate_key_pair -from bigchaindb.util import hash_data +from bigchaindb.crypto import PrivateKey, PublicKey, generate_key_pair, hash_data from bigchaindb.voter import Voter from bigchaindb.block import Block