From 9293b49fe87ab72435accf8ee0b39af30a60b324 Mon Sep 17 00:00:00 2001 From: Lucas PASCAL Date: Mon, 19 Feb 2024 10:34:39 +0100 Subject: [PATCH] [clean] Attempt to reduce scattering and unclearness --- src/apdu_handlers/dump_metadatas.c | 3 ++- src/apdu_handlers/get_app_config.c | 6 +++--- src/apdu_handlers/load_metadatas.c | 5 +++-- src/app_main.c | 28 +++++++++++++--------------- src/dispatcher.c | 9 +++++---- src/error.c | 18 ++++++++++++------ src/error.h | 19 +++++++++++++++++++ src/globals.h | 11 ++--------- src/metadata.c | 1 + src/metadata.h | 1 + src/password_typing.c | 1 + src/password_typing.h | 6 ++++-- src/password_ui_flows.c | 20 ++++++++++---------- src/sw.h | 10 ---------- src/tests/tests.c | 6 ++++-- src/types.h | 8 -------- 16 files changed, 80 insertions(+), 72 deletions(-) delete mode 100644 src/sw.h diff --git a/src/apdu_handlers/dump_metadatas.c b/src/apdu_handlers/dump_metadatas.c index c85e0a4..d7ee45b 100644 --- a/src/apdu_handlers/dump_metadatas.c +++ b/src/apdu_handlers/dump_metadatas.c @@ -1,9 +1,10 @@ #include "dump_metadatas.h" +#include "error.h" #include "globals.h" #include "io.h" -#include "sw.h" #include "password_ui_flows.h" + int dump_metadatas() { if (app_state.user_approval == false) { app_state.bytes_transferred = 0; diff --git a/src/apdu_handlers/get_app_config.c b/src/apdu_handlers/get_app_config.c index 34363e6..a81243d 100644 --- a/src/apdu_handlers/get_app_config.c +++ b/src/apdu_handlers/get_app_config.c @@ -21,11 +21,11 @@ #include #include -#include "../password_ui_flows.h" +#include "error.h" #include "get_app_config.h" -#include "sw.h" -#include "types.h" #include "globals.h" +#include "password_ui_flows.h" +#include "types.h" int get_app_config(uint8_t p1, uint8_t p2, __attribute__((unused)) const buf_t* input) { if (p1 != 0 || p2 != 0) { diff --git a/src/apdu_handlers/load_metadatas.c b/src/apdu_handlers/load_metadatas.c index c3316da..c10b71f 100644 --- a/src/apdu_handlers/load_metadatas.c +++ b/src/apdu_handlers/load_metadatas.c @@ -1,11 +1,12 @@ #include -#include "load_metadatas.h" +#include "error.h" #include "globals.h" -#include "sw.h" +#include "load_metadatas.h" #include "metadata.h" #include "password_ui_flows.h" + int load_metadatas(uint8_t p1, uint8_t p2, const buf_t *input) { if ((p1 != 0 && p1 != P1_LAST_CHUNK) || p2 != 0) { return io_send_sw(SW_WRONG_P1P2); diff --git a/src/app_main.c b/src/app_main.c index 43e0c3a..c24896b 100644 --- a/src/app_main.c +++ b/src/app_main.c @@ -19,37 +19,35 @@ #include #include #include +#include #include #include +#include +#include +#include +#include #include "glyphs.h" - -#include "ctr_drbg.h" -#include "hid_mapping.h" -#include "password_generation.h" -#include "usbd_hid_impl.h" -#include "sw.h" - -#include "password_ui_flows.h" -#include "password_typing.h" +#include "dispatcher.h" +#include "error.h" #include "globals.h" #include "metadata.h" -#include "dispatcher.h" +#include "password_ui_flows.h" +#include "password_typing.h" + const internalStorage_t N_storage_real; app_state_t app_state; volatile unsigned int G_led_status; -void app_init() { - init_storage(); - memset(&app_state, 0, sizeof(app_state)); -} void app_main() { int input_len = 0; - app_init(); + init_storage(); + memset(&app_state, 0, sizeof(app_state)); + ui_idle(); app_state.io.output_len = 0; diff --git a/src/dispatcher.c b/src/dispatcher.c index 3a82d63..09ee698 100644 --- a/src/dispatcher.c +++ b/src/dispatcher.c @@ -16,16 +16,17 @@ ********************************************************************************/ #include +#include #include -#include "dispatcher.h" -#include "types.h" -#include "globals.h" -#include "sw.h" #include "apdu_handlers/dump_metadatas.h" #include "apdu_handlers/load_metadatas.h" #include "apdu_handlers/get_app_config.h" +#include "dispatcher.h" +#include "error.h" +#include "globals.h" #include "tests/tests.h" +#include "types.h" int dispatch() { if (G_io_apdu_buffer[OFFSET_CLA] != CLA) { diff --git a/src/error.c b/src/error.c index 6f4b0a3..d395b3c 100644 --- a/src/error.c +++ b/src/error.c @@ -1,14 +1,20 @@ #include "error.h" + static const message_pair_t ERR_MESSAGES[5] = { - {"", ""}, // OK - {"Write Error", "Database is full"}, // ERR_NO_MORE_SPACE_AVAILABLE - {"Write Error", - "Database should be repaired, please contact Ledger Support"}, // ERR_CORRUPTED_METADATA - {"Erase Error", "Database already empty"}, // ERR_NO_METADATA - {"Write Error", "Entry is too big"} // ERR_METADATA_ENTRY_TOO_BIG + // OK + {}, + // ERR_NO_MORE_SPACE_AVAILABLE + {"Write Error", "Database is full"}, + // ERR_CORRUPTED_METADATA + {"Write Error", "Database should be repaired, please contact Ledger Support"}, + // ERR_NO_METADATA + {"Erase Error", "Database already empty"}, + // ERR_METADATA_ENTRY_TOO_BIG + {"Write Error", "Entry is too big"} }; + message_pair_t get_error(const error_type_t error) { return ERR_MESSAGES[error]; } diff --git a/src/error.h b/src/error.h index 512c1b3..ac2fb2a 100644 --- a/src/error.h +++ b/src/error.h @@ -2,4 +2,23 @@ #include "types.h" +#define SW_OK 0x9000 +#define SW_CONDITIONS_OF_USE_NOT_SATISFIED 0x6985 +#define SW_WRONG_P1P2 0x6A86 +#define SW_WRONG_DATA_LENGTH 0x6A87 +#define SW_INS_NOT_SUPPORTED 0x6D00 +#define SW_CLA_NOT_SUPPORTED 0x6E00 +#define SW_APPNAME_TOO_LONG 0xB000 +#define SW_METADATAS_PARSING_ERROR 0x6F10 + + +typedef enum error_type_e { + OK = 0, + ERR_NO_MORE_SPACE_AVAILABLE = 1, + ERR_CORRUPTED_METADATA = 2, + ERR_NO_METADATA = 3, + ERR_METADATA_ENTRY_TOO_BIG = 4 +} error_type_t; + + message_pair_t get_error(const error_type_t error); diff --git a/src/globals.h b/src/globals.h index a8f9c18..6f5d37a 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1,20 +1,13 @@ #pragma once -#include "os.h" -#include "os_io_seproxyhal.h" +#include +#include #include "types.h" extern const internalStorage_t N_storage_real; extern app_state_t app_state; extern volatile unsigned int G_led_status; -#define OFFSET_CLA 0 -#define OFFSET_INS 1 -#define OFFSET_P1 2 -#define OFFSET_P2 3 -#define OFFSET_LC 4 -#define OFFSET_CDATA 5 - #define CLA 0xE0 #define N_storage (*(volatile internalStorage_t*) PIC(&N_storage_real)) diff --git a/src/metadata.c b/src/metadata.c index b32e044..4da38e7 100644 --- a/src/metadata.c +++ b/src/metadata.c @@ -3,6 +3,7 @@ #include "metadata.h" #include "globals.h" + error_type_t write_metadata(uint8_t *data, uint8_t dataSize) { if (dataSize > MAX_METANAME) { dataSize = MAX_METANAME; diff --git a/src/metadata.h b/src/metadata.h index 4f36fd7..a128e8c 100644 --- a/src/metadata.h +++ b/src/metadata.h @@ -2,6 +2,7 @@ #include +#include "error.h" #include "types.h" #define METADATA_PTR(offset) (&N_storage.metadatas[offset]) diff --git a/src/password_typing.c b/src/password_typing.c index 13936d8..13e4840 100644 --- a/src/password_typing.c +++ b/src/password_typing.c @@ -8,6 +8,7 @@ #include "password_typing.h" #include "globals.h" + #define REPORT_SIZE 8 static const uint8_t EMPTY_REPORT[REPORT_SIZE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; static const uint8_t SPACE_REPORT[REPORT_SIZE] = {0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/src/password_typing.h b/src/password_typing.h index a0318d9..fa090c9 100644 --- a/src/password_typing.h +++ b/src/password_typing.h @@ -1,7 +1,9 @@ #pragma once -#include "stdint.h" -#include "password_generation.h" +#include + +#include + bool type_password(uint8_t *data, uint32_t dataSize, diff --git a/src/password_ui_flows.c b/src/password_ui_flows.c index 26a63e5..c1b3eab 100644 --- a/src/password_ui_flows.c +++ b/src/password_ui_flows.c @@ -1,18 +1,17 @@ #include -#include -#include +#include #include +#include #include +#include "dispatcher.h" #include "error.h" +#include "globals.h" +#include "metadata.h" #include "password_ui_flows.h" #include "password.h" -#include "globals.h" #include "password_typing.h" -#include "metadata.h" -#include "dispatcher.h" -#include "sw.h" #define LINE_1_SIZE 16 char line_buffer_1[LINE_1_SIZE]; @@ -89,7 +88,7 @@ static void select_password_and_apply_cb(); static void type_password_cb(const size_t offset); static void show_password_cb(const size_t offset); static void reset_password_cb(const size_t offset); -static void ui_error(message_pair_t err); +static void ui_error(error_type_t error); // clang-format off UX_STEP_INIT( @@ -197,7 +196,7 @@ static void reset_password_cb(const size_t offset) { PRINTF("reset_password_cb\n"); error_type_t err = delete_password_at_offset(offset); if (err != OK) { - ui_error(get_error(err)); + ui_error(err); return; } ui_idle(); @@ -329,7 +328,7 @@ static void create_password_entry() { error_type_t err = create_new_password(G_keyboard_ctx.words_buffer, strlen(G_keyboard_ctx.words_buffer)); if (err != OK) { - ui_error(get_error(err)); + ui_error(err); return; } ui_idle(); @@ -374,7 +373,8 @@ bnnn_paging, UX_FLOW(err_corrupted_memory_flow, &err_corrupted_memory_step, &generic_cancel_step); -static void ui_error(message_pair_t err) { +static void ui_error(error_type_t error) { + message_pair_t err = get_error(error); strlcpy(line_buffer_1, (char*) PIC(err.first), strlen(err.first) + 1); strlcpy(line_buffer_2, (char*) PIC(err.second), strlen(err.second) + 1); ux_flow_init(0, err_corrupted_memory_flow, NULL); diff --git a/src/sw.h b/src/sw.h deleted file mode 100644 index eb84b62..0000000 --- a/src/sw.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#define SW_OK 0x9000 -#define SW_CONDITIONS_OF_USE_NOT_SATISFIED 0x6985 -#define SW_WRONG_P1P2 0x6A86 -#define SW_WRONG_DATA_LENGTH 0x6A87 -#define SW_INS_NOT_SUPPORTED 0x6D00 -#define SW_CLA_NOT_SUPPORTED 0x6E00 -#define SW_APPNAME_TOO_LONG 0xB000 -#define SW_METADATAS_PARSING_ERROR 0x6F10 diff --git a/src/tests/tests.c b/src/tests/tests.c index 4ccad9d..bf15fad 100644 --- a/src/tests/tests.c +++ b/src/tests/tests.c @@ -1,7 +1,9 @@ #include -#include "tests.h" -#include "sw.h" + +#include "error.h" #include "password_typing.h" +#include "tests.h" + /* Takes a metadata as an input (charset + seed) and returns a 20 char password*/ int test_generate_password(const buf_t *input) { diff --git a/src/types.h b/src/types.h index 18898ee..e8ff9c2 100644 --- a/src/types.h +++ b/src/types.h @@ -49,11 +49,3 @@ typedef struct message_pair_s { const char* first; const char* second; } message_pair_t; - -typedef enum error_type_e { - OK = 0, - ERR_NO_MORE_SPACE_AVAILABLE = 1, - ERR_CORRUPTED_METADATA = 2, - ERR_NO_METADATA = 3, - ERR_METADATA_ENTRY_TOO_BIG = 4 -} error_type_t;