This commit is contained in:
scgbckbone 2023-12-07 14:29:12 +01:00
parent 60074be670
commit 30546d0b5e
5 changed files with 20 additions and 33 deletions

View File

@ -2357,13 +2357,13 @@ async def reflash_gpu(*a):
from glob import dis
await dis.gpu.reflash_gpu_ux()
async def scan_any_qr(*a, expect_secret=False):
async def scan_any_qr(menu, label, item):
expect_secret, tmp = item.arg
await _scan_any_qr(expect_secret, tmp)
async def _scan_any_qr(expect_secret=False, tmp=False):
from ux_q1 import QRScannerInteraction
x = QRScannerInteraction()
await x.scan_anything(expect_secret=expect_secret)
async def scan_secret_import(*a):
# trying to import a secret
return await scan_any_qr(expect_secret=True)
await x.scan_anything(expect_secret=expect_secret, tmp=tmp)
# EOF

View File

@ -317,7 +317,7 @@ ImportWallet = [
MenuItem("18 Words", menu=start_seed_import, arg=18),
MenuItem("24 Words", menu=start_seed_import, arg=24),
MenuItem('Scan QR Code', predicate=lambda: version.has_qr,
shortcut=KEY_QR, f=scan_secret_import),
shortcut=charcodes.KEY_QR, f=scan_any_qr, arg=(True, False)),
MenuItem("Restore Backup", f=restore_everything),
MenuItem("Clone Coldcard", menu=clone_start),
MenuItem("Import XPRV", f=import_xprv, arg=False), # ephemeral=False
@ -347,7 +347,7 @@ NormalSystem = [
# xxxxxxxxxxxxxxxx
MenuItem('Ready To Sign', f=ready2sign),
MenuItem('Scan Any QR Code', predicate=lambda: version.has_qr,
shortcut=KEY_QR, f=scan_any_qr),
shortcut=charcodes.KEY_QR, f=scan_any_qr, arg=(False, True)),
MenuItem('Passphrase', f=start_b39_pw, predicate=bip39_passphrase_active),
MenuItem('Start HSM Mode', f=start_hsm_menu_item, predicate=hsm_policy_available),
MenuItem("Address Explorer", f=address_explore),

View File

@ -489,8 +489,7 @@ class PinAttempt:
# On Q1, update status icons
from glob import dis
is_pass, is_tmp = (1, 1) if bip39pw else (0, 1)
dis.draw_status(bip39=is_pass, tmp=is_tmp)
dis.draw_status(bip39=1 if bip39pw else 0, tmp=1)
return True

View File

@ -400,9 +400,7 @@ async def new_from_dice(nwords):
words = await approve_word_list(seed, nwords)
if words:
set_seed_value(words)
# send them to home menu, now with a wallet enabled
goto_top_menu(first_time=True)
await commit_new_words(words)
def in_seed_vault(encoded):
# Test if indicated xfp (or currently active XFP) is in the seed vault already.
@ -518,9 +516,7 @@ async def make_new_wallet(nwords):
seed = generate_seed()
words = await approve_word_list(seed, nwords)
if words:
set_seed_value(words)
# send them to home menu, now with a wallet enabled
goto_top_menu(first_time=True)
await commit_new_words(words)
async def ephemeral_seed_import(nwords):
@ -546,7 +542,7 @@ async def ephemeral_seed_generate(nwords):
async def set_seed_extended_key(extended_key):
encoded, chain = xprv_to_encoded_secret(extended_key)
set_seed_value(encoded=encoded, chain=chain)
goto_top_menu()
goto_top_menu(first_time=True)
async def set_ephemeral_seed_extended_key(extended_key, meta=None):
encoded, chain = xprv_to_encoded_secret(extended_key)
@ -1025,8 +1021,8 @@ class EphemeralSeedMenu(MenuSystem):
@classmethod
def construct(cls):
from glob import NFC
from actions import nfc_recv_ephemeral, import_tapsigner_backup_file, import_xprv, restore_temporary
from actions import scan_secret_import
from actions import nfc_recv_ephemeral, import_tapsigner_backup_file, import_xprv
from actions import restore_temporary, scan_any_qr
from charcodes import KEY_QR
import_ephemeral_menu = [
@ -1045,7 +1041,7 @@ class EphemeralSeedMenu(MenuSystem):
rv = [
MenuItem("Generate Words", menu=gen_ephemeral_menu),
MenuItem('Import from QR Scan', predicate=lambda: version.has_qr,
shortcut=KEY_QR, f=scan_secret_import),
shortcut=KEY_QR, f=scan_any_qr, arg=(True, True)),
MenuItem("Import Words", menu=import_ephemeral_menu),
MenuItem("Import XPRV", f=import_xprv, arg=True), # ephemeral=True
MenuItem("Tapsigner Backup", f=import_tapsigner_backup_file, arg=True), # ephemeral=True

View File

@ -682,14 +682,9 @@ class QRScannerInteraction:
continue
async def scan_anything(self, expect_secret=False):
async def scan_anything(self, expect_secret=False, tmp=False):
# start a QR scan, and act on what we find, whatever it may be.
from flow import has_secrets
from actions import goto_top_menu
problem = None
had_master = has_secrets()
while 1:
prompt = 'Scan any QR code, or CANCEL' if not expect_secret else \
'Scan XPRV or Seed Words, or CANCEL'
@ -709,23 +704,20 @@ class QRScannerInteraction:
problem = "Unable to decode QR"
continue
# Limitation: assuming ephemeral import here
if what == 'xprv':
from actions import import_extended_key_as_secret
text_xprv, = vals
await import_extended_key_as_secret(text_xprv, had_master)
goto_top_menu(first_time=(not had_master))
await import_extended_key_as_secret(text_xprv, tmp)
return
if what == 'words':
from seed import set_ephemeral_seed_words, set_seed_value
from seed import commit_new_words, set_ephemeral_seed_words # dirty API
words, = vals
if had_master:
if tmp:
await set_ephemeral_seed_words(words, meta='From QR')
else:
set_seed_value(words=words)
await commit_new_words(words=words)
goto_top_menu(first_time=(not had_master))
return
if what == 'psbt':