Skip to content

Commit c5c48e9

Browse files
committed
Replace Hash's inner conversions with explicit byte array conversions
1 parent f9caf5c commit c5c48e9

31 files changed

+135
-143
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ type ChanMan<'a> = ChannelManager<Arc<TestChainMonitor>, Arc<TestBroadcaster>, A
343343
fn get_payment_secret_hash(dest: &ChanMan, payment_id: &mut u8) -> Option<(PaymentSecret, PaymentHash)> {
344344
let mut payment_hash;
345345
for _ in 0..256 {
346-
payment_hash = PaymentHash(Sha256::hash(&[*payment_id; 1]).into_inner());
346+
payment_hash = PaymentHash(Sha256::hash(&[*payment_id; 1]).to_byte_array());
347347
if let Ok(payment_secret) = dest.create_inbound_payment_for_hash(payment_hash, None, 3600, None) {
348348
return Some((payment_secret, payment_hash));
349349
}

fuzz/src/full_stack.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -531,9 +531,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
531531
payment_params, final_value_msat);
532532
let mut payment_hash = PaymentHash([0; 32]);
533533
payment_hash.0[0..8].copy_from_slice(&be64_to_array(payments_sent));
534-
let mut sha = Sha256::engine();
535-
sha.input(&payment_hash.0[..]);
536-
payment_hash.0 = Sha256::from_engine(sha).into_inner();
534+
payment_hash.0 = Sha256::hash(&payment_hash.0[..]).to_byte_array();
537535
payments_sent += 1;
538536
match channelmanager.send_payment(payment_hash,
539537
RecipientOnionFields::spontaneous_empty(), PaymentId(payment_hash.0), params,
@@ -550,9 +548,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
550548
payment_params, final_value_msat);
551549
let mut payment_hash = PaymentHash([0; 32]);
552550
payment_hash.0[0..8].copy_from_slice(&be64_to_array(payments_sent));
553-
let mut sha = Sha256::engine();
554-
sha.input(&payment_hash.0[..]);
555-
payment_hash.0 = Sha256::from_engine(sha).into_inner();
551+
payment_hash.0 = Sha256::hash(&payment_hash.0[..]).to_byte_array();
556552
payments_sent += 1;
557553
let mut payment_secret = PaymentSecret([0; 32]);
558554
payment_secret.0[0..8].copy_from_slice(&be64_to_array(payments_sent));
@@ -603,9 +599,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
603599
},
604600
16 => {
605601
let payment_preimage = PaymentPreimage(keys_manager.get_secure_random_bytes());
606-
let mut sha = Sha256::engine();
607-
sha.input(&payment_preimage.0[..]);
608-
let payment_hash = PaymentHash(Sha256::from_engine(sha).into_inner());
602+
let payment_hash = PaymentHash(Sha256::hash(&payment_preimage.0[..]).to_byte_array());
609603
// Note that this may fail - our hashes may collide and we'll end up trying to
610604
// double-register the same payment_hash.
611605
let _ = channelmanager.create_inbound_payment_for_hash(payment_hash, None, 1, None);

lightning-block-sync/src/rest.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ mod tests {
145145
));
146146
let client = RestClient::new(server.endpoint()).unwrap();
147147

148-
let outpoint = OutPoint::new(bitcoin::Txid::from_inner([0; 32]), 0);
148+
let outpoint = OutPoint::new(bitcoin::Txid::from_byte_array([0; 32]), 0);
149149
let unspent_output = client.is_output_unspent(outpoint).await.unwrap();
150150
assert_eq!(unspent_output, false);
151151
}
@@ -159,7 +159,7 @@ mod tests {
159159
));
160160
let client = RestClient::new(server.endpoint()).unwrap();
161161

162-
let outpoint = OutPoint::new(bitcoin::Txid::from_inner([0; 32]), 0);
162+
let outpoint = OutPoint::new(bitcoin::Txid::from_byte_array([0; 32]), 0);
163163
let unspent_output = client.is_output_unspent(outpoint).await.unwrap();
164164
assert_eq!(unspent_output, true);
165165
}

lightning-block-sync/src/rpc.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ mod tests {
275275
let response = serde_json::json!({ "result": null });
276276
let server = HttpServer::responding_with_ok(MessageBody::Content(response));
277277
let client = RpcClient::new(CREDENTIALS, server.endpoint()).unwrap();
278-
let outpoint = OutPoint::new(bitcoin::Txid::from_inner([0; 32]), 0);
278+
let outpoint = OutPoint::new(bitcoin::Txid::from_byte_array([0; 32]), 0);
279279
let unspent_output = client.is_output_unspent(outpoint).await.unwrap();
280280
assert_eq!(unspent_output, false);
281281
}
@@ -285,7 +285,7 @@ mod tests {
285285
let response = serde_json::json!({ "result": {"bestblock": 1, "confirmations": 42}});
286286
let server = HttpServer::responding_with_ok(MessageBody::Content(response));
287287
let client = RpcClient::new(CREDENTIALS, server.endpoint()).unwrap();
288-
let outpoint = OutPoint::new(bitcoin::Txid::from_inner([0; 32]), 0);
288+
let outpoint = OutPoint::new(bitcoin::Txid::from_byte_array([0; 32]), 0);
289289
let unspent_output = client.is_output_unspent(outpoint).await.unwrap();
290290
assert_eq!(unspent_output, true);
291291
}

lightning-invoice/src/payment.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
//! Convenient utilities for paying Lightning invoices.
1111
1212
use crate::Bolt11Invoice;
13-
14-
use bitcoin_hashes::Hash;
13+
use crate::bitcoin_hashes::Hash;
1514

1615
use lightning::ln::PaymentHash;
1716
use lightning::ln::channelmanager::RecipientOnionFields;
@@ -60,7 +59,7 @@ pub fn payment_parameters_from_invoice(invoice: &Bolt11Invoice)
6059

6160
fn params_from_invoice(invoice: &Bolt11Invoice, amount_msat: u64)
6261
-> (PaymentHash, RecipientOnionFields, RouteParameters) {
63-
let payment_hash = PaymentHash((*invoice.payment_hash()).into_inner());
62+
let payment_hash = PaymentHash((*invoice.payment_hash()).to_byte_array());
6463

6564
let mut recipient_onion = RecipientOnionFields::secret_only(*invoice.payment_secret());
6665
recipient_onion.payment_metadata = invoice.payment_metadata().map(|v| v.clone());

lightning-invoice/src/utils.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -873,8 +873,7 @@ mod test {
873873
let route_params = RouteParameters::from_payment_params_and_value(
874874
payment_params, invoice.amount_milli_satoshis().unwrap());
875875
let payment_event = {
876-
let mut payment_hash = PaymentHash([0; 32]);
877-
payment_hash.0.copy_from_slice(&invoice.payment_hash().as_ref()[0..32]);
876+
let payment_hash = PaymentHash(invoice.payment_hash().to_byte_array());
878877
nodes[0].node.send_payment(payment_hash,
879878
RecipientOnionFields::secret_only(*invoice.payment_secret()),
880879
PaymentId(payment_hash.0), route_params, Retry::Attempts(0)).unwrap();
@@ -1295,7 +1294,7 @@ mod test {
12951294

12961295
let user_payment_preimage = PaymentPreimage([1; 32]);
12971296
let payment_hash = if user_generated_pmt_hash {
1298-
Some(PaymentHash(Sha256::hash(&user_payment_preimage.0[..]).into_inner()))
1297+
Some(PaymentHash(Sha256::hash(&user_payment_preimage.0[..]).to_byte_array()))
12991298
} else {
13001299
None
13011300
};
@@ -1308,7 +1307,7 @@ mod test {
13081307
route_hints, nodes[1].keys_manager, nodes[1].keys_manager, nodes[1].logger,
13091308
Currency::BitcoinTestnet, None, Duration::from_secs(genesis_timestamp)
13101309
).unwrap();
1311-
let (payment_hash, payment_secret) = (PaymentHash(invoice.payment_hash().into_inner()), *invoice.payment_secret());
1310+
let (payment_hash, payment_secret) = (PaymentHash(invoice.payment_hash().to_byte_array()), *invoice.payment_secret());
13121311
let payment_preimage = if user_generated_pmt_hash {
13131312
user_payment_preimage
13141313
} else {
@@ -1328,8 +1327,7 @@ mod test {
13281327
let params = RouteParameters::from_payment_params_and_value(
13291328
payment_params, invoice.amount_milli_satoshis().unwrap());
13301329
let (payment_event, fwd_idx) = {
1331-
let mut payment_hash = PaymentHash([0; 32]);
1332-
payment_hash.0.copy_from_slice(&invoice.payment_hash().as_ref()[0..32]);
1330+
let payment_hash = PaymentHash(invoice.payment_hash().to_byte_array());
13331331
nodes[0].node.send_payment(payment_hash,
13341332
RecipientOnionFields::secret_only(*invoice.payment_secret()),
13351333
PaymentId(payment_hash.0), params, Retry::Attempts(0)).unwrap();
@@ -1454,7 +1452,7 @@ mod test {
14541452
nodes[2].node.get_phantom_route_hints(),
14551453
];
14561454
let user_payment_preimage = PaymentPreimage([1; 32]);
1457-
let payment_hash = Some(PaymentHash(Sha256::hash(&user_payment_preimage.0[..]).into_inner()));
1455+
let payment_hash = Some(PaymentHash(Sha256::hash(&user_payment_preimage.0[..]).to_byte_array()));
14581456
let non_default_invoice_expiry_secs = 4200;
14591457
let min_final_cltv_expiry_delta = Some(100);
14601458
let duration_since_epoch = Duration::from_secs(1234567);

lightning/src/blinded_path/utils.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ where
4949
let hop_pk_blinding_factor = {
5050
let mut hmac = HmacEngine::<Sha256>::new(b"blinded_node_id");
5151
hmac.input(encrypted_data_ss.as_ref());
52-
Hmac::from_engine(hmac).into_inner()
52+
Hmac::from_engine(hmac).to_byte_array()
5353
};
5454
$pk.mul_tweak(secp_ctx, &Scalar::from_be_bytes(hop_pk_blinding_factor).unwrap())?
5555
};
@@ -70,7 +70,7 @@ where
7070
let mut sha = Sha256::engine();
7171
sha.input(&msg_blinding_point.serialize()[..]);
7272
sha.input(encrypted_data_ss.as_ref());
73-
Sha256::from_engine(sha).into_inner()
73+
Sha256::from_engine(sha).to_byte_array()
7474
};
7575

7676
msg_blinding_point_priv = msg_blinding_point_priv.mul_tweak(&Scalar::from_be_bytes(msg_blinding_point_blinding_factor).unwrap())?;
@@ -80,7 +80,7 @@ where
8080
let mut sha = Sha256::engine();
8181
sha.input(&onion_packet_pubkey.serialize()[..]);
8282
sha.input(onion_packet_ss.as_ref());
83-
Sha256::from_engine(sha).into_inner()
83+
Sha256::from_engine(sha).to_byte_array()
8484
};
8585
onion_packet_pubkey_priv = onion_packet_pubkey_priv.mul_tweak(&Scalar::from_be_bytes(onion_packet_pubkey_blinding_factor).unwrap())?;
8686
onion_packet_pubkey = PublicKey::from_secret_key(secp_ctx, &onion_packet_pubkey_priv);

lightning/src/chain/channelmonitor.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2676,7 +2676,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
26762676
},
26772677
ChannelMonitorUpdateStep::PaymentPreimage { payment_preimage } => {
26782678
log_trace!(logger, "Updating ChannelMonitor with payment preimage");
2679-
self.provide_payment_preimage(&PaymentHash(Sha256::hash(&payment_preimage.0[..]).into_inner()), &payment_preimage, broadcaster, &bounded_fee_estimator, logger)
2679+
self.provide_payment_preimage(&PaymentHash(Sha256::hash(&payment_preimage.0[..]).to_byte_array()), &payment_preimage, broadcaster, &bounded_fee_estimator, logger)
26802680
},
26812681
ChannelMonitorUpdateStep::CommitmentSecret { idx, secret } => {
26822682
log_trace!(logger, "Updating ChannelMonitor with commitment secret");
@@ -4316,7 +4316,7 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
43164316
let mut payment_preimages = HashMap::with_capacity(cmp::min(payment_preimages_len as usize, MAX_ALLOC_SIZE / 32));
43174317
for _ in 0..payment_preimages_len {
43184318
let preimage: PaymentPreimage = Readable::read(reader)?;
4319-
let hash = PaymentHash(Sha256::hash(&preimage.0[..]).into_inner());
4319+
let hash = PaymentHash(Sha256::hash(&preimage.0[..]).to_byte_array());
43204320
if let Some(_) = payment_preimages.insert(hash, preimage) {
43214321
return Err(DecodeError::InvalidValue);
43224322
}
@@ -4620,7 +4620,7 @@ mod tests {
46204620
{
46214621
for i in 0..20 {
46224622
let preimage = PaymentPreimage([i; 32]);
4623-
let hash = PaymentHash(Sha256::hash(&preimage.0[..]).into_inner());
4623+
let hash = PaymentHash(Sha256::hash(&preimage.0[..]).to_byte_array());
46244624
preimages.push((preimage, hash));
46254625
}
46264626
}
@@ -4705,9 +4705,9 @@ mod tests {
47054705
let dummy_commitment_tx = HolderCommitmentTransaction::dummy(&mut htlcs);
47064706
monitor.provide_latest_holder_commitment_tx(dummy_commitment_tx.clone(),
47074707
htlcs.into_iter().map(|(htlc, _)| (htlc, Some(dummy_sig), None)).collect()).unwrap();
4708-
monitor.provide_latest_counterparty_commitment_tx(Txid::from_inner(Sha256::hash(b"1").into_inner()),
4708+
monitor.provide_latest_counterparty_commitment_tx(Txid::from_byte_array(Sha256::hash(b"1").to_byte_array()),
47094709
preimages_slice_to_htlc_outputs!(preimages[5..15]), 281474976710655, dummy_key, &logger);
4710-
monitor.provide_latest_counterparty_commitment_tx(Txid::from_inner(Sha256::hash(b"2").into_inner()),
4710+
monitor.provide_latest_counterparty_commitment_tx(Txid::from_byte_array(Sha256::hash(b"2").to_byte_array()),
47114711
preimages_slice_to_htlc_outputs!(preimages[15..20]), 281474976710654, dummy_key, &logger);
47124712
for &(ref preimage, ref hash) in preimages.iter() {
47134713
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(&fee_estimator);
@@ -4722,7 +4722,7 @@ mod tests {
47224722
test_preimages_exist!(&preimages[0..10], monitor);
47234723
test_preimages_exist!(&preimages[15..20], monitor);
47244724

4725-
monitor.provide_latest_counterparty_commitment_tx(Txid::from_inner(Sha256::hash(b"3").into_inner()),
4725+
monitor.provide_latest_counterparty_commitment_tx(Txid::from_byte_array(Sha256::hash(b"3").to_byte_array()),
47264726
preimages_slice_to_htlc_outputs!(preimages[17..20]), 281474976710653, dummy_key, &logger);
47274727

47284728
// Now provide a further secret, pruning preimages 15-17
@@ -4732,7 +4732,7 @@ mod tests {
47324732
test_preimages_exist!(&preimages[0..10], monitor);
47334733
test_preimages_exist!(&preimages[17..20], monitor);
47344734

4735-
monitor.provide_latest_counterparty_commitment_tx(Txid::from_inner(Sha256::hash(b"4").into_inner()),
4735+
monitor.provide_latest_counterparty_commitment_tx(Txid::from_byte_array(Sha256::hash(b"4").to_byte_array()),
47364736
preimages_slice_to_htlc_outputs!(preimages[18..20]), 281474976710652, dummy_key, &logger);
47374737

47384738
// Now update holder commitment tx info, pruning only element 18 as we still care about the

lightning/src/chain/onchaintx.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -763,26 +763,26 @@ impl<ChannelSigner: WriteableEcdsaChannelSigner> OnchainTxHandler<ChannelSigner>
763763
OnchainClaim::Tx(tx) => {
764764
log_info!(logger, "Broadcasting onchain {}", log_tx!(tx));
765765
broadcaster.broadcast_transactions(&[&tx]);
766-
ClaimId(tx.txid().into_inner())
766+
ClaimId(tx.txid().to_byte_array())
767767
},
768768
OnchainClaim::Event(claim_event) => {
769769
log_info!(logger, "Yielding onchain event to spend inputs {:?}", req.outpoints());
770770
let claim_id = match claim_event {
771771
ClaimEvent::BumpCommitment { ref commitment_tx, .. } =>
772772
// For commitment claims, we can just use their txid as it should
773773
// already be unique.
774-
ClaimId(commitment_tx.txid().into_inner()),
774+
ClaimId(commitment_tx.txid().to_byte_array()),
775775
ClaimEvent::BumpHTLC { ref htlcs, .. } => {
776776
// For HTLC claims, commit to the entire set of HTLC outputs to
777777
// claim, which will always be unique per request. Once a claim ID
778778
// is generated, it is assigned and remains unchanged, even if the
779779
// underlying set of HTLCs changes.
780780
let mut engine = Sha256::engine();
781781
for htlc in htlcs {
782-
engine.input(&htlc.commitment_txid.into_inner());
782+
engine.input(&htlc.commitment_txid.to_byte_array());
783783
engine.input(&htlc.htlc.transaction_output_index.unwrap().to_be_bytes());
784784
}
785-
ClaimId(Sha256::from_engine(engine).into_inner())
785+
ClaimId(Sha256::from_engine(engine).to_byte_array())
786786
},
787787
};
788788
debug_assert!(self.pending_claim_requests.get(&claim_id).is_none());

lightning/src/chain/transaction.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pub struct OutPoint {
6060
impl OutPoint {
6161
/// Convert an `OutPoint` to a lightning channel id.
6262
pub fn to_channel_id(&self) -> ChannelId {
63-
ChannelId::v1_from_funding_txid(&self.txid.as_inner(), self.index)
63+
ChannelId::v1_from_funding_txid(self.txid.as_byte_array(), self.index)
6464
}
6565

6666
/// Converts this OutPoint into the OutPoint field as used by rust-bitcoin

0 commit comments

Comments
 (0)