@@ -4,7 +4,7 @@ use {CreationError, Currency, DEFAULT_EXPIRY_TIME, Invoice, InvoiceBuilder, Sign
44use payment:: { Payer , Router } ;
55
66use bech32:: ToBase32 ;
7- use bitcoin_hashes:: Hash ;
7+ use bitcoin_hashes:: { Hash , sha256 } ;
88use crate :: prelude:: * ;
99use lightning:: chain;
1010use lightning:: chain:: chaininterface:: { BroadcasterInterface , FeeEstimator } ;
@@ -16,7 +16,6 @@ use lightning::routing::scoring::Score;
1616use lightning:: routing:: network_graph:: { NetworkGraph , RoutingFees } ;
1717use lightning:: routing:: router:: { Route , RouteHint , RouteHintHop , RouteParameters , find_route} ;
1818use lightning:: util:: logger:: Logger ;
19- use lightning:: util:: chacha20:: ChaCha20 ;
2019use secp256k1:: key:: PublicKey ;
2120use core:: convert:: TryInto ;
2221use core:: ops:: Deref ;
@@ -131,14 +130,14 @@ where
131130pub struct DefaultRouter < G : Deref < Target = NetworkGraph > , L : Deref > where L :: Target : Logger {
132131 network_graph : G ,
133132 logger : L ,
134- prng : Mutex < ChaCha20 > ,
133+ random_seed_bytes : Mutex < [ u8 ; 32 ] > ,
135134}
136135
137136impl < G : Deref < Target = NetworkGraph > , L : Deref > DefaultRouter < G , L > where L :: Target : Logger {
138137 /// Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source `random_seed_bytes`.
139138 pub fn new ( network_graph : G , logger : L , random_seed_bytes : [ u8 ; 32 ] ) -> Self {
140- let prng = Mutex :: new ( ChaCha20 :: new ( & random_seed_bytes, & [ 0 ; 8 ] ) ) ;
141- Self { network_graph, logger, prng }
139+ let random_seed_bytes = Mutex :: new ( random_seed_bytes) ;
140+ Self { network_graph, logger, random_seed_bytes }
142141 }
143142}
144143
@@ -147,10 +146,10 @@ where L::Target: Logger {
147146 fn find_route (
148147 & self , payer : & PublicKey , params : & RouteParameters , _payment_hash : & PaymentHash ,
149148 first_hops : Option < & [ & ChannelDetails ] > , scorer : & S
150- ) -> Result < Route , LightningError > {
151- let mut random_seed_bytes = [ 0u8 ; 32 ] ;
152- self . prng . lock ( ) . unwrap ( ) . process_in_place ( & mut random_seed_bytes ) ;
153- find_route ( payer, params, & * self . network_graph , first_hops, & * self . logger , scorer, & random_seed_bytes )
149+ ) -> Result < Route , LightningError > {
150+ let mut locked_random_seed_bytes = self . random_seed_bytes . lock ( ) . unwrap ( ) ;
151+ * locked_random_seed_bytes = sha256 :: Hash :: hash ( & * locked_random_seed_bytes ) . into_inner ( ) ;
152+ find_route ( payer, params, & * self . network_graph , first_hops, & * self . logger , scorer, & locked_random_seed_bytes . clone ( ) )
154153 }
155154}
156155
0 commit comments