From 105dc21f19a3b3ebd64ec75f1295ec6825f387e3 Mon Sep 17 00:00:00 2001 From: Z4karia <92750334+Z4karia@users.noreply.github.com> Date: Fri, 12 Apr 2024 13:56:02 +0000 Subject: [PATCH] Remove chain configuration handling --- app/src/apdu_handler.c | 5 ++--- app/src/chain_config.c | 29 +---------------------------- app/src/chain_config.h | 2 +- 3 files changed, 4 insertions(+), 32 deletions(-) diff --git a/app/src/apdu_handler.c b/app/src/apdu_handler.c index a78f56ca..b75983e8 100644 --- a/app/src/apdu_handler.c +++ b/app/src/apdu_handler.c @@ -113,8 +113,7 @@ static void extractHDPath_HRP(uint32_t rx, uint32_t offset) { // Check if HRP was sent if ((rx - offset) > sizeof(uint32_t) * HDPATH_LEN_DEFAULT) { - uint8_t hrp_bech32_len = extractHRP(rx, offset + sizeof(uint32_t) * HDPATH_LEN_DEFAULT); - encoding = checkChainConfig(hdPath[1], bech32_hrp, hrp_bech32_len); + encoding = checkChainConfig(hdPath[1]); if (encoding == UNSUPPORTED) { ZEMU_LOGF(50, "Chain config not supported for: %s\n", bech32_hrp) THROW(APDU_CODE_COMMAND_NOT_ALLOWED); @@ -160,7 +159,7 @@ __Z_INLINE void handleGetAddrSecp256K1(volatile uint32_t *flags, volatile uint32 extractHDPath(rx, OFFSET_DATA + 1 + len); // Verify encoding - encoding = checkChainConfig(hdPath[1], bech32_hrp, bech32_hrp_len); + encoding = checkChainConfig(hdPath[1]); if (encoding == UNSUPPORTED) { ZEMU_LOGF(50, "Chain config not supported for: %s\n", bech32_hrp) THROW(APDU_CODE_COMMAND_NOT_ALLOWED); diff --git a/app/src/chain_config.c b/app/src/chain_config.c index 8ffac9cf..34b6d0ff 100644 --- a/app/src/chain_config.c +++ b/app/src/chain_config.c @@ -16,37 +16,10 @@ #include "chain_config.h" #include -typedef struct { - const uint32_t path; - const char *hrp; - const address_encoding_e encoding; -} chain_config_t; - -// To enable custom config for a new chain, just add a new entry in this array with path, hrp and encoding -static const chain_config_t chainConfig[] = { - // {118, cosmos, BECH32_COSMOS}, - {60, "inj", BECH32_ETH}, - {60, "evmos", BECH32_ETH} -}; - -static const uint32_t chainConfigLen = sizeof(chainConfig) / sizeof(chainConfig[0]); - -address_encoding_e checkChainConfig(uint32_t path, const char* hrp, uint8_t hrpLen) { +address_encoding_e checkChainConfig(uint32_t path) { // Always allowed for 118 (default Cosmos) if (path == HDPATH_1_DEFAULT) { return BECH32_COSMOS; } - - // Check special cases - for (uint32_t i = 0; i < chainConfigLen; i++) { - if (path == (0x80000000u | chainConfig[i].path)) { - const char* hrpPtr = (const char *) PIC(chainConfig[i].hrp); - const uint16_t hrpPtrLen = strlen(hrpPtr); - if (hrpPtrLen == hrpLen && memcmp(hrpPtr, hrp, hrpLen) == 0) { - return chainConfig[i].encoding; - } - } - } - return UNSUPPORTED; } diff --git a/app/src/chain_config.h b/app/src/chain_config.h index 3c0409b7..81382220 100644 --- a/app/src/chain_config.h +++ b/app/src/chain_config.h @@ -23,7 +23,7 @@ extern "C" { #include #include "coin.h" -address_encoding_e checkChainConfig(uint32_t path, const char* hrp, uint8_t hrpLen); +address_encoding_e checkChainConfig(uint32_t path); #ifdef __cplusplus }