Skip to content

Commit 00e7e65

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 5a5f6cf commit 00e7e65

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

lightning/src/sign/mod.rs

+33-11
Original file line numberDiff line numberDiff line change
@@ -1811,18 +1811,30 @@ impl KeysManager {
18111811
///
18121812
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
18131813
pub fn new(seed: &[u8; 32], starting_time_secs: u64, starting_time_nanos: u32) -> Self {
1814+
// Constants for key derivation path indices used in this function.
1815+
const NODE_SECRET_INDEX: u32 = 0;
1816+
const DESTINATION_SCRIPT_INDEX: u32 = 1;
1817+
const SHUTDOWN_PUBKEY_INDEX: u32 = 2;
1818+
const CHANNEL_MASTER_KEY_INDEX: u32 = 3;
1819+
const INBOUND_PAYMENT_KEY_INDEX: u32 = 5;
1820+
const PEER_STORAGE_KEY_INDEX: u32 = 6;
1821+
18141822
let secp_ctx = Secp256k1::new();
18151823
// Note that when we aren't serializing the key, network doesn't matter
18161824
match Xpriv::new_master(Network::Testnet, seed) {
18171825
Ok(master_key) => {
18181826
let node_secret = master_key
1819-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(0).unwrap())
1827+
.derive_priv(
1828+
&secp_ctx,
1829+
&ChildNumber::from_hardened_idx(NODE_SECRET_INDEX).unwrap(),
1830+
)
18201831
.expect("Your RNG is busted")
18211832
.private_key;
18221833
let node_id = PublicKey::from_secret_key(&secp_ctx, &node_secret);
1823-
let destination_script = match master_key
1824-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(1).unwrap())
1825-
{
1834+
let destination_script = match master_key.derive_priv(
1835+
&secp_ctx,
1836+
&ChildNumber::from_hardened_idx(DESTINATION_SCRIPT_INDEX).unwrap(),
1837+
) {
18261838
Ok(destination_key) => {
18271839
let wpubkey_hash = WPubkeyHash::hash(
18281840
&Xpub::from_priv(&secp_ctx, &destination_key).to_pub().to_bytes(),
@@ -1834,23 +1846,33 @@ impl KeysManager {
18341846
},
18351847
Err(_) => panic!("Your RNG is busted"),
18361848
};
1837-
let shutdown_pubkey = match master_key
1838-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(2).unwrap())
1839-
{
1849+
let shutdown_pubkey = match master_key.derive_priv(
1850+
&secp_ctx,
1851+
&ChildNumber::from_hardened_idx(SHUTDOWN_PUBKEY_INDEX).unwrap(),
1852+
) {
18401853
Ok(shutdown_key) => Xpub::from_priv(&secp_ctx, &shutdown_key).public_key,
18411854
Err(_) => panic!("Your RNG is busted"),
18421855
};
18431856
let channel_master_key = master_key
1844-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(3).unwrap())
1857+
.derive_priv(
1858+
&secp_ctx,
1859+
&ChildNumber::from_hardened_idx(CHANNEL_MASTER_KEY_INDEX).unwrap(),
1860+
)
18451861
.expect("Your RNG is busted");
18461862
let inbound_payment_key: SecretKey = master_key
1847-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(5).unwrap())
1863+
.derive_priv(
1864+
&secp_ctx,
1865+
&ChildNumber::from_hardened_idx(INBOUND_PAYMENT_KEY_INDEX).unwrap(),
1866+
)
18481867
.expect("Your RNG is busted")
18491868
.private_key;
18501869
let mut inbound_pmt_key_bytes = [0; 32];
18511870
inbound_pmt_key_bytes.copy_from_slice(&inbound_payment_key[..]);
1852-
let peer_storage_key: SecretKey = master_key
1853-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(6).unwrap())
1871+
let peer_storage_key = master_key
1872+
.derive_priv(
1873+
&secp_ctx,
1874+
&ChildNumber::from_hardened_idx(PEER_STORAGE_KEY_INDEX).unwrap(),
1875+
)
18541876
.expect("Your RNG is busted")
18551877
.private_key;
18561878

0 commit comments

Comments
 (0)