mirror of
https://github.com/kccleoc/seedpgp-web.git
synced 2026-03-06 17:37:51 +08:00
3.7 KiB
3.7 KiB
SeedPGP Web App
Secure BIP39 mnemonic backup tool using OpenPGP encryption
🔗 Live App: https://kccleoc.github.io/seedpgp-web-app/
About
Client-side web application for encrypting cryptocurrency seed phrases (BIP39 mnemonics) using OpenPGP encryption with QR code generation and scanning capabilities.
✨ Features
- 🔐 OpenPGP Encryption - Curve25519Legacy (cv25519) encryption
- 📱 QR Code Generation - High-quality 512x512px PNG with download
- 📸 QR Code Scanner - Camera or image upload with live preview
- 🔄 Round-trip Flow - Encrypt → QR → Scan → Decrypt seamlessly
- ✅ BIP39 Support - 12/18/24-word mnemonics with optional passphrase
- 🔒 Symmetric Encryption - Optional password-only encryption (SKESK)
- 🎯 CRC16 Validation - Frame integrity checking
- 📦 Base45 Encoding - Compact QR-friendly format (RFC 9285)
- 🌐 100% Client-Side - No backend, no data transmission
🔒 Security Notice
⚠️ Your private keys and seed phrases never leave your browser
- Static web app with no backend server
- All cryptographic operations run locally in your browser
- No data transmitted to any server
- Camera access requires HTTPS or localhost
- Always verify you're on the correct URL before use
For Maximum Security
For production use with real funds:
- 🏠 Download and run locally (`bun run dev`)
- 🔐 Use on airgapped device
- 📥 Self-host on your own domain
- 🔍 Source code: https://github.com/kccleoc/seedpgp-web (private)
📖 How to Use
Backup Flow
- Enter your 12/24-word BIP39 mnemonic
- Add PGP public key and/or message password (optional)
- Generate encrypted QR code
- Download or scan QR code for backup
Restore Flow
- Scan QR Code using camera or upload image
- Provide private key and/or message password
- Decrypt to recover your mnemonic
QR Scanner Features
- 📷 Camera Mode - Live scanning with environment camera (iPhone Continuity Camera supported on macOS)
- 📁 Upload Mode - Scan from saved images or screenshots
- ✅ Auto-validation - Verifies SEEDPGP1 format before accepting
🛠 Technical Stack
- TypeScript - Type-safe development
- React 18 - Modern UI framework
- Vite 6 - Lightning-fast build tool
- OpenPGP.js v6 - RFC 4880 compliant encryption
- html5-qrcode - QR scanning library
- TailwindCSS - Utility-first styling
- Lucide React - Beautiful icons
📋 Protocol Format
``` SEEDPGP1:0:ABCD:BASE45DATA
SEEDPGP1 - Protocol identifier + version 0 - Frame number (single frame) ABCD - CRC16-CCITT-FALSE checksum BASE45 - Base45-encoded OpenPGP binary message ```
🔐 Encryption Details
- Algorithm: AES-256 (preferred symmetric cipher)
- Curve: Curve25519Legacy for modern security
- Key Format: OpenPGP RFC 4880 compliant
- Error Correction: QR Level M (15% recovery)
- Integrity: CRC16-CCITT-FALSE frame validation
📱 Browser Compatibility
- ✅ Chrome/Edge (latest)
- ✅ Safari 16+ (macOS/iOS)
- ✅ Firefox (latest)
- 📷 Camera requires HTTPS or localhost
📦 Version
Current deployment: v1.2.0
Changelog
v1.2.0 (2026-01-29)
- ✨ Added QR scanner with camera/upload support
- 📥 Added QR code download with auto-naming
- 🔧 Split state for backup/restore tabs
- 🎨 Improved QR generation quality
- 🐛 Fixed Safari camera permissions
- 📱 Added Continuity Camera support
v1.1.0 (2026-01-28)
- 🎉 Initial public release
- 🔐 OpenPGP encryption/decryption
- 📱 QR code generation
- ✅ BIP39 validation
Last updated: 2026-01-29
Built with ❤️ using TypeScript, React, Vite, and OpenPGP.js
License: Private source code - deployment only