From c977258a2a6cc585baf29b9a8be0301d8e690bb9 Mon Sep 17 00:00:00 2001 From: GroM Date: Thu, 26 Sep 2024 09:19:36 +0200 Subject: [PATCH 1/5] Enable BT on Stax (test) --- ledger_secure_sdk_sys/build.rs | 13 ++++++++++++ ledger_secure_sdk_sys/sdk_flex.h | 4 +++- ledger_secure_sdk_sys/sdk_stax.h | 34 ++++++++++++++++++++----------- ledger_secure_sdk_sys/src/c/src.c | 6 ++++-- 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/ledger_secure_sdk_sys/build.rs b/ledger_secure_sdk_sys/build.rs index 927ae981..b109f923 100644 --- a/ledger_secure_sdk_sys/build.rs +++ b/ledger_secure_sdk_sys/build.rs @@ -716,6 +716,19 @@ fn finalize_stax_configuration(command: &mut cc::Build, bolos_sdk: &Path) { command .target("thumbv8m.main-none-eabi") + .file(bolos_sdk.join("src/ledger_protocol.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_gap_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_gatt_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_hal_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_hci_le.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_l2cap_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/template/osal.c")) + .file(bolos_sdk.join("lib_blewbxx_impl/src/ledger_ble.c")) + .include(bolos_sdk.join("lib_blewbxx/include")) + .include(bolos_sdk.join("lib_blewbxx/core")) + .include(bolos_sdk.join("lib_blewbxx/core/auto")) + .include(bolos_sdk.join("lib_blewbxx/core/template")) + .include(bolos_sdk.join("lib_blewbxx_impl/include")) .include(bolos_sdk.join("target/stax/include/")) .flag("-fropi") .flag("-frwpi") diff --git a/ledger_secure_sdk_sys/sdk_flex.h b/ledger_secure_sdk_sys/sdk_flex.h index 5c81bdc6..75872d8f 100644 --- a/ledger_secure_sdk_sys/sdk_flex.h +++ b/ledger_secure_sdk_sys/sdk_flex.h @@ -19,4 +19,6 @@ #define __IO volatile #define IO_USB_MAX_ENDPOINTS 6 #define IO_SEPROXYHAL_BUFFER_SIZE_B 128 -#define main _start \ No newline at end of file +#define main _start +#define HAVE_BLE +#define HAVE_BLE_APDU \ No newline at end of file diff --git a/ledger_secure_sdk_sys/sdk_stax.h b/ledger_secure_sdk_sys/sdk_stax.h index 3f052ce5..4184389c 100644 --- a/ledger_secure_sdk_sys/sdk_stax.h +++ b/ledger_secure_sdk_sys/sdk_stax.h @@ -1,13 +1,3 @@ -#define ST33K1M5 -#define HAVE_SPRINTF -#define NBGL_QRCODE -#define HAVE_SE_EINK_DISPLAY -#define SCREEN_SIZE_WALLET -#define HAVE_NBGL -#define NBGL_USE_CASE -#define HAVE_SE_TOUCH -#define HAVE_PIEZO_SOUND -#define NBGL_PAGE #define HAVE_LOCAL_APDU_BUFFER #define IO_HID_EP_LENGTH 64 #define USB_SEGMENT_SIZE 64 @@ -17,5 +7,25 @@ #define HAVE_USB_APDU #define __IO volatile #define IO_USB_MAX_ENDPOINTS 6 -#define IO_SEPROXYHAL_BUFFER_SIZE_B 128 -#define main _start \ No newline at end of file +#define IO_SEPROXYHAL_BUFFER_SIZE_B 300 +#define main _start + +#define NBGL_QRCODE + +// from Makefile.defines +#define HAVE_BAGL_FONT_INTER_REGULAR_24PX +#define HAVE_BAGL_FONT_INTER_SEMIBOLD_24PX +#define HAVE_BAGL_FONT_INTER_MEDIUM_32PX +#define HAVE_INAPP_BLE_PAIRING +#define HAVE_NBGL +#define HAVE_PIEZO_SOUND +#define HAVE_SE_TOUCH +#define HAVE_SE_EINK_DISPLAY +#define NBGL_PAGE +#define NBGL_USE_CASE +#define SCREEN_SIZE_WALLET + +#define HAVE_BLE +#define HAVE_BLE_APDU +#define BLE_COMMAND_TIMEOUT_MS 2000 +#define BLE_SEGMENT_SIZE 32 \ No newline at end of file diff --git a/ledger_secure_sdk_sys/src/c/src.c b/ledger_secure_sdk_sys/src/c/src.c index f8a8512b..a62584de 100644 --- a/ledger_secure_sdk_sys/src/c/src.c +++ b/ledger_secure_sdk_sys/src/c/src.c @@ -300,10 +300,12 @@ int c_main(void) { c[2] = 1; c[3] = SEPROXYHAL_TAG_MCU_TYPE_PROTECT; io_seproxyhal_spi_send(c, 4); - #ifdef HAVE_BLE - unsigned int plane = G_io_app.plane_mode; #endif + + #ifdef HAVE_BLE + unsigned int plane = G_io_app.plane_mode; #endif + memset(&G_io_app, 0, sizeof(G_io_app)); #ifdef HAVE_BLE From efa1939e5ca079bda4250d0e197054862962c059 Mon Sep 17 00:00:00 2001 From: GroM Date: Thu, 26 Sep 2024 14:49:15 +0200 Subject: [PATCH 2/5] Update stax target --- ledger_secure_sdk_sys/sdk_stax.h | 1 + ledger_secure_sdk_sys/src/c/src.c | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ledger_secure_sdk_sys/sdk_stax.h b/ledger_secure_sdk_sys/sdk_stax.h index 4184389c..ace4a4b5 100644 --- a/ledger_secure_sdk_sys/sdk_stax.h +++ b/ledger_secure_sdk_sys/sdk_stax.h @@ -1,3 +1,4 @@ +#define HAVE_SPRINTF #define HAVE_LOCAL_APDU_BUFFER #define IO_HID_EP_LENGTH 64 #define USB_SEGMENT_SIZE 64 diff --git a/ledger_secure_sdk_sys/src/c/src.c b/ledger_secure_sdk_sys/src/c/src.c index a62584de..7b92b374 100644 --- a/ledger_secure_sdk_sys/src/c/src.c +++ b/ledger_secure_sdk_sys/src/c/src.c @@ -11,6 +11,7 @@ #include "checks.h" #ifdef HAVE_BLE #include "ledger_ble.h" + bolos_ux_asynch_callback_t G_io_asynch_ux_callback; #endif extern void sample_main(); @@ -302,7 +303,7 @@ int c_main(void) { io_seproxyhal_spi_send(c, 4); #endif - #ifdef HAVE_BLE + #ifdef HAVE_BLE unsigned int plane = G_io_app.plane_mode; #endif @@ -323,15 +324,16 @@ int c_main(void) { #ifdef HAVE_CCID io_usb_ccid_set_card_inserted(1); #endif - + #ifdef HAVE_BLE + memset(&G_io_asynch_ux_callback, 0, sizeof(G_io_asynch_ux_callback)); LEDGER_BLE_init(); #endif #if !defined(HAVE_BOLOS) && defined(HAVE_PENDING_REVIEW_SCREEN) check_audited_app(); #endif // !defined(HAVE_BOLOS) && defined(HAVE_PENDING_REVIEW_SCREEN) - + heap_init(); sample_main(); } From a87eade505b81caad193f0318de420919ba933b9 Mon Sep 17 00:00:00 2001 From: GroM Date: Thu, 26 Sep 2024 16:11:00 +0200 Subject: [PATCH 3/5] Activate BT on Stax OK --- ledger_device_sdk/src/io.rs | 6 +++--- ledger_device_sdk/src/lib.rs | 2 +- ledger_secure_sdk_sys/build.rs | 19 +++++++++++++++++++ ledger_secure_sdk_sys/src/c/src.c | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ledger_device_sdk/src/io.rs b/ledger_device_sdk/src/io.rs index 886bd33d..eee6d000 100644 --- a/ledger_device_sdk/src/io.rs +++ b/ledger_device_sdk/src/io.rs @@ -1,4 +1,4 @@ -#[cfg(target_os = "nanox")] +#[cfg(any(target_os = "nanox", target_os = "stax", target_os = "flex"))] use crate::ble; #[cfg(not(any(target_os = "stax", target_os = "flex")))] use ledger_secure_sdk_sys::buttons::{get_button_event, ButtonEvent, ButtonsState}; @@ -196,7 +196,7 @@ impl Comm { APDU_USB_CCID => { ccid::send(&self.apdu_buffer[..self.tx]); } - #[cfg(target_os = "nanox")] + #[cfg(any(target_os = "nanox", target_os = "stax", target_os = "flex"))] APDU_BLE => { ble::send(&self.apdu_buffer[..self.tx]); } @@ -387,7 +387,7 @@ impl Comm { } seph::Events::CAPDUEvent => seph::handle_capdu_event(&mut self.apdu_buffer, spi_buffer), - #[cfg(target_os = "nanox")] + #[cfg(any(target_os = "nanox", target_os = "stax", target_os = "flex"))] seph::Events::BleReceive => ble::receive(&mut self.apdu_buffer, spi_buffer), seph::Events::TickerEvent => { diff --git a/ledger_device_sdk/src/lib.rs b/ledger_device_sdk/src/lib.rs index 7d76c310..0c14c0f6 100644 --- a/ledger_device_sdk/src/lib.rs +++ b/ledger_device_sdk/src/lib.rs @@ -7,7 +7,7 @@ #![feature(generic_const_exprs)] #![feature(cfg_version)] -#[cfg(target_os = "nanox")] +#[cfg(any(target_os = "nanox", target_os = "stax", target_os = "flex"))] pub mod ble; #[cfg(feature = "ccid")] diff --git a/ledger_secure_sdk_sys/build.rs b/ledger_secure_sdk_sys/build.rs index b109f923..801efe87 100644 --- a/ledger_secure_sdk_sys/build.rs +++ b/ledger_secure_sdk_sys/build.rs @@ -570,6 +570,12 @@ impl SDKBuilder { .to_str() .unwrap(), ) + .header( + self.bolos_sdk + .join("lib_blewbxx_impl/include/ledger_ble.h") + .to_str() + .unwrap(), + ) } _ => (), } @@ -745,6 +751,19 @@ fn finalize_flex_configuration(command: &mut cc::Build, bolos_sdk: &Path) { command .target("thumbv8m.main-none-eabi") + .file(bolos_sdk.join("src/ledger_protocol.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_gap_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_gatt_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_hal_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_hci_le.c")) + .file(bolos_sdk.join("lib_blewbxx/core/auto/ble_l2cap_aci.c")) + .file(bolos_sdk.join("lib_blewbxx/core/template/osal.c")) + .file(bolos_sdk.join("lib_blewbxx_impl/src/ledger_ble.c")) + .include(bolos_sdk.join("lib_blewbxx/include")) + .include(bolos_sdk.join("lib_blewbxx/core")) + .include(bolos_sdk.join("lib_blewbxx/core/auto")) + .include(bolos_sdk.join("lib_blewbxx/core/template")) + .include(bolos_sdk.join("lib_blewbxx_impl/include")) .include(bolos_sdk.join("target/flex/include/")) .flag("-fropi") .flag("-frwpi") diff --git a/ledger_secure_sdk_sys/src/c/src.c b/ledger_secure_sdk_sys/src/c/src.c index 7b92b374..5542e4d1 100644 --- a/ledger_secure_sdk_sys/src/c/src.c +++ b/ledger_secure_sdk_sys/src/c/src.c @@ -327,7 +327,7 @@ int c_main(void) { #ifdef HAVE_BLE memset(&G_io_asynch_ux_callback, 0, sizeof(G_io_asynch_ux_callback)); - LEDGER_BLE_init(); + BLE_power(1, NULL); #endif #if !defined(HAVE_BOLOS) && defined(HAVE_PENDING_REVIEW_SCREEN) From 7e67c01d418a68124b3c5d1b3ec2ad6a6d84937b Mon Sep 17 00:00:00 2001 From: GroM Date: Thu, 26 Sep 2024 16:33:25 +0200 Subject: [PATCH 4/5] Activate BT on Flex OK --- ledger_secure_sdk_sys/sdk_flex.h | 33 ++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/ledger_secure_sdk_sys/sdk_flex.h b/ledger_secure_sdk_sys/sdk_flex.h index 75872d8f..b3350ab9 100644 --- a/ledger_secure_sdk_sys/sdk_flex.h +++ b/ledger_secure_sdk_sys/sdk_flex.h @@ -1,14 +1,4 @@ -#define ST33K1M5 -#define HAVE_DISPLAY_FAST_MODE #define HAVE_SPRINTF -#define NBGL_QRCODE -#define HAVE_SE_EINK_DISPLAY -#define SCREEN_SIZE_WALLET -#define HAVE_NBGL -#define NBGL_USE_CASE -#define HAVE_SE_TOUCH -#define HAVE_PIEZO_SOUND -#define NBGL_PAGE #define HAVE_LOCAL_APDU_BUFFER #define IO_HID_EP_LENGTH 64 #define USB_SEGMENT_SIZE 64 @@ -18,7 +8,26 @@ #define HAVE_USB_APDU #define __IO volatile #define IO_USB_MAX_ENDPOINTS 6 -#define IO_SEPROXYHAL_BUFFER_SIZE_B 128 +#define IO_SEPROXYHAL_BUFFER_SIZE_B 300 #define main _start + +#define NBGL_QRCODE + +// from Makefile.defines +#define HAVE_BAGL_FONT_INTER_REGULAR_28PX +#define HAVE_BAGL_FONT_INTER_SEMIBOLD_28PX +#define HAVE_BAGL_FONT_INTER_MEDIUM_36PX +#define HAVE_INAPP_BLE_PAIRING +#define HAVE_NBGL +#define HAVE_PIEZO_SOUND +#define HAVE_SE_TOUCH +#define HAVE_SE_EINK_DISPLAY +#define NBGL_PAGE +#define NBGL_USE_CASE +#define SCREEN_SIZE_WALLET +#define HAVE_FAST_HOLD_TO_APPROVE + #define HAVE_BLE -#define HAVE_BLE_APDU \ No newline at end of file +#define HAVE_BLE_APDU +#define BLE_COMMAND_TIMEOUT_MS 2000 +#define BLE_SEGMENT_SIZE 32 \ No newline at end of file From 159faa6e4326fa10eaa1f9a4aa23a6a9ac80433b Mon Sep 17 00:00:00 2001 From: GroM Date: Thu, 26 Sep 2024 16:36:08 +0200 Subject: [PATCH 5/5] Bump versions --- Cargo.lock | 4 ++-- ledger_device_sdk/Cargo.toml | 4 ++-- ledger_secure_sdk_sys/Cargo.toml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bd426c72..10339338 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -474,7 +474,7 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "ledger_device_sdk" -version = "1.16.1" +version = "1.17.0" dependencies = [ "const-zero", "include_gif", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "ledger_secure_sdk_sys" -version = "1.4.7" +version = "1.5.0" dependencies = [ "bindgen", "cc", diff --git a/ledger_device_sdk/Cargo.toml b/ledger_device_sdk/Cargo.toml index 9d064d1a..c5a4e583 100644 --- a/ledger_device_sdk/Cargo.toml +++ b/ledger_device_sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ledger_device_sdk" -version = "1.16.1" +version = "1.17.0" authors = ["yhql", "yogh333", "agrojean-ledger", "kingofpayne"] edition = "2021" license.workspace = true @@ -21,7 +21,7 @@ rand_core = { version = "0.6.3", default_features = false } zeroize = { version = "1.6.0", default_features = false } numtoa = "0.2.4" const-zero = "0.1.1" -ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.4.7" } +ledger_secure_sdk_sys = { path = "../ledger_secure_sdk_sys", version = "1.5.0" } [features] speculos = [] diff --git a/ledger_secure_sdk_sys/Cargo.toml b/ledger_secure_sdk_sys/Cargo.toml index 92e4f86c..c9315344 100644 --- a/ledger_secure_sdk_sys/Cargo.toml +++ b/ledger_secure_sdk_sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ledger_secure_sdk_sys" -version = "1.4.7" +version = "1.5.0" authors = ["yhql", "agrojean-ledger"] edition = "2021" license.workspace = true