@@ -650,46 +650,48 @@ fn packet_payloads_and_keys<T: CustomOnionMessageContents, S: secp256k1::Signing
650
650
let mut blinded_path_idx = 0 ;
651
651
let mut prev_control_tlvs_ss = None ;
652
652
let mut final_control_tlvs = None ;
653
- utils:: construct_keys_callback ( secp_ctx, unblinded_path, Some ( destination) , session_priv, |_, onion_packet_ss, ephemeral_pubkey, control_tlvs_ss, unblinded_pk_opt, enc_payload_opt| {
654
- if num_unblinded_hops != 0 && unblinded_path_idx < num_unblinded_hops {
655
- if let Some ( ss) = prev_control_tlvs_ss. take ( ) {
656
- payloads. push ( ( Payload :: Forward ( ForwardControlTlvs :: Unblinded (
657
- ForwardTlvs {
658
- next_node_id : unblinded_pk_opt. unwrap ( ) ,
659
- next_blinding_override : None ,
660
- }
661
- ) ) , ss) ) ;
653
+ utils:: construct_keys_callback ( secp_ctx, unblinded_path. iter ( ) , Some ( destination) , session_priv,
654
+ |_, onion_packet_ss, ephemeral_pubkey, control_tlvs_ss, unblinded_pk_opt, enc_payload_opt| {
655
+ if num_unblinded_hops != 0 && unblinded_path_idx < num_unblinded_hops {
656
+ if let Some ( ss) = prev_control_tlvs_ss. take ( ) {
657
+ payloads. push ( ( Payload :: Forward ( ForwardControlTlvs :: Unblinded (
658
+ ForwardTlvs {
659
+ next_node_id : unblinded_pk_opt. unwrap ( ) ,
660
+ next_blinding_override : None ,
661
+ }
662
+ ) ) , ss) ) ;
663
+ }
664
+ prev_control_tlvs_ss = Some ( control_tlvs_ss) ;
665
+ unblinded_path_idx += 1 ;
666
+ } else if let Some ( ( intro_node_id, blinding_pt) ) = intro_node_id_blinding_pt. take ( ) {
667
+ if let Some ( control_tlvs_ss) = prev_control_tlvs_ss. take ( ) {
668
+ payloads. push ( ( Payload :: Forward ( ForwardControlTlvs :: Unblinded ( ForwardTlvs {
669
+ next_node_id : intro_node_id,
670
+ next_blinding_override : Some ( blinding_pt) ,
671
+ } ) ) , control_tlvs_ss) ) ;
672
+ }
662
673
}
663
- prev_control_tlvs_ss = Some ( control_tlvs_ss) ;
664
- unblinded_path_idx += 1 ;
665
- } else if let Some ( ( intro_node_id, blinding_pt) ) = intro_node_id_blinding_pt. take ( ) {
666
- if let Some ( control_tlvs_ss) = prev_control_tlvs_ss. take ( ) {
667
- payloads. push ( ( Payload :: Forward ( ForwardControlTlvs :: Unblinded ( ForwardTlvs {
668
- next_node_id : intro_node_id,
669
- next_blinding_override : Some ( blinding_pt) ,
670
- } ) ) , control_tlvs_ss) ) ;
674
+ if blinded_path_idx < num_blinded_hops. saturating_sub ( 1 ) && enc_payload_opt. is_some ( ) {
675
+ payloads. push ( ( Payload :: Forward ( ForwardControlTlvs :: Blinded ( enc_payload_opt. unwrap ( ) ) ) ,
676
+ control_tlvs_ss) ) ;
677
+ blinded_path_idx += 1 ;
678
+ } else if let Some ( encrypted_payload) = enc_payload_opt {
679
+ final_control_tlvs = Some ( ReceiveControlTlvs :: Blinded ( encrypted_payload) ) ;
680
+ prev_control_tlvs_ss = Some ( control_tlvs_ss) ;
671
681
}
672
- }
673
- if blinded_path_idx < num_blinded_hops. saturating_sub ( 1 ) && enc_payload_opt. is_some ( ) {
674
- payloads. push ( ( Payload :: Forward ( ForwardControlTlvs :: Blinded ( enc_payload_opt. unwrap ( ) ) ) ,
675
- control_tlvs_ss) ) ;
676
- blinded_path_idx += 1 ;
677
- } else if let Some ( encrypted_payload) = enc_payload_opt {
678
- final_control_tlvs = Some ( ReceiveControlTlvs :: Blinded ( encrypted_payload) ) ;
679
- prev_control_tlvs_ss = Some ( control_tlvs_ss) ;
680
- }
681
682
682
- let ( rho, mu) = onion_utils:: gen_rho_mu_from_shared_secret ( onion_packet_ss. as_ref ( ) ) ;
683
- onion_packet_keys. push ( onion_utils:: OnionKeys {
684
- #[ cfg( test) ]
685
- shared_secret : onion_packet_ss,
686
- #[ cfg( test) ]
687
- blinding_factor : [ 0 ; 32 ] ,
688
- ephemeral_pubkey,
689
- rho,
690
- mu,
691
- } ) ;
692
- } ) ?;
683
+ let ( rho, mu) = onion_utils:: gen_rho_mu_from_shared_secret ( onion_packet_ss. as_ref ( ) ) ;
684
+ onion_packet_keys. push ( onion_utils:: OnionKeys {
685
+ #[ cfg( test) ]
686
+ shared_secret : onion_packet_ss,
687
+ #[ cfg( test) ]
688
+ blinding_factor : [ 0 ; 32 ] ,
689
+ ephemeral_pubkey,
690
+ rho,
691
+ mu,
692
+ } ) ;
693
+ }
694
+ ) ?;
693
695
694
696
if let Some ( control_tlvs) = final_control_tlvs {
695
697
payloads. push ( ( Payload :: Receive {
0 commit comments