Skip to content

Commit ac04993

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 81f9219 commit ac04993

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
@@ -1818,18 +1818,30 @@ impl KeysManager {
18181818
///
18191819
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
18201820
pub fn new(seed: &[u8; 32], starting_time_secs: u64, starting_time_nanos: u32) -> Self {
1821+
// Constants for key derivation path indices used in this function.
1822+
const NODE_SECRET_INDEX: u32 = 0;
1823+
const DESTINATION_SCRIPT_INDEX: u32 = 1;
1824+
const SHUTDOWN_PUBKEY_INDEX: u32 = 2;
1825+
const CHANNEL_MASTER_KEY_INDEX: u32 = 3;
1826+
const INBOUND_PAYMENT_KEY_INDEX: u32 = 5;
1827+
const PEER_STORAGE_KEY_INDEX: u32 = 6;
1828+
18211829
let secp_ctx = Secp256k1::new();
18221830
// Note that when we aren't serializing the key, network doesn't matter
18231831
match Xpriv::new_master(Network::Testnet, seed) {
18241832
Ok(master_key) => {
18251833
let node_secret = master_key
1826-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(0).unwrap())
1834+
.derive_priv(
1835+
&secp_ctx,
1836+
&ChildNumber::from_hardened_idx(NODE_SECRET_INDEX).unwrap(),
1837+
)
18271838
.expect("Your RNG is busted")
18281839
.private_key;
18291840
let node_id = PublicKey::from_secret_key(&secp_ctx, &node_secret);
1830-
let destination_script = match master_key
1831-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(1).unwrap())
1832-
{
1841+
let destination_script = match master_key.derive_priv(
1842+
&secp_ctx,
1843+
&ChildNumber::from_hardened_idx(DESTINATION_SCRIPT_INDEX).unwrap(),
1844+
) {
18331845
Ok(destination_key) => {
18341846
let wpubkey_hash = WPubkeyHash::hash(
18351847
&Xpub::from_priv(&secp_ctx, &destination_key).to_pub().to_bytes(),
@@ -1841,23 +1853,33 @@ impl KeysManager {
18411853
},
18421854
Err(_) => panic!("Your RNG is busted"),
18431855
};
1844-
let shutdown_pubkey = match master_key
1845-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(2).unwrap())
1846-
{
1856+
let shutdown_pubkey = match master_key.derive_priv(
1857+
&secp_ctx,
1858+
&ChildNumber::from_hardened_idx(SHUTDOWN_PUBKEY_INDEX).unwrap(),
1859+
) {
18471860
Ok(shutdown_key) => Xpub::from_priv(&secp_ctx, &shutdown_key).public_key,
18481861
Err(_) => panic!("Your RNG is busted"),
18491862
};
18501863
let channel_master_key = master_key
1851-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(3).unwrap())
1864+
.derive_priv(
1865+
&secp_ctx,
1866+
&ChildNumber::from_hardened_idx(CHANNEL_MASTER_KEY_INDEX).unwrap(),
1867+
)
18521868
.expect("Your RNG is busted");
18531869
let inbound_payment_key: SecretKey = master_key
1854-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(5).unwrap())
1870+
.derive_priv(
1871+
&secp_ctx,
1872+
&ChildNumber::from_hardened_idx(INBOUND_PAYMENT_KEY_INDEX).unwrap(),
1873+
)
18551874
.expect("Your RNG is busted")
18561875
.private_key;
18571876
let mut inbound_pmt_key_bytes = [0; 32];
18581877
inbound_pmt_key_bytes.copy_from_slice(&inbound_payment_key[..]);
1859-
let peer_storage_key: SecretKey = master_key
1860-
.derive_priv(&secp_ctx, &ChildNumber::from_hardened_idx(6).unwrap())
1878+
let peer_storage_key = master_key
1879+
.derive_priv(
1880+
&secp_ctx,
1881+
&ChildNumber::from_hardened_idx(PEER_STORAGE_KEY_INDEX).unwrap(),
1882+
)
18611883
.expect("Your RNG is busted")
18621884
.private_key;
18631885

0 commit comments

Comments
 (0)