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