Skip to content

Commit 8ab6d37

Browse files
authored
Merge pull request #5 from aido/stax
Add Stax layouts for generating SSS shares
2 parents aa58ae5 + 205cca5 commit 8ab6d37

File tree

1,481 files changed

+4357
-1533
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,481 files changed

+4357
-1533
lines changed

.github/workflows/ci-workflow.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1
2020
with:
2121
upload_app_binaries_artifact: compiled_app_binaries
22-
run_for_devices: '["nanos", "nanox", "nanosp", "stax"]'
22+
run_for_devices: '["nanos", "nanox", "nanosp", "stax", "flex"]'
2323

2424
ledger_app_test_function:
2525
name: Run ragger tests using the reusable workflow
@@ -28,7 +28,7 @@ jobs:
2828
with:
2929
download_app_binaries_artifact: compiled_app_binaries
3030
test_dir: tests/functional
31-
run_for_devices: '["nanos"]'
31+
run_for_devices: '["nanos", "stax", "flex"]'
3232

3333
ledger_app_test_unit:
3434
name: Unit tests
@@ -53,10 +53,13 @@ jobs:
5353
with:
5454
name: code-coverage
5555
path: tests/unit/coverage
56+
- name: Install codecov dependencies
57+
run: apk update && apk add curl gpg
5658
- name: Upload to codecov.io
57-
uses: codecov/codecov-action@v3
59+
uses: codecov/codecov-action@v5
60+
env:
61+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
5862
with:
59-
token: ${{ secrets.CODECOV_TOKEN }}
6063
files: ./tests/unit/coverage.info
6164
flags: unittests
6265
name: codecov-app-seed-tool

.github/workflows/codeql-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
name: Analyse
2121
strategy:
2222
matrix:
23-
sdk: [ "$NANOS_SDK", "$NANOX_SDK", "$NANOSP_SDK", "$STAX_SDK" ]
23+
sdk: [ "$NANOS_SDK", "$NANOX_SDK", "$NANOSP_SDK", "$STAX_SDK", "$FLEX_SDK" ]
2424
# 'cpp' covers C and C++
2525
language: [ 'cpp' ]
2626
runs-on: ubuntu-latest

.github/workflows/ledger-rule-enforcer.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ jobs:
1818
name: Run Ledger rule enforcer using the reusable workflow
1919
uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_guidelines_enforcer.yml@v1
2020
with:
21-
run_for_devices: '["nanos", "nanox", "nanosp", "stax"]'
21+
run_for_devices: '["nanos", "nanox", "nanosp", "stax", "flex"]'

.github/workflows/release-workflow.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
echo "VERSION_NAME=${HEAD_BRANCH//./_}" >> ${GITHUB_ENV}
2828
2929
- name: Download app binaries
30-
uses: dawidd6/action-download-artifact@v3
30+
uses: dawidd6/action-download-artifact@v6
3131
with:
3232
name: compiled_app_binaries
3333
path: ./bin/

CHANGELOG.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,29 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.8.0] - 2024-10-28
9+
10+
### Added
11+
12+
- Add Stax layouts for generating SSKR shares
13+
- Add Stax layouts for checking SSKR shares
14+
- Add Stax layouts for recovering BIP39 phrase
15+
- Add screenshots and animations
16+
- Add demo videos for Stax and Nano S
17+
- Add Stax function tests
18+
- Port to Ledger Flex
19+
- Add Flex function tests
20+
21+
### Fixed
22+
23+
- Some plausible yet wrong mnemonic were deemed valid on NBGL devices
24+
- Merge Nano code
25+
- Improve efficiency of `cx_bn_gf2_n_mul()` for Nano S
26+
827
## [1.7.4] - 2024-06-20
928

1029
### Fixed
30+
1131
- Ensure result does not overlap with operands in calls to `cx_bn_gf2_n_mul()`
1232
- Give a warning if a user chooses 1-of-m shares when m > 1
1333
- Use CBOR tag for version 2 `sskr`
@@ -16,6 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1636
## [1.7.3] - 2024-05-29
1737

1838
### Fixed
39+
1940
- Changed name of 'Generate BIP39' menus to 'Recover BIP39'
2041
- Changed Second Montgomery constant used for `cx_bn_gf2_n_mul()` to a more suitable value
2142
- Improve efficiency of `cx_bn_gf2_n_mul()` for Nano S
@@ -28,7 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2849
- Using Ledger SDK `cx_crc32()` function rather than buggy `cx_crc32_hw()`.
2950
- Fix build with SDK master for Nano S
3051

31-
## [1.7.1] - 2024-03-06
52+
## [1.7.1] - 2024-04-06
3253

3354
### Changed
3455

Makefile

Lines changed: 21 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#*******************************************************************************
2-
# Ledger Blue
3-
# (c) 2016 Ledger
2+
# Ledger App
3+
# (c) 2024 Ledger
44
#
55
# Licensed under the Apache License, Version 2.0 (the "License");
66
# you may not use this file except in compliance with the License.
@@ -18,134 +18,49 @@
1818
ifeq ($(BOLOS_SDK),)
1919
$(error Environment variable BOLOS_SDK is not set)
2020
endif
21-
2221
include $(BOLOS_SDK)/Makefile.defines
2322

2423
all: default
2524

26-
# Main app configuration
27-
2825
APPNAME = "Seed Tool"
2926
APPVERSION_M = 1
30-
APPVERSION_N = 7
31-
APPVERSION_P = 4
27+
APPVERSION_N = 8
28+
APPVERSION_P = 0
3229
APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)"
3330

3431
APPVERSION_RC = 0
3532
ifneq ($(APPVERSION_RC), 0)
3633
APPVERSION := $(APPVERSION)-rc.$(APPVERSION_RC)
3734
endif
3835

39-
APP_LOAD_PARAMS = --appFlags 0x10 $(COMMON_LOAD_PARAMS) --curve secp256k1 --path ""
40-
41-
ifeq ($(TARGET_NAME), TARGET_NANOS)
42-
ICONNAME=glyphs/seed_nanos.gif
43-
else ifeq ($(TARGET_NAME), TARGET_STAX)
44-
ICONNAME=glyphs/seed_stax_32px.gif
45-
else
46-
ICONNAME=glyphs/seed_nanox.gif
47-
endif
36+
VARIANT_PARAM = NONE
37+
VARIANT_VALUES = seed_tool
4838

49-
# Build configuration
39+
CURVE_APP_LOAD_PARAMS = secp256k1
40+
PATH_APP_LOAD_PARAMS = ""
41+
HAVE_APPLICATION_FLAG_DERIVE_MASTER = 1
5042

51-
#DEFINES += APPNAME=\"$(APPNAME)\"
52-
DEFINES += APPVERSION=\"$(APPVERSION)\"
53-
DEFINES += LEDGER_MAJOR_VERSION=$(APPVERSION_M)
54-
DEFINES += LEDGER_MINOR_VERSION=$(APPVERSION_N)
55-
DEFINES += LEDGER_PATCH_VERSION=$(APPVERSION_P)
56-
DEFINES += OS_IO_SEPROXYHAL
43+
ICON_NANOS = glyphs/seed_nanos.gif
44+
ICON_NANOSP = glyphs/seed_nanox.gif
45+
ICON_NANOX = glyphs/seed_nanox.gif
46+
ICON_STAX = glyphs/seed_stax_32px.gif
47+
ICON_FLEX = glyphs/seed_flex_40px.gif
5748

58-
DEFINES += BOLOS_APP_ICON_SIZE_B=\(9+32\)
5949
#DEFINES += HAVE_ELECTRUM
60-
DEFINES += IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64
61-
DEFINES += HAVE_SPRINTF
6250

63-
ifneq ($(TARGET_NAME), TARGET_STAX)
51+
ifneq ($(TARGET_NAME), $(filter $(TARGET_NAME), TARGET_STAX TARGET_FLEX))
6452
$(info Using BAGL)
65-
DEFINES += HAVE_BAGL HAVE_UX_FLOW
53+
ifeq ($(TARGET_NAME),TARGET_NANOS)
54+
DISABLE_STANDARD_USB = 1
55+
endif
6656
else
6757
$(info Using NBGL)
68-
DEFINES += NBGL_KEYBOARD
69-
DEFINES += NBGL_KEYPAD
70-
endif
71-
72-
ifeq ($(TARGET_NAME), TARGET_NANOS)
73-
DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128
74-
else
75-
DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300
76-
ifneq ($(TARGET_NAME), TARGET_STAX)
77-
DEFINES += HAVE_GLO096
78-
DEFINES += BAGL_WIDTH=128 BAGL_HEIGHT=64
79-
DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature
80-
DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX
81-
DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX
82-
DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX
83-
DEFINES += HAVE_KEYBOARD_UX
84-
endif
58+
ENABLE_NBGL_KEYBOARD = 1
59+
ENABLE_NBGL_KEYPAD = 1
8560
endif
8661

8762
DEBUG = 0
8863

89-
ifneq ($(DEBUG), 0)
90-
$(info DEBUG enabled)
91-
DEFINES += HAVE_IO_USB HAVE_USB_APDU
92-
SDK_SOURCE_PATH += lib_stusb lib_stusb_impl
93-
DEFINES += HAVE_PRINTF
94-
ifeq ($(TARGET_NAME), TARGET_NANOS)
95-
DEFINES += PRINTF=screen_printf
96-
else
97-
DEFINES += PRINTF=mcu_usb_printf
98-
endif
99-
else
100-
DEFINES += PRINTF\(...\)=
101-
endif
102-
103-
##############
104-
# Compiler #
105-
##############
106-
ifneq ($(BOLOS_ENV),)
107-
$(info BOLOS_ENV=$(BOLOS_ENV))
108-
CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/
109-
GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/
110-
else
111-
$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH)
112-
endif
113-
ifeq ($(CLANGPATH),)
114-
$(info CLANGPATH is not set: clang will be used from PATH)
115-
endif
116-
ifeq ($(GCCPATH),)
117-
$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH)
118-
endif
119-
120-
CC := $(CLANGPATH)clang
121-
CFLAGS += -Wshadow -Wformat -DAPPNAME=\"$(APPNAME)\"
122-
AS := $(GCCPATH)arm-none-eabi-gcc
123-
LD := $(GCCPATH)arm-none-eabi-gcc
124-
LDLIBS += -lm -lgcc -lc
125-
126-
127-
include $(BOLOS_SDK)/Makefile.glyphs
128-
12964
APP_SOURCE_PATH += src
13065

131-
ifneq ($(TARGET_NAME),TARGET_NANOS)
132-
ifneq ($(TARGET_NAME), TARGET_STAX)
133-
SDK_SOURCE_PATH += lib_ux
134-
endif
135-
endif
136-
137-
# Main rules
138-
139-
load: all
140-
python -m ledgerblue.loadApp $(APP_LOAD_PARAMS)
141-
142-
delete:
143-
python -m ledgerblue.deleteApp $(COMMON_DELETE_PARAMS)
144-
145-
# Import generic rules from the SDK
146-
147-
include $(BOLOS_SDK)/Makefile.rules
148-
149-
150-
listvariants:
151-
@echo VARIANTS APP seed_tool
66+
include $(BOLOS_SDK)/Makefile.standard_app

README.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
[![License](https://img.shields.io/github/license/aido/app-seed-tool)](https://github.com/aido/app-seed-tool/blob/develop/LICENSE)
77

88
![nanos](https://img.shields.io/badge/nanos-working-green?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NyAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgOTEuNjU0OFYxMjhINTUuMjkzVjExOS45NEg4LjA1NjMxVjkxLjY1NDhIMFpNMTM4Ljk0NCA5MS42NTQ4VjExOS45NEg5MS43MDdWMTI3Ljk5OEgxNDdWOTEuNjU0OEgxMzguOTQ0Wk01NS4zNzMzIDM2LjM0NTJWOTEuNjUyOUg5MS43MDdWODQuMzg0Mkg2My40Mjk2VjM2LjM0NTJINTUuMzczM1pNMCAwVjM2LjM0NTJIOC4wNTYzMVY4LjA1ODQ0SDU1LjI5M1YwSDBaTTkxLjcwNyAwVjguMDU4NDRIMTM4Ljk0NFYzNi4zNDUySDE0N1YwSDkxLjcwN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+)
9-
![nanox](https://img.shields.io/badge/nanox-working-green?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NyAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgOTEuNjU0OFYxMjhINTUuMjkzVjExOS45NEg4LjA1NjMxVjkxLjY1NDhIMFpNMTM4Ljk0NCA5MS42NTQ4VjExOS45NEg5MS43MDdWMTI3Ljk5OEgxNDdWOTEuNjU0OEgxMzguOTQ0Wk01NS4zNzMzIDM2LjM0NTJWOTEuNjUyOUg5MS43MDdWODQuMzg0Mkg2My40Mjk2VjM2LjM0NTJINTUuMzczM1pNMCAwVjM2LjM0NTJIOC4wNTYzMVY4LjA1ODQ0SDU1LjI5M1YwSDBaTTkxLjcwNyAwVjguMDU4NDRIMTM4Ljk0NFYzNi4zNDUySDE0N1YwSDkxLjcwN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+)
109
![nanosp](https://img.shields.io/badge/nanosp-working-green?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NyAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgOTEuNjU0OFYxMjhINTUuMjkzVjExOS45NEg4LjA1NjMxVjkxLjY1NDhIMFpNMTM4Ljk0NCA5MS42NTQ4VjExOS45NEg5MS43MDdWMTI3Ljk5OEgxNDdWOTEuNjU0OEgxMzguOTQ0Wk01NS4zNzMzIDM2LjM0NTJWOTEuNjUyOUg5MS43MDdWODQuMzg0Mkg2My40Mjk2VjM2LjM0NTJINTUuMzczM1pNMCAwVjM2LjM0NTJIOC4wNTYzMVY4LjA1ODQ0SDU1LjI5M1YwSDBaTTkxLjcwNyAwVjguMDU4NDRIMTM4Ljk0NFYzNi4zNDUySDE0N1YwSDkxLjcwN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+)
11-
![stax](https://img.shields.io/badge/stax-in_progress-orange?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NyAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgOTEuNjU0OFYxMjhINTUuMjkzVjExOS45NEg4LjA1NjMxVjkxLjY1NDhIMFpNMTM4Ljk0NCA5MS42NTQ4VjExOS45NEg5MS43MDdWMTI3Ljk5OEgxNDdWOTEuNjU0OEgxMzguOTQ0Wk01NS4zNzMzIDM2LjM0NTJWOTEuNjUyOUg5MS43MDdWODQuMzg0Mkg2My40Mjk2VjM2LjM0NTJINTUuMzczM1pNMCAwVjM2LjM0NTJIOC4wNTYzMVY4LjA1ODQ0SDU1LjI5M1YwSDBaTTkxLjcwNyAwVjguMDU4NDRIMTM4Ljk0NFYzNi4zNDUySDE0N1YwSDkxLjcwN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+)
10+
![nanox](https://img.shields.io/badge/nanox-working-green?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NyAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgOTEuNjU0OFYxMjhINTUuMjkzVjExOS45NEg4LjA1NjMxVjkxLjY1NDhIMFpNMTM4Ljk0NCA5MS42NTQ4VjExOS45NEg5MS43MDdWMTI3Ljk5OEgxNDdWOTEuNjU0OEgxMzguOTQ0Wk01NS4zNzMzIDM2LjM0NTJWOTEuNjUyOUg5MS43MDdWODQuMzg0Mkg2My40Mjk2VjM2LjM0NTJINTUuMzczM1pNMCAwVjM2LjM0NTJIOC4wNTYzMVY4LjA1ODQ0SDU1LjI5M1YwSDBaTTkxLjcwNyAwVjguMDU4NDRIMTM4Ljk0NFYzNi4zNDUySDE0N1YwSDkxLjcwN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+)
11+
![stax](https://img.shields.io/badge/stax-working-green?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NyAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgOTEuNjU0OFYxMjhINTUuMjkzVjExOS45NEg4LjA1NjMxVjkxLjY1NDhIMFpNMTM4Ljk0NCA5MS42NTQ4VjExOS45NEg5MS43MDdWMTI3Ljk5OEgxNDdWOTEuNjU0OEgxMzguOTQ0Wk01NS4zNzMzIDM2LjM0NTJWOTEuNjUyOUg5MS43MDdWODQuMzg0Mkg2My40Mjk2VjM2LjM0NTJINTUuMzczM1pNMCAwVjM2LjM0NTJIOC4wNTYzMVY4LjA1ODQ0SDU1LjI5M1YwSDBaTTkxLjcwNyAwVjguMDU4NDRIMTM4Ljk0NFYzNi4zNDUySDE0N1YwSDkxLjcwN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+)
12+
![flex](https://img.shields.io/badge/flex-working-green?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDE0NyAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTAgOTEuNjU0OFYxMjhINTUuMjkzVjExOS45NEg4LjA1NjMxVjkxLjY1NDhIMFpNMTM4Ljk0NCA5MS42NTQ4VjExOS45NEg5MS43MDdWMTI3Ljk5OEgxNDdWOTEuNjU0OEgxMzguOTQ0Wk01NS4zNzMzIDM2LjM0NTJWOTEuNjUyOUg5MS43MDdWODQuMzg0Mkg2My40Mjk2VjM2LjM0NTJINTUuMzczM1pNMCAwVjM2LjM0NTJIOC4wNTYzMVY4LjA1ODQ0SDU1LjI5M1YwSDBaTTkxLjcwNyAwVjguMDU4NDRIMTM4Ljk0NFYzNi4zNDUySDE0N1YwSDkxLjcwN1oiIGZpbGw9IndoaXRlIi8+PC9zdmc+)
1213

1314
[![Build app-seed-tool](https://github.com/aido/app-seed-tool/actions/workflows/ci-workflow.yml/badge.svg)](https://github.com/aido/app-seed-tool/actions/workflows/ci-workflow.yml)
1415
[![CodeQL](https://github.com/aido/app-seed-tool/actions/workflows/codeql-workflow.yml/badge.svg)](https://github.com/aido/app-seed-tool/actions/workflows/codeql-workflow.yml)
@@ -23,13 +24,13 @@ Use the utilities provided by this Ledger application to check a backed up BIP-3
2324
Not all Ledger devices are equal. The older, less capable devices do not have the capacity to provide a full range of seed utilities. The following table lists the seed utilities provided by each devices type:
2425
<div align="center">
2526

26-
||Nano S|Nano S+|Nano X|Stax|
27-
| :--- | :---: | :---: | :---: | :---: |
28-
|[Check BIP39](#check-bip39)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|
29-
|[Check Shamir's secret shares](#check-shamirs-secret-shares)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{orange}✓}$$|
30-
|[Generate Shamir's secret sharing](#generate-shamirs-secret-sharing)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{orange}✓}$$|
31-
|[Recover BIP39](#recover-bip39)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{orange}✓}$$|
32-
|[Generate BIP85](#generate-bip85)|$${\color{red}✗}$$|$${\color{orange}✓}$$|$${\color{orange}✓}$$|$${\color{orange}✓}$$|
27+
||Nano S|Nano S+|Nano X|Stax|Flex|
28+
| :--- | :---: | :---: | :---: | :---: | :---: |
29+
|[Check BIP39](#check-bip39)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|
30+
|[Check Shamir's secret shares](#check-shamirs-secret-shares)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|
31+
|[Generate Shamir's secret sharing](#generate-shamirs-secret-sharing)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|
32+
|[Recover BIP39](#recover-bip39)|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|$${\color{green}✓}$$|
33+
|[Generate BIP85](#generate-bip85)|$${\color{red}✗}$$|$${\color{orange}✓}$$|$${\color{orange}✓}$$|$${\color{orange}✓}$$|$${\color{orange}✓}$$|
3334
</div>
3435

3536
## Application menu flow
@@ -71,6 +72,10 @@ flowchart LR
7172
4.1[Quit]
7273
end
7374
```
75+
> [!TIP]
76+
> Demo videos of some of the menu flows on different hardware devices are available [here](demos/README.md).
77+
>
78+
> Alternatively, animations of some of the menu flows on different hardware devices are available [here](tests/functional/screenshots/README.md).
7479
7580
## Check BIP39
7681
The application invites the user to type a [BIP-39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) mnemonic on their Ledger device. The BIP-39 mnemonic is compared to the onboarded seed and the application notifies the user whether both seeds match or not.

TODO.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,25 @@
33
### Todo
44

55
- [ ] Improve the efficiency of the method used to perform an inverse operation in GF(256)
6-
- [ ] Improve the efficiency of the custom cx_bn_gf2_n_mul() function used for Nano S devices
76
- [ ] Update automated function tests to test on nanox and nanosp
87
- [ ] There is just enough memory available on Nano S to hold the phrases for 10 shares. Maybe just store SSKR Bytewords as shorter two letter minimal Bytewords rather than a 4 letter Byteword plus space for each share. Convert minimal ByteWords back to four letter Bytewords just prior to display.
98

109
### In Progress
1110

12-
- [ ] Add Ledger Stax to list of devices app works on
13-
- [x] Add SSKR Generate option to Stax
14-
- [ ] Add SSKR Check option to Stax
15-
- [ ] Write SSKR to BIP39 functionality
16-
- [ ] Functional Test with 29-word SSKR shares
17-
- [ ] Functional Test with 46-word SSKR shares
11+
- [ ] Add BIP85 menus to Stax and Flex
12+
- [ ] Merge Nano code
13+
- [ ] Improve the efficiency of the custom cx_bn_gf2_n_mul() function used for Nano S devices
1814

1915
### Done ✓
2016

17+
- [x] Decouple BAGL / NBGL code
18+
- [x] Add Ledger Flex to list of devices app works on
19+
- [x] Add Ledger Stax to list of devices app works on
20+
- [x] Add SSKR Generate option to Stax
21+
- [x] Add SSKR Check option to Stax
22+
- [x] Write SSKR to BIP39 functionality
23+
- [x] Functional Test with 29-word SSKR shares
24+
- [x] Functional Test with 46-word SSKR shares
2125
- [x] Changed Shamir interpolate function to use `cx_bn_gf2_n_mul()` syscalls
2226
- [x] Remove all Variable Length Arrays
2327
- [x] Save memory by setting the SSKR word buffer (G_bolos_ux_context.sskr_words_buffer) to a sensible size

demos/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Application menus demos
2+
3+
Below are demos of some of the menu flows on different hardware devices
4+
5+
## Nano S
6+
### Check BIP39 & Generate SSKR menus
7+
https://github.com/user-attachments/assets/3f3ce02b-1b46-45b1-a86d-25fbff7bf216)](https://github.com/user-attachments/assets/b3ea239a-e9f8-40b4-b048-d85ec398ab59
8+
9+
### Check SSKR & Recover BIP39 menus
10+
https://github.com/aido/app-seed-tool/raw/demos/demos/nanos/sskr/demo.png)](https://github.com/user-attachments/assets/467030c3-4476-42a9-b90f-d29f2f35d423
11+
12+
## Stax
13+
### Check BIP39 & Generate SSKR menus
14+
https://github.com/aido/app-seed-tool/raw/demos/demos/stax/bip39/demo.png)](https://github.com/user-attachments/assets/ff5728aa-3c2d-468e-9ad7-c9eb6b056e17
15+
16+
### Check SSKR & Recover BIP39 menus
17+
https://github.com/aido/app-seed-tool/raw/demos/demos/stax/sskr/demo.png)](https://github.com/user-attachments/assets/3f3f44e5-ba4a-491d-897e-3b2842c0309f
18+
19+
> [!TIP]
20+
> Enable subtitles when viewing the videos

demos/cover.png

19.8 KB
Loading

0 commit comments

Comments
 (0)