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