Skip to content

Commit

Permalink
Expose the node secret key in {Phantom,}KeysManager
Browse files Browse the repository at this point in the history
When we removed the private keys from the signing interface we
forgot to re-add them in the public interface of our own
implementations, which users may need.
  • Loading branch information
TheBlueMatt committed Mar 3, 2023
1 parent a9e6341 commit 029b665
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions lightning/src/chain/keysinterface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1064,6 +1064,12 @@ impl KeysManager {
Err(_) => panic!("Your rng is busted"),
}
}

/// Gets the "node_id" secret key used to sign gossip announcements, decode onion data, etc.
pub fn get_node_secret_key(&self) -> SecretKey {
self.node_secret
}

/// Derive an old [`WriteableEcdsaChannelSigner`] containing per-channel secrets based on a key derivation parameters.
pub fn derive_channel_keys(&self, channel_value_satoshis: u64, params: &[u8; 32]) -> InMemorySigner {
let chan_id = u64::from_be_bytes(params[0..8].try_into().unwrap());
Expand Down Expand Up @@ -1458,6 +1464,17 @@ impl PhantomKeysManager {
pub fn derive_channel_keys(&self, channel_value_satoshis: u64, params: &[u8; 32]) -> InMemorySigner {
self.inner.derive_channel_keys(channel_value_satoshis, params)
}

/// Gets the "node_id" secret key used to sign gossip announcements, decode onion data, etc.
pub fn get_node_secret_key(&self) -> SecretKey {
self.inner.get_node_secret_key()
}

/// Gets the "node_id" secret key of the phantom node used to sign invoices, decode the
/// last-hop onion data, etc.
pub fn get_phantom_node_secret_key(&self) -> SecretKey {
self.phantom_secret
}
}

// Ensure that EcdsaChannelSigner can have a vtable
Expand Down

0 comments on commit 029b665

Please sign in to comment.