@@ -75,6 +75,9 @@ use std::sync::{Arc, Mutex, RwLock};
75
75
use std:: time:: SystemTime ;
76
76
use vss_client:: headers:: { FixedHeaders , LnurlAuthToJwtProvider , VssHeaderProvider } ;
77
77
78
+ const VSS_HARDENED_CHILD_INDEX : u32 = 877 ;
79
+ const VSS_LNURL_AUTH_HARDENED_CHILD_INDEX : u32 = 138 ;
80
+
78
81
#[ derive( Debug , Clone ) ]
79
82
enum ChainDataSourceConfig {
80
83
Esplora { server_url : String , sync_config : Option < EsploraSyncConfig > } ,
@@ -481,10 +484,14 @@ impl NodeBuilder {
481
484
482
485
let config = Arc :: new ( self . config . clone ( ) ) ;
483
486
484
- let vss_xprv = derive_vss_xprv ( config, & seed_bytes, Arc :: clone ( & logger) ) ?;
487
+ let vss_xprv =
488
+ derive_xprv ( config, & seed_bytes, VSS_HARDENED_CHILD_INDEX , Arc :: clone ( & logger) ) ?;
485
489
486
490
let lnurl_auth_xprv = vss_xprv
487
- . derive_priv ( & Secp256k1 :: new ( ) , & [ ChildNumber :: Hardened { index : 138 } ] )
491
+ . derive_priv (
492
+ & Secp256k1 :: new ( ) ,
493
+ & [ ChildNumber :: Hardened { index : VSS_LNURL_AUTH_HARDENED_CHILD_INDEX } ] ,
494
+ )
488
495
. map_err ( |e| {
489
496
log_error ! ( logger, "Failed to derive VSS secret: {}" , e) ;
490
497
BuildError :: KVStoreSetupFailed
@@ -546,7 +553,12 @@ impl NodeBuilder {
546
553
547
554
let config = Arc :: new ( self . config . clone ( ) ) ;
548
555
549
- let vss_xprv = derive_vss_xprv ( config. clone ( ) , & seed_bytes, Arc :: clone ( & logger) ) ?;
556
+ let vss_xprv = derive_xprv (
557
+ config. clone ( ) ,
558
+ & seed_bytes,
559
+ VSS_HARDENED_CHILD_INDEX ,
560
+ Arc :: clone ( & logger) ,
561
+ ) ?;
550
562
551
563
let vss_seed_bytes: [ u8 ; 32 ] = vss_xprv. private_key . secret_bytes ( ) ;
552
564
@@ -1415,8 +1427,8 @@ fn seed_bytes_from_config(
1415
1427
}
1416
1428
}
1417
1429
1418
- fn derive_vss_xprv (
1419
- config : Arc < Config > , seed_bytes : & [ u8 ; 64 ] , logger : Arc < Logger > ,
1430
+ fn derive_xprv (
1431
+ config : Arc < Config > , seed_bytes : & [ u8 ; 64 ] , hardened_child_index : u32 , logger : Arc < Logger > ,
1420
1432
) -> Result < Xpriv , BuildError > {
1421
1433
use bitcoin:: key:: Secp256k1 ;
1422
1434
@@ -1425,10 +1437,11 @@ fn derive_vss_xprv(
1425
1437
BuildError :: InvalidSeedBytes
1426
1438
} ) ?;
1427
1439
1428
- xprv. derive_priv ( & Secp256k1 :: new ( ) , & [ ChildNumber :: Hardened { index : 877 } ] ) . map_err ( |e| {
1429
- log_error ! ( logger, "Failed to derive VSS secret: {}" , e) ;
1430
- BuildError :: KVStoreSetupFailed
1431
- } )
1440
+ xprv. derive_priv ( & Secp256k1 :: new ( ) , & [ ChildNumber :: Hardened { index : hardened_child_index } ] )
1441
+ . map_err ( |e| {
1442
+ log_error ! ( logger, "Failed to derive hardened child secret: {}" , e) ;
1443
+ BuildError :: InvalidSeedBytes
1444
+ } )
1432
1445
}
1433
1446
1434
1447
/// Sanitize the user-provided node alias to ensure that it is a valid protocol-specified UTF-8 string.
0 commit comments