Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hw wallet should not be asked for the xpub at m/. BitBox01 (digitalbitbox) stopped working. #5816

Closed
benma opened this issue Dec 2, 2019 · 9 comments

Comments

@benma
Copy link
Contributor

benma commented Dec 2, 2019

Hi

Since bafe8a2#diff-4eaf9a810a587a7d17bc1910a7cf00feR423, a HW wallet is asked for the xpub at "m/". For security reasons, the BitBox01 and BitBox02 (we are preparing a plugin for Electrum) do not support getting the root xpub.

I am unsure about the context of why this was added (#5715 seems related), but is there a way to not require this? In theory, the account-level xpub should be sufficient.

With this commit, the BitBox01 (digitalbitbox) plugin stopped working.

@SomberNight
Copy link
Member

Thanks.
I had noticed the bitbox not revealing xpub for "m/" when working on those changes, and already worked around it in one case, but forgot to test new wallet creation.
Should be fixed now.

@benma
Copy link
Contributor Author

benma commented Dec 2, 2019

Thanks. What is the purpose of this getting m/?

I saw your patch just gets m/0' instead. The BitBox02 restricts getting the xpub only to a small list of supported accounts (specifically only m/49'/0'/n' and m/84'/0'/n' at the moment). Will one of those also do when developing the BitBox02 plugin?

If I understand the purpose better, then we can check which makes most sense (e.g. using one of the above, or adding an api endpoint to give an device identifier, etc.).

@SomberNight
Copy link
Member

What the code is trying to do is get the bip32 root fingerprint, to be able to properly construct PSBTs.
Look at PSBT_IN_BIP32_DERIVATION and PSBT_OUT_BIP32_DERIVATION in the BIP.

To give a concrete example, if you use a Coldcard hw wallet, the device itself gets sent a PSBT, deserialises that, displays confirmation prompt to the user, signs the tx, serialises a new PSBT and sends that back.
As the BitBox has its own custom protocol, and is not just sending a PSBT over the wire, it is arguably redundant to construct the PSBT in this case (but that flow is abstracted away and done in all cases)... I guess we could fill it with some deterministic "garbage", I will think a bit about it.

The BitBox02 restricts getting the xpub only to a small list of supported accounts (specifically only m/49'/0'/n' and m/84'/0'/n' at the moment).

One thing that comes to mind is the custom path Electrum uses for storage encryption:

def get_derivation_used_for_hw_device_encryption():
return ("m"
"/4541509'" # ascii 'ELE' as decimal ("BIP43 purpose")
"/1112098098'") # ascii 'BIE2' as decimal

Please whitelist that if possible.

@SomberNight SomberNight reopened this Dec 2, 2019
@benma
Copy link
Contributor Author

benma commented Dec 2, 2019

Thanks. I am not yet very familiar with PSBT, apoloigies for my uninformed questions. Can't the PSBT root xpub just be the account-level xpub, and the input/output derivation paths be two levels (m/<receive|change>/<address index>)? The BIP does not seem to specify what the root xpub and input derivation paths/depths should be.

Edit:

PSBT_GLOBAL_XPUB

It should be the public key at the highest hardened derivation index so that the unhardened child keys used in the transaction can be derived.

So if the xpub is retrieved with m/, the hardened child keys can't be derived. I guess I need to dig into PSBT in more detail, I am quite confused ;)

@SomberNight
Copy link
Member

Yes I agree this part of bip174 is quite unclear. Relevant discussion: #5672 (comment)

@benma
Copy link
Contributor Author

benma commented Dec 3, 2019

I think I got the reasoning now. I will think about if we should add a 'get root xfp' api endpoint in the BitBox02.

@benma
Copy link
Contributor Author

benma commented Dec 3, 2019

I think it would make more sense to use the account xpub (e.g. m/84'/0'/<n>, etc.) instead of m/1', then co-signers can also verify the change output of the cosigner (see here). I suspect that with m/1' or similar, the change output detection might not be working properly with e.g. ColdCard unless the right derivation and xpub are used.

Outside of Electrum, using the the root xfp makes sense to identify which xpub (if any) is yours, alongside the derivation path from root to derive the key.

Inside Electrum, it should be sufficient to use the account-level xpub and fingerprint in the global xpub field (no keypath, zero depth), at least in the BitBox01. Since the account in Electrum already knows which hardware wallet / keystore it is, what the xpub is and what the derivation path is, identification of the signer in PSBT is solved.

In the BitBox02, I will probably add the root fingerprint; then the BitBox02 could sign PSBT's without Electrum, e.g. air-gapped or with other wallets.

@SomberNight
Copy link
Member

SomberNight commented Dec 3, 2019

I think it would make more sense to use the account xpub (e.g. m/84'/0'/, etc.) instead of m/1', then co-signers can also verify the change output of the cosigner (see here). I suspect that with m/1' or similar, the change output detection might not be working properly with e.g. ColdCard unless the right derivation and xpub are used.

There are multiple ways to do change output detection. One way is described in the BIP here.

As per the discussion I linked in my previous comment, if you put a PSBT_GLOBAL_XPUB key, the path given as a value should be a prefix of the corresponding paths given for the PSBT_IN_BIP32_DERIVATION and PSBT_OUT_BIP32_DERIVATION keys re inputs and outputs.
Note that the PSBT_GLOBAL_XPUB field is optional in general.

i.e. the suggested way of doing things is that you put an account xpub as PSBT_GLOBAL_XPUB, for fingerprint you give the root fp and for path the path from the root to the account xpub ("derivation prefix"). For PSBT_IN_BIP32_DERIVATION and PSBT_OUT_BIP32_DERIVATION keys, for fingerprint you give the root fp, and for path you give the full path to that bip32 node from the root.
This way, pubkeys can be derived from the account xpubs, as the derivation suffix is non-hardened.
Further, cosigners can figure out which pubkey is derived from which account xpub by matching root fingerprints between fp in PSBT_IN_BIP32_DERIVATION and fp in PSBT_GLOBAL_XPUB.

It is important to distinguish between hardware wallets according to whether they have state or not (besides seed). A Trezor for example is stateless, all the information must be contained within the PSBT. The Coldcard can be used both in a stateless and in a stateful way. Specifically, you can setup a multisig wallet on a Coldcard by importing a txt file detailing xpubs and fingerprints and derivations and script types of cosigners, before and independent of any PSBT.

Again, for a stateless hww, all info must be in the PSBT. When signing for multisig inputs and with multisig change outputs, the PSBT_GLOBAL_XPUB fields are needed for change detection. The derivation prefix and the root fingerprint are not needed; as you said they could be left empty. However, note that PSBT_IN_BIP32_DERIVATION and PSBT_OUT_BIP32_DERIVATION fields are in fact needed, as otherwise the hww could not figure out which key to sign with. Note that the hw wallet will require full paths, not just derivation suffixes, to make this inference. Further, as above in the linked discussion, the paths for a PSBT_GLOBAL_XPUB key must be a prefix of the paths given for corresponding PSBT_IN_BIP32_DERIVATION and PSBT_OUT_BIP32_DERIVATION keys. So as you need full paths for the latter, you will need to put the true derivation prefix and root fp for PSBT_GLOBAL_XPUB as well (or not include PSBT_GLOBAL_XPUB).

Outside of Electrum, using the the root xfp makes sense to identify which xpub (if any) is yours, alongside the derivation path from root to derive the key.

Inside Electrum, it should be sufficient to use the account-level xpub and fingerprint in the global xpub field (no keypath, zero depth), at least in the BitBox01. Since the account in Electrum already knows which hardware wallet / keystore it is, what the xpub is and what the derivation path is, identification of the signer in PSBT is solved.

Electrum does not even need the PSBT_GLOBAL_XPUB field at all, as it has state: it already has the xpubs. Furthermore, re PSBT_IN_BIP32_DERIVATION and PSBT_OUT_BIP32_DERIVATION, Electrum handles both just the derivation prefix or the full derivation path (irrespective of what is in the PSBT_GLOBAL_XPUB fields). This goes beyond what the standard specifies, again, as per linked discussion. Rather, the question is how to export PSBTs; as others might not go beyond what the standard specifies.

Currently, Electrum populates PSBT_GLOBAL_XPUB fields just before signing and remove them just after signing (so they are not present in the common export flow). In the case of hw wallets, this would be the scenario when the python process communicates with them via hidapi or libusb. This way, the signer can use them if they want; but if e.g. the user just exports a tx it would not contain an xpub, greatly improving privacy (compared to legacy electrum partial txns).

Re exports themselves, there are currently three types of exports:
tx_dialog_export
So, 3 types of exports (x3 mediums):

  • main/common type is "for-signing": include everything we know, except global xpubs and derivation prefixes (so this is reasonably privacy-friendly)
  • "for coinjoin": strip all globals, all output info, and bip32 paths re inputs
  • "for coldcard": include everything we know, including global xpubs and full derivation paths

Further, consider the following example setup:
User has Electrum on online machine. This machine only has account xpub, does not even have derivation prefix.
User has Electrum on offline machine.
User has hw wallet device connected to offline machine.
User prepares PSBT on online machine, transfers it to offline machine. Offline Electrum can now populate global xpub fields; and add derivation prefixes and root fingerprints wherever needed, or other such missing data in general, before communication flow with hw device.
Hw device can now sign. Electrum on offline machine can even remove some privacy critical data if desired.
User can now transfer PSBT to online machine and broadcast there.

The offline Electrum in this scenario functions as an "Updater" in BIP174 terminology (a second updater; as the online Electrum was also an updater in addition to being the "Creator" as well).

Point in the scenario being, if you are cosigning, some design decisions re what to put into PSBT at what point might mean that you require cosigners to run their own Updater on the PSBT before they can sign (as opposed to the Creator's Updater filling in all details). This limits some sdcard usecases.

Sorry for the wall of text, this ended up being quite long :)

roth-a pushed a commit to roth-a/electrum that referenced this issue Feb 1, 2020
commit d93d16eb6a9677aea24feb8ce53a6605d2857a07
Author: Alexander Roth <[email protected]>
Date:   Sun Jan 26 21:09:43 2020 +0100

    Fixed typo

commit a8de0a12d4b10ea71692d020038523212b63df1c
Author: Alexander Roth <[email protected]>
Date:   Sun Jan 26 21:07:57 2020 +0100

    Code cleanup spaces

commit f027b646563f0ecd61c1b9d658be28edb10bf893
Author: Alexander Roth <[email protected]>
Date:   Sun Jan 26 21:06:41 2020 +0100

    Code cleanup spaces

commit a586fe25ce5e44f85606da556a3d1061769e5c3f
Author: Alexander Roth <[email protected]>
Date:   Sun Jan 26 21:03:45 2020 +0100

    Undo the Readme change

commit 8635f8dca8e8c586600400a129046a5c0eee246f
Author: Alexander Roth <[email protected]>
Date:   Sun Jan 26 20:55:45 2020 +0100

    Added coloring to the AddressPopup dialog:

    - Moved the coloring logic (address_colors) from tx_dialog.py to a new file electrum/gui/kivy/util.py
    - Added background_color to <RefLabel> in main.kv
    - Calling address_colors in the initialization of AddressPopup and setting the foreground and background color

commit e2871542b97e5f1124df5e41e3db4bb9496e880c
Merge: 206d947df 11452722a
Author: roth <[email protected]>
Date:   Sun Jan 26 15:28:33 2020 +0100

    Merge pull request #1 from spesmilo/master

    bringing the fork master up-to-date

commit 11452722aff3877b7033c2e873f73e906a110a78
Author: SomberNight <[email protected]>
Date:   Wed Jan 1 07:21:08 2020 +0100

    network dns hacks: split from network.py into its own file

commit cb88a3b6e45e1261d4926d6d385f8f779a84a2d9
Author: SomberNight <[email protected]>
Date:   Wed Jan 1 07:00:16 2020 +0100

    dns hacks on windows: resolve A and AAAA records in parallel

commit a5cd34dc089698ace69d43b3c3f54ffa0f70e18d
Author: SomberNight <[email protected]>
Date:   Wed Jan 22 18:26:29 2020 +0100

    follow-up prev (oops, only committed part of the changes)

commit d3385e49bb29a169ebf704365ddf723a819ce0ce
Author: Axel Gembe <[email protected]>
Date:   Wed Jan 22 18:16:53 2020 +0100

    Build: Install libxkbcommon-x11 in AppImage

    Newer distributions do not install libxkbcommon-x11 by default
    anymore and Qt depends on it.

    -----

    taken from https://github.com/Electron-Cash/Electron-Cash/commit/ca3e4501cdc42332f4d7079ef9392c529c9d97b8

commit b560bc92cc86adc716766ca7bbaf7e8aa256fb7b
Author: SomberNight <[email protected]>
Date:   Wed Jan 22 16:28:51 2020 +0100

    windows build: maybe fix reproducibility (jsonschema-*.dist-info)

commit 4406eebbfef0ccd0a748b4bf4bf190f3c612a6a0
Author: Axel Gembe <[email protected]>
Date:   Wed Jan 22 12:27:17 2020 +0100

    Build: Uninstall Cython from AppImage

    Cython is not needed at runtime.

    -----

    taken from https://github.com/Electron-Cash/Electron-Cash/commit/c64910055dad6bdcbd01b01121352d2fa3fedb40

    related #5859

commit 80025a3af4fa6e456aeac089d41ff4530755b818
Author: SomberNight <[email protected]>
Date:   Wed Jan 22 12:08:30 2020 +0100

    requirements-hw: re-add Cython

    this reverts ec496a8222938a070fd864571b9d97b4af6f42fc
    Cython must be pinned down for reproducible builds
    related #5859

commit c7a21220d5d49375e448f21a5a8baf84f9494107
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 20:21:14 2020 +0100

    mac build: bump pyinstaller version

commit 0edd291efe7de25a8b28db5dabdfd2ac9885cd8f
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 20:20:40 2020 +0100

    mac build: bump python version (3.6.4->3.7.6)

commit a041a0c0755159a7dfe0fd9ca6f30fe50545c8ff
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 16:50:45 2020 +0100

    wallet: log when saving already paid invoice

    (maybe it should not be allowed?)

commit 34612c671e0c37418c0aab02dbeb90402b195193
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 15:39:34 2020 +0100

    fix incorrect type hint

commit 2880c26d871aefce87a63d89fd156a8d793280ce
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 15:12:25 2020 +0100

    qt broadcast tx: don't complain about being "offline" for partial tx

commit cb41a0fe89fd96c5ad28fd65377831edb2566bdc
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 14:32:18 2020 +0100

    qt send tab paytoedit: use monospace font

commit 2e654c94409435a18439eb7c851433cee2ed87ae
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 14:22:25 2020 +0100

    qt main_window: trivial clean-up re is_onchain

commit e9645db1829a653b9605e205b2f232be545f41b7
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 14:16:23 2020 +0100

    qt send tab: show "Pay" button even in watch-only wallets

commit 5fd790dec9a82998153d72e7a4299c36e306c1b0
Author: SomberNight <[email protected]>
Date:   Tue Jan 21 11:51:02 2020 +0100

    follow-up prev

    These lists are only visible when non-empty. This interacts badly with
    the internals of maybe_defer_update().

commit 1d0fc6665bbd4d2310c20d54e0c8d9fd224c4ca8
Author: SomberNight <[email protected]>
Date:   Sun Jan 19 07:31:50 2020 +0100

    qt: defer refreshing tabs until they are visible

    very loosely based on Electron-Cash/Electron-Cash@522e7ca59e5d31f10473064f2149b6c6f9049649

commit 356a0a2865a4ee319e7cc03dabd0ffd1c34e3077
Author: SomberNight <[email protected]>
Date:   Sun Jan 19 07:02:48 2020 +0100

    qt: clean-up in some MyTreeView children (mv code from update to init)

commit 18c64515188494f05e517a099a7356d378a14bda
Author: SomberNight <[email protected]>
Date:   Sun Jan 19 05:49:12 2020 +0100

    json_db: only deserialize transactions on-demand

commit 0fdbf49f089251ef15b0da18ba6522dfbc02ee74
Author: SomberNight <[email protected]>
Date:   Sat Jan 18 05:52:46 2020 +0100

    tests: also run unit tests with python 3.8 on Travis

commit 6d270364c66786a3be1d8a783db254f448ef054d
Author: SomberNight <[email protected]>
Date:   Sat Jan 18 04:12:45 2020 +0100

    qt paytoedit: properly handle multiple max ('!') outputs

commit 5cfafff55d16cef64a1487c6b3ad6b6eadcd6ac7
Author: SomberNight <[email protected]>
Date:   Sat Jan 18 03:58:15 2020 +0100

    qt main_window: rm require_fee_update (dead code)

commit b16164da4f5c3fc9717073c7bda8e9618c29c5f2
Author: SomberNight <[email protected]>
Date:   Sat Jan 18 03:55:07 2020 +0100

    qt paytoedit: fixes for pay-to-many (when including "!")

commit 3658f870359b54e178d3e9bb9a6e5f15244c7232
Author: rbrooklyn <[email protected]>
Date:   Fri Jan 17 22:06:34 2020 +0000

    Add block explorer support for mynode.local (#5892)

commit 1c4728ecc6a8f8d96c40a1130f3e62e245a0c33c
Author: SomberNight <[email protected]>
Date:   Thu Jan 16 19:12:24 2020 +0100

    appimage binary: bump python version (3.6.8->3.7.6)

commit e65ce96f9d9080fcb46fedf3400007a6cd73abfc
Author: SomberNight <[email protected]>
Date:   Sun Jan 12 04:29:39 2020 +0100

    interface: better error msg for main server re SSL cert issues

    (logger.warning is shown even without -v, if there is a terminal)

    closes #5884

commit a6dd17bfef29bd7b713af4e74063b666c29dfe8d
Author: SomberNight <[email protected]>
Date:   Sat Jan 11 00:04:00 2020 +0100

    fix daemon (don't close instantly)

    follow-up 37747d74695daf000ffb0db9626191193a6b0555

commit 4fd2745332c0c3a9731e27c5cad707c20182f817
Author: SomberNight <[email protected]>
Date:   Fri Jan 10 23:27:34 2020 +0100

    windows binaries: update nsis

commit bab9f687366d9f0ae5decc123e18862ff6f264a9
Author: SomberNight <[email protected]>
Date:   Fri Jan 10 23:26:47 2020 +0100

    windows binaries: update wine

commit 547906d1c0d4a9538c381e6d8fa2e9b17c21e02f
Author: SomberNight <[email protected]>
Date:   Fri Jan 10 20:37:43 2020 +0100

    windows binaries: update pyinstaller to 3.6

commit bc77091539b799cd6dbc86f25ec15f75970ac70a
Author: SomberNight <[email protected]>
Date:   Fri Jan 10 19:04:16 2020 +0100

    requirements: rm pycryptodomex from "binary"-specific list

    it's already listed now in the "core" requirements.txt file

commit 7c090f92ce206891999420a9c7b119491b9ce783
Author: SomberNight <[email protected]>
Date:   Fri Jan 10 19:01:32 2020 +0100

    binaries: use "--no-dependencies" option for pip install

    All (incl indirect) dependencies are already listed in deterministic-build/requirements*.txt.
    This option makes it easier to manually rm a dependency from that list for e.g. testing.

commit 0b0139c676d158039e7ff2b24d674eb422b06a27
Author: SomberNight <[email protected]>
Date:   Thu Jan 9 19:22:58 2020 +0100

    network.get_transaction: move some response validation logic from Synchronizer

commit 94888739d346f970b735daa69f4bb0cec2f73a3b
Author: SomberNight <[email protected]>
Date:   Thu Jan 9 18:21:48 2020 +0100

    try to fix "--offline" mode

commit 37747d74695daf000ffb0db9626191193a6b0555
Author: SomberNight <[email protected]>
Date:   Thu Jan 9 17:50:05 2020 +0100

    split network main_taskgroup: create daemon.taskgroup

    network.main_taskgroup restarts every time the proxy settings are changed,
    many long-running tasks (some introduced with lightning) are not prepared for and do not want this.

commit 796853106537e7909729172a1315935028e6765c
Author: Nelson Perez <[email protected]>
Date:   Wed Jan 8 20:14:18 2020 -0500

    Restoring old behavior of the outpoint copy to clipboard feature (#5879)

    * Restoring old behavior of the outpoint copy to clipboard feature

    * Small code style adjustments

commit b14747ecfe9d6df695ff30021a2cf997307b3961
Author: SomberNight <[email protected]>
Date:   Wed Jan 8 20:06:31 2020 +0100

    ecc.ECPubkey: add custom __deepcopy__ implementation

    With python-ecdsa 0.15, copy.deepcopy(ecdsa.ecdsa.Public_key) started to raise.
    This fixes the Travis test failures.

    Also rm unused ECPrivkey._privkey attribute.

commit 29cf01524a286b3a6c884a6a05df12a8b759c12f
Author: SomberNight <[email protected]>
Date:   Tue Jan 7 17:59:17 2020 +0100

    qt CPFP: handle empty fee field

    fixes #5875

commit 1059191ebcb6be917d38ab99187f6658007d9c4e
Author: SomberNight <[email protected]>
Date:   Tue Jan 7 16:53:37 2020 +0100

    qt installwizard: fix empty filename crash

    Traceback (most recent call last):
      File "...\electrum\electrum\gui\qt\installwizard.py", line 256, in on_filename
        widget_create_new.setVisible(temp_storage and temp_storage.file_exists())
    TypeError: setVisible(self, bool): argument 1 has unexpected type 'NoneType'

commit d2f132738a2a13d896b11ca984d94930cc1c9aad
Author: SomberNight <[email protected]>
Date:   Thu Jan 2 00:43:49 2020 +0100

    wallet: only select mature coins by default

    this is a regression from #5721

    Removed the `TxInput.is_coinbase` method as I think it is a confusing API,
    instead we now have `TxInput.is_coinbase_input` and `TxInput.is_coinbase_output`.

    related #5872

commit 6709ec41174300093a5782debe2787f005bd9b07
Author: SomberNight <[email protected]>
Date:   Wed Jan 1 06:23:51 2020 +0100

    dns hacks on windows: cache dns when using dnspython

    related #4421
    related #5337

commit 2d57a689d9bcf36799e1bfb9aa21bcd6a6d048a1
Author: SomberNight <[email protected]>
Date:   Wed Jan 1 06:21:20 2020 +0100

    network/util: increase default timeout of make_aiohttp_session (30->45s)

    related: #5337

commit 96fa03c11bdc80c7a3313607ab4131fc387f343e
Author: SomberNight <[email protected]>
Date:   Tue Dec 31 03:37:50 2019 +0100

    fix paying bip70 payment request with Kivy GUI

commit 1d0aa4042a74136e85929edbfe683432ef00591d
Author: SomberNight <[email protected]>
Date:   Tue Dec 31 03:08:47 2019 +0100

    fix paying bip70 payment request with Qt GUI

commit 787ac5fe994086b994524201fec4b63f876c7c85
Author: SomberNight <[email protected]>
Date:   Fri Dec 27 17:43:12 2019 +0100

    interface: make changing max incoming msg size (1 MB) easier

commit c19f9ee755b46701eb07d80370effffebbd67394
Merge: b3c0231b2 967f4d723
Author: ghost43 <[email protected]>
Date:   Thu Dec 26 17:14:36 2019 +0000

    Merge pull request #5865 from shyrwall/master

    Remove phishing server icarus.tetradrachm.net

commit 967f4d7236553e3baf4dea4e0e6145c98b5821a6
Author: Sebastian Hyrwall <[email protected]>
Date:   Thu Dec 26 23:47:32 2019 +0700

    Remove phishing server

commit b3c0231b2b32b27cd4dbb417d0e400f0a72aac4b
Author: SomberNight <[email protected]>
Date:   Tue Dec 24 03:30:26 2019 +0100

    appimage build: add notes re investigating reproducibility failure

commit 5f4162deaa20c5415ebee3844a28575c08275a21
Author: SomberNight <[email protected]>
Date:   Sat Dec 21 07:33:36 2019 +0100

    requirements: bump min python-keepkey to 6.3.1

    as 6.3.0 had basic functionality (restore from seed) broken
    see https://github.com/keepkey/python-keepkey/pull/85

commit ad5c6284c41247527d43fa10626493ca75f15d53
Author: SomberNight <[email protected]>
Date:   Sat Dec 21 07:00:30 2019 +0100

    commands/jsonrpc: fix specifying "wallet" to commands that need it

commit 2ca535225d633b548111509db5bd5191819d8fe1
Author: SomberNight <[email protected]>
Date:   Sat Dec 21 06:53:10 2019 +0100

    util.standardize_path: properly handle "~" (user's home directory)

    notably this is needed when the shell itself does not get a chance to expand "~",
    e.g. when a path is passed via JSON-RPC

    >>> os.path.normcase(os.path.realpath(os.path.abspath("~/.electrum/testnet/wallets/delete_me2")))
    '/home/user/wspace/electrum/~/.electrum/testnet/wallets/delete_me2'
    >>> os.path.normcase(os.path.realpath(os.path.abspath(os.path.expanduser("~/.electrum/testnet/wallets/delete_me2"))))
    '/home/user/.electrum/testnet/wallets/delete_me2'

commit 3716594331b575d6346b466d23bdcdbc573483a0
Merge: ace61d2d2 c8d707575
Author: ghost43 <[email protected]>
Date:   Fri Dec 20 00:51:19 2019 +0000

    Merge pull request #5460 from SomberNight/keepkey_enum_20190626

    keepkey: use libusb to enumerate devices instead of hid

commit c8d7075758ff346d2f5059b2a6fc348587b31831
Author: SomberNight <[email protected]>
Date:   Fri Dec 20 01:49:56 2019 +0100

    requirements: bump min python-keepkey to 6.3.0

commit a8e81c0bd2988ba8921d39b023b0bff115510dd0
Author: SomberNight <[email protected]>
Date:   Wed Jun 26 20:14:50 2019 +0200

    keepkey: use libusb to enumerate devices instead of hid

commit ace61d2d20f07db743eb716e71021cb8aacf70e0
Merge: 9b28f6df7 18209fc78
Author: ghost43 <[email protected]>
Date:   Thu Dec 19 15:54:41 2019 +0000

    Merge pull request #5692 from matejcik/trezor-shamir

    Trezor: support for Shamir backup and recovery

commit 18209fc782c08bb4b41d878d8fdedce86d9fa309
Author: SomberNight <[email protected]>
Date:   Thu Dec 19 16:50:35 2019 +0100

    trezor: when restoring, hide Shamir options by default

    They become visible once user clicks "Show expert settings"

commit 9b28f6df7beab821422537f816cbacbe6035f706
Author: SomberNight <[email protected]>
Date:   Thu Dec 19 14:22:47 2019 +0100

    wallet: encrypt storage by default

    notably, now also in kivy

commit 9834d6cd94788fe41bc2b8e87e7642bd918e030a
Author: SomberNight <[email protected]>
Date:   Wed Dec 18 18:23:00 2019 +0100

    windows binaries: skip building libusb if already done

commit eca769c4ca71c5e950b91f9b7678e6acc1b69d49
Author: SomberNight <[email protected]>
Date:   Wed Dec 18 17:32:02 2019 +0100

    windows binaries: build libusb ourselves

    Latest libusb does not have official binaries, and it contains some bugfixes we want.

    related: #5460

    based on EchterAgo's work in https://github.com/Electron-Cash/Electron-Cash/commit/ee4bdaf9c0ff304c736f0ae991d3693980311d5f

commit 006c6c1a58557f0aa217b9afd68f22dac917e3ca
Author: matejcik <[email protected]>
Date:   Wed Dec 18 12:35:35 2019 +0100

    trezor: use BIP39 backup by default even if Shamir is available

commit da41e4c289cc96349fbf772b9138f12f6efea44e
Author: matejcik <[email protected]>
Date:   Thu Oct 10 17:36:36 2019 +0200

    trezor: bump library requirement

commit 3fc70bd97ab6355f07118db5a5fe1ad89682bb13
Author: matejcik <[email protected]>
Date:   Thu Oct 10 17:31:12 2019 +0200

    trezor: implement support for Shamir recovery

commit f4e278178693e66c5569f2d4963edd3841e3e8f6
Author: matejcik <[email protected]>
Date:   Thu Oct 10 17:31:04 2019 +0200

    trezor: link button messages to enum names

commit 79681c90e024d5a714861886a4bd56ac308878ee
Author: SomberNight <[email protected]>
Date:   Tue Dec 17 22:12:51 2019 +0100

    wallet._is_onchain_invoice_paid: support "zero amount" invoice

commit 880bd168835a703832dccb368099ec3cd2bdbb63
Author: Axel Gembe <[email protected]>
Date:   Tue Dec 17 21:41:17 2019 +0100

    AppImage: Improve binary stripping

    Slightly reduces file size, improves build speed and makes build more
    reproducible.

    The .comment section contained GCC version information which could cause
    different build output from just a minor update in GCC. The information is not
    needed so we strip this.

    The strip command was invoked using xargs, spawning a new process for each file.
    This is inefficient as xargs can correctly run the strip command with multiple
    file names.

    -----

    taken from https://github.com/Electron-Cash/Electron-Cash/commit/43aaf9572f822b977ecffe68f9cce428e5d27c18

commit 33facd151d662fbc9afb62e09867bbf7e7b26325
Author: SomberNight <[email protected]>
Date:   Tue Dec 17 21:33:07 2019 +0100

    ledger.sign_transaction: always do certain output checks

commit ee63e84bcfbc8d5861521367ca0b44c3aa411871
Author: SomberNight <[email protected]>
Date:   Tue Dec 17 21:19:57 2019 +0100

    ledger: faster sign_transaction startup

    Only call Ledger_KeyStore.get_client_electrum() once,
    as it runs DeviceMgr.scan_devices(), which is slow.

commit 6b8c447eb90a0a37f7271681e98f319c8178592a
Author: SomberNight <[email protected]>
Date:   Tue Dec 17 21:10:14 2019 +0100

    ledger: support sending to OP_RETURN outputs

    closes #5849

    based on:
    https://github.com/Electron-Cash/Electron-Cash/commit/ca9b432ff016f734318b13c719370c22e1c28b98
    https://github.com/Electron-Cash/Electron-Cash/commit/7bb27eff849e135af486e7611483a54005c797c8

commit 02baae10d75f5ea95eb3096b17556a2d371f0113
Author: SomberNight <[email protected]>
Date:   Tue Dec 17 18:39:52 2019 +0100

    kivy: implement opening storage-encrypted wallet files

commit 72491bdf1808e21b7ed24f3bbdad8e8df9325307
Author: SomberNight <[email protected]>
Date:   Mon Dec 16 21:15:20 2019 +0100

    synchronizer: request tx from server if we only have partial local tx

    Note that there is a slight distinction between
    `not tx.is_complete()` and `isinstance(tx, PartialTransaction)`,
    which is that technically you can have a PSBT that is already complete
    but was not yet converted to a standard bitcoin tx.

commit 7b49832a3f4f187e4718cc9d3e649c4453b7548f
Author: SomberNight <[email protected]>
Date:   Mon Dec 16 21:03:34 2019 +0100

    payment requests: fix explicit "None" expiration

    Traceback (most recent call last):
      File "...\electrum\electrum\gui\qt\main_window.py", line 994, in <lambda>
        self.create_invoice_button.clicked.connect(lambda: self.create_invoice(False))
      File "...\electrum\electrum\gui\qt\main_window.py", line 1123, in create_invoice
        key = self.create_bitcoin_request(amount, message, expiry)
      File "...\electrum\electrum\gui\qt\main_window.py", line 1132, in create_bitcoin_request
        addr = self.wallet.get_unused_address()
      File "...\electrum\electrum\wallet.py", line 1452, in wrapper
        addr = func(self, *args, **kwargs)
      File "...\electrum\electrum\wallet.py", line 1465, in get_unused_address
        addrs = self.get_unused_addresses()
      File "...\electrum\electrum\wallet.py", line 1459, in get_unused_addresses
        in_use_by_request = [k for k in self.receive_requests.keys() if self.get_request_status(k)[0] != PR_EXPIRED]
      File "...\electrum\electrum\wallet.py", line 1459, in <listcomp>
        in_use_by_request = [k for k in self.receive_requests.keys() if self.get_request_status(k)[0] != PR_EXPIRED]
      File "...\electrum\electrum\wallet.py", line 1535, in get_request_status
        if exp > 0 and time.time() > timestamp + exp:
    TypeError: '>' not supported between instances of 'NoneType' and 'int'

commit 01fc0484841fc8ced7e96798d5f4ca794b37cd41
Author: SomberNight <[email protected]>
Date:   Sun Dec 15 20:12:51 2019 +0100

    CLI: properly auto-upgrade storage when needed even if storage-encrypted

    previously commands would error if user had an encrypted storage that needed upgrading

commit 2c6a1f55fb5bef6e29415aac310f905dae522801
Merge: 61fc00fb9 5c9bd2d2b
Author: ThomasV <[email protected]>
Date:   Sun Dec 15 16:40:46 2019 +0100

    Merge pull request #5825 from SomberNight/201912_local_tx_can_be_partial

    wallet: allow saving partial tx as local (if it has a txid)

commit 61fc00fb9ec18faf6039f9da374722e1d4f487aa
Merge: 34d652b0f 93cee1ba4
Author: ThomasV <[email protected]>
Date:   Sat Dec 14 10:51:13 2019 +0100

    Merge pull request #5840 from SomberNight/201912_py38_win_dlls_source

    windows: when running from source, with py3.8+, load DLLs from '.dlls'

commit 93cee1ba4d19397fab62a88a8072d33805800c00
Author: SomberNight <[email protected]>
Date:   Sat Dec 14 06:44:17 2019 +0100

    windows: when running from source, with py3.8+, load DLLs from '.dlls'

    Python 3.8 changed where DLLs are searched for.
    see https://docs.python.org/3/whatsnew/3.8.html#bpo-36085-whatsnew
    This potentially affect our binaries when we start shipping python 3.8+, however that is not being addressed here. This commit simply addresses the usecase of running from source, on Windows, using python 3.8.

    On older Python, a user could build/obtain DLLs and place them anywhere on the system %PATH%, however this no longer works with py3.8, as %PATH% is no longer checked.
    With py3.8, instead, we now check if there is a folder named '.dlls' in the top-level project directory, and if so, register that as an additional search path.
    A user who wants to run Electrum from source on Windows using python 3.8 or later, with their custom DLLs, should manually create the '.dlls' folder and put their DLLs there. If they also want to switch between e.g. python 3.7 and 3.8, they should also include '.dlls' in the system %PATH%.

    When using Electrum, interesting DLLs include at least libsecp256k1.dll, libusb-1.0.dll, libzbar-0.dll.

commit 34d652b0f6445bde32a9f963f7f323476fd5630d
Author: ThomasV <[email protected]>
Date:   Fri Dec 13 11:09:18 2019 +0100

    follow-up previous commit

commit 11f1541cdd6ba56388b97b5cc23d589fc9a687bc
Author: ThomasV <[email protected]>
Date:   Fri Dec 13 11:08:25 2019 +0100

    lnworker: save timestamp regardless of channel state

commit 206d947dfddf5c17964c696d38501edf803363a6
Merge: 8f1cd8b7b 3a2fe8067
Author: Alexander Roth <[email protected]>
Date:   Fri Dec 13 10:17:22 2019 +0100

    Merge remote-tracking branch 'upstream/master'

commit 3a2fe806759d1a476a94a8167f4226e3d017ba28
Author: SomberNight <[email protected]>
Date:   Thu Dec 12 21:39:46 2019 +0100

    qt: also use BlockWaitingDialog in PreviewTxDialog

    as when 'advanced_preview' is set, ConfirmTxDialog is skipped

    follow-up 1088cf444497b2548ba69aaaf755da6b83a477a8

commit dbd1c8cf71877dbca03501c07848655fdcf1a5bf
Author: SomberNight <[email protected]>
Date:   Thu Dec 12 21:31:30 2019 +0100

    qt TxDialog: visibility of widgets should be set after parenting

    widget.show() and widget.setVisible(True) results in a blink of an ephemeral window containing the widget;
    that is, unless the widget has a parent explicitly set or it can be determined via which layout the widget is placed in.

commit c9ede074629a4bbb02f94522a32469d5a5eaeadb
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 01:44:21 2019 +0100

    wizard: (qt) add dedicated button to create new wallet

commit 7324817ff3915012b4f978d8b629657c382d7f70
Merge: 308517d47 1088cf444
Author: ThomasV <[email protected]>
Date:   Thu Dec 12 17:53:03 2019 +0100

    Merge pull request #5833 from SomberNight/201912_qt_blocking_waiting_dialog

    Qt: introduce BlockingWaitingDialog

commit 308517d473d18fdc5a377e7296e0e6ab3f6c92b8
Author: SomberNight <[email protected]>
Date:   Wed Dec 11 23:07:47 2019 +0100

    python 3.8: adapt to breaking changes re asyncio.CancelledError

    (and TimeoutError)

    closes #5798

commit fa9b997c70586b2ddcd44b996ec04e35820f5653
Merge: 255bf7caf 252f0960f
Author: ThomasV <[email protected]>
Date:   Wed Dec 11 09:14:36 2019 +0100

    Merge pull request #5834 from Electronic-Gulden-Foundation/fix/aiohttp

    Aiohttp must be lower than 4.0.0

commit 255bf7caf43a9090e7bfe5125bd7959c72419274
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 23:54:45 2019 +0100

    build: update some packages in dockerfiles

    Ubuntu no longer serves old version

commit a5a7c205e36263dca75a182e2549fedcca8b7896
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 23:31:58 2019 +0100

    trivial: add a few log lines for startup

commit d08ed6410a49302151ed4122fd4a5047595dc9eb
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 23:01:01 2019 +0100

    python3.8: fix DeprecationWarning in qt/paytoedit

    .../electrum/electrum/gui/qt/paytoedit.py:221: DeprecationWarning: an integer is required (got type float).  Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
      self.setMinimumHeight(h)

commit 9d0ae2f95b0040312ffe5430a59c7ddbaf8e27d3
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 22:55:11 2019 +0100

    adapt to aiohttp 4.0

    related: #5753

commit 252f0960fc4a3914ce8961607f7bc637899a4efc
Author: Dennis Ruhe <[email protected]>
Date:   Tue Dec 10 22:03:17 2019 +0100

    Aiohttp must be lower than 4.0.0

commit fcd9752f190d02a04f31137a5910988de2405e68
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 20:41:47 2019 +0100

    keystore: change derive_pubkey API to return bytes

commit ea62027599d6efaf6ac6fe3b963e04a833a9950b
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 20:08:41 2019 +0100

    wallet: faster decrypt_message for Imported_Wallet

commit 869a72831781002546758e906da1c157d967186b
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 19:34:44 2019 +0100

    wallet: use abstract base classes

commit f08796fe68955e7d2c6381b30a64873e74a3f464
Author: ThomasV <[email protected]>
Date:   Tue Dec 10 14:45:29 2019 +0100

    Allow requests that never expire

commit 1088cf444497b2548ba69aaaf755da6b83a477a8
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 03:34:41 2019 +0100

    qt: introduce BlockingWaitingDialog

    A variant of WaitingDialog that runs the task in the GUI thread,
    blocking the GUI. It is probably a code smell to actually use this,
    as operations should not block the GUI... still it provides a middle-ground
    between blocking the GUI without giving user-feedback and having to refactor
    existing code (to avoid blocking).

commit daef1a8359cc16acd34c8faad7bd91a1061b5b6a
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 03:19:56 2019 +0100

    lnworker: don't log InvoiceError

    lnworker._pay does not need log_exceptions decorator,
    as we properly await the coroutine

commit b99add59c336ef039ae4905287cedc9bf8ef8733
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 03:17:57 2019 +0100

    lnworker: introduce PaymentAttemptLog NamedTuple

commit 24ebc77d76cb342502a8443c4edc2a1feff8f067
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 01:14:38 2019 +0100

    ln chan verifier: fix code rot

commit 0ab88b821c702b6a424bae8508ce1a9e30b7fa59
Author: SomberNight <[email protected]>
Date:   Tue Dec 10 00:31:01 2019 +0100

    keystore: use abstract base classes, introduce MPKMixin

commit f2d42d79ba4f59352697e31cc275f9b436f0b487
Author: SomberNight <[email protected]>
Date:   Mon Dec 9 19:14:15 2019 +0100

    qt: rm redundant line: ConfirmTxDialog.update_tx()

    already called in ConfirmTxDialog.__init__

commit d641dfe964d7aad3103d99e0db6d9406cc0cd91e
Author: SomberNight <[email protected]>
Date:   Mon Dec 9 17:43:08 2019 +0100

    follow-up prev: add comment

commit 0828454ef1bda75f7436b39225ed6cd31edc4fa7
Merge: 9d83dea0d 59c5efb09
Author: ThomasV <[email protected]>
Date:   Mon Dec 9 17:30:10 2019 +0100

    Merge pull request #5830 from SomberNight/20191209_wallet_perf

    wallet perf: significant speedup for make_unsigned_transaction and rel.

commit 9d83dea0dcace1eded930308c050d143cf9df4ce
Merge: 5f6f7da2a d2a8028cd
Author: ThomasV <[email protected]>
Date:   Mon Dec 9 10:57:14 2019 +0100

    Merge pull request #5822 from SomberNight/201912_qt_receive_tab_address

    qt receive tab: show plain bitcoin address

commit 59c5efb090a0f9399cf21d77d5089e457ad0f866
Author: SomberNight <[email protected]>
Date:   Mon Dec 9 03:43:47 2019 +0100

    keystore: cache BIP32Node.from_xkey(self.xpub)

    This results in significant performance improvements for
    keystore.can_sign() and wallet._add_txinout_derivation_info()

commit f73b6b5d2398f14b353fbdd83145214b157a02ad
Author: SomberNight <[email protected]>
Date:   Mon Dec 9 03:35:20 2019 +0100

    keystore: cache derive_pubkey

commit 5f6f7da2a1be473a34a125509413d95475011e6a
Author: SomberNight <[email protected]>
Date:   Sun Dec 8 06:56:19 2019 +0100

    bitcoin.py: base58 address: make sure all public methods test checksum

    Note: the checksum was already being checked in practically all cases, by the caller.
    Moved the check here, to the lower level (but still public) method for sanity.

commit 8cf3587aeb0b1fb767aee84792e15f75f90e8f23
Author: SomberNight <[email protected]>
Date:   Sun Dec 8 06:19:51 2019 +0100

    base_encode/base_decode: change to saner API

commit 01f94fcf5817be9ff9182bfcda957a8e0e31bf8e
Author: SomberNight <[email protected]>
Date:   Sun Dec 8 06:07:01 2019 +0100

    base_encode/base_decode: performance improvement

    For example, for 50 KB of random data, and base 43,
    previously,
    - base_encode took ~38 seconds
    - base_decode took ~270 seconds
    now,
    - base_encode takes ~7.5 seconds
    - base_decode takes ~6 seconds

commit 5c9bd2d2b40f3afee8e6030b5b66f4dcecb289a5
Author: SomberNight <[email protected]>
Date:   Sun Dec 8 04:33:36 2019 +0100

    ln channel open: save funding tx as local tx into wallet

commit 30dcab0877c515ff635de7d582dd243728ce7bb5
Author: SomberNight <[email protected]>
Date:   Sun Dec 8 04:32:44 2019 +0100

    wallet: allow saving partial txns as local (but require txid)

commit 369d972aed376a59bb21952afa16b43105724a32
Author: SomberNight <[email protected]>
Date:   Sun Dec 8 03:21:02 2019 +0100

    qt: handle exceptions when pressing "Max" button

    fixes #5783

commit 8f1cd8b7bc63a961f1dcafefdd08a2da184fb3d3
Merge: f052987ba 20bbe85bc
Author: Alexander Roth <[email protected]>
Date:   Sat Dec 7 13:56:14 2019 +0100

    Merge remote-tracking branch 'upstream/master'

commit d2a8028cde21dacadf0a012cd15a23ea3327419b
Author: SomberNight <[email protected]>
Date:   Sat Dec 7 06:06:36 2019 +0100

    qt receive tab: show plain bitcoin address

commit 20bbe85bcecb454a4647b675066d6accea37bc78
Author: SomberNight <[email protected]>
Date:   Sat Dec 7 05:58:58 2019 +0100

    receive requests: encode lightning invoices as uppercase -> smaller QRs

    By encoding bolt11 invoices as uppercase text in QR codes,
    we can use the alphanumeric mode, which results in non-negligibly smaller QR codes.

commit 8e89c0c971645c11e205a163b38e4b35fa3e85de
Author: SomberNight <[email protected]>
Date:   Sat Dec 7 05:42:28 2019 +0100

    wallet: some clean-up re get_address_history vs db.get_addr_history

    note: tests needed changing due to behavioural change in wallet.get_receiving_address()
    Previously wallet.get_receiving_address used wallet.db.get_addr_history,
    now it (indirectly) uses wallet.get_address_history, which now also considers local txns.

commit d81110014e5a1d32ff424c7a325c7283cd895732
Author: SomberNight <[email protected]>
Date:   Sat Dec 7 04:28:08 2019 +0100

    qt requests/invoices: use TreeView.sortByColumn instead of model.sort

    sort the view, not the model
    This way, qt will display the icon indicating the sort order on the relevant column header.

commit 9f9b0954e2868a0e0572f3b3b02e2beaaa028e2d
Author: SomberNight <[email protected]>
Date:   Fri Dec 6 22:02:17 2019 +0100

    appimage: update package in dockerfile

    Ubuntu no longer serves old version

commit f24dea02776cccf596546b96759f1e403b087295
Author: SomberNight <[email protected]>
Date:   Fri Dec 6 21:47:28 2019 +0100

    add SECURITY.md

commit e0eb3c18eb0d399f5b6f37bb9b3d54a368978203
Author: SomberNight <[email protected]>
Date:   Fri Dec 6 20:41:51 2019 +0100

    qt ConfirmTxDialog: don't catch BaseException for make_tx

    not sure what it is supposed to catch...
    The examples I could come up with would all be actual bugs;
    in which case we should let the exception propagate out to the crash reporter.

commit a6aa97c3e3a248f24a3e0c5d85f1f48bac230af2
Merge: 2e4cfd074 5b88b8667
Author: ThomasV <[email protected]>
Date:   Fri Dec 6 20:38:46 2019 +0100

    Merge pull request #5820 from SomberNight/201912_ecdsa_sig_r_grinding

    ECDSA signatures: grind low R to match with Bitcoin Core (take 2)

commit 2e4cfd07445bc3f38090fdb3cd52612a55470469
Author: ThomasV <[email protected]>
Date:   Fri Dec 6 20:17:52 2019 +0100

    fix race in NetworkJobOnDefaultServer constructors

commit 61aebd0f2dbf83b8e0f6c043036f8f7301b4a158
Author: SomberNight <[email protected]>
Date:   Fri Dec 6 19:45:55 2019 +0100

    (fix) qt coin selection: signatures for coins would persist in memory

    Scenario: select some UTXOs in the 'Coins' tab. Create a tx and sign it.
    Close the tx dialog without broadcasting/etc (cancel tx).
    Signatures would remain for selected UTXOs.
    Create new tx -> invalid sigs.

commit 5b88b8667ee794d58fb8c78feef57be783ecf062
Author: SomberNight <[email protected]>
Date:   Thu Dec 5 19:24:53 2019 +0100

    also grind ecdsa low R when using libsecp256k1, and fix tests

    note: low R grinding would not have to be duplicated if we trusted the caller
    to have done it already (as is the case with the classes in ecc.py), and if
    we propagated the choice of "random_k" as part of the nonce_function passed
    to libsecp256k1 (which is not currently done)

commit d16fd2783cd6c6a537ca3ac44b7b87d8d4ddc7eb
Author: junderw <[email protected]>
Date:   Thu Aug 23 09:27:08 2018 +0200

    Add signature Low R grinding to match with Bitcoin Core

    Ref: https://github.com/bitcoin/bitcoin/pull/13666

    Depends on python-ecdsa pull request to allow for extra_entropy
    Ref: https://github.com/warner/python-ecdsa/pull/92

commit 428b63822b359d56d6ececabf406a43589545d24
Author: SomberNight <[email protected]>
Date:   Wed Dec 4 20:54:53 2019 +0100

    trezor: rm obsolete gui text

commit 69720946c1687e887c6571e249bbe08b6d86027b
Author: SomberNight <[email protected]>
Date:   Wed Dec 4 20:53:48 2019 +0100

    appimage: update package in dockerfile

    Ubuntu no longer serves old version

commit 3ac8f461a995df8d8ff622dfc3e6031501900b4b
Author: Janus Troelsen <[email protected]>
Date:   Wed Dec 4 13:40:52 2019 -0600

    Tests: Remove on_channels_updated (#5819)

commit 00a7df13bff555334825e7d381e049906b31e220
Author: SomberNight <[email protected]>
Date:   Wed Dec 4 20:04:18 2019 +0100

    rerun freeze_packages

commit 065e98ad35ea4b6e30b8b865a51a931705156b89
Author: ThomasV <[email protected]>
Date:   Wed Dec 4 18:35:04 2019 +0100

    on_open_channel: rm call to non-existing method on_channels_updated

commit d3fd87ebd0f4d7b836f6e7f7360f047e330d5698
Author: SomberNight <[email protected]>
Date:   Mon Dec 2 19:31:17 2019 +0100

    hardware wallets: wizard no longer requests xpub at path "m"

    This was done to calculate the bip32 root fingerprint but it broke
    the digitalbitbox. The keystore already had a different way to get
    the root fingerprint for existing wallets, specifically handling this
    case; the code in base_wizard used when creating new wallets was
    duplicating that code originally and was then forgotten to be updated.
    Now these codepaths are unified.

    closes #5816

commit 68dad21fb467ddb172884048a50f87978e11d3f8
Author: SomberNight <[email protected]>
Date:   Sun Dec 1 23:24:43 2019 +0100

    network: make best_effort_reliable smarter and a bit more lenient

    related: #5815

commit dfdc1e1d25a87c3283f57e8bd98028352324ca8f
Author: ThomasV <[email protected]>
Date:   Fri Nov 29 18:36:24 2019 +0100

    require ecdsa version >= 0.13.3

commit 6659f5c2c0c8136f2c2350f3ff5a6687b8e04677
Merge: 7a080352f ed5300ba1
Author: ThomasV <[email protected]>
Date:   Fri Nov 29 18:35:37 2019 +0100

    Merge pull request #5740 from spesmilo/dependabot/pip/contrib/deterministic-build/ecdsa-0.13.3

    build(deps): bump ecdsa from 0.13.2 to 0.13.3 in /contrib/deterministic-build

commit 7a080352f8864077875206658bb610113eded7e6
Merge: cfbd83c43 8dbbc21af
Author: ThomasV <[email protected]>
Date:   Fri Nov 29 18:24:08 2019 +0100

    Merge pull request #5809 from SomberNight/201911_invoice_paid_detection

    wallet: better (outgoing) invoice "paid" detection

commit 8dbbc21aff766e511331cbaea1d56b479eae138a
Author: SomberNight <[email protected]>
Date:   Thu Nov 28 18:24:00 2019 +0100

    wallet: better (outgoing) invoice "paid" detection

    - no more passing around "invoice" in GUIs, invoice "paid" detection is now handled by wallet logic
    - a tx can now pay for multiple invoices
    - an invoice can now be paid by multiple txs (through partial payments)
    - new data structure in storage: prevouts_by_scripthash
      - type: scripthash -> set of (outpoint, value)
      - also, storage upgrade to build this for existing wallets

commit cfbd83c43230ad6b31e98120daff8336c3ac0b7a
Author: SomberNight <[email protected]>
Date:   Fri Nov 29 13:12:23 2019 +0100

    wallet: minor clean-up

commit c0b5ebcc5d51fb149a4b8fa7eae7a492c8ebe03d
Author: SomberNight <[email protected]>
Date:   Fri Nov 29 13:09:21 2019 +0100

    tests: fix testcase test_restoring_wallet_with_manual_delete

commit adaa016e78667b3051b8661a8b0387a6a04557a4
Author: SomberNight <[email protected]>
Date:   Fri Nov 29 00:53:18 2019 +0100

    LNPeerAddr: fix equality tests and hence lnworker._last_tried_peer

    follow-up 13d69973555fef8802cce264f7ea324e89e36684

commit f052987bafab1ed86ef9b66585328cf5e0c3d057
Merge: 3061968f8 2ce8dd460
Author: Alexander Roth <[email protected]>
Date:   Thu Nov 28 22:07:18 2019 +0100

    Merge remote-tracking branch 'upstream/master'

commit 3061968f8b1cb3954d88f56ba8b8e4b4847e12bc
Author: Alexander Roth <[email protected]>
Date:   Thu Nov 28 22:01:02 2019 +0100

    Added required debian package (besides docker-ce) to the apt-get install command

commit 2ce8dd460b254bf56c5fbad38aadbaad41331316
Author: roth <[email protected]>
Date:   Thu Nov 28 21:40:28 2019 +0100

    Color-Code Addresses in Kivy UI (#5774)

    * Added static coloring of the TX output dialog.

    Coloring was suggested in #5750

commit 786d2b896b507df57bf9f0a0582d1f88ef26e4ae
Author: Alexander Roth <[email protected]>
Date:   Thu Nov 28 21:37:07 2019 +0100

    Removed 1 empty line

commit b46966b1cdd7b4f862a7ca4f2c4c98ab00e14587
Author: Alexander Roth <[email protected]>
Date:   Thu Nov 28 21:32:23 2019 +0100

    Added space

commit 89614c470803549cced3ae4dabd35d56a6ce4ba9
Author: Alexander Roth <[email protected]>
Date:   Thu Nov 28 21:30:29 2019 +0100

    Removed superfluous default colors

commit 4007720b3457dbdd83f9c33a77b6e5c2834d87d5
Author: SomberNight <[email protected]>
Date:   Wed Nov 27 20:29:49 2019 +0100

    qt history list: rm and fix magic number

commit f7fb14a538bb95be54a8c2d6ec92c936fc183e99
Merge: a13344938 8c30ae78b
Author: ThomasV <[email protected]>
Date:   Wed Nov 27 18:37:50 2019 +0100

    Merge pull request #5806 from RCasatta/remove_greenaddress

    Remove GreenAddress instant plugin

commit 8c30ae78be8cbd0a4ef9ceab3d9c3951a6266762
Author: Riccardo Casatta <[email protected]>
Date:   Wed Nov 27 17:37:31 2019 +0100

    remove GreenAddress instant plugin

    GreenAddress instant feature has been removed from the service, thus
    there is no reason anymore to keep the plugin

commit a13344938f0f8308651612efc86921a0e9b97602
Author: SomberNight <[email protected]>
Date:   Wed Nov 27 13:08:22 2019 +0100

    interface: fix connecting to raw IPv6 (as hostname) on Windows

    Changed cert pinning filename as on Windows paths cannot contain a colon ':'.

commit cee208313494ed5978e7a6c62c3b13c9583c6c93
Author: SomberNight <[email protected]>
Date:   Wed Nov 27 04:30:38 2019 +0100

    qt history list: fix UnboundLocalError when searching

    closes #5801

commit d430ec4bfc2d4ffb7b43ae63297fa9fa492aac01
Author: SomberNight <[email protected]>
Date:   Tue Nov 26 00:17:00 2019 +0100

    interface.deserialize_server: better ipv6 handling

commit 13d69973555fef8802cce264f7ea324e89e36684
Author: SomberNight <[email protected]>
Date:   Tue Nov 26 00:15:33 2019 +0100

    LNPeerAddr: validate arguments

    no longer subclassing NamedTuple (as it is difficult to do validation then...)

commit edba59ef54b4489ddccdbe70b883bfec42be3d3a
Author: SomberNight <[email protected]>
Date:   Mon Nov 25 21:10:53 2019 +0100

    LNPeerAddr: nicer str formatting for IPv6 hosts

commit ddeb176b3da0c4fcbb6cf2b8d85dd319e2a2bf56
Author: SomberNight <[email protected]>
Date:   Sat Nov 23 20:50:30 2019 +0100

    kivy: fix open_channel (API was changed)

commit 557987d4ebfca40902e741254734f13e9150f1d9
Author: SomberNight <[email protected]>
Date:   Sat Nov 23 20:28:46 2019 +0100

    add/fix some open_channel related type hints

commit 038036f350349812c2affa8a7a77188fd2dc5b3a
Author: ThomasV <[email protected]>
Date:   Sat Nov 23 19:56:40 2019 +0100

    minor follow-up prev commit

commit fd8236538a955d51e0fd3268576f34fca2eaed51
Author: ThomasV <[email protected]>
Date:   Sat Nov 23 13:30:05 2019 +0100

    Open lightning channels with partially signed tx.
    Fixes #5379.

commit 9c9ceb702a3a7bd0b535793db1c3478e4a402c01
Author: ThomasV <[email protected]>
Date:   Sat Nov 23 15:12:16 2019 +0100

    fix #5729

commit b9e5edd704534648bb4b016f216955ed176f447f
Author: ThomasV <[email protected]>
Date:   Sat Nov 23 14:51:39 2019 +0100

    fix #5728

commit 06589df812d85597b0dc635f8d4e502cbdcfb5a6
Author: ThomasV <[email protected]>
Date:   Sat Nov 23 12:46:43 2019 +0100

    simplify add_transaction

commit fc85dcead64fbd5c808b72bccd98bf7083bb96d1
Author: ThomasV <[email protected]>
Date:   Sat Nov 23 11:37:01 2019 +0100

    follow-up previous commit

commit 6c62fb03ac1231012faed03e5ec610b13386be63
Author: ThomasV <[email protected]>
Date:   Sat Nov 23 11:02:31 2019 +0100

    fix #5733

commit 88307357ec3798e6d78720c74bae46d68c622bb8
Author: SomberNight <[email protected]>
Date:   Fri Nov 22 22:59:33 2019 +0100

    add some type hints

    mostly related to hw wallets

commit 770ae6d8785c5deaa1ba3b827ed27d10522e141a
Author: SomberNight <[email protected]>
Date:   Fri Nov 22 22:11:56 2019 +0100

    fix tests

commit bda9a407d9b7bd1bcf6c5510b09502692c7c4294
Author: SomberNight <[email protected]>
Date:   Fri Nov 22 21:37:15 2019 +0100

    trivial: don't print frequent-case log line in lnpeer.mark_open

commit 268e2453229d7ea7e0049aa79f36cc17fd94fc6e
Author: SomberNight <[email protected]>
Date:   Fri Nov 22 21:33:56 2019 +0100

    lnpeer: only set initialized after both sent AND received "init"

    had a trace where we tried to send "funding_locked" before being initialized:

    D | lnpeer.Peer.[iq7zhmhck54vcax2vlrdcavq2m32wao7ekh6jyeglmnuuvv3js57r4id.onion:9735] | Sending FUNDING_LOCKED
    E | lnworker.LNWallet | Exception in on_update_open_channel: AttributeError("'LNTransport' object has no attribute 'sk'")
    Traceback (most recent call last):
      File "...\electrum\electrum\util.py", line 999, in wrapper
        return await func(*args, **kwargs)
      File "...\electrum\electrum\lnworker.py", line 674, in on_update_open_channel
        peer.send_funding_locked(chan)
      File "...\electrum\electrum\lnpeer.py", line 876, in send_funding_locked
        self.send_message("funding_locked", channel_id=channel_id, next_per_commitment_point=per_commitment_point_second)
      File "...\electrum\electrum\lnpeer.py", line 102, in send_message
        self.transport.send_bytes(raw_msg)
      File "...\electrum\electrum\lntransport.py", line 93, in send_bytes
        lc = aead_encrypt(self.sk, self.sn(), b'', l)
    AttributeError: 'LNTransport' object has no attribute 'sk'

commit 61dfcba092c8b2ad68a5821010bd1a16fd1d57cc
Author: ThomasV <[email protected]>
Date:   Tue Oct 29 08:02:14 2019 +0100

    Refactor channel states:
     - persisted states are saved
     - state transitions are checked
     - transient states are stored in channel.peer_state
     - new channel states: 'PREOPENING', 'FUNDED' and 'REDEEMED'
     - upgrade storage to version 21

commit c31fa059fe01a38ae5f382715283fbec5f6dca9a
Author: SomberNight <[email protected]>
Date:   Fri Nov 22 16:09:42 2019 +0100

    cli: clear up "rbf" arg for "payto" cmd in help text; and use eval_bool

    related: #5791

    (previously rbf was a str, and it was casted to a bool directly, i.e. only
    the empty string "" evaluated as False)

commit 420b1a66362bf9b3965afbb58953eaf41c3c06f3
Author: SomberNight <[email protected]>
Date:   Fri Nov 22 15:54:34 2019 +0100

    cli: load_wallet now auto-upgrades the WalletStorage when needed

    previously it would bail out and just return False

commit 3d88d6870cf509632d2cdcfd8beabd973a8c363f
Author: SomberNight <[email protected]>
Date:   Fri Nov 22 15:48:22 2019 +0100

    cli: fix load_wallet for storage-encrypted wallets

commit 8e08ca7cb11f0addec8d82adc8ac6db01557f4f1
Author: ThomasV <[email protected]>
Date:   Fri Nov 22 15:06:37 2019 +0100

    simplify network callbacks in lnworker

commit b469df5283f9ba890555666299338974fbf3a308
Author: ThomasV <[email protected]>
Date:   Thu Nov 21 20:16:04 2019 +0100

    check channel funding_tx amount and script in save_short_channel_id

commit c2b0039935cc00530f1eb583ea152885e86b9b81
Author: SomberNight <[email protected]>
Date:   Thu Nov 21 18:51:38 2019 +0100

    bitcoin.py: remove some remnants of TYPE_ADDRESS, TYPE_SCRIPT

commit 03cc63205fbc7eb46466d91ee5029450df42c0d4
Author: SomberNight <[email protected]>
Date:   Thu Nov 21 17:55:00 2019 +0100

    trivial: use logger.exception instead of traceback.print_exc

commit 6f246a83b307a63b80b0d98c1f0f3c606e45170a
Author: SomberNight <[email protected]>
Date:   Thu Nov 21 17:46:00 2019 +0100

    qt coin selection: allow selecting an empty set

    Using this, the user can force "bump fee" not to add new inputs.

    closes #5719

commit 11f54aee60d6de3413812318b8cc826365a43051
Author: SomberNight <[email protected]>
Date:   Thu Nov 21 17:21:54 2019 +0100

    qt utxo list: spend_list is now a set (and renamed)

    this is a small performance improvement ("if x in spend_list" was linear)
    and the "order" of selected coins does not matter anyway

commit 216d9e3c4db091ccccb0919b67022c65a9e55962
Author: SomberNight <[email protected]>
Date:   Thu Nov 21 16:37:43 2019 +0100

    lnpeer: (fix) force_close_channel was not awaited in some cases

commit d5b27e5be1711aa6a0c883929d92e11a344153de
Merge: 6b195437e 423c4b069
Author: ghost43 <[email protected]>
Date:   Thu Nov 21 15:21:17 2019 +0000

    Merge pull request #5787 from xaya/http-request-auth

    Return 401 from RPC server for missing auth

commit 423c4b06951253bd626970ea82179e2cfb55f3ea
Author: Daniel Kraft <[email protected]>
Date:   Thu Nov 21 15:12:14 2019 +0100

    Return 401 from RPC server for missing auth.

    When no (supported) authentication is passed to the JSON-RPC server,
    return a 401 HTTP error code instead of 403.  This indicates to the
    client that authentication is required, and also requests that to be
    sent using the "basic" method.  The previously-returned code 403 is now
    only returned if authentication is passed but not valid.

    There are some JSON-RPC clients out there that only send authentication
    after a 401 code requested it.  Those fail to connect to the Electrum
    RPC interface even if the correct password is configured.  Those same
    clients can e.g. connect to Bitcoin Core successfully, which already
    implements logic matching this change.

    See also https://stackoverflow.com/questions/3297048/403-forbidden-vs-401-unauthorized-http-responses.

commit 6b195437ed191db0cfde67a364280982b47143bf
Author: SomberNight <[email protected]>
Date:   Thu Nov 21 05:01:59 2019 +0100

    wallet: "future" txns num conf is now negative

    flipped the sign so that TxMinedInfo.conf can be consistently used in inequalities

commit 1526bc9ccf1125cd2c8c650748116050da95d778
Author: SomberNight <[email protected]>
Date:   Thu Nov 21 03:01:55 2019 +0100

    qt: consistently show tooltip when copying to clipboard

commit 048285f95e966351a19b51b46864030da21f5465
Author: Alexander Roth <[email protected]>
Date:   Wed Nov 20 21:25:36 2019 +0100

    #5750 Set the default color of the components to black

commit 9fe79171186e9e98aab266282c055a90dac9de18
Author: Johann Bauer <[email protected]>
Date:   Wed Nov 20 21:11:41 2019 +0100

    Qt: Remove unused color from color scheme

commit 67bab545635798f3f413d1725bcb1d912eb81b61
Author: Alexander Roth <[email protected]>
Date:   Wed Nov 20 19:31:42 2019 +0100

    #5750 Renamed loop variable

commit 06de2660cface26402890096419bc714a6b9b679
Author: SomberNight <[email protected]>
Date:   Wed Nov 20 19:29:29 2019 +0100

    kivy: support invoices with "max" amount

    closes #5781

commit 49284f716b90a266b4664b364d7c0303ac4ba123
Author: SomberNight <[email protected]>
Date:   Wed Nov 20 18:43:05 2019 +0100

    wallet: bump fee now supports coin selection

    related: #5719

commit fec96775089a1831a49bbd1a0e7d06d29b2d4021
Author: SomberNight <[email protected]>
Date:   Wed Nov 20 18:00:45 2019 +0100

    qt open channel: minor dialog fixes

commit cd9477c0da88288c6b92f430b533bf3026c84b67
Author: SomberNight <[email protected]>
Date:   Wed Nov 20 17:45:28 2019 +0100

    ln: qt channel open: fix max channel size

commit ae04434206525b1ec55127b9e752a330c5dbde5f
Author: SomberNight <[email protected]>
Date:   Wed Nov 20 17:14:14 2019 +0100

    ln: update list of fallback nodes

    with some popular nodes from 1ml.com

commit 4057140e6a7d858128b8a70aafdf649922073435
Author: SomberNight <[email protected]>
Date:   Wed Nov 20 03:21:59 2019 +0100

    lightning qr codes: more robust parsing

    kivy qr code handling did not accept "lightning:" prefix or uppercase

commit d1c262def078098599220d6ae189a90700ece0c9
Author: SomberNight <[email protected]>
Date:   Tue Nov 19 22:17:52 2019 +0100

    qt tx dialog: small clean-up in constructors

commit 97056ae44dca6775c8aff56033ff461060984079
Author: SomberNight <[email protected]>
Date:   Tue Nov 19 21:22:49 2019 +0100

    qt send tab: subtract 2fa fee when clicking "spend max"

commit ca6654c10234e1d3ded7ff0c6b1f42fa25438010
Author: SomberNight <[email protected]>
Date:   Tue Nov 19 20:26:50 2019 +0100

    qt send tab: don't allow paying multiple invoices that spend max '!'

commit 710e9621b5ec2257d92538ae26dd33ff48aa86da
Author: SomberNight <[email protected]>
Date:   Tue Nov 19 20:13:16 2019 +0100

    qt tx dialog: allow blanking feerate

    Previously it was impossible to rm the last character in feerate_edit.
    e.g. if you held down "backspace", we would keep refilling the field as soon
    as it became empty.

commit 13b858ab26f3eda6e89330ec9dfe707eecc95d62
Author: SomberNight <[email protected]>
Date:   Tue Nov 19 19:35:57 2019 +0100

    qt tx dialog: disable "Finalize" btn if tx is None

    e.g. NotEnoughFunds due to too high fee

commit 66ddedb97ea2eef37cb9355de35e5ad534013373
Author: SomberNight <[email protected]>
Date:   Tue Nov 19 19:29:10 2019 +0100

    qt tx dialog: small fee edit fix

    scenario: enter extremely high feerate (which we cannot satisfy) then click into fee_edit.
    At that moment, fee_edit is empty and both feerate_edit and fee_edit are considered frozen.
    As fee_edit has priority, we would construct a tx with default fee.
    Now, instead, we won't construct this default fee tx ~as if the click to fee_edit did not happen.

commit 8bd27851a47707e2c4a039c7675f01e66fbfb939
Author: SomberNight <[email protected]>
Date:   Tue Nov 19 18:41:44 2019 +0100

    qt tx dialog: only allow "save as local" for complete txns

commit aa3d817ef20f630333d06678c434564baf20b7a3
Author: SomberNight <[email protected]>
Date:   Mon Nov 18 20:56:49 2019 +0100

    qt: clean-up imports

commit b8e4ce9ba1d3e8c600bd4f1ebe8055fb42d1152d
Author: SomberNight <[email protected]>
Date:   Mon Nov 18 18:13:26 2019 +0100

    hardware wallets: handle when label is None

    follow-up 56c3de0e1eb28f6017286f51c37c5c45b86690bd

commit aa37979100b9119414026862444bfdb13295e6d3
Author: ThomasV <[email protected]>
Date:   Mon Nov 18 10:22:20 2019 +0100

    fix #5761

commit b9cf095e1a0e44121fd4f3b1861c14ff82d36931
Author: ThomasV <[email protected]>
Date:   Mon Nov 18 05:48:21 2019 +0100

    fix #5761

commit ade47e331a6c5ab9c386eedce1f67b766ecb4ec3
Merge: 47e0b4cd0 f2ca651dc
Author: ThomasV <[email protected]>
Date:   Mon Nov 18 05:12:25 2019 +0100

    Merge branch 'master' of github.com:spesmilo/electrum

commit 47e0b4cd02a31d4bb7290aa56b1cc0246e16df06
Author: ThomasV <[email protected]>
Date:   Mon Nov 18 05:12:13 2019 +0100

    fix #5765

commit f2ca651dc4d0327ed99c5cf3766ba58ed9855c50
Merge: 6b9971a46 643bc9d80
Author: ghost43 <[email protected]>
Date:   Mon Nov 18 02:11:06 2019 +0000

    Merge pull request #5775 from JeremyRand/resolver-wallet

    Fix missing wallet argument to _resolver

commit 643bc9d802042deb0d186f7b37328af614ef725e
Author: JeremyRand <[email protected]>
Date:   Mon Nov 18 01:31:33 2019 +0000

    Fix missing wallet argument to _resolver

commit 64d53258930a3014cab1f1cbe74d9cf38b858c27
Author: Alexander Roth <[email protected]>
Date:   Sun Nov 17 19:37:46 2019 +0100

    Moved color property next to the background color

commit 4bfd0b0f0fd378538a62a672df86791ca9988bb3
Author: Alexander Roth <[email protected]>
Date:   Sun Nov 17 19:34:47 2019 +0100

    Changed color coding to hex codes

    - It uses exactly the same background colors as the qt version
    - Improved readability

commit 6b9971a4666bd3bbd0cd16ea6c4f8e88f40fc878
Author: ThomasV <[email protected]>
Date:   Sun Nov 17 19:29:48 2019 +0100

    fix #5767

commit 0a8f5113405253d528241b7ed3a6641fe99ff5f9
Author: ThomasV <[email protected]>
Date:   Sun Nov 17 19:25:11 2019 +0100

    fix #5772

commit d47256ed552a12b97eacd69fc9b25e66259ecde5
Author: Alexander Roth <[email protected]>
Date:   Sun Nov 17 18:58:49 2019 +0100

    Code cleaning

    - Tabs to spaces
    - Broke long lines
    - Removed a superfluous class TopLabelExtended and replaced by TopLabel
    - set background color by default to black
    - added spaces after comma

commit a453189d37d52a5cf1e9edb9ac8045165910ba1c
Author: ThomasV <[email protected]>
Date:   Sun Nov 17 17:08:09 2019 +0100

    fix #5766

commit af21a4a8d6b30ccce1f0ab8565afbf12d1074781
Author: ThomasV <[email protected]>
Date:   Sun Nov 17 16:58:35 2019 +0100

    fix #5770

commit aeb4afed4be3cd8a0a365083feeb3796c4ae832c
Author: Alexander Roth <[email protected]>
Date:   Sun Nov 17 16:49:46 2019 +0100

    Added correct coloring

    Further works needs to be done:
    - check if color scheme can be derived
    - clean up code

commit ed5300ba1d593e94c9675df1b61b67bcda3a56e8
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sat Nov 2 09:23:39 2019 +0000

    build(deps): bump ecdsa in /contrib/deterministic-build

    Bumps [ecdsa](https://github.com/warner/python-ecdsa) from 0.13.2 to 0.13.3.
    - [Release notes](https://github.com/warner/python-ecdsa/releases)
    - [Changelog](https://github.com/warner/python-ecdsa/blob/master/NEWS)
    - [Commits](https://github.com/warner/python-ecdsa/compare/python-ecdsa-0.13.2...python-ecdsa-0.13.3)

    Signed-off-by: dependabot[bot] <[email protected]>
@SomberNight
Copy link
Member

I'll reclose actually, as the original issue was solved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants