fix #2034
This commit is contained in:
parent
38858c25fd
commit
a660590a70
|
@ -1848,8 +1848,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
|
|
||||||
pubkey_e = QLineEdit()
|
pubkey_e = QLineEdit()
|
||||||
if address:
|
if address:
|
||||||
sequence = self.wallet.get_address_index(address)
|
pubkey = self.wallet.get_public_key(address)
|
||||||
pubkey = self.wallet.get_pubkey(*sequence)
|
|
||||||
pubkey_e.setText(pubkey)
|
pubkey_e.setText(pubkey)
|
||||||
layout.addWidget(QLabel(_('Public key')), 2, 0)
|
layout.addWidget(QLabel(_('Public key')), 2, 0)
|
||||||
layout.addWidget(pubkey_e, 2, 1)
|
layout.addWidget(pubkey_e, 2, 1)
|
||||||
|
|
|
@ -254,28 +254,33 @@ class Abstract_Wallet(PrintError):
|
||||||
def is_change(self, address):
|
def is_change(self, address):
|
||||||
if not self.is_mine(address):
|
if not self.is_mine(address):
|
||||||
return False
|
return False
|
||||||
s = self.get_address_index(address)
|
return address in self.change_addresses
|
||||||
if s is None:
|
|
||||||
return False
|
|
||||||
return s[0] == 1
|
|
||||||
|
|
||||||
def get_address_index(self, address):
|
def get_address_index(self, address):
|
||||||
if address in self.receiving_addresses:
|
if self.keystore.can_import():
|
||||||
|
i = self.receiving_addresses.index(address)
|
||||||
|
return self.receiving_pubkeys[i]
|
||||||
|
elif address in self.receiving_addresses:
|
||||||
return False, self.receiving_addresses.index(address)
|
return False, self.receiving_addresses.index(address)
|
||||||
if address in self.change_addresses:
|
if address in self.change_addresses:
|
||||||
return True, self.change_addresses.index(address)
|
return True, self.change_addresses.index(address)
|
||||||
raise Exception("Address not found", address)
|
raise Exception("Address not found", address)
|
||||||
|
|
||||||
|
def get_pubkey_index(self, pubkey):
|
||||||
|
if self.keystore.can_import():
|
||||||
|
assert pubkey in self.receiving_pubkeys
|
||||||
|
return pubkey
|
||||||
|
elif pubkey in self.receiving_pubkeys:
|
||||||
|
return False, self.receiving_pubkeys.index(pubkey)
|
||||||
|
if pubkey in self.change_pubkeys:
|
||||||
|
return True, self.change_pubkeys.index(pubkey)
|
||||||
|
raise Exception("Pubkey not found", pubkey)
|
||||||
|
|
||||||
def get_private_key(self, address, password):
|
def get_private_key(self, address, password):
|
||||||
if self.is_watching_only():
|
if self.is_watching_only():
|
||||||
return []
|
return []
|
||||||
if self.keystore.can_import():
|
index = self.get_address_index(address)
|
||||||
i = self.receiving_addresses.index(address)
|
pk = self.keystore.get_private_key(index, password)
|
||||||
pubkey = self.receiving_pubkeys[i]
|
|
||||||
pk = self.keystore.get_private_key(pubkey, password)
|
|
||||||
else:
|
|
||||||
sequence = self.get_address_index(address)
|
|
||||||
pk = self.keystore.get_private_key(sequence, password)
|
|
||||||
return [pk]
|
return [pk]
|
||||||
|
|
||||||
def get_public_key(self, address):
|
def get_public_key(self, address):
|
||||||
|
@ -1384,13 +1389,6 @@ class P2PK_Wallet(Abstract_Wallet):
|
||||||
def get_public_keys(self, address):
|
def get_public_keys(self, address):
|
||||||
return [self.get_public_key(address)]
|
return [self.get_public_key(address)]
|
||||||
|
|
||||||
def get_pubkey_index(self, pubkey):
|
|
||||||
if pubkey in self.receiving_pubkeys:
|
|
||||||
return False, self.receiving_pubkeys.index(pubkey)
|
|
||||||
if pubkey in self.change_pubkeys:
|
|
||||||
return True, self.change_pubkeys.index(pubkey)
|
|
||||||
raise BaseExeption('pubkey not found')
|
|
||||||
|
|
||||||
def add_input_sig_info(self, txin, address):
|
def add_input_sig_info(self, txin, address):
|
||||||
if not self.keystore.can_import():
|
if not self.keystore.can_import():
|
||||||
txin['derivation'] = derivation = self.get_address_index(address)
|
txin['derivation'] = derivation = self.get_address_index(address)
|
||||||
|
@ -1407,12 +1405,12 @@ class P2PK_Wallet(Abstract_Wallet):
|
||||||
txin['num_sig'] = 1
|
txin['num_sig'] = 1
|
||||||
|
|
||||||
def sign_message(self, address, message, password):
|
def sign_message(self, address, message, password):
|
||||||
sequence = self.get_address_index(address)
|
index = self.get_address_index(address)
|
||||||
return self.keystore.sign_message(sequence, message, password)
|
return self.keystore.sign_message(index, message, password)
|
||||||
|
|
||||||
def decrypt_message(self, pubkey, message, password):
|
def decrypt_message(self, pubkey, message, password):
|
||||||
sequence = self.get_pubkey_index(pubkey)
|
index = self.get_pubkey_index(pubkey)
|
||||||
return self.keystore.decrypt_message(sequence, message, password)
|
return self.keystore.decrypt_message(index, message, password)
|
||||||
|
|
||||||
|
|
||||||
class Deterministic_Wallet(Abstract_Wallet):
|
class Deterministic_Wallet(Abstract_Wallet):
|
||||||
|
|
Loading…
Reference in New Issue