@@ -1860,18 +1860,30 @@ impl KeysManager {
1860
1860
///
1861
1861
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
1862
1862
pub fn new ( seed : & [ u8 ; 32 ] , starting_time_secs : u64 , starting_time_nanos : u32 ) -> Self {
1863
+ // Constants for key derivation path indices used in this function.
1864
+ const NODE_SECRET_INDEX : u32 = 0 ;
1865
+ const DESTINATION_SCRIPT_INDEX : u32 = 1 ;
1866
+ const SHUTDOWN_PUBKEY_INDEX : u32 = 2 ;
1867
+ const CHANNEL_MASTER_KEY_INDEX : u32 = 3 ;
1868
+ const INBOUND_PAYMENT_KEY_INDEX : u32 = 5 ;
1869
+ const PEER_STORAGE_KEY_INDEX : u32 = 6 ;
1870
+
1863
1871
let secp_ctx = Secp256k1 :: new ( ) ;
1864
1872
// Note that when we aren't serializing the key, network doesn't matter
1865
1873
match Xpriv :: new_master ( Network :: Testnet , seed) {
1866
1874
Ok ( master_key) => {
1867
1875
let node_secret = master_key
1868
- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 0 ) . unwrap ( ) )
1876
+ . derive_priv (
1877
+ & secp_ctx,
1878
+ & ChildNumber :: from_hardened_idx ( NODE_SECRET_INDEX ) . unwrap ( ) ,
1879
+ )
1869
1880
. expect ( "Your RNG is busted" )
1870
1881
. private_key ;
1871
1882
let node_id = PublicKey :: from_secret_key ( & secp_ctx, & node_secret) ;
1872
- let destination_script = match master_key
1873
- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 1 ) . unwrap ( ) )
1874
- {
1883
+ let destination_script = match master_key. derive_priv (
1884
+ & secp_ctx,
1885
+ & ChildNumber :: from_hardened_idx ( DESTINATION_SCRIPT_INDEX ) . unwrap ( ) ,
1886
+ ) {
1875
1887
Ok ( destination_key) => {
1876
1888
let wpubkey_hash = WPubkeyHash :: hash (
1877
1889
& Xpub :: from_priv ( & secp_ctx, & destination_key) . to_pub ( ) . to_bytes ( ) ,
@@ -1883,23 +1895,33 @@ impl KeysManager {
1883
1895
} ,
1884
1896
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1885
1897
} ;
1886
- let shutdown_pubkey = match master_key
1887
- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 2 ) . unwrap ( ) )
1888
- {
1898
+ let shutdown_pubkey = match master_key. derive_priv (
1899
+ & secp_ctx,
1900
+ & ChildNumber :: from_hardened_idx ( SHUTDOWN_PUBKEY_INDEX ) . unwrap ( ) ,
1901
+ ) {
1889
1902
Ok ( shutdown_key) => Xpub :: from_priv ( & secp_ctx, & shutdown_key) . public_key ,
1890
1903
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1891
1904
} ;
1892
1905
let channel_master_key = master_key
1893
- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 3 ) . unwrap ( ) )
1906
+ . derive_priv (
1907
+ & secp_ctx,
1908
+ & ChildNumber :: from_hardened_idx ( CHANNEL_MASTER_KEY_INDEX ) . unwrap ( ) ,
1909
+ )
1894
1910
. expect ( "Your RNG is busted" ) ;
1895
1911
let inbound_payment_key: SecretKey = master_key
1896
- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 5 ) . unwrap ( ) )
1912
+ . derive_priv (
1913
+ & secp_ctx,
1914
+ & ChildNumber :: from_hardened_idx ( INBOUND_PAYMENT_KEY_INDEX ) . unwrap ( ) ,
1915
+ )
1897
1916
. expect ( "Your RNG is busted" )
1898
1917
. private_key ;
1899
1918
let mut inbound_pmt_key_bytes = [ 0 ; 32 ] ;
1900
1919
inbound_pmt_key_bytes. copy_from_slice ( & inbound_payment_key[ ..] ) ;
1901
- let peer_storage_key: SecretKey = master_key
1902
- . derive_priv ( & secp_ctx, & ChildNumber :: from_hardened_idx ( 6 ) . unwrap ( ) )
1920
+ let peer_storage_key = master_key
1921
+ . derive_priv (
1922
+ & secp_ctx,
1923
+ & ChildNumber :: from_hardened_idx ( PEER_STORAGE_KEY_INDEX ) . unwrap ( ) ,
1924
+ )
1903
1925
. expect ( "Your RNG is busted" )
1904
1926
. private_key ;
1905
1927
0 commit comments