do not allow to delete current active tmp seed from seed vault and purge its settings
This commit is contained in:
parent
5568082f35
commit
95b13083dc
@ -11,6 +11,7 @@ This lists the new changes that have not yet been published in a normal release.
|
||||
On Q, result is blank screen, on Mk4, result is three-dots screen.
|
||||
- Bugfix: Do not allow to enable/disable Seed Vault feature when in temporary seed mode
|
||||
- Bugfix: Bless Firmware causes hanging progress bar
|
||||
- Change: Do not allow to purge settings of current active tmp seed when deleting it from Seed Vault
|
||||
|
||||
|
||||
# Mk4 Specific Changes
|
||||
|
||||
@ -830,42 +830,37 @@ class SeedVaultMenu(MenuSystem):
|
||||
async def _remove(menu, label, item):
|
||||
from glob import dis, settings
|
||||
|
||||
esc = ""
|
||||
tmp_val = False
|
||||
idx, xfp_str, encoded = item.arg
|
||||
current_active = (pa.tmp_value == bytes(encoded))
|
||||
|
||||
msg = ("Remove seed from seed vault and delete its "
|
||||
"settings?\n\nPress %s to continue, press (1) to "
|
||||
"only remove from seed vault and keep "
|
||||
"encrypted settings for later use.\n\n"
|
||||
"WARNING: Funds will be lost if wallet is"
|
||||
" not backed-up elsewhere.") % OK
|
||||
msg = "Remove seed from seed vault "
|
||||
if pa.tmp_value and current_active:
|
||||
tmp_val = True
|
||||
msg += "?\n\n"
|
||||
else:
|
||||
msg += ("and delete its settings?\n\n"
|
||||
"Press %s to continue, press (1) to "
|
||||
"only remove from seed vault and keep "
|
||||
"encrypted settings for later use.\n\n") % OK
|
||||
esc += "1"
|
||||
|
||||
ch = await ux_show_story(title="[" + xfp_str + "]", msg=msg, escape="1")
|
||||
msg += "WARNING: Funds will be lost if wallet is not backed-up elsewhere."
|
||||
|
||||
ch = await ux_show_story(title="[" + xfp_str + "]", msg=msg, escape=esc)
|
||||
if ch == "x": return
|
||||
|
||||
dis.fullscreen("Saving...")
|
||||
|
||||
wipe_slot = (ch != "1")
|
||||
tmp_val = False
|
||||
|
||||
if pa.tmp_value:
|
||||
tmp_val = True
|
||||
wipe_slot = not current_active and (ch != "1")
|
||||
|
||||
if wipe_slot:
|
||||
# are we deleting current active ephemeral wallet
|
||||
# and its settings ?
|
||||
# slot wiping
|
||||
if tmp_val:
|
||||
# wipe current settings
|
||||
settings.blank()
|
||||
pa.tmp_value = False
|
||||
settings.return_to_master_seed()
|
||||
else:
|
||||
# in main settings
|
||||
xs = SettingsObject()
|
||||
xs.set_key(encoded)
|
||||
xs.load()
|
||||
xs.blank()
|
||||
del xs
|
||||
xs = SettingsObject()
|
||||
xs.set_key(encoded)
|
||||
xs.load()
|
||||
xs.blank()
|
||||
del xs
|
||||
|
||||
# CAUTION: will get shadow copy if in tmp seed mode already
|
||||
seeds = settings.master_get("seeds", [])
|
||||
|
||||
@ -256,7 +256,7 @@ def confirm_tmp_seed(need_keypress, cap_story, press_select):
|
||||
|
||||
@pytest.fixture
|
||||
def seed_vault_delete(pick_menu_item, need_keypress, cap_menu, cap_story,
|
||||
goto_home, press_select):
|
||||
goto_home, press_select, settings_get):
|
||||
def doit(xfp, wipe=True):
|
||||
# delete it from records
|
||||
goto_home()
|
||||
@ -276,12 +276,17 @@ def seed_vault_delete(pick_menu_item, need_keypress, cap_menu, cap_story,
|
||||
title, story = cap_story()
|
||||
assert "Remove" in story
|
||||
assert xfp in title
|
||||
assert "press (1)" in story
|
||||
|
||||
if wipe:
|
||||
press_select()
|
||||
else:
|
||||
# preserve settings - remove just from seed vaul
|
||||
need_keypress("1")
|
||||
if xfp2str(settings_get("xfp")) == xfp:
|
||||
assert "press (1)" not in story
|
||||
press_select() # will NOT wipe settings
|
||||
else:
|
||||
assert "press (1)" in story
|
||||
# preserve settings - remove just from seed vaul
|
||||
need_keypress("1")
|
||||
|
||||
time.sleep(.1)
|
||||
goto_home()
|
||||
@ -1117,16 +1122,21 @@ def test_seed_vault_modifications(settings_set, reset_seed_words, pick_menu_item
|
||||
m = cap_menu()
|
||||
assert m[0] == "AAA"
|
||||
pick_menu_item("Delete")
|
||||
time.sleep(.1)
|
||||
title, story = cap_story()
|
||||
# current active does not offer to purge the slot, only to remove from Seed Vault
|
||||
assert "delete its settings?" not in story
|
||||
press_select()
|
||||
time.sleep(.1)
|
||||
goto_home()
|
||||
m = cap_menu()
|
||||
# after we delete from seed vault together with its settings
|
||||
# we're back to master secret
|
||||
assert m[0] == "Ready To Sign"
|
||||
# still in tmp mode
|
||||
assert m[0] != "Ready To Sign"
|
||||
pick_menu_item("Seed Vault")
|
||||
time.sleep(.1)
|
||||
m = cap_menu()
|
||||
assert len(m) == 2
|
||||
# Ignore Add Current and Restore Master (only SV items are numbered with colon)
|
||||
assert len([mi for mi in m if ":" in mi]) == 2
|
||||
|
||||
press_down()
|
||||
press_select()
|
||||
@ -1146,7 +1156,10 @@ def test_seed_vault_modifications(settings_set, reset_seed_words, pick_menu_item
|
||||
assert "Delete" in m
|
||||
|
||||
pick_menu_item("Delete")
|
||||
need_keypress("1") # only delete from seed vault
|
||||
time.sleep(.1)
|
||||
_, story = cap_story()
|
||||
assert "delete its settings?" not in story
|
||||
press_select() # only delete from seed vault, no other option provided
|
||||
time.sleep(.1)
|
||||
m = cap_menu()
|
||||
assert len(m) == 3
|
||||
@ -1164,6 +1177,25 @@ def test_seed_vault_modifications(settings_set, reset_seed_words, pick_menu_item
|
||||
# still in ephemeral
|
||||
assert title == m[0]
|
||||
|
||||
restore_main_seed()
|
||||
pick_menu_item("Seed Vault")
|
||||
press_select()
|
||||
time.sleep(.1)
|
||||
m = cap_menu()
|
||||
assert "Rename" in m
|
||||
assert "Use This Seed" in m
|
||||
assert "Delete" in m
|
||||
|
||||
pick_menu_item("Delete")
|
||||
time.sleep(.1)
|
||||
_, story = cap_story()
|
||||
assert "delete its settings?" in story
|
||||
need_keypress("1") # only remove from seed vault, keep settings
|
||||
time.sleep(.1)
|
||||
m = cap_menu()
|
||||
assert all([":" not in mi for mi in m])
|
||||
assert "(none saved yet)" in m
|
||||
|
||||
|
||||
def test_xfp_collision(reset_seed_words, settings_set, import_ephemeral_xprv,
|
||||
cap_story, press_cancel, pick_menu_item, cap_menu,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user