Repository navigation
LockHTML v1.1.0
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).