Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/ui/view.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ void view_spinner_show(const char *text);

void view_review_show_generic(review_type_e reviewKind, const char *title, const char *validate);

#if defined(TARGET_STAX) || defined(TARGET_FLEX)
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
typedef enum {
EXPERT_MODE = 0,
#ifdef APP_ACCOUNT_MODE_ENABLED
Expand All @@ -150,4 +150,4 @@ typedef enum {
} settings_list_e;

void view_set_switch_subtext(settings_list_e switch_id, const char *subtext);
#endif // TARGET_STAX || TARGET_FLEX
#endif // TARGET_STAX || TARGET_FLEX || TARGET_APEX_P
6 changes: 3 additions & 3 deletions app/ui/view_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
#endif
#define MAX_CHARS_SUBMSG_LINE 2048
#define MAX_CHARS_HEXMESSAGE 160
#elif defined(TARGET_STAX) || defined(TARGET_FLEX)
#elif defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
#include "nbgl_use_case.h"
#define MAX_LINES_PER_PAGE_REVIEW NB_MAX_LINES_IN_REVIEW
#define MAX_CHARS_PER_KEY_LINE 64
Expand Down Expand Up @@ -121,7 +121,7 @@ static const char *shortcut_value = SHORTCUT_VALUE;

// FIXME: Wait to be fixed on SDK:
// https://github.com/LedgerHQ/ledger-secure-sdk/blob/fe169b19c7445f2477c26035a827c22ba9f84964/lib_nbgl/include/nbgl_use_case.h#L59
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
#ifdef NB_MAX_DISPLAYED_PAIRS_IN_REVIEW
#undef NB_MAX_DISPLAYED_PAIRS_IN_REVIEW
#define NB_MAX_DISPLAYED_PAIRS_IN_REVIEW 6
Expand All @@ -130,7 +130,7 @@ static const char *shortcut_value = SHORTCUT_VALUE;

typedef struct {
struct {
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)
char *key;
char *value;
char keys[NB_MAX_DISPLAYED_PAIRS_IN_REVIEW][MAX_CHARS_PER_KEY_LINE];
Expand Down
58 changes: 35 additions & 23 deletions app/ui/view_nbgl.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

#include "bolos_target.h"

#if defined(TARGET_STAX) || defined(TARGET_FLEX)
#if defined(TARGET_STAX) || defined(TARGET_FLEX) || defined(TARGET_APEX_P)

#include "actions.h"
#include "app_mode.h"
Expand All @@ -40,6 +40,20 @@ zxerr_t account_enabled();
#define VERIFY_TITLE_LABEL_GENERIC "Verify operation"
#define INFO_LIST_SIZE 4
#define SETTING_CONTENTS_NB 1

// Define icon variables based on target platform
#if defined(TARGET_STAX) || defined(TARGET_FLEX)
#define C_IMPORTANT_CIRCLE_ICON C_Important_Circle_64px
#define C_WARNING_ICON C_Warning_64px
#define C_REVIEW_ICON C_Review_64px
#define C_ICON C_icon_stax_64
#elif defined(TARGET_APEX_P)
#define C_IMPORTANT_CIRCLE_ICON C_Important_Circle_24px
#define C_WARNING_ICON C_Warning_24px
#define C_REVIEW_ICON C_Review_48px
#define C_ICON C_icon_apex_p_48
#endif

static const char HOME_TEXT[] =
"This application enables\nsigning transactions on the\n" MENU_MAIN_APP_LINE1 " network";

Expand Down Expand Up @@ -83,7 +97,7 @@ static void h_approve_internal(void) { h_approve(review_type); }

#ifdef TARGET_STAX
#define MAX_INFO_LIST_ITEM_PER_PAGE 3
#else // TARGET_FLEX
#else // TARGET_FLEX || TARGET_APEX_P
#define MAX_INFO_LIST_ITEM_PER_PAGE 2
#endif

Expand Down Expand Up @@ -175,22 +189,21 @@ void view_custom_error_show(const char *upper, const char *lower) {
MEMZERO(viewdata.value, MAX_CHARS_PER_VALUE1_LINE);
snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", upper);
snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", lower);

nbgl_useCaseChoice(&C_Important_Circle_64px, viewdata.key, viewdata.value, "Ok", "", confirm_error);
nbgl_useCaseChoice(&C_IMPORTANT_CIRCLE_ICON, viewdata.key, viewdata.value, "Ok", "", confirm_error);
}

void view_blindsign_error_show() {
nbgl_useCaseChoice(&C_Warning_64px, "This transaction cannot\nbe clear-signed",
nbgl_useCaseChoice(&C_WARNING_ICON, "This transaction cannot\nbe clear-signed",
"Enable blind signing in the\nsettings to sign this\ntransaction.", "Go to settings",
"Reject Transaction", goto_settings);
}

void view_error_show_impl() {
nbgl_useCaseChoice(&C_Important_Circle_64px, viewdata.key, viewdata.value, "Ok", NULL, confirm_setting);
nbgl_useCaseChoice(&C_IMPORTANT_CIRCLE_ICON, viewdata.key, viewdata.value, "Ok", NULL, confirm_setting);
}

void view_settings_show_impl() {
nbgl_useCaseHomeAndSettings(MENU_MAIN_APP_LINE1, &C_icon_stax_64, HOME_TEXT, 0, &settingContents, &infoList, NULL,
nbgl_useCaseHomeAndSettings(MENU_MAIN_APP_LINE1, &C_ICON, HOME_TEXT, 0, &settingContents, &infoList, NULL,
app_quit);
}

Expand Down Expand Up @@ -373,8 +386,8 @@ void view_idle_show_impl(__Z_UNUSED uint8_t item_idx, const char *statusString)
infoList.infoContents = INFO_VALUES_PAGE;
infoList.infoTypes = INFO_KEYS_PAGE;

nbgl_useCaseHomeAndSettings(MENU_MAIN_APP_LINE1, &C_icon_stax_64, home_text, INIT_HOME_PAGE, &settingContents,
&infoList, NULL, app_quit);
nbgl_useCaseHomeAndSettings(MENU_MAIN_APP_LINE1, &C_ICON, home_text, INIT_HOME_PAGE, &settingContents, &infoList,
NULL, app_quit);
}

void view_message_impl(const char *title, const char *message) {
Expand Down Expand Up @@ -402,7 +415,7 @@ static void review_configuration() {
view_error_show();
}

nbgl_useCaseChoice(&C_Important_Circle_64px, viewdata.key, viewdata.value, "Accept", "Reject", confirm_setting);
nbgl_useCaseChoice(&C_IMPORTANT_CIRCLE_ICON, viewdata.key, viewdata.value, "Accept", "Reject", confirm_setting);
}

static void config_useCaseAddressReview() {
Expand Down Expand Up @@ -440,7 +453,7 @@ static void config_useCaseAddressReview() {
#else
intro_message = ADDRESS_TEXT;
#endif
nbgl_useCaseAddressReview(viewdata.value, extraPagesPtr, &C_icon_stax_64, intro_message, NULL, reviewAddressChoice);
nbgl_useCaseAddressReview(viewdata.value, extraPagesPtr, &C_ICON, intro_message, NULL, reviewAddressChoice);
}

static nbgl_layoutTagValue_t *update_item_callback(uint8_t index) {
Expand Down Expand Up @@ -470,13 +483,12 @@ static void config_useCaseReview(nbgl_operationType_t type) {
pairList.startIndex = 0;

if (app_mode_blindsign_required()) {
nbgl_useCaseReviewBlindSigning(type, &pairList, &C_icon_stax_64,
nbgl_useCaseReviewBlindSigning(type, &pairList, &C_ICON,
(intro_message == NULL ? "Review transaction" : intro_message), intro_submessage,
"Accept risk and sign transaction ?", NULL, reviewTransactionChoice);
} else {
nbgl_useCaseReview(type, &pairList, &C_icon_stax_64,
(intro_message == NULL ? "Review transaction" : intro_message), intro_submessage,
(approval_label_buf[0] != '\0' ? approval_label_buf : APPROVE_LABEL_NBGL),
nbgl_useCaseReview(type, &pairList, &C_ICON, (intro_message == NULL ? "Review transaction" : intro_message),
intro_submessage, (approval_label_buf[0] != '\0' ? approval_label_buf : APPROVE_LABEL_NBGL),
reviewTransactionChoice);
}
}
Expand All @@ -494,13 +506,14 @@ static void config_useCaseMessageReview() {
pairList.callback = update_item_callback;
pairList.startIndex = 0;
if (app_mode_blindsign_required()) {
nbgl_useCaseReviewBlindSigning(TYPE_MESSAGE, &pairList, &C_Review_64px,
nbgl_useCaseReviewBlindSigning(TYPE_MESSAGE, &pairList, &C_REVIEW_ICON,
(intro_message == NULL ? "Review Message" : intro_message), NULL,
"Accept risk and sign message ?", NULL, reviewMessageChoice);
} else {
nbgl_useCaseReview(
TYPE_MESSAGE, &pairList, &C_Review_64px, (intro_message == NULL ? "Review Message" : intro_message), NULL,
(approval_label_buf[0] != '\0' ? approval_label_buf : APPROVE_LABEL_NBGL_MSG), reviewMessageChoice);
nbgl_useCaseReview(TYPE_MESSAGE, &pairList, &C_REVIEW_ICON,
(intro_message == NULL ? "Review Message" : intro_message), intro_submessage,
(approval_label_buf[0] != '\0' ? approval_label_buf : APPROVE_LABEL_NBGL_MSG),
reviewMessageChoice);
Comment thread
abenso marked this conversation as resolved.
}
}

Expand All @@ -517,9 +530,8 @@ static void config_useCaseReviewLight(const char *title, const char *validate) {
pairList.callback = update_item_callback;
pairList.startIndex = 0;

nbgl_useCaseReviewLight(TYPE_OPERATION, &pairList, &C_icon_stax_64,
(title == NULL ? VERIFY_TITLE_LABEL_GENERIC : title), NULL,
(validate == NULL ? APPROVE_LABEL_NBGL_GENERIC : validate), reviewGenericChoice);
nbgl_useCaseReviewLight(TYPE_OPERATION, &pairList, &C_ICON, (title == NULL ? VERIFY_TITLE_LABEL_GENERIC : title),
NULL, (validate == NULL ? APPROVE_LABEL_NBGL_GENERIC : validate), reviewGenericChoice);
}

void view_review_show_impl(unsigned int requireReply, const char *title, const char *validate) {
Expand Down Expand Up @@ -547,7 +559,7 @@ void view_review_show_impl(unsigned int requireReply, const char *title, const c

switch (review_type) {
case REVIEW_UI:
nbgl_useCaseReviewStart(&C_icon_stax_64, "Review configuration", NULL, CANCEL_LABEL, review_configuration,
nbgl_useCaseReviewStart(&C_ICON, "Review configuration", NULL, CANCEL_LABEL, review_configuration,
h_reject_internal);
break;
case REVIEW_ADDRESS: {
Expand Down
30 changes: 29 additions & 1 deletion dockerized_build.mk
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ DOCKER_BOLOS_SDKX = NANOX_SDK
DOCKER_BOLOS_SDKS2 = NANOSP_SDK
DOCKER_BOLOS_SDKST = STAX_SDK
DOCKER_BOLOS_SDKFL = FLEX_SDK
DOCKER_BOLOS_SDKAP = APEX_P_SDK

TARGET_S = nanos
TARGET_X = nanox
TARGET_S2 = nanos2
TARGET_ST = stax
TARGET_FL = flex
TARGET_AP = apex_p

# Note: This is not an SSH key, and being public represents no risk
SCP_PUBKEY=049bc79d139c70c83a4b19e8922e5ee3e0080bb14a2e8b0752aa42cda90a1463f689b0fa68c1c0246845c2074787b649d0d8a6c0b97d4607065eee3057bdf16b83
Expand All @@ -50,7 +52,7 @@ $(info TESTS_ZEMU_DIR : $(TESTS_ZEMU_DIR))
$(info TESTS_JS_DIR : $(TESTS_JS_DIR))
$(info TESTS_JS_PACKAGE : $(TESTS_JS_PACKAGE))

DOCKER_IMAGE_ZONDAX=zondax/ledger-app-builder:ledger-75354ba1678f81c283e4a7eca09c0524185c6281
DOCKER_IMAGE_ZONDAX=zondax/ledger-app-builder:ledger-ca5b0e8ca6730a7d8ba36bae8942a9a7bb6dc7fb
DOCKER_IMAGE_LEDGER=ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder:latest

ifdef INTERACTIVE
Expand Down Expand Up @@ -104,6 +106,7 @@ endif
@$(MAKE) buildS2
@$(MAKE) buildST
@$(MAKE) buildFL
@$(MAKE) buildAP

.PHONY: check_python
check_python:
Expand Down Expand Up @@ -143,6 +146,10 @@ build_rustST:
build_rustFL:
$(call run_docker,$(DOCKER_BOLOS_SDKFL),$(TARGET_FL),make -j $(NPROC) rust)

.PHONY: build_rustAP
build_rustAP:
$(call run_docker,$(DOCKER_BOLOS_SDKAP),$(TARGET_AP),make -j $(NPROC) rust)

.PHONY: convert_icon
convert_icon:
@convert $(LEDGER_SRC)/tmp.gif -monochrome -size 16x16 -depth 1 $(LEDGER_SRC)/nanos_icon.gif
Expand Down Expand Up @@ -172,6 +179,10 @@ buildST:
buildFL:
$(call run_docker,$(DOCKER_BOLOS_SDKFL),$(TARGET_FL),make -j $(NPROC))

.PHONY: buildAP
buildAP:
$(call run_docker,$(DOCKER_BOLOS_SDKAP),$(TARGET_AP),make -j $(NPROC))

.PHONY: clean_output
clean_output:
@echo "Removing output files"
Expand Down Expand Up @@ -208,6 +219,10 @@ shellST:
shellFL:
$(call run_docker,$(DOCKER_BOLOS_SDKFL) -t,$(TARGET_FL),bash)

.PHONY: shellAP
shellAP:
$(call run_docker,$(DOCKER_BOLOS_SDKAP) -t,$(TARGET_AP),bash)

.PHONY: loadS
loadS:
${LEDGER_SRC}/pkg/installer_s.sh load
Expand Down Expand Up @@ -236,10 +251,19 @@ deleteST:
loadFL:
${LEDGER_SRC}/pkg/installer_flex.sh load

.PHONY: loadAP
loadAP:
${LEDGER_SRC}/pkg/installer_apex.sh load

.PHONY: deleteFL
deleteFL:
${LEDGER_SRC}/pkg/installer_flex.sh delete

.PHONY: deleteAP
deleteAP:
${LEDGER_SRC}/pkg/installer_apex.sh delete


.PHONY: sizeS
sizeS:
$(CURDIR)/deps/ledger-zxlib/scripts/getSize.py nanos
Expand All @@ -260,6 +284,10 @@ sizeST:
sizeFL:
$(CURDIR)/deps/ledger-zxlib/scripts/getSize.py flex

.PHONY: sizeAP
sizeAP:
$(CURDIR)/deps/ledger-zxlib/scripts/getSize.py apex

.PHONY: show_info_recovery_mode
show_info_recovery_mode:
@echo "This command requires a Ledger Nano S in recovery mode. To go into recovery mode, follow:"
Expand Down
Loading
Loading