Skip to content

LockHTML v1.1.0

Choose a tag to compare

@drsamonline drsamonline released this 20 Oct 11:46
· 29 commits to main since this release

LockHTML v1.1.0

Now with Argon2id, keyfiles, signing, duress PINs, view limits, watermarking — and any file type.

Highlights

  • 🔐 Argon2id key derivation (memory-hard) — now the default. PBKDF2-SHA256 remains available.
  • 🧂 Keyfile second factor — a pepper mixed into the key, so the PIN alone is not enough.
  • ✍️ Ed25519 signing (lockhtml keygen, --sign) — verified in the browser before the content is shown.
  • 🎭 Duress PIN (--decoy-pin) — a second PIN that opens a harmless decoy document.
  • 👁️ View limits — --one-time, --max-views N, --not-before, --expires.
  • 💧 Watermarking (--watermark) — overlay recipient-specific text to trace a leak.
  • 📦 Any file type — HTML renders inline; PDFs, images and anything else download.
  • 🌐 PWA + offline — the hosted GUI installs and works offline.
  • 🌍 Localised viewer — English, हिन्दी, ગુજરાતી.
  • 🧾 Format v2 with a written spec (docs/FORMAT.md); v1 files still open.
  • ⚡ Minified, build-verified assets — the viewer template is ~34% smaller.

Install

pip install git+https://github.com/drsamonline/lockhtml
lockhtml lock report.pdf --pin 4821 --one-time --watermark "For A. Sharma"

Wheel and sdist are attached below.

Live GUI

👉 https://drsamonline.github.io/lockhtml/

Security note

The PIN (and keyfile) provide real encryption — the file is unreadable without them, even from the raw source. View limits, expiry, watermarking and one-time view are browser-enforced deterrents, not server guarantees. See SECURITY.md and the self-audit in docs/AUDIT.md.

Compatibility

Files are interchangeable between the Python CLI and the JavaScript GUI. Verified in CI and by a real headless-browser end-to-end test on Linux, Windows and macOS (Python 3.9–3.12).