@@ -1859,18 +1859,30 @@ impl KeysManager {
18591859 ///
18601860 /// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
18611861 pub fn new ( seed : & [ u8 ; 32 ] , starting_time_secs : u64 , starting_time_nanos : u32 ) -> Self {
1862+ // Constants for key derivation path indices used in this function.
1863+ const NODE_SECRET_INDEX : u32 = 0 ;
1864+ const DESTINATION_SCRIPT_INDEX : u32 = 1 ;
1865+ const SHUTDOWN_PUBKEY_INDEX : u32 = 2 ;
1866+ const CHANNEL_MASTER_KEY_INDEX : u32 = 3 ;
1867+ const INBOUND_PAYMENT_KEY_INDEX : u32 = 5 ;
1868+ const PEER_STORAGE_KEY_INDEX : u32 = 6 ;
1869+
18621870 let secp_ctx = Secp256k1 :: new ( ) ;
18631871 // Note that when we aren't serializing the key, network doesn't matter
18641872 match Xpriv :: new_master ( Network :: Testnet , seed) {
18651873 Ok ( master_key) => {
18661874 let node_secret = master_key
1867- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 0 ) . unwrap ( ) )
1875+ . derive_priv (
1876+ & secp_ctx,
1877+ & ChildNumber :: from_hardened_idx ( NODE_SECRET_INDEX ) . unwrap ( ) ,
1878+ )
18681879 . expect ( "Your RNG is busted" )
18691880 . private_key ;
18701881 let node_id = PublicKey :: from_secret_key ( & secp_ctx, & node_secret) ;
1871- let destination_script = match master_key
1872- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 1 ) . unwrap ( ) )
1873- {
1882+ let destination_script = match master_key. derive_priv (
1883+ & secp_ctx,
1884+ & ChildNumber :: from_hardened_idx ( DESTINATION_SCRIPT_INDEX ) . unwrap ( ) ,
1885+ ) {
18741886 Ok ( destination_key) => {
18751887 let wpubkey_hash = WPubkeyHash :: hash (
18761888 & Xpub :: from_priv ( & secp_ctx, & destination_key) . to_pub ( ) . to_bytes ( ) ,
@@ -1882,23 +1894,33 @@ impl KeysManager {
18821894 } ,
18831895 Err ( _) => panic ! ( "Your RNG is busted" ) ,
18841896 } ;
1885- let shutdown_pubkey = match master_key
1886- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 2 ) . unwrap ( ) )
1887- {
1897+ let shutdown_pubkey = match master_key. derive_priv (
1898+ & secp_ctx,
1899+ & ChildNumber :: from_hardened_idx ( SHUTDOWN_PUBKEY_INDEX ) . unwrap ( ) ,
1900+ ) {
18881901 Ok ( shutdown_key) => Xpub :: from_priv ( & secp_ctx, & shutdown_key) . public_key ,
18891902 Err ( _) => panic ! ( "Your RNG is busted" ) ,
18901903 } ;
18911904 let channel_master_key = master_key
1892- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 3 ) . unwrap ( ) )
1905+ . derive_priv (
1906+ & secp_ctx,
1907+ & ChildNumber :: from_hardened_idx ( CHANNEL_MASTER_KEY_INDEX ) . unwrap ( ) ,
1908+ )
18931909 . expect ( "Your RNG is busted" ) ;
18941910 let inbound_payment_key: SecretKey = master_key
1895- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 5 ) . unwrap ( ) )
1911+ . derive_priv (
1912+ & secp_ctx,
1913+ & ChildNumber :: from_hardened_idx ( INBOUND_PAYMENT_KEY_INDEX ) . unwrap ( ) ,
1914+ )
18961915 . expect ( "Your RNG is busted" )
18971916 . private_key ;
18981917 let mut inbound_pmt_key_bytes = [ 0 ; 32 ] ;
18991918 inbound_pmt_key_bytes. copy_from_slice ( & inbound_payment_key[ ..] ) ;
1900- let peer_storage_key: SecretKey = master_key
1901- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 6 ) . unwrap ( ) )
1919+ let peer_storage_key = master_key
1920+ . derive_priv (
1921+ & secp_ctx,
1922+ & ChildNumber :: from_hardened_idx ( PEER_STORAGE_KEY_INDEX ) . unwrap ( ) ,
1923+ )
19021924 . expect ( "Your RNG is busted" )
19031925 . private_key ;
19041926
0 commit comments