1
0

qml: add import channel backup

This commit is contained in:
Sander van Grieken
2022-11-16 16:50:23 +01:00
parent 0687785994
commit 495d8d6fae
4 changed files with 168 additions and 1 deletions

View File

@@ -16,6 +16,7 @@ from electrum.transaction import PartialTxOutput
from electrum.util import (parse_max_spend, InvalidPassword, event_listener)
from electrum.plugin import run_hook
from electrum.wallet import Multisig_Wallet
from electrum.crypto import pw_decode_with_version_and_mac
from .auth import AuthMixin, auth_protect
from .qeaddresslistmodel import QEAddressListModel
@@ -65,6 +66,7 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
transactionSigned = pyqtSignal([str], arguments=['txid'])
broadcastSucceeded = pyqtSignal([str], arguments=['txid'])
broadcastFailed = pyqtSignal([str,str,str], arguments=['txid','code','reason'])
importChannelBackupFailed = pyqtSignal([str], arguments=['message'])
labelsUpdated = pyqtSignal()
otpRequested = pyqtSignal()
otpSuccess = pyqtSignal()
@@ -676,3 +678,21 @@ class QEWallet(AuthMixin, QObject, QtEventListener):
def importPrivateKeys(self, keyslist):
self.wallet.import_private_keys(keyslist.split(), self.password)
@pyqtSlot(str)
def importChannelBackup(self, backup_str):
try:
self.wallet.lnworker.import_channel_backup(backup_str)
except Exception as e:
self._logger.debug(f'could not import channel backup: {repr(e)}')
self.importChannelBackupFailed.emit(f'Failed to import backup:\n\n{str(e)}')
@pyqtSlot(str, result=bool)
def isValidChannelBackup(self, backup_str):
try:
assert backup_str.startswith('channel_backup:')
encrypted = backup_str[15:]
xpub = self.wallet.get_fingerprint()
decrypted = pw_decode_with_version_and_mac(encrypted, xpub)
return True
except Exception as e:
return False