@@ -8184,6 +8184,7 @@ mod tests {
81848184 use bitcoin::hashes::hex::FromHex;
81858185 use bitcoin::hash_types::Txid;
81868186 use bitcoin::secp256k1::Message;
8187+ use crate::events::bump_transaction::{ChannelDerivationParameters, HTLCDescriptor};
81878188 use crate::sign::EcdsaChannelSigner;
81888189 use crate::ln::PaymentPreimage;
81898190 use crate::ln::channel::{HTLCOutputInCommitment ,TxCreationKeys};
@@ -8309,22 +8310,22 @@ mod tests {
83098310 &chan.context.holder_signer.as_ref().pubkeys().funding_pubkey,
83108311 chan.context.counterparty_funding_pubkey()
83118312 );
8312- let ( holder_sig, htlc_sigs) = signer.sign_holder_commitment_and_htlcs (&holder_commitment_tx, &secp_ctx).unwrap();
8313+ let holder_sig = signer.sign_holder_commitment (&holder_commitment_tx, &secp_ctx).unwrap();
83138314 assert_eq!(Signature::from_der(&hex::decode($sig_hex).unwrap()[..]).unwrap(), holder_sig, "holder_sig");
83148315
83158316 let funding_redeemscript = chan.context.get_funding_redeemscript();
83168317 let tx = holder_commitment_tx.add_holder_sig(&funding_redeemscript, holder_sig);
83178318 assert_eq!(serialize(&tx)[..], hex::decode($tx_hex).unwrap()[..], "tx");
83188319
83198320 // ((htlc, counterparty_sig), (index, holder_sig))
8320- let mut htlc_sig_iter = holder_commitment_tx.htlcs().iter().zip(&holder_commitment_tx. counterparty_htlc_sigs).zip(htlc_sigs. iter().enumerate() );
8321+ let mut htlc_counterparty_sig_iter = holder_commitment_tx.counterparty_htlc_sigs. iter();
83218322
83228323 $({
83238324 log_trace!(logger, "verifying htlc {}", $htlc_idx);
83248325 let remote_signature = Signature::from_der(&hex::decode($counterparty_htlc_sig_hex).unwrap()[..]).unwrap();
83258326
83268327 let ref htlc = htlcs[$htlc_idx];
8327- let htlc_tx = chan_utils::build_htlc_transaction(&unsigned_tx.txid, chan.context.feerate_per_kw,
8328+ let mut htlc_tx = chan_utils::build_htlc_transaction(&unsigned_tx.txid, chan.context.feerate_per_kw,
83288329 chan.context.get_counterparty_selected_contest_delay().unwrap(),
83298330 &htlc, $opt_anchors, &keys.broadcaster_delayed_payment_key, &keys.revocation_key);
83308331 let htlc_redeemscript = chan_utils::get_htlc_redeemscript(&htlc, $opt_anchors, &keys);
@@ -8344,20 +8345,32 @@ mod tests {
83448345 assert!(preimage.is_some());
83458346 }
83468347
8347- let htlc_sig = htlc_sig_iter.next().unwrap();
8348+ let htlc_counterparty_sig = htlc_counterparty_sig_iter.next().unwrap();
8349+ let htlc_holder_sig = signer.sign_holder_htlc_transaction(&htlc_tx, 0, &HTLCDescriptor {
8350+ channel_derivation_parameters: ChannelDerivationParameters {
8351+ value_satoshis: chan.context.channel_value_satoshis,
8352+ keys_id: chan.context.channel_keys_id,
8353+ transaction_parameters: chan.context.channel_transaction_parameters.clone(),
8354+ },
8355+ commitment_txid: trusted_tx.txid(),
8356+ per_commitment_number: trusted_tx.commitment_number(),
8357+ per_commitment_point: trusted_tx.per_commitment_point(),
8358+ feerate_per_kw: trusted_tx.feerate_per_kw(),
8359+ htlc: htlc.clone(),
8360+ preimage: preimage.clone(),
8361+ counterparty_sig: *htlc_counterparty_sig,
8362+ }, &secp_ctx).unwrap();
83488363 let num_anchors = if $opt_anchors.supports_anchors_zero_fee_htlc_tx() { 2 } else { 0 };
8349- assert_eq!((htlc_sig.0).0 .transaction_output_index, Some($htlc_idx + num_anchors), "output index");
8364+ assert_eq!(htlc .transaction_output_index, Some($htlc_idx + num_anchors), "output index");
83508365
83518366 let signature = Signature::from_der(&hex::decode($htlc_sig_hex).unwrap()[..]).unwrap();
8352- assert_eq!(signature, *(htlc_sig.1).1, "htlc sig");
8353- let index = (htlc_sig.1).0;
8354- let channel_parameters = chan.context.channel_transaction_parameters.as_holder_broadcastable();
8367+ assert_eq!(signature, htlc_holder_sig, "htlc sig");
83558368 let trusted_tx = holder_commitment_tx.trust();
8356- log_trace!(logger, " htlc_tx = {}", hex::encode(serialize(& trusted_tx.get_signed_htlc_tx(&channel_parameters, index , &(htlc_sig.0).1, (htlc_sig.1).1, &preimage))) );
8357- assert_eq!(serialize(&trusted_tx.get_signed_htlc_tx(&channel_parameters, index, &(htlc_sig.0).1, (htlc_sig.1).1, &preimage))[..],
8358- hex::decode($htlc_tx_hex).unwrap()[..], "htlc tx");
8369+ htlc_tx.input[0].witness = trusted_tx.build_htlc_input_witness($htlc_idx, htlc_counterparty_sig , &htlc_holder_sig, &preimage);
8370+ log_trace!(logger, "htlc_tx = {}", hex::encode(serialize(&htlc_tx)));
8371+ assert_eq!(serialize(&htlc_tx)[..], hex::decode($htlc_tx_hex).unwrap()[..], "htlc tx");
83598372 })*
8360- assert!(htlc_sig_iter .next().is_none());
8373+ assert!(htlc_counterparty_sig_iter .next().is_none());
83618374 } }
83628375 }
83638376
0 commit comments