Skip to content

Commit

Permalink
Restore any missing psbt metadata that resource constrained signers s…
Browse files Browse the repository at this point in the history
…trip

Fixes ([#6764])
Changelog-Fixed: Restore any missing metadata that resource constrained signers stripped
  • Loading branch information
ksedgwic committed Oct 12, 2023
1 parent 1a46b37 commit fc0d706
Showing 1 changed file with 20 additions and 3 deletions.
23 changes: 20 additions & 3 deletions wallet/walletrpc.c
Original file line number Diff line number Diff line change
Expand Up @@ -799,15 +799,32 @@ static struct command_result *json_signpsbt(struct command *cmd,
"HSM gave bad sign_withdrawal_reply %s",
tal_hex(tmpctx, msg));

if (!psbt_set_version(signed_psbt, psbt_version)) {
/* Some signers (VLS) prune the input.utxo data as it's used
* because it is too large to store. We can restore this
* metadata by combining the signed psbt back into a clone of
* the original psbt. */
struct wally_psbt *combined_psbt;
tal_wally_start();
if (wally_psbt_clone_alloc(psbt, 0, &combined_psbt) != WALLY_OK)
abort();
if (wally_psbt_combine(combined_psbt, signed_psbt) != WALLY_OK) {
tal_wally_end_onto(cmd, combined_psbt, struct wally_psbt);
return command_fail(cmd, LIGHTNINGD,
"Unable to combine signed psbt: %s",
type_to_string(tmpctx, struct wally_psbt,
signed_psbt));
}
tal_wally_end_onto(cmd, combined_psbt, struct wally_psbt);

if (!psbt_set_version(combined_psbt, psbt_version)) {
return command_fail(cmd, LIGHTNINGD,
"Signed PSBT unable to have version set: %s",
type_to_string(tmpctx, struct wally_psbt,
psbt));
combined_psbt));
}

response = json_stream_success(cmd);
json_add_psbt(response, "signed_psbt", signed_psbt);
json_add_psbt(response, "signed_psbt", combined_psbt);
return command_success(cmd, response);
}

Expand Down

0 comments on commit fc0d706

Please sign in to comment.