Verify
Check it here. Do not send it to us.
Paste a signed evidence pack or conformance claim. The signature is verified in your browser — nothing is uploaded, and nothing about this page needs to be trusted for the answer to mean something.
A page that asked you to send us a document so we could tell you whether to trust us would be arguing against the product it sits on.
Verifying something a customer's deployment produced
This is the ordinary case: RotaGrant runs in the customer's environment and signs with their key. We did not sign it and cannot vouch for it — which is the design working rather than a limitation. A vendor who could vouch for every customer's evidence would be a vendor whose customers' evidence depends on that vendor still existing.
It is a keypair, and the public half is small
- The private key signs
- 32 bytes that never leave the organisation's environment. It is never uploaded, pasted, downloaded or exported — the capability is absent from the interface rather than present and forbidden, and no route on the API could carry one.
- The public key verifies
- 32 bytes — 44 characters of base64, like
eHOPK3qP8zw5ii3tPKzZBC/ghbmD3fyiV17pZ1RnMns=. It cannot sign anything, so it is safe to email, print in an engagement letter, publish on a website, or read down a telephone. - Once, then forever
- An auditor who has that string can verify every artefact that deployment ever signs — offline, with no call to the customer and no call to us. Neither of us needs to be reachable, or solvent, for last year's evidence to still check out.
The only part that needs care
The key must reach you by a different route than the document. Every artefact embeds its own public key, and checking against that proves the document is internally consistent — but a forger can generate a keypair, sign a fabrication with it, and embed the matching public half. It would verify perfectly against itself.
So: ask the organisation for their key, or for the URL where their
deployment publishes it — every one serves it unauthenticated at
/.well-known/jwks.json. Match the kid there
against the key_ref printed in the artefact. Airgapped
deployments are no harder: nobody needs to reach the instance, because 44
characters travel by email.
Ask what custody the key was under. A pack states its
key_ref but not who held the private half, and it matters: a
key held on the deployment means the operator could have re-signed
a rewritten history, where a customer-held or HSM key means they could not.
The console states custody on every artefact; a standalone pack currently
does not, and that is a gap we have raised against the platform rather than
papered over here.
What a passing check does and does not tell you
- It does tell you
- That the document has not been altered by so much as a character since it was signed, and that whoever held the private key signed exactly these bytes — including the disclaimer, which is inside the signed payload rather than beside it.
- It does not tell you
- That the claims inside are true of the world. A signature establishes integrity and origin. Whether an agent's record accurately describes what happened is a different question, and no signature answers it.
- And whose key it was
- If you verified against the key inside the document, you proved internal consistency and nothing about identity — anyone can sign anything with a key they generated. Pin a key you obtained out of band and the check answers who.
The verification contract is printed inside every signed pack:
re-serialise the payload without its signature field using
canonical JSON — sorted keys, no whitespace, UTF-8 — then verify the
Ed25519 signature over exactly those bytes. Anyone can implement it; this
page is a convenience, not an authority.