From 72b55db77d1f95d126206d49033c19caaf5d4112 Mon Sep 17 00:00:00 2001 From: Dmitriy Korniychuk Date: Wed, 13 Mar 2024 16:07:09 +0200 Subject: [PATCH] Add Cosanta /DASH / PirateCash --- README.md | 3 +++ flipbip.h | 9 ++++++++ scenes/flipbip_scene_menu.c | 42 +++++++++++++++++++++++++++++++++++++ views/flipbip_scene_1.c | 10 +++++++-- 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8dc5b05..2780adb 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,11 @@ The application will be compiled and copied onto your device - BIP39 mnemonic to BIP39 seed generation - Hierarchical Deterministic (HD) wallet generation from seed - Generation of offline `m/44'/0'/0'/0` BTC wallet + - Generation of offline `m/44'/770'/0'/0` COSA wallet - Generation of offline `m/44'/60'/0'/0` ETH wallet (coded from the $SPORK Castle of ETHDenver 2023!) + - Generation of offline `m/44'/5'/0'/0` DASH wallet - Generation of offline `m/44'/3'/0'/0` DOGE wallet + - Generation of offline `m/44'/770'/0'/0` PIRATE wallet - Generation of offline `m/44'/133'/0'/0` ZEC transparent address wallet (by @wh00hw) - Similar features to: https://iancoleman.io/bip39/ - Saving wallets to SD card diff --git a/flipbip.h b/flipbip.h index 573ef05..3e8263f 100644 --- a/flipbip.h +++ b/flipbip.h @@ -19,8 +19,11 @@ #define COIN_BTC 0 #define COIN_DOGE 3 +#define COIN_DASH 5 #define COIN_ETH 60 #define COIN_ZEC 133 +#define COIN_PIRATE 660 +#define COIN_COSA 770 #define TEXT_BUFFER_SIZE 256 @@ -75,8 +78,11 @@ typedef enum { typedef enum { FlipBipCoinBTC0, + FlipBipCoinCOSA3, FlipBipCoinETH60, + FlipBipCoinDASH3, FlipBipCoinDOGE3, + FlipBipCoinPIRATE3, FlipBipCoinZEC133, } FlipBipCoin; @@ -96,8 +102,11 @@ typedef enum { typedef enum { SubmenuIndexScene1BTC = 10, + SubmenuIndexScene1COSA, SubmenuIndexScene1ETH, + SubmenuIndexScene1DASH, SubmenuIndexScene1DOGE, + SubmenuIndexScene1PIRATE, SubmenuIndexScene1ZEC, SubmenuIndexScene1New, SubmenuIndexScene1Renew, diff --git a/scenes/flipbip_scene_menu.c b/scenes/flipbip_scene_menu.c index 53fb2a9..661d8ef 100644 --- a/scenes/flipbip_scene_menu.c +++ b/scenes/flipbip_scene_menu.c @@ -28,18 +28,36 @@ void flipbip_scene_menu_on_enter(void* context) { SubmenuIndexScene1BTC, flipbip_scene_menu_submenu_callback, app); + submenu_add_item( + app->submenu, + "View COSA wallet", + SubmenuIndexScene1COSA, + flipbip_scene_menu_submenu_callback, + app); submenu_add_item( app->submenu, "View ETH wallet", SubmenuIndexScene1ETH, flipbip_scene_menu_submenu_callback, app); + submenu_add_item( + app->submenu, + "View DASH wallet", + SubmenuIndexScene1DASH, + flipbip_scene_menu_submenu_callback, + app); submenu_add_item( app->submenu, "View DOGE wallet", SubmenuIndexScene1DOGE, flipbip_scene_menu_submenu_callback, app); + submenu_add_item( + app->submenu, + "View PIRATE wallet", + SubmenuIndexScene1PIRATE, + flipbip_scene_menu_submenu_callback, + app); submenu_add_item( app->submenu, "View ZEC (t-addr) wallet", @@ -93,6 +111,14 @@ bool flipbip_scene_menu_on_event(void* context, SceneManagerEvent event) { app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1BTC); scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1); return true; + } else if(event.event == SubmenuIndexScene1COSA) { + app->overwrite_saved_seed = 0; + app->import_from_mnemonic = 0; + app->bip44_coin = FlipBipCoinCOSA3; + scene_manager_set_scene_state( + app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1COSA); + scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1); + return true; } else if(event.event == SubmenuIndexScene1ETH) { app->overwrite_saved_seed = 0; app->import_from_mnemonic = 0; @@ -101,6 +127,14 @@ bool flipbip_scene_menu_on_event(void* context, SceneManagerEvent event) { app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1ETH); scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1); return true; + } else if(event.event == SubmenuIndexScene1DASH) { + app->overwrite_saved_seed = 0; + app->import_from_mnemonic = 0; + app->bip44_coin = FlipBipCoinDASH3; + scene_manager_set_scene_state( + app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1DASH); + scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1); + return true; } else if(event.event == SubmenuIndexScene1DOGE) { app->overwrite_saved_seed = 0; app->import_from_mnemonic = 0; @@ -109,6 +143,14 @@ bool flipbip_scene_menu_on_event(void* context, SceneManagerEvent event) { app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1DOGE); scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1); return true; + } else if(event.event == SubmenuIndexScene1PIRATE) { + app->overwrite_saved_seed = 0; + app->import_from_mnemonic = 0; + app->bip44_coin = FlipBipCoinPIRATE3; + scene_manager_set_scene_state( + app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1PIRATE); + scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1); + return true; } else if(event.event == SubmenuIndexScene1ZEC) { app->overwrite_saved_seed = 0; app->import_from_mnemonic = 0; diff --git a/views/flipbip_scene_1.c b/views/flipbip_scene_1.c index d3a5ee0..ff3d355 100644 --- a/views/flipbip_scene_1.c +++ b/views/flipbip_scene_1.c @@ -52,18 +52,24 @@ const char* TEXT_INFO = "-Scroll pages with up/down-" #define TEXT_QRFILE_EXT ".qrcode" // 7 chars + 1 null // bip44_coin, xprv_version, xpub_version, addr_version, wif_version, addr_format -const uint32_t COIN_INFO_ARRAY[4][6] = { +const uint32_t COIN_INFO_ARRAY[7][6] = { {COIN_BTC, 0x0488ade4, 0x0488b21e, 0x00, 0x80, FlipBipCoinBTC0}, + {COIN_COSA, 0x0488ade4, 0x0488b21e, 0x1c, 0xcc, FlipBipCoinBTC0}, {COIN_ETH, 0x0488ade4, 0x0488b21e, 0x00, 0x80, FlipBipCoinETH60}, + {COIN_DASH, 0x0488ade4, 0x0488b21e, 0x4c, 0xcc, FlipBipCoinBTC0}, {COIN_DOGE, 0x02fac398, 0x02facafd, 0x1e, 0x9e, FlipBipCoinBTC0}, + {COIN_PIRATE, 0x0488ade4, 0x0488b21e, 0x37, 0xcb, FlipBipCoinBTC0}, {COIN_ZEC, 0x0488ade4, 0x0488b21e, 0x1cb8, 0x80, FlipBipCoinZEC133}, }; // coin_name, derivation_path -const char* COIN_TEXT_ARRAY[4][3] = { +const char* COIN_TEXT_ARRAY[7][3] = { {"BTC", "m/44'/0'/0'/0", "bitcoin:"}, + {"COSA", "m/44'/770'/0'/0", "cosanta:"}, {"ETH", "m/44'/60'/0'/0", "ethereum:"}, + {"DASH", "m/44'/5'/0'/0", "dash:"}, {"DOGE", "m/44'/3'/0'/0", "dogecoin:"}, + {"PIRATE", "m/44'/660'/0'/0", "piratecash:"}, {"ZEC", "m/44'/133'/0'/0", "zcash:"}}; struct FlipBipScene1 {