Commit graph

2 commits

Author SHA1 Message Date
GlassOnTin
57b1bb7f7e Add LXMF message receive: decrypt, parse, display on Messages screen
Implements OPPORTUNISTIC LXMF delivery receive — single-packet
encrypted messages without link establishment.

BeaconCrypto.h: beacon_crypto_decrypt() — reverse of encrypt.
  ECDH + HKDF + HMAC verify + AES-256-CBC decrypt + PKCS7 unpad.

LxmfBeacon.h: MsgpackReader for unpacking received messages.
  lxmf_parse_received() extracts source_hash, timestamp, title, content.
  lxmf_verify_signature() verifies Ed25519 against cached announce key.

MessageLog.h: Extended to detect DATA packets addressed to our
  lxmf_source_hash, decrypt, parse, and store content. Announce
  entries now cache sender's ed25519 public key for verification.

Gui.h: Messages screen shows LXMF content (green if verified,
  white if unverified) with sender name and time ago.
2026-04-07 21:34:49 +01:00
GlassOnTin
50e81d0f1c Add Messages screen with received packet log and announce parser
New MessageLog.h parses incoming RNS packets:
- Announces: extracts display name, identity hash, public keys
- Data packets: logs dest hash, RSSI, SNR, size
- De-duplicates by sender hash within 60s

Messages screen (swipe right from watch face) shows:
- "Listening..." when no packets received
- Chronological list of peers with name, RSSI (colour-coded), time ago
- Announces shown in amber, data packets in white
- Up to 16 entries in ring buffer, 8 visible rows

Packet interception hooks into main loop dequeue path, before
kiss_write_packet(), so host forwarding is unaffected.
2026-04-07 13:56:49 +01:00