Browse Source

follow-up moving some funcs from ecc.py to bitcoin.py

follow-up 2f3d89f415
master
SomberNight 1 year ago
parent
commit
a674a22155
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 2
      electrum/bitcoin.py
  2. 8
      electrum/gui/qt/update_checker.py
  3. 6
      electrum/plugins/digitalbitbox/digitalbitbox.py

2
electrum/bitcoin.py

@ -845,7 +845,6 @@ def control_block_for_taproot_script_spend(
# user message signing
def usermessage_magic(message: bytes) -> bytes:
from .bitcoin import var_int
length = var_int(len(message))
return b"\x18Bitcoin Signed Message:\n" + length + message
@ -855,7 +854,6 @@ def ecdsa_sign_usermessage(ec_privkey, message: Union[bytes, str], *, is_compres
return ec_privkey.ecdsa_sign_recoverable(msg32, is_compressed=is_compressed)
def verify_usermessage_with_address(address: str, sig65: bytes, message: bytes, *, net=None) -> bool:
from .bitcoin import pubkey_to_address
from .ecc import ECPubkey
assert_bytes(sig65, message)
if net is None: net = constants.net

8
electrum/gui/qt/update_checker.py

@ -11,7 +11,7 @@ from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QLabel, QProgressBar,
from electrum import version
from electrum import constants
from electrum import ecc
from electrum.bitcoin import verify_usermessage_with_address
from electrum.i18n import _
from electrum.util import make_aiohttp_session
from electrum.logging import Logger
@ -123,8 +123,10 @@ class UpdateCheckThread(QThread, Logger):
continue
sig = base64.b64decode(sig)
msg = version_num.encode('utf-8')
if ecc.verify_usermessage_with_address(address=address, sig65=sig, message=msg,
net=constants.BitcoinMainnet):
if verify_usermessage_with_address(
address=address, sig65=sig, message=msg,
net=constants.BitcoinMainnet
):
self.logger.info(f"valid sig for version announcement '{version_num}' from address '{address}'")
break
else:

6
electrum/plugins/digitalbitbox/digitalbitbox.py

@ -18,7 +18,7 @@ import copy
from typing import TYPE_CHECKING, Optional
from electrum.crypto import sha256d, EncodeAES_bytes, DecodeAES_bytes, hmac_oneshot
from electrum.bitcoin import public_key_to_p2pkh, usermessage_magic
from electrum.bitcoin import public_key_to_p2pkh, usermessage_magic, verify_usermessage_with_address
from electrum.bip32 import BIP32Node, convert_bip32_intpath_to_strpath, is_all_public_derivation
from electrum.bip32 import normalize_bip32_derivation
from electrum import descriptor
@ -497,7 +497,7 @@ class DigitalBitbox_KeyStore(Hardware_KeyStore):
sig = ecc.construct_ecdsa_sig65(sig_string, recid, is_compressed=True)
pubkey, compressed, txin_type_guess = ecc.ECPubkey.from_ecdsa_sig65(sig, msg_hash)
addr = public_key_to_p2pkh(pubkey.get_public_key_bytes(compressed=compressed))
if ecc.verify_usermessage_with_address(addr, sig, message) is False:
if verify_usermessage_with_address(addr, sig, message) is False:
raise Exception(_("Could not sign message"))
elif 'pubkey' in reply['sign'][0]:
# firmware <= v2.1.1
@ -506,7 +506,7 @@ class DigitalBitbox_KeyStore(Hardware_KeyStore):
sig = ecc.construct_ecdsa_sig65(sig_string, recid, is_compressed=True)
try:
addr = public_key_to_p2pkh(binascii.unhexlify(reply['sign'][0]['pubkey']))
if ecc.verify_usermessage_with_address(addr, sig, message):
if verify_usermessage_with_address(addr, sig, message):
break
except Exception:
continue

Loading…
Cancel
Save