Docs · Playground

Learn the protocol by running it.

Generate an Ed25519 keypair, watch the canonical signing input build byte-for-byte as you type, sign a real GOVP-1 record and verify it — then break a byte and watch it fail. This is the same code path as the official verifier.

Entirely client-side. Keys are generated in this page, live only in memory, and are gone on reload. Nothing is uploaded — you can run this offline.

01 · Compose the declaration
02
Asset fingerprint
SHA-256 of the statement bytes — recomputed live as you type.
asset-sha256
govp-id
03
Your keypair
Generated in this page. The private key never leaves memory.
public-keynot generated yet
04 · Canonical signing input (exact bytes)
— type on the left to build the signing input —

Domain separator GOVP::record.v1\0 + lowercased key: value lines, sorted alphabetically. Field order and comments never change these bytes — that is §5 of the spec.

05
The signed record
Self-contained: carries its own public key and signature.
— sign to produce the record —
browser-only · no upload
What you just did
Issued operational evidence exactly the way GOVP Studio, the WordPress plugin and the CLI do — same bytes, same signature scheme.
Why the break matters
One flipped character changes the canonical bytes, so the Ed25519 check fails for everyone, everywhere, forever. That asymmetry is the protocol.
Next step
Read the normative spec, then prove your own implementation with the conformance vectors.
← GOVP