Skip to content

Commit 99982fa

Browse files
committed
Introduce constants for derivation path indices
This commit replaces magic numbers with descriptive constant names for the indices used in key derivation paths within the `new` function. - Added constants: - `NODE_SECRET_INDEX` - `DESTINATION_SCRIPT_INDEX` - `SHUTDOWN_PUBKEY_INDEX` - `CHANNEL_MASTER_KEY_INDEX` - `INBOUND_PAYMENT_KEY_INDEX` - `PEER_STORAGE_KEY_INDEX`
1 parent cf2fa69 commit 99982fa

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

lightning/src/sign/mod.rs

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1859,18 +1859,30 @@ impl KeysManager {
18591859
///
18601860
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
18611861
pub fn new(seed: &[u8; 32], starting_time_secs: u64, starting_time_nanos: u32) -> Self {
1862+
// Constants for key derivation path indices used in this function.
1863+
const NODE_SECRET_INDEX: u32 = 0;
1864+
const DESTINATION_SCRIPT_INDEX: u32 = 1;
1865+
const SHUTDOWN_PUBKEY_INDEX: u32 = 2;
1866+
const CHANNEL_MASTER_KEY_INDEX: u32 = 3;
1867+
const INBOUND_PAYMENT_KEY_INDEX: u32 = 5;
1868+
const PEER_STORAGE_KEY_INDEX: u32 = 6;
1869+
18621870
let secp_ctx = Secp256k1::new();
18631871
// Note that when we aren't serializing the key, network doesn't matter
18641872
match Xpriv::new_master(Network::Testnet, seed) {
18651873
Ok(master_key) => {
18661874
let node_secret = master_key
1867-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(0).unwrap())
1875+
.derive_priv(
1876+
&secp_ctx,
1877+
&ChildNumber::from_hardened_idx(NODE_SECRET_INDEX).unwrap(),
1878+
)
18681879
.expect("Your RNG is busted")
18691880
.private_key;
18701881
let node_id = PublicKey::from_secret_key(&secp_ctx, &node_secret);
1871-
let destination_script = match master_key
1872-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(1).unwrap())
1873-
{
1882+
let destination_script = match master_key.derive_priv(
1883+
&secp_ctx,
1884+
&ChildNumber::from_hardened_idx(DESTINATION_SCRIPT_INDEX).unwrap(),
1885+
) {
18741886
Ok(destination_key) => {
18751887
let wpubkey_hash = WPubkeyHash::hash(
18761888
&Xpub::from_priv(&secp_ctx, &destination_key).to_pub().to_bytes(),
@@ -1882,23 +1894,33 @@ impl KeysManager {
18821894
},
18831895
Err(_) => panic!("Your RNG is busted"),
18841896
};
1885-
let shutdown_pubkey = match master_key
1886-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(2).unwrap())
1887-
{
1897+
let shutdown_pubkey = match master_key.derive_priv(
1898+
&secp_ctx,
1899+
&ChildNumber::from_hardened_idx(SHUTDOWN_PUBKEY_INDEX).unwrap(),
1900+
) {
18881901
Ok(shutdown_key) => Xpub::from_priv(&secp_ctx, &shutdown_key).public_key,
18891902
Err(_) => panic!("Your RNG is busted"),
18901903
};
18911904
let channel_master_key = master_key
1892-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(3).unwrap())
1905+
.derive_priv(
1906+
&secp_ctx,
1907+
&ChildNumber::from_hardened_idx(CHANNEL_MASTER_KEY_INDEX).unwrap(),
1908+
)
18931909
.expect("Your RNG is busted");
18941910
let inbound_payment_key: SecretKey = master_key
1895-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(5).unwrap())
1911+
.derive_priv(
1912+
&secp_ctx,
1913+
&ChildNumber::from_hardened_idx(INBOUND_PAYMENT_KEY_INDEX).unwrap(),
1914+
)
18961915
.expect("Your RNG is busted")
18971916
.private_key;
18981917
let mut inbound_pmt_key_bytes = [0; 32];
18991918
inbound_pmt_key_bytes.copy_from_slice(&inbound_payment_key[..]);
1900-
let peer_storage_key: SecretKey = master_key
1901-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(6).unwrap())
1919+
let peer_storage_key = master_key
1920+
.derive_priv(
1921+
&secp_ctx,
1922+
&ChildNumber::from_hardened_idx(PEER_STORAGE_KEY_INDEX).unwrap(),
1923+
)
19021924
.expect("Your RNG is busted")
19031925
.private_key;
19041926

0 commit comments

Comments
 (0)