Skip to content

Commit e5a7422

Browse files
committed
Drop requirement that all ChannelKeys expose htlc_basepoint
1 parent d77e40f commit e5a7422

File tree

3 files changed

+9
-15
lines changed

3 files changed

+9
-15
lines changed

lightning/src/chain/keysinterface.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,6 @@ impl Readable for SpendableOutputDescriptor {
195195
// TODO: We should remove Clone by instead requesting a new ChannelKeys copy when we create
196196
// ChannelMonitors instead of expecting to clone the one out of the Channel into the monitors.
197197
pub trait ChannelKeys : Send+Clone {
198-
/// Gets the local htlc secret key used in commitment tx htlc outputs
199-
fn htlc_base_key<'a>(&'a self) -> &'a SecretKey;
200198
/// Gets the commitment seed
201199
fn commitment_seed<'a>(&'a self) -> &'a [u8; 32];
202200
/// Gets the local channel public keys and basepoints
@@ -406,7 +404,6 @@ impl InMemoryChannelKeys {
406404
}
407405

408406
impl ChannelKeys for InMemoryChannelKeys {
409-
fn htlc_base_key(&self) -> &SecretKey { &self.htlc_base_key }
410407
fn commitment_seed(&self) -> &[u8; 32] { &self.commitment_seed }
411408
fn pubkeys<'a>(&'a self) -> &'a ChannelPublicKeys { &self.local_channel_pubkeys }
412409
fn key_derivation_params(&self) -> (u64, u64) { self.key_derivation_params }

lightning/src/ln/channel.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,10 +1095,10 @@ impl<ChanSigner: ChannelKeys> Channel<ChanSigner> {
10951095
fn build_local_transaction_keys(&self, commitment_number: u64) -> Result<TxCreationKeys, ChannelError> {
10961096
let per_commitment_point = PublicKey::from_secret_key(&self.secp_ctx, &self.build_local_commitment_secret(commitment_number));
10971097
let delayed_payment_base = &self.local_keys.pubkeys().delayed_payment_basepoint;
1098-
let htlc_basepoint = PublicKey::from_secret_key(&self.secp_ctx, self.local_keys.htlc_base_key());
1098+
let htlc_basepoint = &self.local_keys.pubkeys().htlc_basepoint;
10991099
let their_pubkeys = self.their_pubkeys.as_ref().unwrap();
11001100

1101-
Ok(secp_check!(TxCreationKeys::new(&self.secp_ctx, &per_commitment_point, delayed_payment_base, &htlc_basepoint, &their_pubkeys.revocation_basepoint, &their_pubkeys.htlc_basepoint), "Local tx keys generation got bogus keys"))
1101+
Ok(secp_check!(TxCreationKeys::new(&self.secp_ctx, &per_commitment_point, delayed_payment_base, htlc_basepoint, &their_pubkeys.revocation_basepoint, &their_pubkeys.htlc_basepoint), "Local tx keys generation got bogus keys"))
11021102
}
11031103

11041104
#[inline]
@@ -1109,10 +1109,10 @@ impl<ChanSigner: ChannelKeys> Channel<ChanSigner> {
11091109
//TODO: Ensure that the payment_key derived here ends up in the library users' wallet as we
11101110
//may see payments to it!
11111111
let revocation_basepoint = &self.local_keys.pubkeys().revocation_basepoint;
1112-
let htlc_basepoint = PublicKey::from_secret_key(&self.secp_ctx, self.local_keys.htlc_base_key());
1112+
let htlc_basepoint = &self.local_keys.pubkeys().htlc_basepoint;
11131113
let their_pubkeys = self.their_pubkeys.as_ref().unwrap();
11141114

1115-
Ok(secp_check!(TxCreationKeys::new(&self.secp_ctx, &self.their_cur_commitment_point.unwrap(), &their_pubkeys.delayed_payment_basepoint, &their_pubkeys.htlc_basepoint, revocation_basepoint, &htlc_basepoint), "Remote tx keys generation got bogus keys"))
1115+
Ok(secp_check!(TxCreationKeys::new(&self.secp_ctx, &self.their_cur_commitment_point.unwrap(), &their_pubkeys.delayed_payment_basepoint, &their_pubkeys.htlc_basepoint, revocation_basepoint, htlc_basepoint), "Remote tx keys generation got bogus keys"))
11161116
}
11171117

11181118
/// Gets the redeemscript for the funding transaction output (ie the funding transaction output
@@ -3318,7 +3318,7 @@ impl<ChanSigner: ChannelKeys> Channel<ChanSigner> {
33183318
revocation_basepoint: local_keys.revocation_basepoint,
33193319
payment_point: local_keys.payment_point,
33203320
delayed_payment_basepoint: local_keys.delayed_payment_basepoint,
3321-
htlc_basepoint: PublicKey::from_secret_key(&self.secp_ctx, self.local_keys.htlc_base_key()),
3321+
htlc_basepoint: local_keys.htlc_basepoint,
33223322
first_per_commitment_point: PublicKey::from_secret_key(&self.secp_ctx, &local_commitment_secret),
33233323
channel_flags: if self.config.announced_channel {1} else {0},
33243324
shutdown_scriptpubkey: OptionalField::Present(if self.config.commit_upfront_shutdown_pubkey { self.get_closing_scriptpubkey() } else { Builder::new().into_script() })
@@ -3352,7 +3352,7 @@ impl<ChanSigner: ChannelKeys> Channel<ChanSigner> {
33523352
revocation_basepoint: local_keys.revocation_basepoint,
33533353
payment_point: local_keys.payment_point,
33543354
delayed_payment_basepoint: local_keys.delayed_payment_basepoint,
3355-
htlc_basepoint: PublicKey::from_secret_key(&self.secp_ctx, self.local_keys.htlc_base_key()),
3355+
htlc_basepoint: local_keys.htlc_basepoint,
33563356
first_per_commitment_point: PublicKey::from_secret_key(&self.secp_ctx, &local_commitment_secret),
33573357
shutdown_scriptpubkey: OptionalField::Present(if self.config.commit_upfront_shutdown_pubkey { self.get_closing_scriptpubkey() } else { Builder::new().into_script() })
33583358
}
@@ -4479,8 +4479,8 @@ mod tests {
44794479
let delayed_payment_base = &chan.local_keys.pubkeys().delayed_payment_basepoint;
44804480
let per_commitment_secret = SecretKey::from_slice(&hex::decode("1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100").unwrap()[..]).unwrap();
44814481
let per_commitment_point = PublicKey::from_secret_key(&secp_ctx, &per_commitment_secret);
4482-
let htlc_basepoint = PublicKey::from_secret_key(&secp_ctx, chan.local_keys.htlc_base_key());
4483-
let keys = TxCreationKeys::new(&secp_ctx, &per_commitment_point, delayed_payment_base, &htlc_basepoint, &their_pubkeys.revocation_basepoint, &their_pubkeys.htlc_basepoint).unwrap();
4482+
let htlc_basepoint = &chan.local_keys.pubkeys().htlc_basepoint;
4483+
let keys = TxCreationKeys::new(&secp_ctx, &per_commitment_point, delayed_payment_base, htlc_basepoint, &their_pubkeys.revocation_basepoint, &their_pubkeys.htlc_basepoint).unwrap();
44844484

44854485
chan.their_pubkeys = Some(their_pubkeys);
44864486

lightning/src/util/enforcing_trait_impls.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,19 @@ impl EnforcingChannelKeys {
3535
impl EnforcingChannelKeys {
3636
fn check_keys<T: secp256k1::Signing + secp256k1::Verification>(&self, secp_ctx: &Secp256k1<T>,
3737
keys: &TxCreationKeys) {
38-
let htlc_base = PublicKey::from_secret_key(secp_ctx, &self.inner.htlc_base_key());
39-
4038
let remote_points = self.inner.remote_channel_pubkeys.as_ref().unwrap();
4139

4240
let keys_expected = TxCreationKeys::new(secp_ctx,
4341
&keys.per_commitment_point,
4442
&remote_points.delayed_payment_basepoint,
4543
&remote_points.htlc_basepoint,
4644
&self.inner.pubkeys().revocation_basepoint,
47-
&htlc_base).unwrap();
45+
&self.inner.pubkeys().htlc_basepoint).unwrap();
4846
if keys != &keys_expected { panic!("derived different per-tx keys") }
4947
}
5048
}
5149

5250
impl ChannelKeys for EnforcingChannelKeys {
53-
fn htlc_base_key(&self) -> &SecretKey { self.inner.htlc_base_key() }
5451
fn commitment_seed(&self) -> &[u8; 32] { self.inner.commitment_seed() }
5552
fn pubkeys<'a>(&'a self) -> &'a ChannelPublicKeys { self.inner.pubkeys() }
5653
fn key_derivation_params(&self) -> (u64, u64) { self.inner.key_derivation_params() }

0 commit comments

Comments
 (0)