88// licenses.
99
1010use bitcoin:: hashes:: hex:: FromHex ;
11+ use bitcoin:: hashes:: sha256:: Hash as Sha256 ;
12+ use bitcoin:: hashes:: Hash ;
1113use bitcoin:: hex:: DisplayHex ;
1214use bitcoin:: secp256k1:: { PublicKey , Scalar , Secp256k1 , SecretKey , schnorr} ;
1315use bitcoin:: secp256k1:: ecdh:: SharedSecret ;
@@ -2091,6 +2093,10 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
20912093 route_params : None ,
20922094 } ;
20932095
2096+ // We need the session priv to construct an invalid onion packet later.
2097+ let override_random_bytes = [ 3 ; 32 ] ;
2098+ * nodes[ 0 ] . keys_manager . override_random_bytes . lock ( ) . unwrap ( ) = Some ( override_random_bytes) ;
2099+
20942100 nodes[ 0 ] . node . send_payment_with_route ( route. clone ( ) , payment_hash, RecipientOnionFields :: spontaneous_empty ( ) , PaymentId ( payment_hash. 0 ) ) . unwrap ( ) ;
20952101
20962102 check_added_monitors ! ( & nodes[ 0 ] , 1 ) ;
@@ -2101,8 +2107,7 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
21012107 } else {
21022108 let replacement_onion = {
21032109 // 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 ( ) ;
21062111 let recipient_onion_fields = RecipientOnionFields :: spontaneous_empty ( ) ;
21072112
21082113 let mut blinded_tail = route. paths [ 0 ] . blinded_tail . clone ( ) . unwrap ( ) ;
@@ -2122,19 +2127,22 @@ fn do_test_trampoline_single_hop_receive(success: bool) {
21222127 let trampoline_packet = onion_utils:: construct_trampoline_onion_packet (
21232128 trampoline_payloads,
21242129 trampoline_onion_keys,
2125- prng_seed . secret_bytes ( ) ,
2130+ override_random_bytes ,
21262131 & payment_hash,
21272132 None ,
21282133 ) . unwrap ( ) ;
21292134
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+ } ;
21312139
21322140 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 ( ) ;
21332141 let outer_onion_keys = onion_utils:: construct_onion_keys ( & secp_ctx, & route. clone ( ) . paths [ 0 ] , & outer_session_priv) ;
21342142 let outer_packet = onion_utils:: construct_onion_packet (
21352143 outer_payloads,
21362144 outer_onion_keys,
2137- prng_seed . secret_bytes ( ) ,
2145+ override_random_bytes ,
21382146 & payment_hash,
21392147 ) . unwrap ( ) ;
21402148
0 commit comments