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