[2.8.0] XEdDSA packet signing UI
Los mantenedores suelen responder en 1 día
@mverch67 ya está trabajando en esto.
Desde el 7/7/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Implement the XEdDSA packet-signing UI for Device UI (part of MUI), per the cross-platform spec in meshtastic/design#113 — that issue is the source of truth, read it first.
Summary
Surface when a node and its broadcast packets are cryptographically signed and verified (XEdDSA over the node's identity key). This is read-only — the radio does all crypto and drops invalid/stripped signatures before the client sees them, so there is no error state to render. Clients only ever affirm the good state.
Two distinct marks, kept separate:
- 🛡️ shield-with-check = authentic (a verified, signed broadcast) — the UI's nearest shield-with-check asset
- 🔒 lock = private (a PKI-encrypted DM) — keep the existing lock, unchanged
Flags from the radio (read-only — no client-side crypto)
| Field | Meaning |
|---|---|
MeshPacket.xeddsa_signed (22) |
this received packet's signature is verified — primary signal |
NodeInfo.has_xeddsa_signed (14) |
this node signs its packets (≥1 verified) |
Data.xeddsa_signature (10) is not needed for v1.
What to build
- Messaging — broadcast bubbles: a green 🛡️ on
xeddsa_signedbubbles; reveal "Signed · verified" on tap. Per-message. Never on DMs — firmware never sets the flag on DMs, so gating on the boolean alone is sufficient (it can't false-positive on a DM). - Node details — "Signed node": a green, prominent 🛡️ row driven by
has_xeddsa_signed, in the existing security section, ordered most-trusted-first (manual-verified → signed → has-key → no-key). Label it as automatic trust (e.g. "Verified automatically"), distinct from user-asserted manual key verification. Phrase as observed ("signs its packets"), not "signing enabled". - Node list (rows): show the same 🛡️ in each node row's security cluster, beside the key/lock status icon — visible at a glance without opening details. Apply to all list densities (compact + full).
- Message detail/info: affirmative plain-language state, e.g. "Signed & verified — verified with their key." Neutral (never accusatory) copy for unsigned.
v1 decisions (settled in #113)
- Two affordances (shield + lock), not merged into one "security" concept.
- Node: two distinct cells (manual key-verify + signature-verify), laid out per platform (Android pairs them in one row), not conflated.
- Per-data-field signed badges → deferred. Unsigned → strictly silent. Compose-time "will be signed" hint → out. "Signed but unverifiable" state → dropped (use the verified bool only).
Don'ts
- Don't reuse the lock icon for signing.
- Don't use red / error styling anywhere — nothing here is an error.
- Don't flag unsigned DMs / large / legacy traffic as insecure.
Reference
Android implementation: meshtastic/Meshtastic-Android#5976 (+ #5980 for making the shield green & prominent). Reference screenshots live in the parent spec.
Parent: meshtastic/design#113
- Lenguaje dominante
- C
- Estrellas
- 499
- Forks
- 125
- Merge medio
- 2 d 5 h
- PR fusionados (30 d)
- 22
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de meshtastic/device-ui
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
meshtastic/device-ui#392 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
meshtastic/device-ui#283 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Global UI RotationAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
meshtastic/device-ui#453 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 58/100
meshtastic/device-ui#434 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
meshtastic/device-ui#410 ·
Los mantenedores suelen responder en 1 día
Todos los issues de meshtastic/device-ui
Issues similares
-
respond_to? on a poly receiver answers true for a program class's private or protected methodAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día
-
bug core p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
RunanywhereAI/runanywhere-sdks#1258 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
rocketproplab/phoenix-fc-sensor-board#18 · 1 comentario ·
-
Plugin mapper: latency_samples is 0 for eight UAD 11.8.3 plug-ins that delay by 55-56 samplesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
rolotrealanis98/open-apollo#126 ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue no-disc-needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Jstar269/nakagawa-recomp#1981 ·
Los mantenedores suelen responder en 1 día