From c4e37d3caed3b08c8ecca986ece991daba180913 Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Tue, 2 Jun 2026 15:06:47 -0400 Subject: [PATCH] =?UTF-8?q?zebra-report:=20deploy=2072d5208=20=E2=80=94=20?= =?UTF-8?q?log=20full=20pubkey=20on=20every=20role/spot=20event?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zebra-report/zebra-spaces.html | 83 +++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 22 deletions(-) diff --git a/zebra-report/zebra-spaces.html b/zebra-report/zebra-spaces.html index bbfa87b..9f9bbb1 100644 --- a/zebra-report/zebra-spaces.html +++ b/zebra-report/zebra-spaces.html @@ -722,6 +722,31 @@ function logLine(kind, msg){ logEl.appendChild(d); logEl.scrollTop=logEl.scrollHeight; } +/* pubHex straight from a server message — prefers the explicit hex field, + * falls back to decoding the b64 form. Used so role/spot/boot/etc. log lines + * carry the actor's authoritative key (the server already verified the + * signature), independent of the local uuid→handle map. A spoof attempt + * is then visible in the log retroactively: same handle, different pubkey. */ +function pubHexFromMsg(m, b64key, hexkey){ + if (m && hexkey && m[hexkey]) return m[hexkey]; + if (m && b64key && m[b64key]){ + try { + const bin = atob(m[b64key].replace(/-/g,'+').replace(/_/g,'/')); + let h=''; for (let i=0;i page integrity  ·  built 2026-06-02
- md5 f908c19e47433151020f76df10fe81d0
- sha256 f751785bdcb457d172dee013fbe0a445ee01b0aacdb20c2c1fe11352ef98111c
+ md5 c9a9641f134b920871292cd17598a637
+ sha256 fb1aa6ee1857cf33e50985473b98ad9648850abf82289b771c3ab2295db707b6
hashes are of this page with these two fields zeroed — to verify, blank them and re-hash
one self-contained file — save a copy and verify against these hashes; point at your own servers with ?signal= and ?turncred=, or host your own community