electrum

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

commit 4c2113326c6d605e52ff79ac6678c68f6fe22a64
parent 85849fb760e724269dfdca907f3ced99be7f39f5
Author: ThomasV <thomasv@electrum.org>
Date:   Mon, 24 Oct 2016 15:48:00 +0200

Merge pull request #1997 from btchip/hw1-fixes

Fix uninitialized HW.1/Nano and outputs swap with legacy firmware
Diffstat:
Mplugins/ledger/ledger.py | 12+++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/plugins/ledger/ledger.py b/plugins/ledger/ledger.py @@ -114,13 +114,13 @@ class Ledger_Client(): try: firmware = self.dongleObject.getFirmwareVersion()['version'].split(".") if not checkFirmware(firmware): - self.dongleObject.close() + self.dongleObject.dongle.close() raise Exception("HW1 firmware version too old. Please update at https://www.ledgerwallet.com") try: self.dongleObject.getOperationMode() except BTChipException, e: if (e.sw == 0x6985): - self.dongleObject.close() + self.dongleObject.dongle.close() dialog = StartBTChipPersoDialog() dialog.exec_() # Acquire the new client on the next run @@ -260,6 +260,7 @@ class Ledger_KeyStore(Hardware_KeyStore): output = None outputAmount = None p2shTransaction = False + reorganize = False pin = "" self.get_client() # prompt for the PIN before displaying the dialog if necessary @@ -339,6 +340,7 @@ class Ledger_KeyStore(Hardware_KeyStore): if not p2shTransaction: outputData = self.get_client().finalizeInput(output, format_satoshis_plain(outputAmount), format_satoshis_plain(tx.get_fee()), changePath, bytearray(rawTx.decode('hex'))) + reorganize = True else: outputData = self.get_client().finalizeInputFull(txOutput) outputData['outputData'] = txOutput @@ -403,7 +405,11 @@ class Ledger_KeyStore(Hardware_KeyStore): inputIndex = inputIndex + 1 updatedTransaction = format_transaction(transactionOutput, preparedTrustedInputs) updatedTransaction = hexlify(updatedTransaction) - tx.update_signatures(updatedTransaction) + + if reorganize: + tx.update(updatedTransaction) + else: + tx.update_signatures(updatedTransaction) self.signing = False def password_dialog(self, msg=None):