← back to the page

Verify this publication

Everything needed to verify the signature offline. Pipe the challenge text into any ed25519 verifier with the pubkey and signature.

Solana wallet (signer)
6b6si1ULuyUvUqSuwFU88txdVXSg8rZ3MUmtyJkWCGgf
Tor v3 .onion (same key, different encoding)
kmdnf7pbwjpus3lfwmnbeb2gbcu5e23hvwuwgtx76exd3sgak7amojqd.onion
Content SHA-256
bb057cc5d177580074c225ce00c1d82a9055eda7b47e68f2bc468d4c134ea24c
Published at
2026-05-21T13:46:37.077Z
Server received at
2026-05-21T13:46:37.237Z

Challenge bytes the wallet signed

ouija-publish v1
onion: kmdnf7pbwjpus3lfwmnbeb2gbcu5e23hvwuwgtx76exd3sgak7amojqd.onion
sha256(content): bb057cc5d177580074c225ce00c1d82a9055eda7b47e68f2bc468d4c134ea24c
published_at: 2026-05-21T13:46:37.077Z
bytes: 418

Signature (base64, 64 bytes)

Kg0U/0mQ5HG9XZk7cN1tcwSPmV3jTtlHB+ztwTvpOvWdgzb4m8+J26e6Unki68dZ/7JnSejmjVqDJCKSV5keBg==

Verify it yourself

# JavaScript (browser or Node)
import { ed25519 } from "@noble/curves/ed25519";
import bs58 from "bs58";

const pubkey   = bs58.decode("6b6si1ULuyUvUqSuwFU88txdVXSg8rZ3MUmtyJkWCGgf");
const sig      = Uint8Array.from(Buffer.from("Kg0U/0mQ5HG9XZk7cN1tcwSPmV3jTtlHB+ztwTvpOvWdgzb4m8+J26e6Unki68dZ/7JnSejmjVqDJCKSV5keBg==", "base64"));
const msg      = new TextEncoder().encode(`ouija-publish v1
onion: kmdnf7pbwjpus3lfwmnbeb2gbcu5e23hvwuwgtx76exd3sgak7amojqd.onion
sha256(content): bb057cc5d177580074c225ce00c1d82a9055eda7b47e68f2bc468d4c134ea24c
published_at: 2026-05-21T13:46:37.077Z
bytes: 418
`);

console.log(ed25519.verify(sig, msg, pubkey)); // → true