From: Valentine Wallace Date: Thu, 26 Oct 2023 19:14:07 +0000 (-0400) Subject: Support parsing blinded non-intro onion receive payloads. X-Git-Tag: v0.0.119~9^2~25 X-Git-Url: http://git.bitcoin.ninja/?a=commitdiff_plain;h=87a25c7a5bbe9edf9e7ca3865d62f55aea039608;p=rust-lightning Support parsing blinded non-intro onion receive payloads. Support for receiving to multi-hop blinded payment paths will be completed in the next commit, sans error handling. --- diff --git a/lightning/src/ln/msgs.rs b/lightning/src/ln/msgs.rs index b987ab6db..db7579039 100644 --- a/lightning/src/ln/msgs.rs +++ b/lightning/src/ln/msgs.rs @@ -1713,7 +1713,7 @@ mod fuzzy_internal_msgs { outgoing_cltv_value: u32, payment_secret: PaymentSecret, payment_constraints: PaymentConstraints, - intro_node_blinding_point: PublicKey, + intro_node_blinding_point: Option, } } @@ -2356,8 +2356,11 @@ impl ReadableArgs<(Option, &NS)> for InboundOnionPayload w }); if amt.unwrap_or(0) > MAX_VALUE_MSAT { return Err(DecodeError::InvalidValue) } + if intro_node_blinding_point.is_some() && update_add_blinding_point.is_some() { + return Err(DecodeError::InvalidValue) + } - if let Some(blinding_point) = intro_node_blinding_point { + if let Some(blinding_point) = intro_node_blinding_point.or(update_add_blinding_point) { if short_id.is_some() || payment_data.is_some() || payment_metadata.is_some() { return Err(DecodeError::InvalidValue) } @@ -2379,7 +2382,7 @@ impl ReadableArgs<(Option, &NS)> for InboundOnionPayload w payment_relay, payment_constraints, features, - intro_node_blinding_point: blinding_point, + intro_node_blinding_point: intro_node_blinding_point.ok_or(DecodeError::InvalidValue)?, }) }, ChaChaPolyReadAdapter { readable: BlindedPaymentTlvs::Receive(ReceiveTlvs { @@ -2392,7 +2395,7 @@ impl ReadableArgs<(Option, &NS)> for InboundOnionPayload w outgoing_cltv_value: cltv_value.ok_or(DecodeError::InvalidValue)?, payment_secret, payment_constraints, - intro_node_blinding_point: blinding_point, + intro_node_blinding_point, }) }, }