Skip to content

Commit 8a4e8ed

Browse files
committed
Add TaprootSigner variant to SignerProvider.
1 parent f68cfdb commit 8a4e8ed

File tree

8 files changed

+25
-0
lines changed

8 files changed

+25
-0
lines changed

fuzz/src/chanmon_consistency.rs

+1
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ impl NodeSigner for KeyProvider {
220220

221221
impl SignerProvider for KeyProvider {
222222
type EcdsaSigner = EnforcingSigner;
223+
type TaprootSigner = EnforcingSigner;
223224

224225
fn generate_channel_keys_id(&self, _inbound: bool, _channel_value_satoshis: u64, _user_channel_id: u128) -> [u8; 32] {
225226
let id = self.rand_bytes_id.fetch_add(1, atomic::Ordering::Relaxed) as u8;

fuzz/src/full_stack.rs

+1
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ impl NodeSigner for KeyProvider {
325325

326326
impl SignerProvider for KeyProvider {
327327
type EcdsaSigner = EnforcingSigner;
328+
type TaprootSigner = EnforcingSigner;
328329

329330
fn generate_channel_keys_id(&self, inbound: bool, _channel_value_satoshis: u64, _user_channel_id: u128) -> [u8; 32] {
330331
let ctr = self.counter.fetch_add(1, Ordering::Relaxed) as u8;

fuzz/src/onion_message.rs

+1
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ impl NodeSigner for KeyProvider {
160160

161161
impl SignerProvider for KeyProvider {
162162
type EcdsaSigner = EnforcingSigner;
163+
type TaprootSigner = EnforcingSigner;
163164

164165
fn generate_channel_keys_id(&self, _inbound: bool, _channel_value_satoshis: u64, _user_channel_id: u128) -> [u8; 32] { unreachable!() }
165166

lightning/src/ln/channel.rs

+2
Original file line numberDiff line numberDiff line change
@@ -7539,6 +7539,8 @@ mod tests {
75397539

75407540
impl SignerProvider for Keys {
75417541
type EcdsaSigner = InMemorySigner;
7542+
#[cfg(taproot)]
7543+
type TaprootSigner = InMemorySigner;
75427544

75437545
fn generate_channel_keys_id(&self, _inbound: bool, _channel_value_satoshis: u64, _user_channel_id: u128) -> [u8; 32] {
75447546
self.signer.channel_keys_id()

lightning/src/sign/mod.rs

+9
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ use core::sync::atomic::{AtomicUsize, Ordering};
5050
use crate::io::{self, Error};
5151
use crate::ln::features::ChannelTypeFeatures;
5252
use crate::ln::msgs::{DecodeError, MAX_VALUE_MSAT};
53+
#[cfg(taproot)]
54+
use crate::sign::taproot::TaprootChannelSigner;
5355
use crate::util::atomic_counter::AtomicCounter;
5456
use crate::util::chacha20::ChaCha20;
5557
use crate::util::invoice::construct_invoice_preimage;
@@ -638,6 +640,9 @@ pub trait NodeSigner {
638640
pub trait SignerProvider {
639641
/// A type which implements [`WriteableEcdsaChannelSigner`] which will be returned by [`Self::derive_channel_signer`].
640642
type EcdsaSigner: WriteableEcdsaChannelSigner;
643+
#[cfg(taproot)]
644+
/// A type which implements [`TaprootChannelSigner`]
645+
type TaprootSigner: TaprootChannelSigner;
641646

642647
/// Generates a unique `channel_keys_id` that can be used to obtain a [`Self::EcdsaSigner`] through
643648
/// [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
@@ -1463,6 +1468,8 @@ impl NodeSigner for KeysManager {
14631468

14641469
impl SignerProvider for KeysManager {
14651470
type EcdsaSigner = InMemorySigner;
1471+
#[cfg(taproot)]
1472+
type TaprootSigner = InMemorySigner;
14661473

14671474
fn generate_channel_keys_id(&self, _inbound: bool, _channel_value_satoshis: u64, user_channel_id: u128) -> [u8; 32] {
14681475
let child_idx = self.channel_child_index.fetch_add(1, Ordering::AcqRel);
@@ -1570,6 +1577,8 @@ impl NodeSigner for PhantomKeysManager {
15701577

15711578
impl SignerProvider for PhantomKeysManager {
15721579
type EcdsaSigner = InMemorySigner;
1580+
#[cfg(taproot)]
1581+
type TaprootSigner = InMemorySigner;
15731582

15741583
fn generate_channel_keys_id(&self, inbound: bool, channel_value_satoshis: u64, user_channel_id: u128) -> [u8; 32] {
15751584
self.inner.generate_channel_keys_id(inbound, channel_value_satoshis, user_channel_id)

lightning/src/sign/taproot.rs

+2
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,5 @@ pub trait TaprootChannelSigner: ChannelSigner {
147147

148148
// TODO: sign channel announcement
149149
}
150+
151+
impl TaprootChannelSigner for super::InMemorySigner {}

lightning/src/util/enforcing_trait_impls.rs

+5
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ use crate::events::bump_transaction::HTLCDescriptor;
2727
use crate::util::ser::{Writeable, Writer};
2828
use crate::io::Error;
2929
use crate::ln::features::ChannelTypeFeatures;
30+
#[cfg(taproot)]
31+
use crate::sign::taproot::TaprootChannelSigner;
3032

3133
/// Initial value for revoked commitment downward counter
3234
pub const INITIAL_REVOKED_COMMITMENT_NUMBER: u64 = 1 << 48;
@@ -243,6 +245,9 @@ impl EcdsaChannelSigner for EnforcingSigner {
243245

244246
impl WriteableEcdsaChannelSigner for EnforcingSigner {}
245247

248+
#[cfg(taproot)]
249+
impl TaprootChannelSigner for EnforcingSigner {}
250+
246251
impl Writeable for EnforcingSigner {
247252
fn write<W: Writer>(&self, writer: &mut W) -> Result<(), Error> {
248253
// EnforcingSigner has two fields - `inner` ([`InMemorySigner`]) and `state`

lightning/src/util/test_utils.rs

+4
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ impl EntropySource for OnlyReadsKeysInterface {
169169

170170
impl SignerProvider for OnlyReadsKeysInterface {
171171
type EcdsaSigner = EnforcingSigner;
172+
#[cfg(taproot)]
173+
type TaprootSigner = EnforcingSigner;
172174

173175
fn generate_channel_keys_id(&self, _inbound: bool, _channel_value_satoshis: u64, _user_channel_id: u128) -> [u8; 32] { unreachable!(); }
174176

@@ -847,6 +849,8 @@ impl NodeSigner for TestKeysInterface {
847849

848850
impl SignerProvider for TestKeysInterface {
849851
type EcdsaSigner = EnforcingSigner;
852+
#[cfg(taproot)]
853+
type TaprootSigner = EnforcingSigner;
850854

851855
fn generate_channel_keys_id(&self, inbound: bool, channel_value_satoshis: u64, user_channel_id: u128) -> [u8; 32] {
852856
self.backing.generate_channel_keys_id(inbound, channel_value_satoshis, user_channel_id)

0 commit comments

Comments
 (0)