← 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)
3QriEu48CzQa1foQBiPzUjN9BGjRBqMC1t2FNrMRM6wM
Tor v3 .onion (same key, different encoding)
epj7bxwojbidx7cdzkwxvhid4bwomhtr5e4blqj55b7nmavjwxsd4zqd.onion
Content SHA-256
ba0e17cb2790fffd5c3b274c56504a7cccc4ade47b81760b6499059c6caf9830
Published at
2026-05-23T14:06:41.860Z
Server received at
2026-05-23T14:06:42.211Z

Challenge bytes the wallet signed

ouija-publish v1
onion: epj7bxwojbidx7cdzkwxvhid4bwomhtr5e4blqj55b7nmavjwxsd4zqd.onion
sha256(content): ba0e17cb2790fffd5c3b274c56504a7cccc4ade47b81760b6499059c6caf9830
published_at: 2026-05-23T14:06:41.860Z
bytes: 453

Signature (base64, 64 bytes)

Hvxu8fMmvbG8XEZQ3xolfRDlhPXozo5Cggi0Q6bZ7UGE4H0UNtqxz5ierZIwu4R2ttm75oNF2O+4YCKn7nMeBA==

Verify it yourself

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

const pubkey   = bs58.decode("3QriEu48CzQa1foQBiPzUjN9BGjRBqMC1t2FNrMRM6wM");
const sig      = Uint8Array.from(Buffer.from("Hvxu8fMmvbG8XEZQ3xolfRDlhPXozo5Cggi0Q6bZ7UGE4H0UNtqxz5ierZIwu4R2ttm75oNF2O+4YCKn7nMeBA==", "base64"));
const msg      = new TextEncoder().encode(`ouija-publish v1
onion: epj7bxwojbidx7cdzkwxvhid4bwomhtr5e4blqj55b7nmavjwxsd4zqd.onion
sha256(content): ba0e17cb2790fffd5c3b274c56504a7cccc4ade47b81760b6499059c6caf9830
published_at: 2026-05-23T14:06:41.860Z
bytes: 453
`);

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