Ed25519 · JCS · Offline-first

Prove what you said,
when you said it

Create cryptographically signed notices, encrypted messages, and verifiable proofs — without relying on any platform or authority.

Self-Sovereign Identity

Your keys, your identity. Ed25519 signing keys stay on your device, encrypted with your passphrase.

Cryptographic Proof

Every notice is signed with Ed25519. Anyone can verify authorship and integrity — offline.

Offline-First

Create and verify proofs without any network connection. No servers required for verification.

End-to-End Encryption

ENV-1.1 envelopes with forward secrecy. Each message uses a fresh ephemeral key.

Timestamp Anchoring

Optional proof levels from witness signatures to Bitcoin blockchain anchoring.

Single-File Toolkit

One HTML file, zero dependencies. Download and use anywhere, forever.

How It Works

Create verifiable proofs in four simple steps

1

Create Identity

Generate Ed25519 + P-256 keypair, protected by your passphrase

2

Write Notice

Choose type (statement, commitment, attestation) and enter content

3

Sign

Cryptographically sign with your identity. Optionally publish to public board.

4

Share & Verify

Anyone can verify the signature offline — no trust required

Open Protocols

Built on simple, auditable standards

CNP-1

Commitment Notice Protocol

Signed, timestamped statements. Prove who said what and when.

Ed25519 JCS/RFC 8785 JSON

ENV-1.1

Encrypted Envelope

End-to-end encrypted messages with forward secrecy.

P-256 ECDH AES-256-GCM Ephemeral Keys

Identity v3

Cryptographic Identity

Dual-keypair identity with fingerprint addressing.

Ed25519 Sign P-256 DH PBKDF2

For Developers

lownet.js — MIT licensed, zero dependencies

lownet.js View on GitHub
// Create identity const id = await lownet.identity.create('Alice'); const alice = await lownet.identity.load(id); // Sign a notice const notice = await lownet.cnp.sign(alice, 'statement', { content: 'I agree to these terms' }); // Add Proof-of-Work for public posting const withPow = await lownet.pow.addToNotice(notice, 16); // Verify anywhere, offline const result = await lownet.cnp.verify(withPow); // → {valid: true, data: {...}}

Ready to create verifiable proofs?

No signup, no account, no tracking. Just cryptography.

Open Toolkit