electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 07f5d6b74580d05a0e764de6898c1c397edcd7be
parent beee880dbaaac7680c923e823b238b2fd78bf1ce
Author: SomberNight <somber.night@protonmail.com>
Date:   Wed, 12 Feb 2020 16:41:58 +0100

keystore: 'get_tx_derivations' no longer public

Diffstat:
Melectrum/keystore.py | 15+++++++++------
Melectrum/plugins/trustedcoin/cmdline.py | 2+-
Melectrum/plugins/trustedcoin/qt.py | 2+-
Melectrum/plugins/trustedcoin/trustedcoin.py | 2+-
4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/electrum/keystore.py b/electrum/keystore.py @@ -33,6 +33,7 @@ from abc import ABC, abstractmethod from . import bitcoin, ecc, constants, bip32 from .bitcoin import deserialize_privkey, serialize_privkey +from .transaction import Transaction, PartialTransaction, PartialTxInput, PartialTxOutput from .bip32 import (convert_bip32_path_to_list_of_uint32, BIP32_PRIME, is_xpub, is_xprv, BIP32Node, normalize_bip32_derivation, convert_bip32_intpath_to_strpath) @@ -47,7 +48,6 @@ from .logging import Logger if TYPE_CHECKING: from .gui.qt.util import TaskThread - from .transaction import Transaction, PartialTransaction, PartialTxInput, PartialTxOutput from .plugins.hw_wallet import HW_PluginBase, HardwareClientBase @@ -75,7 +75,7 @@ class KeyStore(Logger, ABC): """Returns whether the keystore can be encrypted with a password.""" pass - def get_tx_derivations(self, tx: 'PartialTransaction') -> Dict[str, Union[Sequence[int], str]]: + def _get_tx_derivations(self, tx: 'PartialTransaction') -> Dict[str, Union[Sequence[int], str]]: keypairs = {} for txin in tx.inputs(): if txin.is_complete(): @@ -90,10 +90,13 @@ class KeyStore(Logger, ABC): keypairs[pubkey.hex()] = derivation return keypairs - def can_sign(self, tx) -> bool: - if self.is_watching_only(): + def can_sign(self, tx: 'Transaction', *, ignore_watching_only=False) -> bool: + """Returns whether this keystore could sign *something* in this tx.""" + if not ignore_watching_only and self.is_watching_only(): + return False + if not isinstance(tx, PartialTransaction): return False - return bool(self.get_tx_derivations(tx)) + return bool(self._get_tx_derivations(tx)) def ready_to_sign(self) -> bool: return not self.is_watching_only() @@ -169,7 +172,7 @@ class Software_KeyStore(KeyStore): # Raise if password is not correct. self.check_password(password) # Add private keys - keypairs = self.get_tx_derivations(tx) + keypairs = self._get_tx_derivations(tx) for k, v in keypairs.items(): keypairs[k] = self.get_private_key(v, password) # Sign diff --git a/electrum/plugins/trustedcoin/cmdline.py b/electrum/plugins/trustedcoin/cmdline.py @@ -36,7 +36,7 @@ class Plugin(TrustedCoinPlugin): if not wallet.can_sign_without_server(): self.logger.info("twofactor:sign_tx") auth_code = None - if wallet.keystores['x3/'].get_tx_derivations(tx): + if wallet.keystores['x3/'].can_sign(tx, ignore_watching_only=True): msg = _('Please enter your Google Authenticator code:') auth_code = int(input(msg)) else: diff --git a/electrum/plugins/trustedcoin/qt.py b/electrum/plugins/trustedcoin/qt.py @@ -66,7 +66,7 @@ class HandlerTwoFactor(QObject, Logger): return if wallet.can_sign_without_server(): return - if not wallet.keystores['x3/'].get_tx_derivations(tx): + if not wallet.keystores['x3/'].can_sign(tx, ignore_watching_only=True): self.logger.info("twofactor: xpub3 not needed") return window = self.window.top_level_window() diff --git a/electrum/plugins/trustedcoin/trustedcoin.py b/electrum/plugins/trustedcoin/trustedcoin.py @@ -458,7 +458,7 @@ class TrustedCoinPlugin(BasePlugin): return if wallet.can_sign_without_server(): return - if not wallet.keystores['x3/'].get_tx_derivations(tx): + if not wallet.keystores['x3/'].can_sign(tx, ignore_watching_only=True): self.logger.info("twofactor: xpub3 not needed") return def wrapper(tx):