commit 4836adff84df2e7cadcb76f200095523cc99f15a
parent 401d8bc534cea5838206fea41a4d818f14a0b0e0
Author: ThomasV <thomasv@electrum.org>
Date: Tue, 10 Oct 2017 13:44:25 +0200
add cmdline support for 2fa wallets
Diffstat:
3 files changed, 65 insertions(+), 1 deletion(-)
diff --git a/lib/commands.py b/lib/commands.py
@@ -47,6 +47,7 @@ from .transaction import Transaction
from .import paymentrequest
from .paymentrequest import PR_PAID, PR_UNPAID, PR_UNKNOWN, PR_EXPIRED
from .import contacts
+from .plugins import run_hook
known_commands = {}
@@ -428,6 +429,7 @@ class Commands:
if rbf:
tx.set_rbf(True)
if not unsigned:
+ run_hook('sign_tx', self.wallet, tx)
self.wallet.sign_transaction(tx, password)
return tx
diff --git a/plugins/trustedcoin/__init__.py b/plugins/trustedcoin/__init__.py
@@ -8,4 +8,4 @@ description = ''.join([
])
requires_wallet_type = ['2fa']
registers_wallet_type = '2fa'
-available_for = ['qt']
+available_for = ['qt', 'cmdline']
diff --git a/plugins/trustedcoin/cmdline.py b/plugins/trustedcoin/cmdline.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+#
+# Electrum - Lightweight Bitcoin Client
+# Copyright (C) 2015 Thomas Voegtlin
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+from functools import partial
+from threading import Thread
+import re
+from decimal import Decimal
+
+from PyQt5.QtGui import *
+from PyQt5.QtCore import *
+
+from electrum_gui.qt.util import *
+from electrum_gui.qt.qrcodewidget import QRCodeWidget
+from electrum_gui.qt.amountedit import AmountEdit
+from electrum_gui.qt.main_window import StatusBarButton
+from electrum.i18n import _
+from electrum.plugins import hook
+from .trustedcoin import TrustedCoinPlugin, server
+
+
+class QTOSSignalObject(QObject):
+ two_factor_tos_signal = pyqtSignal()
+
+
+class Plugin(TrustedCoinPlugin):
+
+ @hook
+ def sign_tx(self, wallet, tx):
+ if not isinstance(wallet, self.wallet_class):
+ return
+ if not wallet.can_sign_without_server():
+ self.print_error("twofactor:sign_tx")
+ auth_code = None
+ if wallet.keystores['x3/'].get_tx_derivations(tx):
+ msg = _('Please enter your Google Authenticator code:')
+ auth_code = int(input(msg))
+ else:
+ self.print_error("twofactor: xpub3 not needed")
+ wallet.auth_code = auth_code
+