Set HTLCPreviousHopData::blinded for blinded received HTLCs.

Will be used in the next commit(s) to let us know to fail blinded received
HTLCs backwards with the malformed and invalid_onion_blinding error per BOLT 4.
This commit is contained in:
Valentine Wallace 2023-10-26 18:52:29 -04:00
parent 339f3fccf8
commit e4485cffb3
No known key found for this signature in database
GPG key ID: FD3E106A2CE099B4

View file

@ -201,11 +201,11 @@ pub struct BlindedForward {
impl PendingHTLCRouting {
// Used to override the onion failure code and data if the HTLC is blinded.
fn blinded_failure(&self) -> Option<BlindedFailure> {
// TODO: needs update when we support receiving to multi-hop blinded paths
if let Self::Forward { blinded: Some(_), .. } = self {
Some(BlindedFailure::FromIntroductionNode)
} else {
None
// TODO: needs update when we support forwarding blinded HTLCs as non-intro node
match self {
Self::Forward { blinded: Some(_), .. } => Some(BlindedFailure::FromIntroductionNode),
Self::Receive { requires_blinded_error: true, .. } => Some(BlindedFailure::FromBlindedNode),
_ => None,
}
}
}
@ -291,7 +291,7 @@ pub(super) enum HTLCForwardInfo {
}
// Used for failing blinded HTLCs backwards correctly.
#[derive(Clone, Debug, Hash, PartialEq, Eq)]
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
enum BlindedFailure {
FromIntroductionNode,
FromBlindedNode,
@ -4462,7 +4462,7 @@ where
htlc_id: $htlc.prev_hop.htlc_id,
incoming_packet_shared_secret: $htlc.prev_hop.incoming_packet_shared_secret,
phantom_shared_secret,
blinded_failure: None,
blinded_failure,
}), payment_hash,
HTLCFailReason::reason(0x4000 | 15, htlc_msat_height_data),
HTLCDestination::FailedPayment { payment_hash: $payment_hash },