diff --git a/shared/wif.py b/shared/wif.py index cbd9cd18..4e91bb56 100644 --- a/shared/wif.py +++ b/shared/wif.py @@ -299,6 +299,7 @@ class WIFStore(MenuSystem): got = got.replace(',', ' ').split() saved = settings.get("wifs", []) + len_saved = len(saved) try: new_wifs = [] @@ -322,15 +323,17 @@ class WIFStore(MenuSystem): pk = b2a_hex(kp.pubkey().to_bytes()).decode() item = (pk, sk) + if item in new_wifs: + # duplicate in import content + continue - if item not in saved: # ignore dups - new_wifs.append(item) - else: + if item in saved: # ignore dups dups += 1 + else: + new_wifs.append(item) assert new_wifs, 'no valid WIF found' if not dups else 'duplicate WIF(s)' - len_saved = len(saved) if (len_saved + len(new_wifs)) > self.MAX_ITEMS: await ux_show_story("Max %d items allowed in WIF Store.\n\nAttempted to import %d keys," " while remaining WIF store capacity is only %d. Please, make room" diff --git a/testing/test_wif.py b/testing/test_wif.py index 7b2e49ea..c2688017 100644 --- a/testing/test_wif.py +++ b/testing/test_wif.py @@ -82,6 +82,7 @@ def test_wif_store_import_paper_wallet(goto_home, pick_menu_item, press_select, menu = cap_menu() assert "Import WIF" in menu + assert len(menu) == 2 # only one WIF imported from paper wallet that contins 2x same WIF pick_menu_item(menu[1]) pick_menu_item("Detail") time.sleep(.1)