mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-11 10:04:28 +01:00
channeld: create get_per_commitment_point helper.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
committed by
Christian Decker
parent
162adfdf12
commit
692bae7873
@@ -1091,30 +1091,42 @@ static void start_commit_timer(struct peer *peer)
|
||||
send_commit, peer);
|
||||
}
|
||||
|
||||
static u8 *make_revocation_msg(const struct peer *peer, u64 revoke_index,
|
||||
struct pubkey *point)
|
||||
/* If old_secret is NULL, we don't care, otherwise it is filled in. */
|
||||
static void get_per_commitment_point(u64 index, struct pubkey *point,
|
||||
struct secret *old_secret)
|
||||
{
|
||||
struct secret *old_commit_secret;
|
||||
struct secret *s;
|
||||
const u8 *msg;
|
||||
|
||||
/* We're revoking N-1th commit, sending N+1th point. */
|
||||
msg = hsm_req(tmpctx,
|
||||
take(towire_hsm_get_per_commitment_point(NULL,
|
||||
revoke_index+2)));
|
||||
take(towire_hsm_get_per_commitment_point(NULL, index)));
|
||||
|
||||
if (!fromwire_hsm_get_per_commitment_point_reply(tmpctx, msg,
|
||||
point,
|
||||
&old_commit_secret))
|
||||
&s))
|
||||
status_failed(STATUS_FAIL_HSM_IO,
|
||||
"Bad per_commitment_point reply %s",
|
||||
tal_hex(tmpctx, msg));
|
||||
|
||||
if (!old_commit_secret)
|
||||
status_failed(STATUS_FAIL_HSM_IO,
|
||||
"No secret in per_commitment_point_reply %"PRIu64,
|
||||
revoke_index+2);
|
||||
if (old_secret) {
|
||||
if (!s)
|
||||
status_failed(STATUS_FAIL_HSM_IO,
|
||||
"No secret in per_commitment_point_reply %"
|
||||
PRIu64,
|
||||
index);
|
||||
*old_secret = *s;
|
||||
}
|
||||
}
|
||||
|
||||
return towire_revoke_and_ack(peer, &peer->channel_id, old_commit_secret,
|
||||
/* revoke_index == current index - 1 (usually; not for retransmission) */
|
||||
static u8 *make_revocation_msg(const struct peer *peer, u64 revoke_index,
|
||||
struct pubkey *point)
|
||||
{
|
||||
struct secret old_commit_secret;
|
||||
|
||||
get_per_commitment_point(revoke_index+2, point, &old_commit_secret);
|
||||
|
||||
return towire_revoke_and_ack(peer, &peer->channel_id, &old_commit_secret,
|
||||
point);
|
||||
}
|
||||
|
||||
@@ -2325,7 +2337,6 @@ static void init_channel(struct peer *peer)
|
||||
u8 *funding_signed;
|
||||
const u8 *msg;
|
||||
u32 feerate_per_kw[NUM_SIDES];
|
||||
struct secret *unused_secret;
|
||||
|
||||
assert(!(fcntl(MASTER_FD, F_GETFL) & O_NONBLOCK));
|
||||
|
||||
@@ -2399,16 +2410,8 @@ static void init_channel(struct peer *peer)
|
||||
assert(peer->next_index[LOCAL] > 0);
|
||||
assert(peer->next_index[REMOTE] > 0);
|
||||
|
||||
/* Ask HSM for next per-commitment point: may return old secret, don't
|
||||
* care */
|
||||
msg = towire_hsm_get_per_commitment_point(NULL, peer->next_index[LOCAL]);
|
||||
msg = hsm_req(tmpctx, take(msg));
|
||||
if (!fromwire_hsm_get_per_commitment_point_reply(tmpctx, msg,
|
||||
&peer->next_local_per_commit,
|
||||
&unused_secret))
|
||||
status_failed(STATUS_FAIL_HSM_IO,
|
||||
"Malformed per_commitment_point_reply %"PRIu64,
|
||||
peer->next_index[LOCAL]);
|
||||
get_per_commitment_point(peer->next_index[LOCAL],
|
||||
&peer->next_local_per_commit, NULL);
|
||||
|
||||
/* channel_id is set from funding txout */
|
||||
derive_channel_id(&peer->channel_id, &funding_txid, funding_txout);
|
||||
|
||||
Reference in New Issue
Block a user