sign_tx: add sign_utils.h to declare the types and functions used by signing
What changed, and why it matters
This commit is a straightforward code cleanup: it moves type and function declarations that were scattered across several files into a single new header file called sign_utils.h. There is no change to what the code actually does, only to how the source files are organized. It does not fix or introduce any security issue.
No security action needed. This is a refactoring commit; review as normal code-quality change.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change extracts shared declarations (TxType_t enum, output_info_t, asset_summary_t structs, and signing-related function prototypes) from main/ui.h and inline forward declarations in main/process/sign_tx.c and main/process/sign_psbt.c into a new main/process/sign_utils.h. It also adds a struct tag (_asset_info) in main/assets.h and corrects forward declarations in main/ui/sign_tx.h to use typedef names instead of struct tags. No logic, behavior, or data handling is altered.
Changed components
main/assets.hmain/process/sign_psbt.cmain/process/sign_tx.cmain/process/sign_utils.cmain/process/sign_utils.hmain/ui.hmain/ui/sign_tx.cmain/ui/sign_tx.hInspect captured patch +56 / −48
diff --git a/main/assets.h b/main/assets.h
index b8fe3c7..7f7a402 100644
--- a/main/assets.h
+++ b/main/assets.h
@@ -5,7 +5,7 @@
#include "utils/network.h"
// NOTE: strings here may not be nul-terminated as may directly reference message fields
-typedef struct {
+typedef struct _asset_info {
const char* asset_id;
const char* ticker;
const char* issuer_domain;
diff --git a/main/process/sign_psbt.c b/main/process/sign_psbt.c
index 2039b70..eb94bf4 100644
--- a/main/process/sign_psbt.c
+++ b/main/process/sign_psbt.c
@@ -25,13 +25,7 @@
#include <wally_psbt_members.h>
#include <wally_script.h>
-#include "process_utils.h"
-
-bool show_btc_fee_confirmation_activity(network_t network_id, const struct wally_tx* tx, const output_info_t* outinfo,
- script_flavour_t aggregate_inputs_scripts_flavour, uint64_t input_amount, uint64_t output_amount);
-bool show_elements_fee_confirmation_activity(network_t network_id, const struct wally_tx* tx,
- const output_info_t* outinfo, script_flavour_t aggregate_inputs_scripts_flavour, uint64_t fees, TxType_t txtype,
- bool is_partial);
+#include "sign_utils.h"
// From https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki
static const uint8_t PSBT_MAGIC_PREFIX[5] = { 0x70, 0x73, 0x62, 0x74, 0xFF }; // 'psbt' + 0xff
diff --git a/main/process/sign_tx.c b/main/process/sign_tx.c
index ea96e2b..294d67d 100644
--- a/main/process/sign_tx.c
+++ b/main/process/sign_tx.c
@@ -21,27 +21,7 @@
#include <wally_map.h>
#include <wally_script.h>
-#include "process_utils.h"
-
-bool rpc_get_trusted_commitments(
- jade_process_t* process, const CborValue* value, const struct wally_tx* tx, commitment_t** data);
-TxType_t rpc_get_additional_info(jade_process_t* process, CborValue* params, const struct wally_tx* tx,
- TxType_t* txtype, bool* is_partial, asset_summary_t** in_sums, size_t* num_in_sums, asset_summary_t** out_sums,
- size_t* num_out_sums);
-bool validate_elements_outputs(jade_process_t* process, const network_t network_id, const struct wally_tx* tx,
- const TxType_t txtype, commitment_t* commitments, output_info_t* output_info, asset_summary_t* in_sums,
- const size_t num_in_sums, asset_summary_t* out_sums, const size_t num_out_sums, uint64_t* fees);
-bool get_commitment_data(CborValue* item, commitment_t* commitment);
-bool verify_commitment_consistent(const commitment_t* commitments, const char** errmsg);
-bool asset_summary_update(asset_summary_t* sums, const size_t num_sums, const uint8_t* asset_id,
- const size_t asset_id_len, const uint64_t value);
-bool asset_summary_validate(asset_summary_t* sums, const size_t num_sums);
-
-bool show_btc_fee_confirmation_activity(network_t network_id, const struct wally_tx* tx, const output_info_t* outinfo,
- script_flavour_t aggregate_inputs_scripts_flavour, uint64_t input_amount, uint64_t output_amount);
-bool show_elements_fee_confirmation_activity(network_t network_id, const struct wally_tx* tx,
- const output_info_t* outinfo, script_flavour_t aggregate_inputs_scripts_flavour, uint64_t fees, TxType_t txtype,
- bool is_partial);
+#include "sign_utils.h"
struct wally_tx* rpc_get_signing_tx(
jade_process_t* process, const CborValue* params, const network_t network_id, const bool for_liquid)
diff --git a/main/process/sign_utils.c b/main/process/sign_utils.c
index 1cf2f50..5f2ac4d 100644
--- a/main/process/sign_utils.c
+++ b/main/process/sign_utils.c
@@ -1,4 +1,5 @@
#ifndef AMALGAMATED_BUILD
+#include "sign_utils.h"
#include "../jade_assert.h"
#include "../jade_wally_verify.h"
#include "../ui/sign_tx.h"
diff --git a/main/process/sign_utils.h b/main/process/sign_utils.h
new file mode 100644
index 0000000..01f026e
--- /dev/null
+++ b/main/process/sign_utils.h
@@ -0,0 +1,48 @@
+#ifndef SIGN_UTILS_H_
+#define SIGN_UTILS_H_
+
+#include "process_utils.h"
+
+typedef enum { TXTYPE_SEND_PAYMENT, TXTYPE_SWAP } TxType_t;
+
+typedef struct _output_info {
+ char message[128];
+ uint8_t blinding_key[33];
+ uint8_t asset_id[32];
+ uint64_t value;
+ uint8_t flags;
+} output_info_t;
+
+typedef struct _asset_summary {
+ uint8_t asset_id[32];
+ uint64_t value;
+ uint64_t validated_value;
+} asset_summary_t;
+
+bool rpc_get_trusted_commitments(
+ jade_process_t* process, const CborValue* value, const struct wally_tx* tx, commitment_t** data);
+
+TxType_t rpc_get_additional_info(jade_process_t* process, CborValue* params, const struct wally_tx* tx,
+ TxType_t* txtype, bool* is_partial, asset_summary_t** in_sums, size_t* num_in_sums, asset_summary_t** out_sums,
+ size_t* num_out_sums);
+
+bool get_commitment_data(CborValue* item, commitment_t* commitment);
+bool verify_commitment_consistent(const commitment_t* commitments, const char** errmsg);
+
+bool asset_summary_update(
+ asset_summary_t* sums, size_t num_sums, const uint8_t* asset_id, size_t asset_id_len, uint64_t value);
+
+bool asset_summary_validate(asset_summary_t* sums, size_t num_sums);
+
+bool validate_elements_outputs(jade_process_t* process, network_t network_id, const struct wally_tx* tx,
+ TxType_t txtype, commitment_t* commitments, output_info_t* output_info, asset_summary_t* in_sums,
+ size_t num_in_sums, asset_summary_t* out_sums, size_t num_out_sums, uint64_t* fees);
+
+bool show_btc_fee_confirmation_activity(network_t network_id, const struct wally_tx* tx, const output_info_t* outinfo,
+ script_flavour_t aggregate_inputs_scripts_flavour, uint64_t input_amount, uint64_t output_amount);
+
+bool show_elements_fee_confirmation_activity(network_t network_id, const struct wally_tx* tx,
+ const output_info_t* outinfo, script_flavour_t aggregate_inputs_scripts_flavour, uint64_t fees, TxType_t txtype,
+ bool is_partial);
+
+#endif /* SIGN_UTILS_H_ */
diff --git a/main/ui.h b/main/ui.h
index ec81a1f..2a69b8a 100644
--- a/main/ui.h
+++ b/main/ui.h
@@ -83,22 +83,6 @@ typedef enum { QR_GUIDES_NONE, QR_GUIDES_SMALL, QR_GUIDES_LARGE } qr_frame_guide
#define OUTPUT_FLAG_CHANGE 8
#define OUTPUT_FLAG_HAS_UNBLINDED 16
-typedef enum { TXTYPE_SEND_PAYMENT, TXTYPE_SWAP } TxType_t;
-
-typedef struct {
- char message[128];
- uint8_t blinding_key[33];
- uint8_t asset_id[32];
- uint64_t value;
- uint8_t flags;
-} output_info_t;
-
-typedef struct {
- uint8_t asset_id[32];
- uint64_t value;
- uint64_t validated_value;
-} asset_summary_t;
-
// Progress bar
typedef struct {
bool transparent;
diff --git a/main/ui/sign_tx.c b/main/ui/sign_tx.c
index c27c775..ef1aa84 100644
--- a/main/ui/sign_tx.c
+++ b/main/ui/sign_tx.c
@@ -8,6 +8,7 @@
#include "../button_events.h"
#include "../jade_assert.h"
#include "../jade_wally_verify.h"
+#include "../process/sign_utils.h"
#include "../ui.h"
#include "../ui/sign_tx.h"
#include "../utils/address.h"
diff --git a/main/ui/sign_tx.h b/main/ui/sign_tx.h
index 97ba268..87943d0 100644
--- a/main/ui/sign_tx.h
+++ b/main/ui/sign_tx.h
@@ -4,9 +4,9 @@
#include "../ui.h"
#include "../utils/network.h"
-struct asset_info_t;
-struct asset_summary_t;
-struct output_info_t;
+typedef struct _asset_info asset_info_t;
+typedef struct _asset_summary asset_summary_t;
+typedef struct _output_info output_info_t;
struct wally_tx;
bool show_btc_transaction_outputs_activity(
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.