๐Ÿ”Ed25519 ยท open verification ยท zero-trust server

Cryptographic signing.
Your keys, your choice.

Sign any document or payload with your own Ed25519 keypair. Keep the private key on your device, in your browser, or stored encrypted with us โ€” DocSign never sees plaintext.

No plaintext on the server
Public Ed25519 verification
OIDC + PKCE built-in
Open audit trail
How it works

From keypair to verified signature in four steps.

  1. 1

    Generate a keypair

    DocSign creates a fresh Ed25519 keypair in your browser at signup. Pick one of three storage modes.

  2. 2

    Confirm by email

    The public half is registered server-side after you click the one-time email link.

  3. 3

    Sign anything

    Documents, payloads, login challenges โ€” all hashed with SHA-256 and signed locally with your key.

  4. 4

    Verify openly

    Anyone with the payload + public key can verify. No DocSign account needed.

Features

Everything you need to issue, share, and verify signatures.

13 documented features across keys, auth, sharing, and developer tooling. Click any card to read more.

For developers

Drop DocSign into your stack in an afternoon.

Bearer-authed REST API, OAuth 2.0 + OIDC provider with PKCE, and an Ed25519 crypto-proof flow that's verifiable without trusting us. All three documented end-to-end.

Create a signing request
curl -X POST https://docsign.example.com/api/signing-requests \
  -H "authorization: Bearer dsk_..." \
  -H "content-type: application/json" \
  -d '{
    "targetEmail": "ada@example.com",
    "payloadHash": "9f86d081884c...",
    "payloadPreview": "Sign invoice #4711",
    "callbackUrl": "https://yourapp.com/hooks/docsign"
  }'

# โ†’ { "id": "...", "signLink": "https://docsign.../sign/...",
#     "callbackSecret": "..." }
Why DocSign

Three things traditional e-sign platforms don't give you.

The server doesn't hold your private key.

All wrapping and signing happen in your browser. Even a full server compromise can't produce a signature on your behalf without your passphrase.

Signatures verify without DocSign.

We use Ed25519 + SHA-256. Any library in any language can verify. No proprietary container, no vendor lock-in.

Identity stays optional.

You can do pseudonymous cryptographic signing today, then layer KYC on top whenever you need the "real human" assertion for a regulated use case.

Security

The cryptographic primitives, picked and documented.

Signing
Ed25519

@noble/ed25519 in sync mode โ€” works on plain HTTP.

Document hashing
SHA-256

We sign the hash, not the file.

Key wrapping
XChaCha20-Poly1305

Scrypt (N=2ยนโต, r=8, p=1) from passphrase.

Login password
bcrypt cost 12

Plus HIBP k-anonymity check at signup.

OIDC id_token
RS256

JWKS endpoint, key rotation, refresh-token replay defense.

Webhook integrity
HMAC-SHA-256

Over the raw body, secret returned once.

FAQ

Quick answers to the most common questions.

Where does my private key actually live?+
You choose at signup. Local-only keeps it on your disk; browser-stored keeps it in IndexedDB; server-encrypted uploads only an XChaCha20-Poly1305 ciphertext whose wrapping key is derived from your passphrase. The plaintext never reaches us.
Can I verify a DocSign signature without an account?+
Yes โ€” visit /verify, paste the payload + signature + public key, and the page runs Ed25519 verification client-side. No login.
What's the difference between OIDC login and the crypto-proof flow?+
OIDC is the standards-based flow: drop-in for any OIDC client lib, partners get an id_token. Crypto-proof is DocSign-native: the user signs the partner's nonce with their email-confirmed key, and the partner verifies the Ed25519 signature without trusting our id_token signing key. Use OIDC for breadth; use crypto-proof for cryptographic strength. (You can have both via the signing:proof OIDC scope.)
Is the server side open enough to self-host?+
Yes. Next.js + Prisma + SQLite (swap to Postgres for prod). No proprietary file formats; the database schema and route handlers are the entire surface.
What's the e-sign legal weight of a signature?+
The cryptographic signature proves key control. Layer KYC (Identity verification) on top to additionally prove who the human holding the key is. Whether that meets a specific jurisdiction's advanced/qualified e-signature threshold depends on the jurisdiction.

Ready when you are.

Sign up free, generate your first key in the browser, and verify a signature against it within five minutes.