mirror of
https://github.com/kccleoc/seedpgp-web.git
synced 2026-03-07 09:57:50 +08:00
feat(v1.2.0): add QR scanner with camera/upload support
- Add QRScanner component with camera and image upload - Add QR code download button with auto-naming (SeedPGP_DATE_TIME.png) - Split state for backup/restore (separate public/private keys and passwords) - Improve QR generation settings (margin: 4, errorCorrection: M) - Fix Safari camera permissions and Continuity Camera support - Add React timing fix for Html5Qrcode initialization - Configure Vite for GitHub Pages deployment - Update deploy script for dist as public repo - Update public README for v1.2.0 features Features: - Camera scanning with live preview and Continuity Camera - Image file upload scanning - Automatic SEEDPGP1 validation - 512x512px high-quality QR generation with download - User-friendly error messages
This commit is contained in:
118
public/README.md
118
public/README.md
@@ -1,48 +1,124 @@
|
||||
# SeedPGP Web App
|
||||
|
||||
**Secure BIP39 mnemonic backup tool using PGP encryption**
|
||||
**Secure BIP39 mnemonic backup tool using OpenPGP encryption**
|
||||
|
||||
🔗 **Live App**: https://kccleoc.github.io/seedpgp-web-app/
|
||||
|
||||
## About
|
||||
|
||||
This is a client-side web application for encrypting cryptocurrency seed phrases (BIP39 mnemonics) using OpenPGP encryption and Base45 encoding for QR code generation.
|
||||
Client-side web application for encrypting cryptocurrency seed phrases (BIP39 mnemonics) using OpenPGP encryption with QR code generation and scanning capabilities.
|
||||
|
||||
### Features
|
||||
### ✨ Features
|
||||
|
||||
- 🔐 PGP encryption with cv25519 (Curve25519)
|
||||
- 📱 QR code-ready output (Base45 + CRC16)
|
||||
- ✅ Supports 12/18/24-word BIP39 mnemonics
|
||||
- 🔒 All encryption happens in your browser (client-side only)
|
||||
- 🔐 **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
|
||||
## 🔒 Security Notice
|
||||
|
||||
⚠️ **Your private keys and seed phrases never leave your browser**
|
||||
|
||||
- This is a static web app with no backend server
|
||||
- All cryptographic operations run locally in your browser
|
||||
- No data is transmitted to any server
|
||||
- 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
|
||||
- Or use a self-hosted version
|
||||
- Source code: https://github.com/kccleoc/seedpgp-web
|
||||
- 🏠 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
|
||||
## 📖 How to Use
|
||||
|
||||
1. **Encrypt**: Enter your mnemonic + PGP public key → Get QR code
|
||||
2. **Decrypt**: Scan QR code + provide private key → Recover mnemonic
|
||||
### Backup Flow
|
||||
1. **Enter** your 12/24-word BIP39 mnemonic
|
||||
2. **Add** PGP public key and/or message password (optional)
|
||||
3. **Generate** encrypted QR code
|
||||
4. **Download** or scan QR code for backup
|
||||
|
||||
## Version
|
||||
### Restore Flow
|
||||
1. **Scan QR Code** using camera or upload image
|
||||
2. **Provide** private key and/or message password
|
||||
3. **Decrypt** to recover your mnemonic
|
||||
|
||||
Current deployment: **v1.1.0**
|
||||
### 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
|
||||
|
||||
Last updated: 2026-01-28
|
||||
## 🛠 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
|
||||
|
||||
---
|
||||
|
||||
Built with TypeScript, React, Vite, and OpenPGP.js v6
|
||||
**Last updated**: 2026-01-29
|
||||
|
||||
**Built with** ❤️ using TypeScript, React, Vite, and OpenPGP.js
|
||||
|
||||
**License**: Private source code - deployment only
|
||||
|
||||
|
||||
🚀
|
||||
Reference in New Issue
Block a user