Files
6362e05424 Stop NodeInfo relays rewriting the User payload (#12088)
* Stop NodeInfo relays rewriting the User payload

NodeInfoModule::alterReceivedProtobuf rewrote user.id and re-encoded the
User payload of every NodeInfo it saw, including ones it relays. The
XEdDSA signature covers Data.payload, so a rewritten NodeInfo failed
verification at receivers that know the sender's key. Relays now forward
the payload unmodified.

The user.id coercion moves to the local copies that consumed it: phone
delivery (MeshService::sendToPhone) and the unencrypted MQTT uplink. It
only re-encodes when the id does not match the sender.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmhtcXBe3B3NvS9RttzwHW

* Keep signed NodeInfo unmodified on MQTT uplink

A coerced copy keeps the sender's XEdDSA signature, which no longer
covers the payload, so downlink gateways would drop it. Signed NodeInfo
is now published as sent. Also assert that a re-encoded User always
fits Data.payload.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmhtcXBe3B3NvS9RttzwHW

---------

Co-authored-by: Jonathan Bennett <jonathan@meshtastic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 14:30:19 +00:00
..