Skip to content

Commit 112be7b

Browse files
committed
Use sha256 instead of ChaCha20 for randomness.
1 parent 8f4d24b commit 112be7b

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

lightning-invoice/src/utils.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use {CreationError, Currency, DEFAULT_EXPIRY_TIME, Invoice, InvoiceBuilder, Sign
44
use payment::{Payer, Router};
55

66
use bech32::ToBase32;
7-
use bitcoin_hashes::Hash;
7+
use bitcoin_hashes::{Hash, sha256};
88
use crate::prelude::*;
99
use lightning::chain;
1010
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
@@ -16,7 +16,6 @@ use lightning::routing::scoring::Score;
1616
use lightning::routing::network_graph::{NetworkGraph, RoutingFees};
1717
use lightning::routing::router::{Route, RouteHint, RouteHintHop, RouteParameters, find_route};
1818
use lightning::util::logger::Logger;
19-
use lightning::util::chacha20::ChaCha20;
2019
use secp256k1::key::PublicKey;
2120
use core::convert::TryInto;
2221
use core::ops::Deref;
@@ -224,14 +223,14 @@ where
224223
pub struct DefaultRouter<G: Deref<Target = NetworkGraph>, L: Deref> where L::Target: Logger {
225224
network_graph: G,
226225
logger: L,
227-
prng: Mutex<ChaCha20>,
226+
random_seed_bytes: Mutex<[u8; 32]>,
228227
}
229228

230229
impl<G: Deref<Target = NetworkGraph>, L: Deref> DefaultRouter<G, L> where L::Target: Logger {
231230
/// Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source `random_seed_bytes`.
232231
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 }
235234
}
236235
}
237236

@@ -240,10 +239,10 @@ where L::Target: Logger {
240239
fn find_route(
241240
&self, payer: &PublicKey, params: &RouteParameters, _payment_hash: &PaymentHash,
242241
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())
247246
}
248247
}
249248

0 commit comments

Comments
 (0)