Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean app #122

Merged
merged 27 commits into from
Nov 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e433f12
crypto: clean deprecated crypto calls
sgliner-ledger Oct 19, 2023
6fd5092
use standard Makefile and standard files
sgliner-ledger Oct 19, 2023
86d528f
monero_io: use dedicated function for offset increase
sgliner-ledger Oct 19, 2023
2ea70ca
monero_crypto: sanitize input
sgliner-ledger Oct 19, 2023
883e7f6
monero_io: remove dead code
sgliner-ledger Oct 19, 2023
5305c0d
monero_crypto: use define for PXY_SIZE value
sgliner-ledger Oct 19, 2023
23d2b68
monero_io_fetch_decrypt_key: add buffer size as parameter
sgliner-ledger Oct 19, 2023
7dd7d59
monero_types: change MONERO_APDU_LENGTH
sgliner-ledger Oct 19, 2023
0d68462
monero_io: explicit cast
sgliner-ledger Oct 19, 2023
3017fbb
monero_io: explicit void parameter
sgliner-ledger Oct 19, 2023
5447842
nanos: use same ui as other nanos
sgliner-ledger Oct 24, 2023
fc87148
tests: update snapshots
sgliner-ledger Oct 20, 2023
b7faa0d
icons: rename and relocate glyphs
sgliner-ledger Oct 24, 2023
8775fa6
clean: Add size as parameter in function call
sgliner-ledger Oct 20, 2023
988ad2d
clean: remove THROWs
sgliner-ledger Oct 23, 2023
548a1e2
clean: remove unused lock instruction
sgliner-ledger Oct 23, 2023
ab0c15f
clean: replace last Throw by app exit
sgliner-ledger Oct 24, 2023
19f96a4
Lint: Apply formatting
sgliner-ledger Oct 24, 2023
1f947eb
some more error mgmt
sgliner-ledger Nov 13, 2023
22911a2
Makefile: Bump version
sgliner-ledger Nov 21, 2023
e081b2d
Makefile: Remove useless UI_NANO_SX define
sgliner-ledger Nov 21, 2023
faf0356
ui: remove HAVE_UX_FLOW macros
sgliner-ledger Nov 23, 2023
eb1b852
Clean: remove useless functions
sgliner-ledger Nov 23, 2023
d47c109
monero_io: use functions from the SDK
sgliner-ledger Nov 23, 2023
c49a608
ui: better error handling for ui_menu_any_pubaddr_display
sgliner-ledger Nov 23, 2023
268ee17
misc: minor cleanings
sgliner-ledger Nov 23, 2023
151c6f9
ux: remove useless wrapper
sgliner-ledger Nov 24, 2023
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
185 changes: 40 additions & 145 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#*******************************************************************************
# Ledger Nano S
# (c) 2016-2019 Ledger
#
# Ledger App Monero
# (c) 2023 Ledger SAS.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
Expand All @@ -15,188 +15,83 @@
# limitations under the License.
#*******************************************************************************

TARGET_NAME := TARGET_NANOX

-include Makefile.env
ifeq ($(BOLOS_SDK),)
$(error Environment variable BOLOS_SDK is not set)
endif
include $(BOLOS_SDK)/Makefile.defines

#Monero /44'/128'
APP_LOAD_PARAMS= --path "2147483692/2147483776" --curve secp256k1 $(COMMON_LOAD_PARAMS) --appFlags 0x240
########################################
# Mandatory configuration #
########################################
# Application name
APPNAME = "Monero"

ifeq ($(TARGET_NAME),TARGET_NANOS)
ICONNAME = images/icon_monero.gif
else ifeq ($(TARGET_NAME),TARGET_STAX)
ICONNAME = images/icon_monero_stax.gif
else
ICONNAME = images/icon_monero_nanox.gif
endif
# Application version
APPVERSION_M = 1
APPVERSION_N = 9
APPVERSION_P = 0
APPVERSION = "$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)"

#DEFINES += MONERO_ALPHA
#DEFINES += MONERO_BETA
SPECVERSION = "1.0"

# Application source files
APP_SOURCE_PATH += src

# Application icons following guidelines:
# https://developers.ledger.com/docs/embedded-app/design-requirements/#device-icon
ICON_NANOS = icons/app_monero_16px.gif
ICON_NANOX = icons/app_monero_14px.gif
ICON_NANOSP = icons/app_monero_14px.gif
ICON_STAX = icons/app_monero_32px.gif

APPVERSION_M=1
APPVERSION_N=8
APPVERSION_P=2
# Application allowed derivation curves.
CURVE_APP_LOAD_PARAMS = secp256k1

APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)
SPECVERSION="1.0"
# Application allowed derivation paths.
PATH_APP_LOAD_PARAMS = "44'/128'"

VARIANT_PARAM = COIN
VARIANT_VALUES = monero

ENABLE_BLUETOOTH = 1
ENABLE_NBGL_QRCODE = 1

DEFINES += $(MONERO_CONFIG)
DEFINES += MONERO_VERSION_MAJOR=$(APPVERSION_M) MONERO_VERSION_MINOR=$(APPVERSION_N) MONERO_VERSION_MICRO=$(APPVERSION_P)
DEFINES += MONERO_VERSION=$(APPVERSION)
DEFINES += MONERO_NAME=$(APPNAME)
DEFINES += SPEC_VERSION=$(SPECVERSION)

ifeq ($(TARGET_NAME),TARGET_NANOS)
DEFINES += UI_NANO_S
else ifeq ($(TARGET_NAME),TARGET_STAX)
DEFINES += UI_STAX
DEFINES += NBGL_QRCODE
SDK_SOURCE_PATH += qrcode
else
DEFINES += UI_NANO_X
TARGET_UI := FLOW
endif
DEFINES += SPEC_VERSION=$(SPECVERSION)

#DEFINES += IOCRYPT
# Enable StageNet by default
#DEFINES += MONERO_ALPHA // This will also disable mainnet
#DEFINES += MONERO_BETA

################
# Default rule #
################

all: default
#DEFINES += IOCRYPT

############
# Platform #
############

ifneq ($(NO_CONSENT),)
DEFINES += NO_CONSENT
endif

DEFINES += OS_IO_SEPROXYHAL
DEFINES += HAVE_SPRINTF
DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=4 IO_HID_EP_LENGTH=64 HAVE_USB_APDU
DEFINES += CUSTOM_IO_APDU_BUFFER_SIZE=\(255+5+64\)
DEFINES += HAVE_LEGACY_PID

DEFINES += USB_SEGMENT_SIZE=64
DEFINES += U2F_PROXY_MAGIC=\"MOON\"
DEFINES += HAVE_IO_U2F HAVE_U2F

DEFINES += UNUSED\(x\)=\(void\)x
DEFINES += APPVERSION=\"$(APPVERSION)\"

ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME),TARGET_NANOX TARGET_STAX))
DEFINES += HAVE_BLE BLE_COMMAND_TIMEOUT_MS=2000
DEFINES += HAVE_BLE_APDU # basic ledger apdu transport over BLE
endif

ifeq ($(TARGET_NAME),TARGET_NANOS)
DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128
DEFINES += HAVE_BAGL
else
DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300
ifneq ($(TARGET_NAME),TARGET_STAX)
DEFINES += HAVE_BAGL BAGL_WIDTH=128 BAGL_HEIGHT=64
DEFINES += HAVE_GLO096
DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature
DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX
DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX
DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX
endif
endif

ifeq ($(TARGET_UI),FLOW)
DEFINES += HAVE_UX_FLOW
endif

# Enabling debug PRINTF
DEBUG = 0
sgliner-ledger marked this conversation as resolved.
Show resolved Hide resolved
ifneq ($(DEBUG),0)

ifeq ($(TARGET_NAME),TARGET_NANOS)
DEFINES += HAVE_PRINTF PRINTF=screen_printf
else
DEFINES += HAVE_PRINTF PRINTF=mcu_usb_printf
endif
DEFINES += PLINE="PRINTF(\"FILE:%s..LINE:%d\n\",__FILE__,__LINE__)"
# Debug options
DEFINES += DEBUG_HWDEVICE
DEFINES += BYPASS_COMMITMENT_FOR_TESTS
DEFINES += IODUMMYCRYPT # or IONOCRYPT
# Stagenet network by default
DEFINES += MONERO_BETA
else

DEFINES += PRINTF\(...\)=
DEFINES += PLINE\(...\)=

endif


##############
# Compiler #
##############
ifneq ($(BOLOS_ENV),)
$(info BOLOS_ENV=$(BOLOS_ENV))
CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/
GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/
else
$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH)
endif
ifeq ($(CLANGPATH),)
$(info CLANGPATH is not set: clang will be used from PATH)
endif
ifeq ($(GCCPATH),)
$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH)
endif
CC := $(CLANGPATH)clang

#CFLAGS += -O0 -gdwarf-2 -gstrict-dwarf
CFLAGS += -O3 -Os
#CFLAGS += -fno-jump-tables -fno-lookup-tables -fsave-optimization-record
#$(info $(CFLAGS))

AS := $(GCCPATH)arm-none-eabi-gcc

LD := $(GCCPATH)arm-none-eabi-gcc

#LDFLAGS += -O0 -gdwarf-2 -gstrict-dwarf
LDFLAGS += -O3 -Os
LDLIBS += -lm -lgcc -lc

# import rules to compile glyphs(/pone)
include $(BOLOS_SDK)/Makefile.glyphs

### variables processed by the common makefile.rules of the SDK to grab source files and include dirs
APP_SOURCE_PATH += src
SDK_SOURCE_PATH += lib_stusb lib_stusb_impl lib_u2f

ifeq ($(TARGET_UI),FLOW)
SDK_SOURCE_PATH += lib_ux
endif

ifeq ($(TARGET_NAME),$(filter $(TARGET_NAME),TARGET_NANOX TARGET_STAX))
SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl
endif

load: all
python -m ledgerblue.loadApp $(APP_LOAD_PARAMS)

delete:
python -m ledgerblue.deleteApp $(COMMON_DELETE_PARAMS)

# import generic rules from the user and SDK
-include Makefile.rules
include $(BOLOS_SDK)/Makefile.rules

#add dependency on custom makefile filename
dep/%.d: %.c Makefile
SDK_SOURCE_PATH += lib_u2f

listvariants:
@echo VARIANTS COIN monero
include $(BOLOS_SDK)/Makefile.standard_app
Binary file added icons/app_monero_14px.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added icons/app_monero_16px.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added icons/app_monero_32px.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading