From 3f594172b28e690bdbcac5472ce4ee74a649c27e Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Tue, 20 Jun 2017 16:50:19 +0200 Subject: [PATCH] hsm: Add messages for withdrawal signature requests --- lightningd/hsm/hsm.c | 4 ++++ lightningd/hsm/hsm_wire.csv | 13 +++++++++++++ lightningd/hsm_control.c | 2 ++ 3 files changed, 19 insertions(+) diff --git a/lightningd/hsm/hsm.c b/lightningd/hsm/hsm.c index 01e5f9e85..a3d4109a0 100644 --- a/lightningd/hsm/hsm.c +++ b/lightningd/hsm/hsm.c @@ -563,6 +563,9 @@ static struct io_plan *control_received_req(struct io_conn *conn, sign_funding_tx(master, master->msg_in); return daemon_conn_read_next(conn, master); + case WIRE_HSMCTL_SIGN_WITHDRAWAL: + return daemon_conn_read_next(conn, master); + case WIRE_HSMCTL_NODE_ANNOUNCEMENT_SIG_REQ: sign_node_announcement(master, master->msg_in); return daemon_conn_read_next(conn, master); @@ -571,6 +574,7 @@ static struct io_plan *control_received_req(struct io_conn *conn, case WIRE_HSMCTL_HSMFD_ECDH_FD_REPLY: case WIRE_HSMCTL_HSMFD_CHANNELD_REPLY: case WIRE_HSMCTL_SIGN_FUNDING_REPLY: + case WIRE_HSMCTL_SIGN_WITHDRAWAL_REPLY: case WIRE_HSMSTATUS_INIT_FAILED: case WIRE_HSMSTATUS_WRITEMSG_FAILED: case WIRE_HSMSTATUS_BAD_REQUEST: diff --git a/lightningd/hsm/hsm_wire.csv b/lightningd/hsm/hsm_wire.csv index 39ec964eb..4dd3d8424 100644 --- a/lightningd/hsm/hsm_wire.csv +++ b/lightningd/hsm/hsm_wire.csv @@ -58,3 +58,16 @@ hsmctl_node_announcement_sig_req,,announcement,annlen*u8 hsmctl_node_announcement_sig_reply,106 hsmctl_node_announcement_sig_reply,,signature,secp256k1_ecdsa_signature + +# Sign a withdrawal request +hsmctl_sign_withdrawal,7 +hsmctl_sign_withdrawal,,satoshi_out,8 +hsmctl_sign_withdrawal,,change_out,8 +hsmctl_sign_withdrawal,,change_keyindex,4 +hsmctl_sign_withdrawal,,pkh,20*u8 +hsmctl_sign_withdrawal,,num_inputs,2 +hsmctl_sign_withdrawal,,inputs,num_inputs*struct utxo + +hsmctl_sign_withdrawal_reply,107 +hsmctl_sign_withdrawal_reply,,num_sigs,2 +hsmctl_sign_withdrawal_reply,,sig,num_sigs*secp256k1_ecdsa_signature diff --git a/lightningd/hsm_control.c b/lightningd/hsm_control.c index 5d42a91e8..c4647f04b 100644 --- a/lightningd/hsm_control.c +++ b/lightningd/hsm_control.c @@ -72,6 +72,7 @@ static int hsm_msg(struct subd *hsm, const u8 *msg, const int *fds) case WIRE_HSMCTL_HSMFD_ECDH: case WIRE_HSMCTL_HSMFD_CHANNELD: case WIRE_HSMCTL_SIGN_FUNDING: + case WIRE_HSMCTL_SIGN_WITHDRAWAL: case WIRE_HSMCTL_NODE_ANNOUNCEMENT_SIG_REQ: /* Replies should be paired to individual requests. */ @@ -79,6 +80,7 @@ static int hsm_msg(struct subd *hsm, const u8 *msg, const int *fds) case WIRE_HSMCTL_HSMFD_CHANNELD_REPLY: case WIRE_HSMCTL_HSMFD_ECDH_FD_REPLY: case WIRE_HSMCTL_SIGN_FUNDING_REPLY: + case WIRE_HSMCTL_SIGN_WITHDRAWAL_REPLY: case WIRE_HSMCTL_NODE_ANNOUNCEMENT_SIG_REPLY: errx(1, "HSM gave invalid message %s", hsm_wire_type_name(t)); }