Skip to content

[2.8.0] XEdDSA packet signing UI (BaseUI) #10800

Description

@jamesarich

Surface XEdDSA signing status in BaseUI — the firmware's built-in on-device display UI (the classic OLED screens) — per the cross-platform spec in meshtastic/design#113 (source of truth, read it first).

BaseUI is the on-device screen UI rendered by firmware. The richer MUI (device-ui / standalone-ui) is tracked separately (device-ui#331, standalone-ui#35).

Summary

Indicate when a node and its broadcast packets are cryptographically signed and verified (XEdDSA). The radio already computes this on-device — BaseUI just needs to render the indicator. Affirm the good state only; never warn on unsigned traffic (legacy nodes, DMs, and oversized broadcasts are legitimately unsigned).

Signals (already available on-device)

  • MeshPacket.xeddsa_signed — this packet's signature is verified (primary signal).
  • NodeInfo.has_xeddsa_signed — this node signs its packets.

What to build

  • Node screen: a small shield glyph when has_xeddsa_signed ("this node signs its packets").
  • Message/text screen: a shield glyph on a verified (xeddsa_signed) broadcast. Never on DMs — the flag is never set on DMs, so gating on the bool alone is safe.

OLED adaptation

  • BaseUI is monochrome and space-constrained, so the spec's "green & prominent" can't carry over literally — rely on a clear shield glyph in a consistent slot rather than color.
  • Keep the existing lock/encryption indication separate from signing (shield = authentic, lock = private).

v1 decisions (from #113)

  • Affirm-only: unsigned is silent (no icon, no warning).
  • No "unverifiable" state — use the verified bool only.
  • Don't reuse the lock for signing; nothing here is an error state.

Parent: meshtastic/design#113

Metadata

Metadata

Assignees

Labels

Type

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions