@@ -1811,18 +1811,30 @@ impl KeysManager {
1811
1811
///
1812
1812
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
1813
1813
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
+
1814
1822
let secp_ctx = Secp256k1 :: new ( ) ;
1815
1823
// Note that when we aren't serializing the key, network doesn't matter
1816
1824
match Xpriv :: new_master ( Network :: Testnet , seed) {
1817
1825
Ok ( master_key) => {
1818
1826
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
+ )
1820
1831
. expect ( "Your RNG is busted" )
1821
1832
. private_key ;
1822
1833
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
+ ) {
1826
1838
Ok ( destination_key) => {
1827
1839
let wpubkey_hash = WPubkeyHash :: hash (
1828
1840
& Xpub :: from_priv ( & secp_ctx, & destination_key) . to_pub ( ) . to_bytes ( ) ,
@@ -1834,23 +1846,33 @@ impl KeysManager {
1834
1846
} ,
1835
1847
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1836
1848
} ;
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
+ ) {
1840
1853
Ok ( shutdown_key) => Xpub :: from_priv ( & secp_ctx, & shutdown_key) . public_key ,
1841
1854
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1842
1855
} ;
1843
1856
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
+ )
1845
1861
. expect ( "Your RNG is busted" ) ;
1846
1862
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
+ )
1848
1867
. expect ( "Your RNG is busted" )
1849
1868
. private_key ;
1850
1869
let mut inbound_pmt_key_bytes = [ 0 ; 32 ] ;
1851
1870
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
+ )
1854
1876
. expect ( "Your RNG is busted" )
1855
1877
. private_key ;
1856
1878
0 commit comments