Browse Source

lightningd/derive_basepoints.h: one place for 2^48 shachain constant.

Suggested-by: Christian Decker <decker.christian@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ppa-0.6.1
Rusty Russell 8 years ago
parent
commit
e75309873b
  1. 2
      lightningd/channel/channel.c
  2. 11
      lightningd/derive_basepoints.c
  3. 10
      lightningd/derive_basepoints.h

2
lightningd/channel/channel.c

@ -655,7 +655,7 @@ static void handle_peer_revoke_and_ack(struct peer *peer, const u8 *msg)
* generated by the protocol in [BOLT #3] * generated by the protocol in [BOLT #3]
*/ */
if (!shachain_add_hash(&peer->their_shachain, if (!shachain_add_hash(&peer->their_shachain,
281474976710655ULL - peer->commit_index[REMOTE], shachain_index(peer->commit_index[REMOTE]),
&old_commit_secret)) { &old_commit_secret)) {
peer_failed(io_conn_fd(peer->peer_conn), peer_failed(io_conn_fd(peer->peer_conn),
&peer->pcs.cs, &peer->pcs.cs,

11
lightningd/derive_basepoints.c

@ -40,11 +40,7 @@ bool derive_basepoints(const struct privkey *seed,
*/ */
*shaseed = keys.shaseed; *shaseed = keys.shaseed;
/* BOLT #3: shachain_from_seed(shaseed, shachain_index(per_commit_index),
*
* the first secret used MUST be index 281474976710655, and then the
* index decremented. */
shachain_from_seed(shaseed, 281474976710655ULL - per_commit_index,
&per_commit_secret); &per_commit_secret);
/* BOLT #3: /* BOLT #3:
@ -71,14 +67,13 @@ bool next_per_commit_point(const struct sha256 *shaseed,
/* Get old secret. */ /* Get old secret. */
if (per_commit_index > 0) if (per_commit_index > 0)
shachain_from_seed(shaseed, 281474976710655ULL shachain_from_seed(shaseed, shachain_index(per_commit_index - 1),
- (per_commit_index - 1),
old_commit_secret); old_commit_secret);
else else
assert(old_commit_secret == NULL); assert(old_commit_secret == NULL);
/* Derive new per-commitment-point. */ /* Derive new per-commitment-point. */
shachain_from_seed(shaseed, 281474976710655ULL - (per_commit_index + 1), shachain_from_seed(shaseed, shachain_index(per_commit_index + 1),
&per_commit_secret); &per_commit_secret);
/* BOLT #3: /* BOLT #3:

10
lightningd/derive_basepoints.h

@ -33,4 +33,14 @@ bool next_per_commit_point(const struct sha256 *shaseed,
struct pubkey *per_commit_point, struct pubkey *per_commit_point,
u64 per_commit_index); u64 per_commit_index);
/* BOLT #3:
*
* the first secret used MUST be index 281474976710655, and then the index
* decremented.
*/
static inline u64 shachain_index(u64 per_commit_index)
{
assert(per_commit_index < (1ULL << 48));
return 281474976710655ULL - per_commit_index;
}
#endif /* LIGHTNING_LIGHTNINGD_DERIVE_BASEPOINTS_H */ #endif /* LIGHTNING_LIGHTNINGD_DERIVE_BASEPOINTS_H */

Loading…
Cancel
Save