verify.html
Shared (default) — HMAC-SHA256. Only people you gave the passphrase to can check it, and any of them could also forge one. A pass means “someone in this group”, not one named person.
Public (tick the box) — Ed25519. Publish the key once; holding it lets someone verify you but never sign as you. Use it for anything public.
One key per passphrase. Keys are derived, never generated, so the same phrase always gives the same key on any device — you never have to reissue. Public and shared mode give two different keys from the same phrase, by design.
Exact spelling counts. The passphrase is not tidied up: a trailing space or a capital letter is a different identity, and nothing will warn you. The message body, by contrast, is normalised before signing so it survives chat clients.
The message is not encrypted. Anyone can read the text. Signet proves who wrote it and that not one character changed.
Quick-fill buttons come from the QUICK list at the top of this file's script — edit the labels and seeds there. Keep them as reminders, not whole passphrases.
Three answers. Genuine · does not check out (right key, wrong text) · can’t check this one (not your key — not a failure).
Command line: cat msg.txt | SIGNET_PASS=… bun signet-verify.ts — exits 0 genuine, 1 bad, 2 can’t check, 3 no token.