@@ -8184,6 +8184,7 @@ mod tests {
8184
8184
use bitcoin::hashes::hex::FromHex;
8185
8185
use bitcoin::hash_types::Txid;
8186
8186
use bitcoin::secp256k1::Message;
8187
+ use crate::events::bump_transaction::{ChannelDerivationParameters, HTLCDescriptor};
8187
8188
use crate::sign::EcdsaChannelSigner;
8188
8189
use crate::ln::PaymentPreimage;
8189
8190
use crate::ln::channel::{HTLCOutputInCommitment ,TxCreationKeys};
@@ -8309,22 +8310,22 @@ mod tests {
8309
8310
&chan.context.holder_signer.as_ref().pubkeys().funding_pubkey,
8310
8311
chan.context.counterparty_funding_pubkey()
8311
8312
);
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();
8313
8314
assert_eq!(Signature::from_der(&hex::decode($sig_hex).unwrap()[..]).unwrap(), holder_sig, "holder_sig");
8314
8315
8315
8316
let funding_redeemscript = chan.context.get_funding_redeemscript();
8316
8317
let tx = holder_commitment_tx.add_holder_sig(&funding_redeemscript, holder_sig);
8317
8318
assert_eq!(serialize(&tx)[..], hex::decode($tx_hex).unwrap()[..], "tx");
8318
8319
8319
8320
// ((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();
8321
8322
8322
8323
$({
8323
8324
log_trace!(logger, "verifying htlc {}", $htlc_idx);
8324
8325
let remote_signature = Signature::from_der(&hex::decode($counterparty_htlc_sig_hex).unwrap()[..]).unwrap();
8325
8326
8326
8327
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,
8328
8329
chan.context.get_counterparty_selected_contest_delay().unwrap(),
8329
8330
&htlc, $opt_anchors, &keys.broadcaster_delayed_payment_key, &keys.revocation_key);
8330
8331
let htlc_redeemscript = chan_utils::get_htlc_redeemscript(&htlc, $opt_anchors, &keys);
@@ -8344,20 +8345,32 @@ mod tests {
8344
8345
assert!(preimage.is_some());
8345
8346
}
8346
8347
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();
8348
8363
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");
8350
8365
8351
8366
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");
8355
8368
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");
8359
8372
})*
8360
- assert!(htlc_sig_iter .next().is_none());
8373
+ assert!(htlc_counterparty_sig_iter .next().is_none());
8361
8374
} }
8362
8375
}
8363
8376
0 commit comments