8
8
// licenses.
9
9
10
10
use bitcoin:: hashes:: hex:: FromHex ;
11
+ use bitcoin:: hashes:: sha256:: Hash as Sha256 ;
12
+ use bitcoin:: hashes:: Hash ;
11
13
use bitcoin:: hex:: DisplayHex ;
12
14
use bitcoin:: secp256k1:: { PublicKey , Scalar , Secp256k1 , SecretKey , schnorr} ;
13
15
use bitcoin:: secp256k1:: ecdh:: SharedSecret ;
@@ -1986,6 +1988,10 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
1986
1988
let node_chanmgrs = create_node_chanmgrs ( TOTAL_NODE_COUNT , & node_cfgs, & vec ! [ None ; TOTAL_NODE_COUNT ] ) ;
1987
1989
let mut nodes = create_network ( TOTAL_NODE_COUNT , & node_cfgs, & node_chanmgrs) ;
1988
1990
1991
+ // We need the session priv to construct an invalid onion packet later.
1992
+ let override_random_bytes = [ 3 ; 32 ] ;
1993
+ * nodes[ 0 ] . keys_manager . override_random_bytes . lock ( ) . unwrap ( ) = Some ( override_random_bytes) ;
1994
+
1989
1995
let ( _, _, chan_id_alice_bob, _) = create_announced_chan_between_nodes_with_value ( & nodes, 0 , 1 , 1_000_000 , 0 ) ;
1990
1996
let ( _, _, chan_id_bob_carol, _) = create_announced_chan_between_nodes_with_value ( & nodes, 1 , 2 , 1_000_000 , 0 ) ;
1991
1997
@@ -2003,7 +2009,7 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
2003
2009
let amt_msat = 1000 ;
2004
2010
let ( payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash ( & nodes[ 2 ] , Some ( amt_msat) , None ) ;
2005
2011
2006
- let carol_alice_trampoline_session_priv = secret_from_hex ( "a0f4b8d7b6c2d0ffdfaf718f76e9decaef4d9fb38a8c4addb95c4007cc3eee03" ) ;
2012
+ let carol_alice_trampoline_session_priv = SecretKey :: from_slice ( & override_random_bytes ) . unwrap ( ) ;
2007
2013
let carol_blinding_point = PublicKey :: from_secret_key ( & secp_ctx, & carol_alice_trampoline_session_priv) ;
2008
2014
let carol_blinded_hops = if success {
2009
2015
let payee_tlvs = UnauthenticatedReceiveTlvs {
@@ -2101,8 +2107,7 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
2101
2107
} else {
2102
2108
let replacement_onion = {
2103
2109
// create a substitute onion where the last Trampoline hop is a forward
2104
- let trampoline_secret_key = secret_from_hex ( "0134928f7b7ca6769080d70f16be84c812c741f545b49a34db47ce338a205799" ) ;
2105
- let prng_seed = secret_from_hex ( "fe02b4b9054302a3ddf4e1e9f7c411d644aebbd295218ab009dca94435f775a9" ) ;
2110
+ let trampoline_secret_key = SecretKey :: from_slice ( & override_random_bytes) . unwrap ( ) ;
2106
2111
let recipient_onion_fields = RecipientOnionFields :: spontaneous_empty ( ) ;
2107
2112
2108
2113
let mut blinded_tail = route. paths [ 0 ] . blinded_tail . clone ( ) . unwrap ( ) ;
@@ -2122,19 +2127,22 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
2122
2127
let trampoline_packet = onion_utils:: construct_trampoline_onion_packet (
2123
2128
trampoline_payloads,
2124
2129
trampoline_onion_keys,
2125
- prng_seed . secret_bytes ( ) ,
2130
+ override_random_bytes ,
2126
2131
& payment_hash,
2127
2132
None ,
2128
2133
) . unwrap ( ) ;
2129
2134
2130
- let outer_session_priv = secret_from_hex ( "e52c20461ed7acd46c4e7b591a37610519179482887bd73bf3b94617f8f03677" ) ;
2135
+ let outer_session_priv = {
2136
+ let session_priv_hash = Sha256 :: hash ( & override_random_bytes) . to_byte_array ( ) ;
2137
+ SecretKey :: from_slice ( & session_priv_hash[ ..] ) . expect ( "You broke SHA-256!" )
2138
+ } ;
2131
2139
2132
2140
let ( outer_payloads, _, _) = onion_utils:: build_onion_payloads ( & route. paths [ 0 ] , outer_total_msat, & recipient_onion_fields, outer_starting_htlc_offset, & None , None , Some ( trampoline_packet) ) . unwrap ( ) ;
2133
2141
let outer_onion_keys = onion_utils:: construct_onion_keys ( & secp_ctx, & route. clone ( ) . paths [ 0 ] , & outer_session_priv) ;
2134
2142
let outer_packet = onion_utils:: construct_onion_packet (
2135
2143
outer_payloads,
2136
2144
outer_onion_keys,
2137
- prng_seed . secret_bytes ( ) ,
2145
+ override_random_bytes ,
2138
2146
& payment_hash,
2139
2147
) . unwrap ( ) ;
2140
2148
0 commit comments