@@ -4,7 +4,7 @@ use {CreationError, Currency, DEFAULT_EXPIRY_TIME, Invoice, InvoiceBuilder, Sign
4
4
use payment:: { Payer , Router } ;
5
5
6
6
use bech32:: ToBase32 ;
7
- use bitcoin_hashes:: Hash ;
7
+ use bitcoin_hashes:: { Hash , sha256 } ;
8
8
use crate :: prelude:: * ;
9
9
use lightning:: chain;
10
10
use lightning:: chain:: chaininterface:: { BroadcasterInterface , FeeEstimator } ;
@@ -16,7 +16,6 @@ use lightning::routing::scoring::Score;
16
16
use lightning:: routing:: network_graph:: { NetworkGraph , RoutingFees } ;
17
17
use lightning:: routing:: router:: { Route , RouteHint , RouteHintHop , RouteParameters , find_route} ;
18
18
use lightning:: util:: logger:: Logger ;
19
- use lightning:: util:: chacha20:: ChaCha20 ;
20
19
use secp256k1:: key:: PublicKey ;
21
20
use core:: convert:: TryInto ;
22
21
use core:: ops:: Deref ;
@@ -224,14 +223,14 @@ where
224
223
pub struct DefaultRouter < G : Deref < Target = NetworkGraph > , L : Deref > where L :: Target : Logger {
225
224
network_graph : G ,
226
225
logger : L ,
227
- prng : Mutex < ChaCha20 > ,
226
+ random_seed_bytes : Mutex < [ u8 ; 32 ] > ,
228
227
}
229
228
230
229
impl < G : Deref < Target = NetworkGraph > , L : Deref > DefaultRouter < G , L > where L :: Target : Logger {
231
230
/// Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source `random_seed_bytes`.
232
231
pub fn new ( network_graph : G , logger : L , random_seed_bytes : [ u8 ; 32 ] ) -> Self {
233
- let prng = Mutex :: new ( ChaCha20 :: new ( & random_seed_bytes, & [ 0 ; 8 ] ) ) ;
234
- Self { network_graph, logger, prng }
232
+ let random_seed_bytes = Mutex :: new ( random_seed_bytes) ;
233
+ Self { network_graph, logger, random_seed_bytes }
235
234
}
236
235
}
237
236
@@ -240,10 +239,10 @@ where L::Target: Logger {
240
239
fn find_route (
241
240
& self , payer : & PublicKey , params : & RouteParameters , _payment_hash : & PaymentHash ,
242
241
first_hops : Option < & [ & ChannelDetails ] > , scorer : & S
243
- ) -> Result < Route , LightningError > {
244
- let mut random_seed_bytes = [ 0u8 ; 32 ] ;
245
- self . prng . lock ( ) . unwrap ( ) . process_in_place ( & mut random_seed_bytes ) ;
246
- find_route ( payer, params, & * self . network_graph , first_hops, & * self . logger , scorer, & random_seed_bytes )
242
+ ) -> Result < Route , LightningError > {
243
+ let mut locked_random_seed_bytes = self . random_seed_bytes . lock ( ) . unwrap ( ) ;
244
+ * locked_random_seed_bytes = sha256 :: Hash :: hash ( & * locked_random_seed_bytes ) . into_inner ( ) ;
245
+ find_route ( payer, params, & * self . network_graph , first_hops, & * self . logger , scorer, & locked_random_seed_bytes . clone ( ) )
247
246
}
248
247
}
249
248
0 commit comments