@@ -1859,18 +1859,30 @@ impl KeysManager {
1859
1859
///
1860
1860
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
1861
1861
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
+
1862
1870
let secp_ctx = Secp256k1 :: new ( ) ;
1863
1871
// Note that when we aren't serializing the key, network doesn't matter
1864
1872
match Xpriv :: new_master ( Network :: Testnet , seed) {
1865
1873
Ok ( master_key) => {
1866
1874
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
+ )
1868
1879
. expect ( "Your RNG is busted" )
1869
1880
. private_key ;
1870
1881
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
+ ) {
1874
1886
Ok ( destination_key) => {
1875
1887
let wpubkey_hash = WPubkeyHash :: hash (
1876
1888
& Xpub :: from_priv ( & secp_ctx, & destination_key) . to_pub ( ) . to_bytes ( ) ,
@@ -1882,23 +1894,33 @@ impl KeysManager {
1882
1894
} ,
1883
1895
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1884
1896
} ;
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
+ ) {
1888
1901
Ok ( shutdown_key) => Xpub :: from_priv ( & secp_ctx, & shutdown_key) . public_key ,
1889
1902
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1890
1903
} ;
1891
1904
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
+ )
1893
1909
. expect ( "Your RNG is busted" ) ;
1894
1910
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
+ )
1896
1915
. expect ( "Your RNG is busted" )
1897
1916
. private_key ;
1898
1917
let mut inbound_pmt_key_bytes = [ 0 ; 32 ] ;
1899
1918
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
+ )
1902
1924
. expect ( "Your RNG is busted" )
1903
1925
. private_key ;
1904
1926
0 commit comments