def wif_to_key(wif): private_key_hex, compressed, version = wif_to_hex(wif) if version == 'main': if compressed: return PrivateKey.from_hex(private_key_hex) else: return PrivateKey(wif) else: if compressed: return PrivateKeyTestnet.from_hex(private_key_hex) else: return PrivateKeyTestnet(wif)
def __init__(self, wif=None): if wif: if isinstance(wif, str): private_key_hex, compressed, version = wif_to_hex(wif) self._pk = derive_private_key(hex_to_int(private_key_hex)) elif isinstance(wif, EllipticCurvePrivateKey): self._pk = wif compressed = True else: raise TypeError('Wallet Import Format must be a string.') else: self._pk = generate_private_key() compressed = True self._public_point = None self._public_key = point_to_public_key( self._pk.public_key().public_numbers(), compressed=compressed)
def test_wif_to_hex_invalid_network(self): with pytest.raises(ValueError): wif_to_hex(BITCOIN_ADDRESS)
def test_wif_to_hex_compressed(self): assert wif_to_hex(WALLET_FORMAT_COMPRESSED_MAIN) == (PRIVATE_KEY_HEX, True, 'main')
def test_wif_to_hex_test(self): assert wif_to_hex(WALLET_FORMAT_TEST) == (PRIVATE_KEY_HEX, False, 'test')
def test_wif_to_hex_main(self): assert wif_to_hex(WALLET_FORMAT_MAIN) == (PRIVATE_KEY_HEX, False, 'main')