@@ -36,8 +36,8 @@ use bitcoin::sighash::EcdsaSighashType;
3636use  crate :: ln:: channel:: INITIAL_COMMITMENT_NUMBER ; 
3737use  crate :: ln:: { PaymentHash ,  PaymentPreimage } ; 
3838use  crate :: ln:: msgs:: DecodeError ; 
39- use  crate :: ln:: chan_utils ; 
40- use  crate :: ln:: chan_utils:: { CommitmentTransaction ,  CounterpartyCommitmentSecrets ,  HTLCOutputInCommitment ,  HTLCClaim ,  ChannelTransactionParameters ,  HolderCommitmentTransaction ,  TxCreationKeys } ; 
39+ use  crate :: ln:: channel_keys :: { DelayedPaymentKey ,   DelayedPaymentBasepoint ,   HtlcBasepoint ,   HtlcKey ,   RevocationKey ,   RevocationBasepoint } ; 
40+ use  crate :: ln:: chan_utils:: { self , CommitmentTransaction ,  CounterpartyCommitmentSecrets ,  HTLCOutputInCommitment ,  HTLCClaim ,  ChannelTransactionParameters ,  HolderCommitmentTransaction ,  TxCreationKeys } ; 
4141use  crate :: ln:: channelmanager:: { HTLCSource ,  SentHTLCId } ; 
4242use  crate :: chain; 
4343use  crate :: chain:: { BestBlock ,  WatchedOutput } ; 
@@ -238,10 +238,10 @@ pub(crate) const HTLC_FAIL_BACK_BUFFER: u32 = CLTV_CLAIM_BUFFER + LATENCY_GRACE_
238238struct  HolderSignedTx  { 
239239	/// txid of the transaction in tx, just used to make comparison faster 
240240txid :  Txid , 
241- 	revocation_key :  PublicKey , 
242- 	a_htlc_key :  PublicKey , 
243- 	b_htlc_key :  PublicKey , 
244- 	delayed_payment_key :  PublicKey , 
241+ 	revocation_key :  RevocationKey , 
242+ 	a_htlc_key :  HtlcKey , 
243+ 	b_htlc_key :  HtlcKey , 
244+ 	delayed_payment_key :  DelayedPaymentKey , 
245245	per_commitment_point :  PublicKey , 
246246	htlc_outputs :  Vec < ( HTLCOutputInCommitment ,  Option < Signature > ,  Option < HTLCSource > ) > , 
247247	to_self_value_sat :  u64 , 
@@ -278,8 +278,8 @@ impl HolderSignedTx {
278278/// justice or 2nd-stage preimage/timeout transactions. 
279279#[ derive( Clone ,  PartialEq ,  Eq ) ]  
280280struct  CounterpartyCommitmentParameters  { 
281- 	counterparty_delayed_payment_base_key :  PublicKey , 
282- 	counterparty_htlc_base_key :  PublicKey , 
281+ 	counterparty_delayed_payment_base_key :  DelayedPaymentBasepoint , 
282+ 	counterparty_htlc_base_key :  HtlcBasepoint , 
283283	on_counterparty_tx_csv :  u16 , 
284284} 
285285
@@ -752,12 +752,12 @@ pub(crate) struct ChannelMonitorImpl<Signer: WriteableEcdsaChannelSigner> {
752752	commitment_transaction_number_obscure_factor :  u64 , 
753753
754754	destination_script :  ScriptBuf , 
755- 	broadcasted_holder_revokable_script :  Option < ( ScriptBuf ,  PublicKey ,  PublicKey ) > , 
755+ 	broadcasted_holder_revokable_script :  Option < ( ScriptBuf ,  PublicKey ,  RevocationKey ) > , 
756756	counterparty_payment_script :  ScriptBuf , 
757757	shutdown_script :  Option < ScriptBuf > , 
758758
759759	channel_keys_id :  [ u8 ;  32 ] , 
760- 	holder_revocation_basepoint :  PublicKey , 
760+ 	holder_revocation_basepoint :  RevocationBasepoint , 
761761	funding_info :  ( OutPoint ,  ScriptBuf ) , 
762762	current_counterparty_commitment_txid :  Option < Txid > , 
763763	prev_counterparty_commitment_txid :  Option < Txid > , 
@@ -2924,12 +2924,10 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
29242924		let  their_per_commitment_point = PublicKey :: from_secret_key ( 
29252925			& self . onchain_tx_handler . secp_ctx ,  & per_commitment_key) ; 
29262926
2927- 		let  revocation_pubkey = chan_utils:: derive_public_revocation_key ( 
2928- 			& self . onchain_tx_handler . secp_ctx ,  & their_per_commitment_point, 
2929- 			& self . holder_revocation_basepoint ) ; 
2930- 		let  delayed_key = chan_utils:: derive_public_key ( & self . onchain_tx_handler . secp_ctx , 
2931- 			& their_per_commitment_point, 
2932- 			& self . counterparty_commitment_params . counterparty_delayed_payment_base_key ) ; 
2927+ 		let  revocation_pubkey = RevocationKey :: from_basepoint ( & self . onchain_tx_handler . secp_ctx , 
2928+ 			& self . holder_revocation_basepoint ,  & their_per_commitment_point) ; 
2929+ 		let  delayed_key = DelayedPaymentKey :: from_basepoint ( & self . onchain_tx_handler . secp_ctx , 
2930+ 			& self . counterparty_commitment_params . counterparty_delayed_payment_base_key ,  & their_per_commitment_point) ; 
29332931		let  revokeable_redeemscript = chan_utils:: get_revokeable_redeemscript ( & revocation_pubkey, 
29342932			self . counterparty_commitment_params . on_counterparty_tx_csv ,  & delayed_key) ; 
29352933
@@ -2992,8 +2990,8 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
29922990			let  secret = self . get_secret ( commitment_number) . unwrap ( ) ; 
29932991			let  per_commitment_key = ignore_error ! ( SecretKey :: from_slice( & secret) ) ; 
29942992			let  per_commitment_point = PublicKey :: from_secret_key ( & self . onchain_tx_handler . secp_ctx ,  & per_commitment_key) ; 
2995- 			let  revocation_pubkey = chan_utils :: derive_public_revocation_key ( & self . onchain_tx_handler . secp_ctx ,  & per_commitment_point ,  & self . holder_revocation_basepoint ) ; 
2996- 			let  delayed_key = chan_utils :: derive_public_key ( & self . onchain_tx_handler . secp_ctx ,  & PublicKey :: from_secret_key ( & self . onchain_tx_handler . secp_ctx ,  & per_commitment_key) ,   & self . counterparty_commitment_params . counterparty_delayed_payment_base_key ) ; 
2993+ 			let  revocation_pubkey = RevocationKey :: from_basepoint ( & self . onchain_tx_handler . secp_ctx ,   & self . holder_revocation_basepoint ,   & per_commitment_point , ) ; 
2994+ 			let  delayed_key = DelayedPaymentKey :: from_basepoint ( & self . onchain_tx_handler . secp_ctx ,  & self . counterparty_commitment_params . counterparty_delayed_payment_base_key ,   & PublicKey :: from_secret_key ( & self . onchain_tx_handler . secp_ctx ,  & per_commitment_key) ) ; 
29972995
29982996			let  revokeable_redeemscript = chan_utils:: get_revokeable_redeemscript ( & revocation_pubkey,  self . counterparty_commitment_params . on_counterparty_tx_csv ,  & delayed_key) ; 
29992997			let  revokeable_p2wsh = revokeable_redeemscript. to_v0_p2wsh ( ) ; 
@@ -3105,11 +3103,11 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
31053103			}  else  {  return  ( claimable_outpoints,  to_counterparty_output_info) ;  } ; 
31063104
31073105		if  let  Some ( transaction)  = tx { 
3108- 			let  revocation_pubkey = chan_utils :: derive_public_revocation_key ( 
3109- 				& self . onchain_tx_handler . secp_ctx ,  & per_commitment_point ,  & self . holder_revocation_basepoint ) ; 
3110- 			 let  delayed_key = chan_utils :: derive_public_key ( & self . onchain_tx_handler . secp_ctx , 
3111- 				 & per_commitment_point , 
3112- 				 & self . counterparty_commitment_params . counterparty_delayed_payment_base_key ) ; 
3106+ 			let  revocation_pubkey = RevocationKey :: from_basepoint ( 
3107+ 				& self . onchain_tx_handler . secp_ctx ,   & self . holder_revocation_basepoint ,   & per_commitment_point ) ; 
3108+ 
3109+ 			let  delayed_key =  DelayedPaymentKey :: from_basepoint ( & self . onchain_tx_handler . secp_ctx ,   & self . counterparty_commitment_params . counterparty_delayed_payment_base_key ,   & per_commitment_point ) ; 
3110+ 
31133111			let  revokeable_p2wsh = chan_utils:: get_revokeable_redeemscript ( & revocation_pubkey, 
31143112				self . counterparty_commitment_params . on_counterparty_tx_csv , 
31153113				& delayed_key) . to_v0_p2wsh ( ) ; 
@@ -3204,7 +3202,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
32043202	// Returns (1) `PackageTemplate`s that can be given to the OnchainTxHandler, so that the handler can 
32053203	// broadcast transactions claiming holder HTLC commitment outputs and (2) a holder revokable 
32063204	// script so we can detect whether a holder transaction has been seen on-chain. 
3207- 	fn  get_broadcasted_holder_claims ( & self ,  holder_tx :  & HolderSignedTx ,  conf_height :  u32 )  -> ( Vec < PackageTemplate > ,  Option < ( ScriptBuf ,  PublicKey ,  PublicKey ) > )  { 
3205+ 	fn  get_broadcasted_holder_claims ( & self ,  holder_tx :  & HolderSignedTx ,  conf_height :  u32 )  -> ( Vec < PackageTemplate > ,  Option < ( ScriptBuf ,  PublicKey ,  RevocationKey ) > )  { 
32083206		let  mut  claim_requests = Vec :: with_capacity ( holder_tx. htlc_outputs . len ( ) ) ; 
32093207
32103208		let  redeemscript = chan_utils:: get_revokeable_redeemscript ( & holder_tx. revocation_key ,  self . on_holder_tx_csv ,  & holder_tx. delayed_payment_key ) ; 
@@ -4093,7 +4091,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
40934091						per_commitment_point :  broadcasted_holder_revokable_script. 1 , 
40944092						to_self_delay :  self . on_holder_tx_csv , 
40954093						output :  outp. clone ( ) , 
4096- 						revocation_pubkey :  broadcasted_holder_revokable_script. 2 . clone ( ) , 
4094+ 						revocation_pubkey :  broadcasted_holder_revokable_script. 2 , 
40974095						channel_keys_id :  self . channel_keys_id , 
40984096						channel_value_satoshis :  self . channel_value_satoshis , 
40994097					} ) ) ; 
@@ -4506,8 +4504,8 @@ mod tests {
45064504	use  crate :: chain:: transaction:: OutPoint ; 
45074505	use  crate :: sign:: InMemorySigner ; 
45084506	use  crate :: ln:: { PaymentPreimage ,  PaymentHash } ; 
4509- 	use  crate :: ln:: chan_utils ; 
4510- 	use  crate :: ln:: chan_utils:: { HTLCOutputInCommitment ,  ChannelPublicKeys ,  ChannelTransactionParameters ,  HolderCommitmentTransaction ,  CounterpartyChannelTransactionParameters } ; 
4507+ 	use  crate :: ln:: channel_keys :: { DelayedPaymentBasepoint ,   DelayedPaymentKey ,   HtlcBasepoint ,   RevocationBasepoint ,   RevocationKey } ; 
4508+ 	use  crate :: ln:: chan_utils:: { self , HTLCOutputInCommitment ,  ChannelPublicKeys ,  ChannelTransactionParameters ,  HolderCommitmentTransaction ,  CounterpartyChannelTransactionParameters } ; 
45114509	use  crate :: ln:: channelmanager:: { PaymentSendFailure ,  PaymentId ,  RecipientOnionFields } ; 
45124510	use  crate :: ln:: functional_test_utils:: * ; 
45134511	use  crate :: ln:: script:: ShutdownScript ; 
@@ -4674,10 +4672,10 @@ mod tests {
46744672
46754673		let  counterparty_pubkeys = ChannelPublicKeys  { 
46764674			funding_pubkey :  PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 44 ;  32 ] ) . unwrap ( ) ) , 
4677- 			revocation_basepoint :  PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 45 ;  32 ] ) . unwrap ( ) ) , 
4675+ 			revocation_basepoint :  RevocationBasepoint :: from ( PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 45 ;  32 ] ) . unwrap ( ) ) ) , 
46784676			payment_point :  PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 46 ;  32 ] ) . unwrap ( ) ) , 
4679- 			delayed_payment_basepoint :  PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 47 ;  32 ] ) . unwrap ( ) ) , 
4680- 			htlc_basepoint :  PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 48 ;  32 ] ) . unwrap ( ) ) 
4677+ 			delayed_payment_basepoint :  DelayedPaymentBasepoint :: from ( PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 47 ;  32 ] ) . unwrap ( ) ) ) , 
4678+ 			htlc_basepoint :  HtlcBasepoint :: from ( PublicKey :: from_secret_key ( & secp_ctx,  & SecretKey :: from_slice ( & [ 48 ;  32 ] ) . unwrap ( ) ) ) 
46814679		} ; 
46824680		let  funding_outpoint = OutPoint  {  txid :  Txid :: all_zeros ( ) ,  index :  u16:: max_value ( )  } ; 
46834681		let  channel_parameters = ChannelTransactionParameters  { 
@@ -4767,6 +4765,7 @@ mod tests {
47674765		let  privkey = SecretKey :: from_slice ( & <Vec < u8 > >:: from_hex ( "0101010101010101010101010101010101010101010101010101010101010101" ) . unwrap ( ) [ ..] ) . unwrap ( ) ; 
47684766		let  pubkey = PublicKey :: from_secret_key ( & secp_ctx,  & privkey) ; 
47694767
4768+ 		use  crate :: ln:: channel_keys:: { HtlcKey ,  HtlcBasepoint } ; 
47704769		macro_rules!  sign_input { 
47714770			( $sighash_parts:  expr,  $idx:  expr,  $amount:  expr,  $weight:  expr,  $sum_actual_sigs:  expr,  $opt_anchors:  expr)  => { 
47724771				let  htlc = HTLCOutputInCommitment  { 
@@ -4776,7 +4775,7 @@ mod tests {
47764775					payment_hash:  PaymentHash ( [ 1 ;  32 ] ) , 
47774776					transaction_output_index:  Some ( $idx as  u32 ) , 
47784777				} ; 
4779- 				let  redeem_script = if  * $weight == WEIGHT_REVOKED_OUTPUT  {  chan_utils:: get_revokeable_redeemscript( & pubkey,   256 ,  & pubkey)   }  else {  chan_utils:: get_htlc_redeemscript_with_explicit_keys( & htlc,  $opt_anchors,  & pubkey,  & pubkey,  & pubkey)  } ; 
4778+ 				let  redeem_script = if  * $weight == WEIGHT_REVOKED_OUTPUT  {  chan_utils:: get_revokeable_redeemscript( & RevocationKey :: from_basepoint ( & secp_ctx ,   & RevocationBasepoint :: from ( pubkey) ,   & pubkey ) ,   256 ,  & DelayedPaymentKey :: from_basepoint ( & secp_ctx ,   & DelayedPaymentBasepoint :: from ( pubkey) ,   & pubkey ) )   }  else {  chan_utils:: get_htlc_redeemscript_with_explicit_keys( & htlc,  $opt_anchors,  & HtlcKey :: from_basepoint ( & secp_ctx ,   & HtlcBasepoint :: from ( pubkey) ,  & pubkey) ,  & HtlcKey :: from_basepoint ( & secp_ctx ,   & HtlcBasepoint :: from ( pubkey) ,   & pubkey ) ,   & RevocationKey :: from_basepoint ( & secp_ctx ,   & RevocationBasepoint :: from ( pubkey ) ,   & pubkey ) )  } ; 
47804779				let  sighash = hash_to_message!( & $sighash_parts. segwit_signature_hash( $idx,  & redeem_script,  $amount,  EcdsaSighashType :: All ) . unwrap( ) [ ..] ) ; 
47814780				let  sig = secp_ctx. sign_ecdsa( & sighash,  & privkey) ; 
47824781				let  mut  ser_sig = sig. serialize_der( ) . to_vec( ) ; 
0 commit comments