Add README
This commit is contained in:
parent
f50226f88f
commit
a4dfb88a5d
68
README.md
Normal file
68
README.md
Normal file
@ -0,0 +1,68 @@
|
||||
# Password Zebra
|
||||
|
||||
An open-source Android password manager with two core features: a syllable-based random password generator and a deterministic password vault. No passwords are stored — they are derived on demand.
|
||||
|
||||
**Minimum Android version:** 10 (API 29)
|
||||
|
||||
<!-- Screenshots -->
|
||||
|
||||
## Features
|
||||
|
||||
### Random Password Generator
|
||||
Generates memorable, pronounceable passwords from a syllable corpus. Options:
|
||||
- Word count (1–10)
|
||||
- Remove spaces
|
||||
- Add special characters (uppercase letter, digit, special symbol inserted at random positions)
|
||||
|
||||
### Deterministic Password Vault
|
||||
Derives passwords reproducibly from three inputs:
|
||||
- **Master password** — known only to you, never stored
|
||||
- **Device secret** — random key generated once and stored in Android Keystore via EncryptedSharedPreferences
|
||||
- **Service name + counter** — identifies the account and allows rotation
|
||||
|
||||
The derivation uses **Argon2id** (memory: 64 MB, iterations: 3) so the same inputs always produce the same password, on any device that has the same device secret.
|
||||
|
||||
**Service history** is saved locally so you can quickly regenerate passwords for known services.
|
||||
|
||||
### Export / Import
|
||||
Transfer your device secret and service history to another device using an encrypted QR code, secured with Android device credentials (PIN/pattern/password).
|
||||
|
||||
## Security
|
||||
- Screen content is protected with `FLAG_SECURE` (no screenshots, no recent apps preview)
|
||||
- Master password is held as `CharArray` and wiped from memory immediately after derivation
|
||||
- Device secret lives exclusively in Android Keystore-backed EncryptedSharedPreferences
|
||||
- No network permissions; no data leaves the device
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
# Debug APK
|
||||
./gradlew assembleDebug
|
||||
|
||||
# Install on connected device
|
||||
./gradlew installDebug
|
||||
|
||||
# Unit tests
|
||||
./gradlew test
|
||||
|
||||
# Lint
|
||||
./gradlew lint
|
||||
```
|
||||
|
||||
Release signing requires a `keystore.properties` file at the project root:
|
||||
```
|
||||
storeFile=<path to .jks>
|
||||
storePassword=<password>
|
||||
keyAlias=<alias>
|
||||
keyPassword=<password>
|
||||
```
|
||||
|
||||
## Tech Stack
|
||||
- Kotlin + Jetpack Compose + Navigation Compose
|
||||
- Material 3 with dynamic color (Android 12+)
|
||||
- Argon2id via Bouncy Castle (`bcprov-jdk15on`)
|
||||
- EncryptedSharedPreferences (`security-crypto`)
|
||||
- QR export/import via ZXing
|
||||
|
||||
## License
|
||||
GNU General Public License v3.0 — see [LICENSE](LICENSE).
|
||||
Loading…
x
Reference in New Issue
Block a user