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