tcommand-line handler for trezor - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 2863d195794f87bf4496451829eb8b24ef19851a DIR parent 557286ff792aa687e0dd08f337a9f31a0ab4f0c5 HTML Author: ThomasV <thomasv@gitorious> Date: Wed, 10 Jun 2015 22:08:19 +0200 command-line handler for trezor Diffstat: M electrum | 5 ++++- M plugins/trezor.py | 21 +++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) --- DIR diff --git a/electrum b/electrum t@@ -73,7 +73,7 @@ from electrum import util from electrum import SimpleConfig, Network, Wallet, WalletStorage, NetworkProxy from electrum.util import print_msg, print_error, print_stderr, print_json, set_verbosity, InvalidPassword from electrum.daemon import get_daemon -from electrum.plugins import init_plugins +from electrum.plugins import init_plugins, run_hook, always_hook from electrum.commands import get_parser, known_commands, Commands, config_variables t@@ -263,6 +263,9 @@ def run_cmdline(config): # create wallet instance wallet = Wallet(storage) if cmd.requires_wallet else None + # notify plugins + always_hook('cmdline_load_wallet', wallet) + # important warning if cmd.name in ['dumpprivkey', 'dumpprivkeys']: print_stderr("WARNING: ALL your private keys are secret.") DIR diff --git a/plugins/trezor.py b/plugins/trezor.py t@@ -93,8 +93,11 @@ class Plugin(BasePlugin): self.wallet = None @hook - def init_cmdline(self): - self.handler = TrezorCmdLineHandler() + def cmdline_load_wallet(self, wallet): + self.wallet = wallet + self.wallet.plugin = self + if self.handler is None: + self.handler = TrezorCmdLineHandler() @hook def load_wallet(self, wallet, window): t@@ -493,12 +496,22 @@ class TrezorGuiMixin(object): class TrezorCmdLineHandler: def get_passphrase(self, msg): + import getpass print_msg(msg) - return raw_input() + return getpass.getpass('') def get_pin(self, msg): + t = { 'a':'7', 'b':'8', 'c':'9', 'd':'4', 'e':'5', 'f':'6', 'g':'1', 'h':'2', 'i':'3'} + print_msg(msg) + print_msg("a b c\nd e f\ng h i\n-----") + o = raw_input() + return ''.join(map(lambda x: t[x], o)) + + def stop(self): + pass + + def show_message(self, msg): print_msg(msg) - return raw_input() class TrezorQtHandler: