relocation tests directory
This commit is contained in:
parent
5946e42e67
commit
af1ef1ede7
@ -24,7 +24,7 @@ class TransactionDeserializeTests(unittest.TestCase):
|
||||
print("\nTesting Transaction class deserialization:\n")
|
||||
|
||||
def test_serialaize_and_perfomance(self):
|
||||
f = open('./test/raw_block.txt')
|
||||
f = open(ROOT_DIR + '/test/raw_block.txt')
|
||||
fc = f.readline()
|
||||
qt = time.time()
|
||||
bt = decode_block_tx(fc[:-1])
|
||||
3
setup.py
3
setup.py
@ -16,6 +16,7 @@ setup(name='pybtc',
|
||||
install_requires=[ 'secp256k1'],
|
||||
include_package_data=True,
|
||||
package_data={
|
||||
'pybtc': ['bip39_word_list/*.txt'],
|
||||
'pybtc': ['bip39_word_list/*.txt', 'test/*.txt'],
|
||||
},
|
||||
test_suite='tests',
|
||||
zip_safe=False)
|
||||
|
||||
9
tests.py
Normal file
9
tests.py
Normal file
@ -0,0 +1,9 @@
|
||||
import unittest
|
||||
|
||||
import pybtc.test
|
||||
|
||||
testLoad = unittest.TestLoader()
|
||||
suites = testLoad.loadTestsFromModule(pybtc.test)
|
||||
|
||||
runner = unittest.TextTestRunner(verbosity=1)
|
||||
runner.run(suites)
|
||||
@ -1,73 +0,0 @@
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def fail_key1():
|
||||
return b'\x00\x00\x00\x00'
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def fail_key2():
|
||||
return b'\x97\x8bq\xc6\xd8\xfew\xe5\xfa\xad\xdc\xc6\xc5\x91\xbd\xfb'
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def good_key():
|
||||
return b'B\xa8\xe9v>y\xe2\x82\x10\x80\xc2\xa91\x10E\xe0XJ\xe6\xc7\x18\x9eE~\xa0^\xd1\x820\xe7\x18\x0c'
|
||||
|
||||
@pytest.fixture
|
||||
def master_key_hdwallet_mnet():
|
||||
return dict(version=b'\x04\x88\xad\xe4',
|
||||
key=b"Y\x9e'\xe00or'\xacD\x9c(l\x99\x0fxB\x03\xbd/]|+\xfd\xe89K!\x93\x0bN\x9b",
|
||||
depth=0,
|
||||
child=0,
|
||||
finger_print=b'\x00\x00\x00\x00',
|
||||
chain_code=b'B\xa8\xe9v>y\xe2\x82\x10\x80\xc2\xa91\x10E\xe0XJ\xe6\xc7\x18\x9eE~\xa0^\xd1\x820\xe7\x18\x0c',
|
||||
is_private=True)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def public_key_hdwallet_mnet():
|
||||
return dict(version=b'\x04\x88\xB2\x1E',
|
||||
key=b"\x03F\xcd\x96\xd7-\xc4Q\xee\xfc\xadc\n\xe4\xd2Xe\x02\x99(\x0f\xf5\x1c'\x16\xab\xd0\x05_\xb4:8\xfa",
|
||||
depth=0,
|
||||
child=0,
|
||||
finger_print=b'\x00\x00\x00\x00',
|
||||
chain_code=b'B\xa8\xe9v>y\xe2\x82\x10\x80\xc2\xa91\x10E\xe0XJ\xe6\xc7\x18\x9eE~\xa0^\xd1\x820\xe7\x18\x0c',
|
||||
is_private=False)
|
||||
|
||||
@pytest.fixture
|
||||
def master_key_hdwallet_tnet():
|
||||
return dict(version=b'\x04\x35\x83\x94',
|
||||
key=b"Y\x9e'\xe00or'\xacD\x9c(l\x99\x0fxB\x03\xbd/]|+\xfd\xe89K!\x93\x0bN\x9b",
|
||||
depth=0,
|
||||
child=0,
|
||||
finger_print=b'\x00\x00\x00\x00',
|
||||
chain_code=b'B\xa8\xe9v>y\xe2\x82\x10\x80\xc2\xa91\x10E\xe0XJ\xe6\xc7\x18\x9eE~\xa0^\xd1\x820\xe7\x18\x0c',
|
||||
is_private=True)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def public_key_hdwallet_tnet():
|
||||
return dict(version=b'\x04\x35\x87\xCF',
|
||||
key=b"\x03F\xcd\x96\xd7-\xc4Q\xee\xfc\xadc\n\xe4\xd2Xe\x02\x99(\x0f\xf5\x1c'\x16\xab\xd0\x05_\xb4:8\xfa",
|
||||
depth=0,
|
||||
child=0,
|
||||
finger_print=b'\x00\x00\x00\x00',
|
||||
chain_code=b'B\xa8\xe9v>y\xe2\x82\x10\x80\xc2\xa91\x10E\xe0XJ\xe6\xc7\x18\x9eE~\xa0^\xd1\x820\xe7\x18\x0c',
|
||||
is_private=False)
|
||||
|
||||
@pytest.fixture
|
||||
def privkey_hdwallet_base58():
|
||||
return 'xprv9s21ZrQH143K2irFFw4cdtV8EicuR6Y5P2WqMpbLWhnZUADeKUi52Jh8Pzt8K9RqHanNsrVXf6VhNXQv2ypWxsTSWB8UsqjxkGPxHcjyXNC'
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def pubkey_hdwallet_base58():
|
||||
return 'xpub661MyMwAqRbcFCviMxbd12RrnkTPpZFvkFSSACzx53KYLxYns22Ka71cFHiMLQz3NaPYeN7EcdDUwH5QTWeS56jc2DzAzuKU2cfwp5cvyoR'
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def bad_key_hdwallet_base58():
|
||||
return 'xpeb661MyMwAq1ecFCviMxbd12RrnkTPpZFvkFSSACzx53KYLxYns22Ka71cFHiMLQz3NaPYeN7EcdDUwH5QTWeS56jc2DzAzuKU2cfwp5cvyoR'
|
||||
|
||||
@ -1,74 +0,0 @@
|
||||
import pytest
|
||||
import random
|
||||
|
||||
|
||||
#@pytest.fixture
|
||||
#def gen_entropy(bit_size):
|
||||
#rnd = random.systemRandom(123456)
|
||||
#return rnd.randint(0, 255)
|
||||
|
||||
@pytest.fixture
|
||||
def mnemonic_128():
|
||||
return ['nurse', 'fortune', 'immune', 'rapid', 'trash',
|
||||
'very', 'turkey', 'romance', 'short', 'clutch', 'hunt', 'wait']
|
||||
|
||||
@pytest.fixture
|
||||
def mnemonic_160():
|
||||
return ['mail', 'paddle', 'wine', 'fox', 'various', 'absent',
|
||||
'manage', 'divert', 'awful', 'push', 'mystery',
|
||||
'mule', 'arrest', 'lawsuit', 'orient']
|
||||
|
||||
@pytest.fixture
|
||||
def mnemonic_192():
|
||||
return ['craft', 'first', 'champion', 'border', 'rely',
|
||||
'dance', 'tag', 'voyage', 'category', 'orbit',
|
||||
'hungry', 'caught', 'occur', 'wonder', 'history',
|
||||
'jacket', 'first', 'plunge']
|
||||
|
||||
@pytest.fixture
|
||||
def mnemonic_224():
|
||||
return ['liberty', 'family', 'lobster', 'omit', 'glide',
|
||||
'vague', 'market', 'cancel', 'exotic', 'jazz',
|
||||
'sausage', 'elite', 'tuition', 'grief', 'typical',
|
||||
'hobby', 'local', 'impact', 'leopard', 'basic', 'obscure']
|
||||
|
||||
@pytest.fixture
|
||||
def mnemonic_256():
|
||||
return ['neck', 'adjust', 'town', 'ticket', 'sunset', 'pulse',
|
||||
'space', 'dolphin', 'farm', 'absent', 'cat', 'adult',
|
||||
'erupt', 'student', 'globe', 'tooth', 'tackle', 'group',
|
||||
'sponsor', 'dice', 'add', 'maid', 'illegal', 'major']
|
||||
|
||||
@pytest.fixture
|
||||
def entropy_128():
|
||||
return b'\x97\x8bq\xc6\xd8\xfew\xe5\xfa\xad\xdc\xc6\xc5\x91\xbd\xfb'
|
||||
|
||||
@pytest.fixture
|
||||
def entropy_160():
|
||||
return b'\x863\xdb\xee./\x18\x01a\xb9\xfe\x10\xb5\xd6I\xc8\xa0\xc6\xfcg'
|
||||
|
||||
@pytest.fixture
|
||||
def entropy_192():
|
||||
return b'2\n\xec\x98\x0c\xebVn\xb7O\xb0$3}\xbd\x129\x8d\xfa\x1b\x0b\xb8Wt'
|
||||
|
||||
@pytest.fixture
|
||||
def entropy_224():
|
||||
return b'\x80\xeaR\x0c\xcd61\xe1b\t\tP\x0e\xee\xfe\xa4\x0e\xa2\xcd:\xfbb\x83N:\x01\t\x89'
|
||||
|
||||
@pytest.fixture
|
||||
def entropy_256():
|
||||
return b'\x93\xa0s\x99p\xdd\x99[4\x12\x06S \x14\x8f\x01\xe4\xcf\xae\xd8\xd7&\xdd\x0c\xdfI\x9e\xb03\x0c\x1cD'
|
||||
|
||||
|
||||
@pytest.yield_fixture
|
||||
def wordlist():
|
||||
f = None
|
||||
def select_wordlist(filename):
|
||||
nonlocal f
|
||||
assert f is None
|
||||
f = open(filename)
|
||||
return f
|
||||
yield select_wordlist
|
||||
if f is not None:
|
||||
f.close()
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import pytest
|
||||
|
||||
|
||||
pytest_plugins = ['bip0032_fixtures', 'bip0039_fixtures']
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
import unittest
|
||||
|
||||
import test
|
||||
|
||||
testLoad = unittest.TestLoader()
|
||||
suites = testLoad.loadTestsFromModule(test)
|
||||
|
||||
runner = unittest.TextTestRunner(verbosity=3)
|
||||
runner.run(suites)
|
||||
@ -1,187 +0,0 @@
|
||||
import os
|
||||
import sys
|
||||
import random
|
||||
import hashlib
|
||||
import hmac
|
||||
|
||||
from binascii import hexlify, unhexlify
|
||||
|
||||
|
||||
parentPath = os.path.abspath("..")
|
||||
if parentPath not in sys.path:
|
||||
sys.path.insert(0, parentPath)
|
||||
|
||||
from pybtc.wallet import *
|
||||
from pybtc.tools import encode_base58, decode_base58
|
||||
|
||||
|
||||
|
||||
def test_create_master_key_hdwallet(mnemonic_256):
|
||||
passphrase = ' '.join(mnemonic_256)
|
||||
seed = mnemonic_to_seed(passphrase, 'P@ssw0rd')
|
||||
assert seed is not None
|
||||
assert len(seed) == 64
|
||||
master_key = create_xmaster_key(seed)
|
||||
assert master_key is not None
|
||||
assert isinstance(master_key, dict)
|
||||
assert master_key.get('version') is not None
|
||||
assert master_key.get('key') is not None
|
||||
assert master_key.get('depth') is not None
|
||||
assert master_key.get('child') is not None
|
||||
assert master_key.get('finger_print') is not None
|
||||
assert master_key.get('chain_code') is not None
|
||||
assert master_key.get('is_private') is not None
|
||||
assert master_key['is_private']
|
||||
|
||||
|
||||
def test_create_public_key_hdwallet(master_key_hdwallet_mnet):
|
||||
public_key = create_xpublic_key(master_key_hdwallet_mnet)
|
||||
assert public_key is not None
|
||||
assert len(public_key['key']) == 33
|
||||
|
||||
|
||||
def test_validate_private_key(fail_key1, fail_key2, good_key):
|
||||
assert not is_xprivate_key_valid(fail_key1)
|
||||
assert not is_xprivate_key_valid(fail_key2)
|
||||
assert is_xprivate_key_valid(good_key)
|
||||
|
||||
|
||||
def test_create_expanded_key(master_key_hdwallet_mnet, public_key_hdwallet_mnet):
|
||||
result = create_expanded_key(b'asdasdasd', 0)
|
||||
assert result is None
|
||||
result = create_expanded_key(master_key_hdwallet_mnet, 0x80000000)
|
||||
assert result is None
|
||||
result = create_expanded_key(master_key_hdwallet_mnet, 0)
|
||||
assert result is not None
|
||||
assert len(result) == 64
|
||||
result = create_expanded_key(public_key_hdwallet_mnet, 0)
|
||||
assert result is not None
|
||||
assert len(result) == 64
|
||||
|
||||
|
||||
def test_create_expanded_hard_key(master_key_hdwallet_mnet, public_key_hdwallet_mnet):
|
||||
result = create_expanded_hard_key(master_key_hdwallet_mnet, 0)
|
||||
assert result is None
|
||||
result = create_expanded_hard_key(master_key_hdwallet_mnet, 0x80000000)
|
||||
assert result is not None
|
||||
assert len(result) == 64
|
||||
|
||||
|
||||
def test_create_child_privkey(master_key_hdwallet_mnet, public_key_hdwallet_mnet):
|
||||
result = create_child_privkey(public_key_hdwallet_mnet, 0)
|
||||
assert result is None
|
||||
result = create_child_privkey(master_key_hdwallet_mnet, 0)
|
||||
assert result is not None
|
||||
assert isinstance(result, dict)
|
||||
assert result.get('is_private')
|
||||
|
||||
|
||||
def test_create_child_pubkey(master_key_hdwallet_mnet, public_key_hdwallet_mnet):
|
||||
result = create_child_pubkey(master_key_hdwallet_mnet, 0)
|
||||
assert result is None
|
||||
result = create_child_pubkey(public_key_hdwallet_mnet, 0)
|
||||
assert result is not None
|
||||
assert isinstance(result, dict)
|
||||
assert not result.get('is_private')
|
||||
|
||||
|
||||
def test_serialize_key_hdwallet(master_key_hdwallet_mnet, public_key_hdwallet_tnet):
|
||||
serialize_mkey = serialize_xkey(master_key_hdwallet_mnet)
|
||||
assert serialize_mkey is not None
|
||||
assert isinstance(serialize_mkey, bytes)
|
||||
assert len(serialize_mkey[:-4]) == 78
|
||||
ser_encode = encode_base58(serialize_mkey)
|
||||
assert ser_encode[:4] in ['xprv', 'tprv']
|
||||
|
||||
serialize_pkey = serialize_xkey(public_key_hdwallet_tnet)
|
||||
assert serialize_pkey is not None
|
||||
assert isinstance(serialize_pkey, bytes)
|
||||
assert len(serialize_pkey[:-4]) == 78
|
||||
ser_encode = encode_base58(serialize_pkey)
|
||||
assert ser_encode[:4] in ['xpub', 'tpub']
|
||||
|
||||
|
||||
def test_deserialize_key(privkey_hdwallet_base58, pubkey_hdwallet_base58, bad_key_hdwallet_base58):
|
||||
#десериализация приватного ключа
|
||||
privkey = deserialize_xkey(privkey_hdwallet_base58)
|
||||
assert privkey is not None
|
||||
assert isinstance(privkey, dict)
|
||||
assert privkey['is_private']
|
||||
#десериализация публичного ключа
|
||||
pubkey = deserialize_xkey(pubkey_hdwallet_base58)
|
||||
assert pubkey is not None
|
||||
assert isinstance(pubkey, dict)
|
||||
assert not pubkey['is_private']
|
||||
#десериализация некорретного ключа
|
||||
pubkey = deserialize_xkey(bad_key_hdwallet_base58)
|
||||
assert pubkey is None
|
||||
|
||||
|
||||
def test_derive_xkey(mnemonic_256):
|
||||
passphrase = ' '.join(mnemonic_256)
|
||||
seed = mnemonic_to_seed(passphrase, 'P@ssw0rd')
|
||||
params = [0x8000002C, 0x80000001, 0x80000000, 0, 0]
|
||||
result = derive_xkey(seed, *params, bip44=True, testnet=True, wif=True)
|
||||
assert result is not None
|
||||
assert isinstance(result, str)
|
||||
assert result[:4] in 'tprv'
|
||||
|
||||
|
||||
def test_xprivate_to_xpublic_key(privkey_hdwallet_base58):
|
||||
xpubkey = xprivate_to_xpublic_key(privkey_hdwallet_base58)
|
||||
assert xpubkey is not None
|
||||
assert isinstance(xpubkey, str)
|
||||
assert len(xpubkey) == 111
|
||||
assert xpubkey[:4] in ['xpub', 'tpub']
|
||||
xpubkey = xprivate_to_xpublic_key(privkey_hdwallet_base58, False)
|
||||
assert xpubkey is not None
|
||||
assert isinstance(xpubkey, bytes)
|
||||
|
||||
|
||||
def test_xkey_to_private_key(privkey_hdwallet_base58):
|
||||
privkey = xkey_to_private_key(privkey_hdwallet_base58, True, False)
|
||||
assert privkey is not None
|
||||
assert isinstance(privkey, str)
|
||||
privkey = xkey_to_private_key(privkey_hdwallet_base58, False, True)
|
||||
assert privkey is not None
|
||||
assert isinstance(privkey, str)
|
||||
privkey = xkey_to_private_key(privkey_hdwallet_base58, False, False)
|
||||
assert privkey is not None
|
||||
assert isinstance(privkey, bytes)
|
||||
|
||||
|
||||
def test_xkey_to_public_key(privkey_hdwallet_base58, pubkey_hdwallet_base58):
|
||||
# from xpubkey to pubkey
|
||||
pubkey = xkey_to_public_key(pubkey_hdwallet_base58, True)
|
||||
assert pubkey is not None
|
||||
assert isinstance(pubkey, str)
|
||||
pubkey = xkey_to_public_key(pubkey_hdwallet_base58, False)
|
||||
assert pubkey is not None
|
||||
assert isinstance(pubkey, bytes)
|
||||
# from xprivkey to pubkey
|
||||
pubkey = xkey_to_public_key(privkey_hdwallet_base58, True)
|
||||
assert pubkey is not None
|
||||
assert isinstance(pubkey, str)
|
||||
pubkey = xkey_to_public_key(privkey_hdwallet_base58, False)
|
||||
assert pubkey is not None
|
||||
assert isinstance(pubkey, bytes)
|
||||
|
||||
|
||||
def test_validate_path_level():
|
||||
params = [0x8000002C, 0x80000001, 0x80000000, 0, 0]
|
||||
testnet = True
|
||||
assert is_validate_path_level(params, testnet)
|
||||
testnet = False
|
||||
assert not is_validate_path_level(params, testnet)
|
||||
params = [0, 0x80000001, 0x80000000, 0, 0]
|
||||
testnet = True
|
||||
assert not is_validate_path_level(params, testnet)
|
||||
params = [0x8000002C, 0x80000001, 0, 0, 0]
|
||||
testnet = True
|
||||
assert not is_validate_path_level(params, testnet)
|
||||
params = [0x8000002C, 0x80000001, 0, 0]
|
||||
testnet = True
|
||||
assert not is_validate_path_level(params, testnet)
|
||||
params = []
|
||||
assert is_validate_path_level(params, testnet)
|
||||
|
||||
@ -1,119 +0,0 @@
|
||||
import os
|
||||
import random
|
||||
import hashlib
|
||||
import hmac
|
||||
from binascii import hexlify, unhexlify
|
||||
from pybtc.wallet import *
|
||||
|
||||
|
||||
|
||||
def test_recovery_from_passphrase_12(entropy_128, mnemonic_128):
|
||||
passphrase = ' '.join(mnemonic_128)
|
||||
entropy = mnemonic_to_entropy(passphrase, 'english')
|
||||
assert entropy == entropy_128
|
||||
|
||||
|
||||
def test_recovery_from_passphrase_15(entropy_160, mnemonic_160):
|
||||
passphrase = ' '.join(mnemonic_160)
|
||||
entropy = mnemonic_to_entropy(passphrase, 'english')
|
||||
assert entropy == entropy_160
|
||||
|
||||
|
||||
def test_recovery_from_passphrase_18(entropy_192, mnemonic_192):
|
||||
passphrase = ' '.join(mnemonic_192)
|
||||
entropy = mnemonic_to_entropy(passphrase, 'english')
|
||||
assert entropy == entropy_192
|
||||
|
||||
|
||||
def test_recovery_from_passphrase_21(entropy_224, mnemonic_224):
|
||||
passphrase = ' '.join(mnemonic_224)
|
||||
entropy = mnemonic_to_entropy(passphrase, 'english')
|
||||
assert entropy == entropy_224
|
||||
|
||||
|
||||
def test_recovery_from_passphrase_24(entropy_256, mnemonic_256):
|
||||
passphrase = ' '.join(mnemonic_256)
|
||||
entropy = mnemonic_to_entropy(passphrase, 'english')
|
||||
assert entropy == entropy_256
|
||||
|
||||
|
||||
def test_create_mnemonic(entropy_128, entropy_160, entropy_192, entropy_224, entropy_256):
|
||||
mnemonic = create_mnemonic(entropy_128, 'english')
|
||||
assert len(mnemonic) == 12
|
||||
|
||||
mnemonic = create_mnemonic(entropy_160, 'english')
|
||||
assert len(mnemonic) == 15
|
||||
|
||||
mnemonic = create_mnemonic(entropy_192, 'english')
|
||||
assert len(mnemonic) == 18
|
||||
|
||||
mnemonic = create_mnemonic(entropy_224, 'english')
|
||||
assert len(mnemonic) == 21
|
||||
|
||||
mnemonic = create_mnemonic(entropy_256, 'english')
|
||||
assert len(mnemonic) == 24
|
||||
|
||||
|
||||
def test_create_wordlist():
|
||||
wordlist_en = create_wordlist('english')
|
||||
wordlist_fr = create_wordlist('french')
|
||||
wordlist_it = create_wordlist('italian')
|
||||
wordlist_sp = create_wordlist('spanish')
|
||||
assert 'abandon' in wordlist_en
|
||||
assert 'abaisser' in wordlist_fr
|
||||
assert 'abaco' in wordlist_it
|
||||
assert 'ábaco' in wordlist_sp
|
||||
|
||||
|
||||
def test_create_seed(mnemonic_256):
|
||||
passphrase = ' '.join(mnemonic_256)
|
||||
seed = mnemonic_to_seed(passphrase, 'P@ssw0rd')
|
||||
assert seed is not None
|
||||
assert len(seed) == 64
|
||||
|
||||
|
||||
def test_create_passphrase():
|
||||
passphrase = create_passphrase(128, 'english')
|
||||
assert len(passphrase.split()) == 12
|
||||
|
||||
passphrase = create_passphrase(160, 'english')
|
||||
assert len(passphrase.split()) == 15
|
||||
|
||||
passphrase = create_passphrase(192, 'english')
|
||||
assert len(passphrase.split()) == 18
|
||||
|
||||
passphrase = create_passphrase(224, 'english')
|
||||
assert len(passphrase.split()) == 21
|
||||
|
||||
passphrase = create_passphrase(256, 'english')
|
||||
assert len(passphrase.split()) == 24
|
||||
|
||||
|
||||
def test_add_checksum_ent(entropy_128, entropy_160, entropy_192, entropy_224, entropy_256):
|
||||
ent_add_chksum = add_checksum_ent(entropy_128)
|
||||
ent_hash = hashlib.sha256(entropy_128).hexdigest()
|
||||
fb = unhexlify(ent_hash)[0]
|
||||
assert (fb >> 4) & ent_add_chksum
|
||||
|
||||
ent_add_chksum = add_checksum_ent(entropy_160)
|
||||
ent_hash = hashlib.sha256(entropy_160).hexdigest()
|
||||
fb = unhexlify(ent_hash)[0]
|
||||
assert (fb >> 3) & ent_add_chksum
|
||||
|
||||
ent_add_chksum = add_checksum_ent(entropy_192)
|
||||
ent_hash = hashlib.sha256(entropy_192).hexdigest()
|
||||
fb = unhexlify(ent_hash)[0]
|
||||
assert (fb >> 2) & ent_add_chksum
|
||||
|
||||
ent_add_chksum = add_checksum_ent(entropy_224)
|
||||
ent_hash = hashlib.sha256(entropy_224).hexdigest()
|
||||
fb = unhexlify(ent_hash)[0]
|
||||
assert (fb >> 1) & ent_add_chksum
|
||||
|
||||
ent_add_chksum = add_checksum_ent(entropy_256)
|
||||
ent_hash = hashlib.sha256(entropy_256).hexdigest()
|
||||
fb = unhexlify(ent_hash)[0]
|
||||
assert fb & ent_add_chksum
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user