@@ -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 ;
@@ -131,14 +130,14 @@ where
131
130
pub struct DefaultRouter < G : Deref < Target = NetworkGraph > , L : Deref > where L :: Target : Logger {
132
131
network_graph : G ,
133
132
logger : L ,
134
- prng : Mutex < ChaCha20 > ,
133
+ random_seed_bytes : Mutex < [ u8 ; 32 ] > ,
135
134
}
136
135
137
136
impl < G : Deref < Target = NetworkGraph > , L : Deref > DefaultRouter < G , L > where L :: Target : Logger {
138
137
/// Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source `random_seed_bytes`.
139
138
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 }
142
141
}
143
142
}
144
143
@@ -147,10 +146,10 @@ where L::Target: Logger {
147
146
fn find_route (
148
147
& self , payer : & PublicKey , params : & RouteParameters , _payment_hash : & PaymentHash ,
149
148
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 ( ) )
154
153
}
155
154
}
156
155
0 commit comments