Skip to content

Commit ba30f67

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 401e3f5 commit ba30f67

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
@@ -1856,18 +1856,30 @@ impl KeysManager {
18561856
///
18571857
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
18581858
pub fn new(seed: &[u8; 32], starting_time_secs: u64, starting_time_nanos: u32) -> Self {
1859+
// Constants for key derivation path indices used in this function.
1860+
const NODE_SECRET_INDEX: u32 = 0;
1861+
const DESTINATION_SCRIPT_INDEX: u32 = 1;
1862+
const SHUTDOWN_PUBKEY_INDEX: u32 = 2;
1863+
const CHANNEL_MASTER_KEY_INDEX: u32 = 3;
1864+
const INBOUND_PAYMENT_KEY_INDEX: u32 = 5;
1865+
const PEER_STORAGE_KEY_INDEX: u32 = 6;
1866+
18591867
let secp_ctx = Secp256k1::new();
18601868
// Note that when we aren't serializing the key, network doesn't matter
18611869
match Xpriv::new_master(Network::Testnet, seed) {
18621870
Ok(master_key) => {
18631871
let node_secret = master_key
1864-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(0).unwrap())
1872+
.derive_priv(
1873+
&secp_ctx,
1874+
&ChildNumber::from_hardened_idx(NODE_SECRET_INDEX).unwrap(),
1875+
)
18651876
.expect("Your RNG is busted")
18661877
.private_key;
18671878
let node_id = PublicKey::from_secret_key(&secp_ctx, &node_secret);
1868-
let destination_script = match master_key
1869-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(1).unwrap())
1870-
{
1879+
let destination_script = match master_key.derive_priv(
1880+
&secp_ctx,
1881+
&ChildNumber::from_hardened_idx(DESTINATION_SCRIPT_INDEX).unwrap(),
1882+
) {
18711883
Ok(destination_key) => {
18721884
let wpubkey_hash = WPubkeyHash::hash(
18731885
&Xpub::from_priv(&secp_ctx, &destination_key).to_pub().to_bytes(),
@@ -1879,23 +1891,33 @@ impl KeysManager {
18791891
},
18801892
Err(_) => panic!("Your RNG is busted"),
18811893
};
1882-
let shutdown_pubkey = match master_key
1883-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(2).unwrap())
1884-
{
1894+
let shutdown_pubkey = match master_key.derive_priv(
1895+
&secp_ctx,
1896+
&ChildNumber::from_hardened_idx(SHUTDOWN_PUBKEY_INDEX).unwrap(),
1897+
) {
18851898
Ok(shutdown_key) => Xpub::from_priv(&secp_ctx, &shutdown_key).public_key,
18861899
Err(_) => panic!("Your RNG is busted"),
18871900
};
18881901
let channel_master_key = master_key
1889-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(3).unwrap())
1902+
.derive_priv(
1903+
&secp_ctx,
1904+
&ChildNumber::from_hardened_idx(CHANNEL_MASTER_KEY_INDEX).unwrap(),
1905+
)
18901906
.expect("Your RNG is busted");
18911907
let inbound_payment_key: SecretKey = master_key
1892-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(5).unwrap())
1908+
.derive_priv(
1909+
&secp_ctx,
1910+
&ChildNumber::from_hardened_idx(INBOUND_PAYMENT_KEY_INDEX).unwrap(),
1911+
)
18931912
.expect("Your RNG is busted")
18941913
.private_key;
18951914
let mut inbound_pmt_key_bytes = [0; 32];
18961915
inbound_pmt_key_bytes.copy_from_slice(&inbound_payment_key[..]);
1897-
let peer_storage_key: SecretKey = master_key
1898-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(6).unwrap())
1916+
let peer_storage_key = master_key
1917+
.derive_priv(
1918+
&secp_ctx,
1919+
&ChildNumber::from_hardened_idx(PEER_STORAGE_KEY_INDEX).unwrap(),
1920+
)
18991921
.expect("Your RNG is busted")
19001922
.private_key;
19011923

0 commit comments

Comments
 (0)