@@ -1856,18 +1856,30 @@ impl KeysManager {
1856
1856
///
1857
1857
/// [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
1858
1858
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
+
1859
1867
let secp_ctx = Secp256k1 :: new ( ) ;
1860
1868
// Note that when we aren't serializing the key, network doesn't matter
1861
1869
match Xpriv :: new_master ( Network :: Testnet , seed) {
1862
1870
Ok ( master_key) => {
1863
1871
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
+ )
1865
1876
. expect ( "Your RNG is busted" )
1866
1877
. private_key ;
1867
1878
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
+ ) {
1871
1883
Ok ( destination_key) => {
1872
1884
let wpubkey_hash = WPubkeyHash :: hash (
1873
1885
& Xpub :: from_priv ( & secp_ctx, & destination_key) . to_pub ( ) . to_bytes ( ) ,
@@ -1879,23 +1891,33 @@ impl KeysManager {
1879
1891
} ,
1880
1892
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1881
1893
} ;
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
+ ) {
1885
1898
Ok ( shutdown_key) => Xpub :: from_priv ( & secp_ctx, & shutdown_key) . public_key ,
1886
1899
Err ( _) => panic ! ( "Your RNG is busted" ) ,
1887
1900
} ;
1888
1901
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
+ )
1890
1906
. expect ( "Your RNG is busted" ) ;
1891
1907
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
+ )
1893
1912
. expect ( "Your RNG is busted" )
1894
1913
. private_key ;
1895
1914
let mut inbound_pmt_key_bytes = [ 0 ; 32 ] ;
1896
1915
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
+ )
1899
1921
. expect ( "Your RNG is busted" )
1900
1922
. private_key ;
1901
1923
0 commit comments