You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
6.0 KiB
164 lines
6.0 KiB
4 years ago
|
# SPDX-FileCopyrightText: 2020 Foundation Devices, Inc. <hello@foundationdevices.com>
|
||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||
|
#
|
||
|
# SPDX-FileCopyrightText: 2018 Coinkite, Inc. <coldcardwallet.com>
|
||
|
# SPDX-License-Identifier: GPL-3.0-only
|
||
|
#
|
||
|
# (c) Copyright 2018 by Coinkite Inc. This file is part of Coldcard <coldcardwallet.com>
|
||
|
# and is covered by GPLv3 license found in COPYING.
|
||
|
#
|
||
|
# flow.py - Menu structure
|
||
|
#
|
||
|
import version
|
||
|
from actions import *
|
||
|
# from address_explorer import address_explore
|
||
|
from choosers import *
|
||
|
from common import settings
|
||
|
from menu import MenuItem
|
||
|
# from multisig import make_multisig_menu
|
||
|
|
||
|
def has_secrets():
|
||
|
from common import pa
|
||
|
return not pa.is_secret_blank()
|
||
|
|
||
|
|
||
|
ExportWalletMenu = [
|
||
|
# Alphabetical order
|
||
|
MenuItem('BlueWallet', f=xpub_qr),
|
||
|
MenuItem('BTCPay', f=electrum_skeleton),
|
||
|
MenuItem('Casa', f=electrum_skeleton),
|
||
|
MenuItem('Electrum', f=electrum_skeleton),
|
||
|
MenuItem('Fully Noded', f=electrum_skeleton),
|
||
|
MenuItem('Gordian', f=electrum_skeleton),
|
||
|
MenuItem('Lily', f=electrum_skeleton),
|
||
|
MenuItem('Sparrow', f=electrum_skeleton),
|
||
|
MenuItem('Specter', f=electrum_skeleton),
|
||
|
MenuItem('Wasabi', f=wasabi_skeleton),
|
||
|
MenuItem('Other', f=electrum_skeleton),
|
||
|
]
|
||
|
|
||
|
UpdateMenu = [
|
||
|
MenuItem('Update Firmware', f=microsd_upgrade),
|
||
|
MenuItem('Current Version', f=show_version),
|
||
|
]
|
||
|
|
||
|
SDCardMenu = [
|
||
|
#MenuItem("Verify Backup", f=verify_backup),
|
||
|
#MenuItem("Backup System", f=backup_everything),
|
||
|
MenuItem("Dump Summary", f=dump_summary),
|
||
|
MenuItem('Export Wallet', menu=ExportWalletMenu),
|
||
|
#MenuItem('Sign Text File', predicate=has_secrets, f=sign_message_on_sd),
|
||
|
#MenuItem('Upgrade From SD', f=microsd_upgrade),
|
||
|
MenuItem('Format Card', f=wipe_sd_card),
|
||
|
MenuItem('List Files', f=list_files),
|
||
|
]
|
||
|
|
||
|
AdvancedMenu = [
|
||
|
MenuItem('Change PIN', f=change_pin),
|
||
|
MenuItem("MicroSD Settings", menu=SDCardMenu),
|
||
|
MenuItem("List Addresses", f=coming_soon),
|
||
|
MenuItem('View Seed Words', f=view_seed_words,
|
||
|
predicate=lambda: settings.get('words', True)),
|
||
|
MenuItem("Erase Wallet", f=clear_seed),
|
||
|
|
||
|
# TODO: Don't we want to allow for this?
|
||
|
# MenuItem('Lock Down Seed', f=convert_bip39_to_bip32,
|
||
|
# predicate=lambda: settings.get('words', True)),
|
||
|
]
|
||
|
|
||
|
BackupMenu = [
|
||
|
MenuItem("Create Backup", menu=coming_soon), #f=backup_everything),
|
||
|
MenuItem("Verify Backup", menu=coming_soon), #f=verify_backup),
|
||
|
MenuItem("Restore Backup", menu=coming_soon), #f=restore_everything),
|
||
|
]
|
||
|
|
||
|
SettingsMenu = [
|
||
|
MenuItem("About", f=view_ident),
|
||
|
MenuItem('Pair External Wallet', menu=ExportWalletMenu, menu_title='Pair Wallet'),
|
||
|
MenuItem('Sign Text File', predicate=has_secrets, f=sign_message_on_sd),
|
||
|
MenuItem("Update Firmware", menu=UpdateMenu),
|
||
|
MenuItem('Backup Passport', menu=BackupMenu),
|
||
|
MenuItem('Multisig Settings', menu=coming_soon), # make_multisig_menu),
|
||
|
MenuItem('Screen Brightness', chooser=brightness_chooser),
|
||
|
MenuItem('Auto Shutdown', chooser=idle_timeout_chooser),
|
||
|
MenuItem('Advanced Settings', menu=AdvancedMenu, menu_title='Advanced')
|
||
|
]
|
||
|
|
||
|
NoWalletSettingsMenu = [
|
||
|
MenuItem("About", f=view_ident),
|
||
|
MenuItem("Update Firmware", menu=UpdateMenu),
|
||
|
MenuItem('Screen Brightness', chooser=brightness_chooser),
|
||
|
MenuItem('Auto Shutdown', chooser=idle_timeout_chooser),
|
||
|
MenuItem('Change PIN', f=change_pin),
|
||
|
]
|
||
|
|
||
|
# User has not entered a PIN yet - Need to be able to update firmware
|
||
|
NoPINMenu = [
|
||
|
MenuItem('Select PIN', f=initial_pin_setup),
|
||
|
MenuItem('Update Firmware', menu=UpdateMenu),
|
||
|
]
|
||
|
|
||
|
ImportMenu = [
|
||
|
MenuItem("24 Words", menu=start_seed_import, arg=24),
|
||
|
MenuItem("18 Words", menu=start_seed_import, arg=18),
|
||
|
MenuItem("12 Words", menu=start_seed_import, arg=12),
|
||
|
MenuItem("Import XPRV", f=import_xprv),
|
||
|
MenuItem("Dice Rolls", f=import_from_dice),
|
||
|
]
|
||
|
|
||
|
# has PIN, but no secret seed yet
|
||
|
NoWalletMenu = [
|
||
|
MenuItem('New Wallet', f=create_new_wallet),
|
||
|
MenuItem('Import Wallet', f=import_wallet, arg=24),
|
||
|
MenuItem('Settings', menu=NoWalletSettingsMenu),
|
||
|
]
|
||
|
|
||
|
DeveloperMenu = [
|
||
|
MenuItem('Battery Monitor', f=battery_mon),
|
||
|
MenuItem('Pair External Wallet', menu=ExportWalletMenu, menu_title='Pair Wallet'),
|
||
|
MenuItem('New Wallet', f=create_new_wallet),
|
||
|
MenuItem('Import Wallet', f=import_wallet, arg=24),
|
||
|
MenuItem('View Seed Words', f=view_seed_words,
|
||
|
predicate=lambda: settings.get('words', True)),
|
||
|
MenuItem('Select PIN', f=initial_pin_setup),
|
||
|
MenuItem('Login', f=block_until_login),
|
||
|
MenuItem('Update XPUB/XFP', f=update_xpub),
|
||
|
MenuItem('Update Firmware', f=microsd_upgrade),
|
||
|
MenuItem('Format SD Card', f=wipe_sd_card),
|
||
|
MenuItem('Enter 12-Word Seed', f=enter_seed_phrase, arg=12),
|
||
|
MenuItem('Enter 24-Word Seed', f=enter_seed_phrase, arg=24),
|
||
|
MenuItem('Sign with QR Code', f=sign_tx_from_qr, arg="Scan QR Code"),
|
||
|
MenuItem('Dump Settings', menu=dump_settings),
|
||
|
MenuItem('Get Serial', f=se_get_version),
|
||
|
MenuItem('Get Config.', f=se_get_config),
|
||
|
MenuItem('Gen. Random', f=gen_random),
|
||
|
MenuItem('Power Mon.', f=show_power_monitor),
|
||
|
MenuItem('Board Rev.', f=show_board_rev),
|
||
|
MenuItem("UR Unit Tests", f=test_ur),
|
||
|
MenuItem("Test UR Encoder", f=test_ur_encoder),
|
||
|
MenuItem('Factory Setup', f=factory_setup),
|
||
|
|
||
|
# Run these three to do a "factory reset"
|
||
|
MenuItem('Erase User Settings', f=erase_user_settings),
|
||
|
MenuItem("Erase Wallet", f=clear_seed_no_reset),
|
||
|
MenuItem('Set Blank PIN',f=set_blank_pin),
|
||
|
|
||
|
MenuItem('Erase ROM Secrets', f=erase_rom_secrets),
|
||
|
MenuItem('Test UR1.0', f=test_ur1),
|
||
|
]
|
||
|
|
||
|
MainMenu = [
|
||
|
MenuItem('9 Developer Menu', menu=DeveloperMenu),
|
||
|
MenuItem('Sign with QR Code', f=sign_tx_from_qr, arg="Scan QR Code"),
|
||
|
MenuItem('Sign with microSD', f=sign_tx_from_sd),
|
||
|
MenuItem('Verify Address', f=coming_soon, arg="Verify Address"),
|
||
|
MenuItem('Enter Passphrase', f=enter_passphrase, arg="Passphrase"),
|
||
|
MenuItem('Settings', menu=SettingsMenu),
|
||
|
]
|
||
|
|
||
|
GamesMenu = [
|
||
|
MenuItem('Developer Menu', menu=DeveloperMenu),
|
||
|
MenuItem('Snakamoto', f=play_snake),
|
||
|
MenuItem('StackSats', f=play_stacksats)
|
||
|
]
|