bip85: expose get_bip85_bip39_entropy over rpc in addition to qr
What changed, and why it matters
This commit moves a feature that derives BIP85 BIP39 entropy from being available only in debug builds to being available over the normal RPC interface. BIP85 lets a hardware wallet derive child seed phrases from a master seed. Making this available over RPC means wallet software can request derived seed entropy through the standard communication channel, not only via QR codes. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be a functionality or API-consistency change.
Review whether the RPC method requires additional authentication, rate-limiting, or user confirmation before releasing derived BIP85 entropy over the wire. Verify that callers are authorized and that the change is intentional for production use.
Security signals we found
Feature moved from debug-only to production RPC surface
No accompanying access-control or input-sanitization changes visible in diff
BIP85 entropy derivation is a sensitive cryptographic operation
Evidence from the diff
In main/process/dashboard.c, the declaration and dispatch of get_bip85_bip39_entropy_process are moved out of the CONFIG_DEBUG_MODE guard. Previously, the RPC method ‘get_bip85_bip39_entropy’ was registered only inside an #ifdef CONFIG_DEBUG_MODE block. After the change, it is declared unconditionally and dispatched in the normal (non-debug) RPC handler alongside get_bip85_pubkey and sign_bip85_digests. The QR-based show_bip85_bip39_entropy was already exposed, so this change aligns the RPC exposure with the QR exposure. The diff does not show any authentication, authorization, or input-validation changes.
Changed components
main/process/dashboard.cRPC dispatch pathBIP85 entropy derivation featureInspect captured patch +3 / −4
### main/process/dashboard.c
@@ -149,8 +149,8 @@ void sign_liquid_tx_process(void* process_ptr);
void get_bip85_pubkey_process(void* process_ptr);
void sign_bip85_digests_process(void* process_ptr);
void show_bip85_bip39_entropy_process(void* process_ptr);
-#ifdef CONFIG_DEBUG_MODE
void get_bip85_bip39_entropy_process(void* process_ptr);
+#ifdef CONFIG_DEBUG_MODE
void get_bip85_rsa_entropy_process(void* process_ptr);
void debug_capture_image_data_process(void* process_ptr);
void debug_scan_qr_process(void* process_ptr);
@@ -547,9 +547,6 @@ static void dispatch_message(jade_process_t* process)
#endif
} else if (IS_METHOD("debug_scan_qr")) {
task_function = debug_scan_qr_process;
- } else if (IS_METHOD("get_bip85_bip39_entropy")) {
- // ATM only exposed for testing purposes
- task_function = get_bip85_bip39_entropy_process;
} else if (IS_METHOD("get_bip85_rsa_entropy")) {
// ATM only exposed for testing purposes
task_function = get_bip85_rsa_entropy_process;
@@ -610,6 +607,8 @@ static void dispatch_message(jade_process_t* process)
task_function = get_shared_nonce_process;
} else if (IS_METHOD("get_bip85_pubkey")) {
task_function = get_bip85_pubkey_process;
+ } else if (IS_METHOD("get_bip85_bip39_entropy")) {
+ task_function = get_bip85_bip39_entropy_process;
} else if (IS_METHOD("sign_bip85_digests")) {
task_function = sign_bip85_digests_process;
} else if (IS_METHOD("show_bip85_bip39_entropy")) {Why this scored 28/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.