mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 18:11:28 +01:00
dffe2f516a
This is prep work for when we sign htlc txs with SIGHASH_SINGLE|SIGHASH_ANYONECANPAY. We still deal with raw signatures for the htlc txs at the moment, since we send them like that across the wire, and changing that was simply too painful (for the moment?). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6.4 KiB
6.4 KiB
1 | # Clients should not give a bad request but not the HSM's decision to crash. |
---|---|
2 | hsmstatus_client_bad_request,1000 |
3 | hsmstatus_client_bad_request,,id,struct pubkey |
4 | hsmstatus_client_bad_request,,description,wirestring |
5 | hsmstatus_client_bad_request,,len,u16 |
6 | hsmstatus_client_bad_request,,msg,len*u8 |
7 | # Start the HSM. |
8 | hsm_init,11 |
9 | #include <common/bip32.h> |
10 | hsm_init_reply,111 |
11 | hsm_init_reply,,node_id,struct pubkey |
12 | hsm_init_reply,,bip32,struct ext_key |
13 | # Get a new HSM FD, with the specified capabilities |
14 | hsm_client_hsmfd,9 |
15 | hsm_client_hsmfd,,pubkey,struct pubkey # Which identity to use for requests |
16 | # Database id for this client, if any. |
17 | hsm_client_hsmfd,,dbid,u64 |
18 | hsm_client_hsmfd,,capabilities,u64 |
19 | # No content, just an fd. |
20 | hsm_client_hsmfd_reply,109 |
21 | #include <common/derive_basepoints.h> |
22 | # Get the basepoints and funding key for this specific channel. |
23 | hsm_get_channel_basepoints,10 |
24 | hsm_get_channel_basepoints,,peerid,struct pubkey |
25 | hsm_get_channel_basepoints,,dbid,u64 |
26 | hsm_get_channel_basepoints_reply,110 |
27 | hsm_get_channel_basepoints_reply,,basepoints,struct basepoints |
28 | hsm_get_channel_basepoints_reply,,funding_pubkey,struct pubkey |
29 | # Return signature for a funding tx. |
30 | #include <common/utxo.h> |
31 | # FIXME: This should also take their commit sig & details, to verify. |
32 | hsm_sign_funding,4 |
33 | hsm_sign_funding,,satoshi_out,u64 |
34 | hsm_sign_funding,,change_out,u64 |
35 | hsm_sign_funding,,change_keyindex,u32 |
36 | hsm_sign_funding,,our_pubkey,struct pubkey |
37 | hsm_sign_funding,,their_pubkey,struct pubkey |
38 | hsm_sign_funding,,num_inputs,u16 |
39 | hsm_sign_funding,,inputs,num_inputs*struct utxo |
40 | hsm_sign_funding_reply,104 |
41 | hsm_sign_funding_reply,,tx,struct bitcoin_tx |
42 | # Master asks the HSM to sign a node_announcement |
43 | hsm_node_announcement_sig_req,6 |
44 | hsm_node_announcement_sig_req,,annlen,u16 |
45 | hsm_node_announcement_sig_req,,announcement,annlen*u8 |
46 | hsm_node_announcement_sig_reply,106 |
47 | hsm_node_announcement_sig_reply,,signature,secp256k1_ecdsa_signature |
48 | # Sign a withdrawal request |
49 | hsm_sign_withdrawal,7 |
50 | hsm_sign_withdrawal,,satoshi_out,u64 |
51 | hsm_sign_withdrawal,,change_out,u64 |
52 | hsm_sign_withdrawal,,change_keyindex,u32 |
53 | hsm_sign_withdrawal,,scriptpubkey_len,u16 |
54 | hsm_sign_withdrawal,,scriptpubkey,scriptpubkey_len*u8 |
55 | hsm_sign_withdrawal,,num_inputs,u16 |
56 | hsm_sign_withdrawal,,inputs,num_inputs*struct utxo |
57 | hsm_sign_withdrawal_reply,107 |
58 | hsm_sign_withdrawal_reply,,tx,struct bitcoin_tx |
59 | # Sign an invoice |
60 | hsm_sign_invoice,8 |
61 | hsm_sign_invoice,,len,u16 |
62 | hsm_sign_invoice,,u5bytes,len*u8 |
63 | hsm_sign_invoice,,hrplen,u16 |
64 | hsm_sign_invoice,,hrp,hrplen*u8 |
65 | hsm_sign_invoice_reply,108 |
66 | hsm_sign_invoice_reply,,sig,secp256k1_ecdsa_recoverable_signature |
67 | # Give me ECDH(node-id-secret,point) |
68 | hsm_ecdh_req,1 |
69 | hsm_ecdh_req,,point,struct pubkey |
70 | hsm_ecdh_resp,100 |
71 | hsm_ecdh_resp,,ss,struct secret |
72 | hsm_cannouncement_sig_req,2 |
73 | hsm_cannouncement_sig_req,,calen,u16 |
74 | hsm_cannouncement_sig_req,,ca,calen*u8 |
75 | hsm_cannouncement_sig_reply,102 |
76 | hsm_cannouncement_sig_reply,,node_signature,secp256k1_ecdsa_signature |
77 | hsm_cannouncement_sig_reply,,bitcoin_signature,secp256k1_ecdsa_signature |
78 | hsm_cupdate_sig_req,3 |
79 | hsm_cupdate_sig_req,,culen,u16 |
80 | hsm_cupdate_sig_req,,cu,culen*u8 |
81 | hsm_cupdate_sig_reply,103 |
82 | hsm_cupdate_sig_reply,,culen,u16 |
83 | hsm_cupdate_sig_reply,,cu,culen*u8 |
84 | # Master asks HSM to sign a commitment transaction. |
85 | hsm_sign_commitment_tx,5 |
86 | hsm_sign_commitment_tx,,peer_id,struct pubkey |
87 | hsm_sign_commitment_tx,,channel_dbid,u64 |
88 | hsm_sign_commitment_tx,,tx,struct bitcoin_tx |
89 | hsm_sign_commitment_tx,,remote_funding_key,struct pubkey |
90 | hsm_sign_commitment_tx,,funding_amount,u64 |
91 | hsm_sign_commitment_tx_reply,105 |
92 | hsm_sign_commitment_tx_reply,,sig,struct bitcoin_signature |
93 | # Onchaind asks HSM to sign a spend to-us. Four variants, since each set |
94 | # of keys is derived differently... |
95 | # FIXME: Have master tell hsmd the keyindex, so it can validate output! |
96 | hsm_sign_delayed_payment_to_us,12 |
97 | hsm_sign_delayed_payment_to_us,,commit_num,u64 |
98 | hsm_sign_delayed_payment_to_us,,tx,struct bitcoin_tx |
99 | hsm_sign_delayed_payment_to_us,,wscript_len,u16 |
100 | hsm_sign_delayed_payment_to_us,,wscript,wscript_len*u8 |
101 | hsm_sign_delayed_payment_to_us,,input_amount,u64 |
102 | hsm_sign_remote_htlc_to_us,13 |
103 | hsm_sign_remote_htlc_to_us,,remote_per_commitment_point,struct pubkey |
104 | hsm_sign_remote_htlc_to_us,,tx,struct bitcoin_tx |
105 | hsm_sign_remote_htlc_to_us,,wscript_len,u16 |
106 | hsm_sign_remote_htlc_to_us,,wscript,wscript_len*u8 |
107 | hsm_sign_remote_htlc_to_us,,input_amount,u64 |
108 | hsm_sign_penalty_to_us,14 |
109 | hsm_sign_penalty_to_us,,revocation_secret,struct secret |
110 | hsm_sign_penalty_to_us,,tx,struct bitcoin_tx |
111 | hsm_sign_penalty_to_us,,wscript_len,u16 |
112 | hsm_sign_penalty_to_us,,wscript,wscript_len*u8 |
113 | hsm_sign_penalty_to_us,,input_amount,u64 |
114 | # Onchaind asks HSM to sign a local HTLC success or HTLC timeout tx. |
115 | hsm_sign_local_htlc_tx,16 |
116 | hsm_sign_local_htlc_tx,,commit_num,u64 |
117 | hsm_sign_local_htlc_tx,,tx,struct bitcoin_tx |
118 | hsm_sign_local_htlc_tx,,wscript_len,u16 |
119 | hsm_sign_local_htlc_tx,,wscript,wscript_len*u8 |
120 | hsm_sign_local_htlc_tx,,input_amount,u64 |
121 | # Openingd/channeld asks HSM to sign the other sides' commitment tx. |
122 | hsm_sign_remote_commitment_tx,19 |
123 | hsm_sign_remote_commitment_tx,,tx,struct bitcoin_tx |
124 | hsm_sign_remote_commitment_tx,,remote_funding_key,struct pubkey |
125 | hsm_sign_remote_commitment_tx,,funding_amount,u64 |
126 | # channeld asks HSM to sign remote HTLC tx. |
127 | hsm_sign_remote_htlc_tx,20 |
128 | hsm_sign_remote_htlc_tx,,tx,struct bitcoin_tx |
129 | hsm_sign_remote_htlc_tx,,len,u16 |
130 | hsm_sign_remote_htlc_tx,,wscript,len*u8 |
131 | hsm_sign_remote_htlc_tx,,amounts_satoshi,u64 |
132 | hsm_sign_remote_htlc_tx,,remote_per_commit_point,struct pubkey |
133 | # closingd asks HSM to sign mutual close tx. |
134 | hsm_sign_mutual_close_tx,21 |
135 | hsm_sign_mutual_close_tx,,tx,struct bitcoin_tx |
136 | hsm_sign_mutual_close_tx,,remote_funding_key,struct pubkey |
137 | hsm_sign_mutual_close_tx,,funding_amount,u64 |
138 | # Reply for all the above requests. |
139 | hsm_sign_tx_reply,112 |
140 | hsm_sign_tx_reply,,sig,struct bitcoin_signature |
141 | # Openingd/channeld/onchaind asks for Nth per_commitment_point, if > 2, gets N-2 secret. |
142 | hsm_get_per_commitment_point,18 |
143 | hsm_get_per_commitment_point,,n,u64 |
144 | hsm_get_per_commitment_point_reply,118 |
145 | hsm_get_per_commitment_point_reply,,per_commitment_point,struct pubkey |
146 | hsm_get_per_commitment_point_reply,,old_commitment_secret,?struct secret |
147 | # master -> hsmd: do you have a memleak? |
148 | hsm_dev_memleak,33 |
149 | hsm_dev_memleak_reply,133 |
150 | hsm_dev_memleak_reply,,leak,bool |
151 | # channeld asks to check if claimed future commitment_secret is correct. |
152 | hsm_check_future_secret,22 |
153 | hsm_check_future_secret,,n,u64 |
154 | hsm_check_future_secret,,commitment_secret,struct secret |
155 | hsm_check_future_secret_reply,122 |
156 | hsm_check_future_secret_reply,,correct,bool |