@@ -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