Michael J. Arcan
6a32ec2b2d
fix( #1729 ): preserve firmware-default Public channel (0x11) in analytics ( #1817 )
...
## Fixes #1729
The firmware-default **Public** channel (channel-hash byte `0x11` = 17)
was rendered as an opaque **"Encrypted (0x11)"** row at the bottom of
the analytics Channels tab, despite the key being well-known and
builtin.
## Root cause
`computeAnalyticsChannels` applied the #978 rainbow-table validation
(`SHA256(SHA256("#name")[:16])[0]`, the **hashtag** hash scheme) to
every decoded channel name. The Public channel is a **PSK** channel
whose hash byte is key-derived (`SHA256(key)[0]` = 17), not
hashtag-derived (`186` for `#Public`). So the ingestor-decoded name
`"Public"` failed the hashtag check and was discarded, the row forced to
`encrypted=true, name="ch17"`.
## Fix
Trust the ingestor's `decryptionStatus`. The ingestor already persists
`decryptionStatus:"decrypted"` when it decoded a packet with a real key
(PSK), and `"no_key"` / `"decryption_failed"` otherwise. When the packet
is `decrypted`, skip the hashtag hash check and keep the name — it came
from a key-based decryption, not a
rainbow-table lookup. The #978 mismatch rejection still applies to
non-decrypted packets, so rainbow-table collisions are still caught.
Frontend needs no change: `encrypted=false, name="Public"` lands in the
"Network" group (top), not "Encrypted".
## Tests
- `makeGrpTx` gains `makeGrpTxWithStatus` companion to set
`decryptionStatus`.
- `TestComputeAnalyticsChannels_PublicChannelPreserved`: hash 17 /
"Public" / `decrypted` → name stays `"Public"`, `encrypted=false`.
- `TestComputeAnalyticsChannels_UndecryptedNameStillValidated`: a
non-`decrypted` name failing the hashtag check is still downgraded to
`ch17` (#978 regression guard).
All channel-analytics tests pass; `go build ./...` clean.
Co-authored-by: Waydroid Builder <build@waydroid.local >
Co-authored-by: Claude <noreply@anthropic.com >
2026-07-02 19:20:14 -07:00
..
2026-04-21 09:09:39 -07:00
2026-04-03 13:51:13 -07:00
2026-05-21 14:00:15 -07:00
2026-06-12 21:02:59 +00:00
2026-06-12 21:02:59 +00:00
2026-06-12 21:02:59 +00:00
2026-04-05 14:50:40 -07:00
2026-05-21 14:00:15 -07:00
2026-05-03 17:56:42 -07:00
2026-05-03 17:56:42 -07:00
2026-05-17 16:13:11 +00:00
2026-05-18 22:51:23 -07:00
2026-05-18 22:51:23 -07:00
2026-05-18 22:51:23 -07:00
2026-06-27 22:03:05 -07:00
2026-06-04 03:21:26 -07:00
2026-04-12 18:09:23 -07:00
2026-06-04 13:14:09 +00:00
2026-06-04 13:14:09 +00:00
2026-07-02 19:20:14 -07:00
2026-04-20 21:46:34 -07:00
2026-05-25 17:45:32 -07:00
2026-05-25 22:16:14 -07:00
2026-06-07 03:43:29 -07:00
2026-06-07 03:43:29 -07:00
2026-06-07 03:43:29 -07:00
2026-06-07 03:43:29 -07:00
2026-06-30 17:19:56 -07:00
2026-06-03 13:58:04 -07:00
2026-06-06 22:45:05 -07:00
2026-06-04 18:48:27 -07:00
2026-05-19 01:17:12 -07:00
2026-05-18 12:27:44 -07:00
2026-05-19 01:17:12 -07:00
2026-06-04 18:48:27 -07:00
2026-05-21 14:00:15 -07:00
2026-05-21 11:39:49 -07:00
2026-05-21 11:39:49 -07:00
2026-05-21 11:39:49 -07:00
2026-05-19 23:53:41 -07:00
2026-06-06 22:45:05 -07:00
2026-06-22 10:07:49 -07:00
2026-05-30 13:22:41 -07:00
2026-05-30 13:22:41 -07:00
2026-05-30 13:22:41 -07:00
2026-06-19 11:37:16 -07:00
2026-06-27 22:03:05 -07:00
2026-06-27 22:03:05 -07:00
2026-06-19 11:37:16 -07:00
2026-06-04 14:41:00 -07:00
2026-05-16 17:28:40 +00:00
2026-05-29 01:08:12 -07:00
2026-06-12 12:47:53 -07:00
2026-06-12 19:10:44 -07:00
2026-05-15 22:34:21 -07:00
2026-05-15 22:34:21 -07:00
2026-06-12 19:10:44 -07:00
2026-05-05 01:16:57 -07:00
2026-05-05 01:16:57 -07:00
2026-06-29 15:53:59 -07:00
2026-05-21 14:00:15 -07:00
2026-04-16 00:09:36 -07:00
2026-05-16 20:56:52 +00:00
2026-06-04 16:27:48 -07:00
2026-05-05 01:58:52 -07:00
2026-05-19 23:53:41 -07:00
2026-03-31 01:10:56 -07:00
2026-05-31 14:54:21 -07:00
2026-06-22 10:07:49 -07:00
2026-05-29 02:42:21 -07:00
2026-06-27 22:03:05 -07:00
2026-04-18 11:52:22 -07:00
2026-04-18 11:52:22 -07:00
2026-05-19 23:53:41 -07:00
2026-06-07 09:28:51 -07:00
2026-04-03 13:11:59 -07:00
2026-06-19 11:37:16 -07:00
2026-06-19 11:37:16 -07:00
2026-06-11 10:10:12 -07:00
2026-06-11 10:10:12 -07:00
2026-05-15 16:21:14 +00:00
2026-05-16 19:55:00 +00:00
2026-06-04 23:48:47 -07:00
2026-05-15 20:24:55 -07:00
2026-05-15 22:46:25 -07:00
2026-06-12 12:47:53 -07:00
2026-06-06 22:45:05 -07:00
2026-06-06 20:46:42 -07:00
2026-04-20 22:15:02 -07:00
2026-05-21 14:00:15 -07:00
2026-04-21 04:51:24 +00:00
2026-05-02 20:35:15 -07:00
2026-05-17 16:13:11 +00:00
2026-05-19 08:08:28 -07:00
2026-05-18 23:19:27 -07:00
2026-06-30 17:19:56 -07:00
2026-06-25 05:05:46 -07:00
2026-06-30 17:19:56 -07:00
2026-06-11 07:38:36 -07:00
2026-06-11 07:38:36 -07:00
2026-06-11 07:38:36 -07:00
2026-06-06 22:44:59 -07:00
2026-06-11 11:36:49 -07:00
2026-06-11 11:36:49 -07:00
2026-06-11 11:36:49 -07:00
2026-06-04 14:41:22 -07:00
2026-06-30 17:19:56 -07:00
2026-05-28 15:06:30 -07:00
2026-05-28 15:06:30 -07:00
2026-04-20 23:10:33 -07:00
2026-06-30 15:16:31 -07:00
2026-06-12 08:11:02 -07:00
2026-06-30 15:16:31 -07:00
2026-05-25 22:35:35 -07:00
2026-05-03 08:56:09 -07:00
2026-05-21 14:00:15 -07:00
2026-06-09 01:24:46 -07:00
2026-06-12 11:38:43 -07:00
2026-04-02 23:45:03 -07:00
2026-05-15 09:16:39 -07:00
2026-05-15 09:16:39 -07:00
2026-05-29 02:42:21 -07:00
2026-05-29 02:42:21 -07:00
2026-05-29 02:42:21 -07:00
2026-05-29 02:42:21 -07:00
2026-05-16 10:14:44 -07:00
2026-06-12 11:38:43 -07:00
2026-06-12 11:38:43 -07:00
2026-06-12 11:38:43 -07:00
2026-06-12 11:38:43 -07:00
2026-05-19 23:53:41 -07:00
2026-05-19 23:53:41 -07:00
2026-05-05 01:41:00 -07:00
2026-05-05 01:41:00 -07:00
2026-04-17 23:43:05 +00:00
2026-06-08 01:27:13 -07:00
2026-06-09 00:27:56 -07:00
2026-06-09 03:23:48 -07:00
2026-06-09 03:23:48 -07:00
2026-06-09 00:27:56 -07:00
2026-06-11 10:10:12 -07:00
2026-06-19 11:37:16 -07:00
2026-06-19 11:37:16 -07:00
2026-05-18 09:22:27 -07:00
2026-05-18 07:36:33 -07:00
2026-04-03 13:33:26 -07:00
2026-05-01 23:11:27 -07:00
2026-05-29 01:08:12 -07:00
2026-05-29 01:08:12 -07:00
2026-05-29 02:42:21 -07:00
2026-05-29 02:42:21 -07:00
2026-06-08 01:27:13 -07:00
2026-06-12 01:52:12 -07:00
2026-06-19 11:37:16 -07:00
2026-06-27 15:01:05 -07:00
2026-04-05 15:05:20 -07:00
2026-06-27 15:01:05 -07:00
2026-05-17 16:13:11 +00:00
2026-05-25 22:32:00 -07:00
2026-06-04 23:48:47 -07:00
2026-05-15 22:46:28 -07:00
2026-05-15 22:46:28 -07:00
2026-05-15 22:46:28 -07:00
2026-05-15 22:46:28 -07:00
2026-05-15 22:46:28 -07:00
2026-05-15 22:46:28 -07:00
2026-05-15 22:46:28 -07:00
2026-06-29 15:53:59 -07:00
2026-05-28 15:02:59 -07:00
2026-05-28 14:55:59 -07:00
2026-05-25 06:03:10 +00:00
2026-05-02 11:15:25 -07:00
2026-05-08 16:29:23 -07:00
2026-05-08 16:29:23 -07:00
2026-05-08 16:29:23 -07:00
2026-05-08 16:29:23 -07:00
2026-06-07 09:28:51 -07:00
2026-05-05 17:56:56 -07:00
2026-06-07 09:28:51 -07:00
2026-04-01 19:26:11 -07:00
2026-06-06 22:45:05 -07:00
2026-05-15 09:16:39 -07:00
2026-05-25 22:35:35 -07:00
2026-06-27 22:03:05 -07:00
2026-06-27 22:03:05 -07:00
2026-05-03 19:50:01 -07:00
2026-06-22 10:07:49 -07:00
2026-06-22 10:07:49 -07:00
2026-05-21 11:39:43 -07:00
2026-05-20 20:57:02 -07:00
2026-06-13 00:10:59 -07:00
2026-05-28 15:01:58 -07:00
2026-06-27 14:59:50 -07:00
2026-06-06 20:46:42 -07:00
2026-06-06 20:46:42 -07:00
2026-05-05 02:33:27 -07:00
2026-06-27 14:59:50 -07:00
2026-05-20 20:57:02 -07:00
2026-05-20 20:57:02 -07:00
2026-05-15 16:21:14 +00:00
2026-05-15 09:16:39 -07:00
2026-06-08 01:27:13 -07:00
2026-05-17 16:42:01 -07:00
2026-04-20 19:55:00 -07:00
2026-06-04 15:37:37 -07:00
2026-05-18 07:36:28 -07:00
2026-05-03 17:56:12 -07:00
2026-05-21 14:00:15 -07:00
2026-06-30 05:48:47 -07:00
2026-06-30 05:48:47 -07:00
2026-06-30 17:19:56 -07:00
2026-06-19 11:37:16 -07:00
2026-06-19 11:37:16 -07:00
2026-06-19 11:37:16 -07:00
2026-06-19 11:37:16 -07:00
2026-06-19 11:37:16 -07:00
2026-05-15 16:21:14 +00:00
2026-05-03 17:40:54 -07:00
2026-06-03 13:58:04 -07:00
2026-06-30 18:21:21 -07:00
2026-04-20 23:10:33 -07:00
2026-06-28 13:48:47 -07:00
2026-04-21 09:09:39 -07:00
2026-07-02 19:20:14 -07:00
2026-05-29 02:42:21 -07:00
2026-06-06 21:59:23 -07:00
2026-05-03 17:41:22 -07:00
2026-05-03 17:41:22 -07:00
2026-05-21 14:00:15 -07:00
2026-04-20 19:55:00 -07:00
2026-04-20 19:55:00 -07:00
2026-06-27 22:03:05 -07:00
2026-06-27 14:59:50 -07:00
2026-06-28 13:48:47 -07:00
2026-06-27 22:03:05 -07:00
2026-06-27 22:03:05 -07:00
2026-06-27 22:03:05 -07:00
2026-06-27 22:03:05 -07:00
2026-06-29 05:48:58 -07:00
2026-03-30 03:42:11 +00:00
2026-06-29 05:48:58 -07:00