A password manager written in memory-safe Rust.
Forgot My Password (FMP) is a password manager that safely allows you to generate, store, and manage your passwords in encrypted vaults. It uses GPG to protect your sensitive data.
- GUI: Intuitive and fast GUI
- Create Vaults: Create encrypted vaults to store your passwords.
- Modify Accounts: Add, delete, and rename accounts within a vault.
- Passwords: Generate strong passwords and estimate their entropy.
- Backups: Backup and restore vaults securely.
- Modify Account Info: Update account usernames and passwords.
- Cross-platform compatibility: FMP is available on Unix and Windows
- Encryption With GPG: All data is encrypted using GPG. Only users with the correct GPG key can decrypt the vault contents.
- No Plaintext Passwords on Disk: All sensitive information is encrypted before being saved.
- Sensitive Variables Cannot Be Written to Disk: Sensitive variables are not written to disk in any form except encrypted.
- Sensitive Variables Are Obfuscated in Memory: The program uses secure memory handling (Rust’s secrecy crate, memory locking) to prevent secrets from being easily read from RAM.
- Sensitive Variables Are Cleared from Memory: The program zeroizes (overwrites) memory holding secrets when they are no longer needed.
- Memory Locking: System calls (like mlock) prevent sensitive memory from being swapped to disk.
- File Permitions: Strict file permissions are placed on sensitive files.
- Recipient Verification: Encryption is tied to a specific GPG recipient.
- Cross-Platform Secure Handling: Secure memory and file handling are implemented for both Unix and Windows.
- Prerequisites: Before installing FMP, make sure the following are installed on your system:
See INSTALLATION.md for OS specific installations.
-
Clone the Repository:
git clone https://codeberg.org/lwilko/fmp.git cd fmp -
Build and Install FMP:
cargo build --release cargo install --path .
Run all tests:
cargo testRun specific tests:
cargo test --test vault_tests
cargo test --test crypto_testsNote: Update the file in src/tests/recipient.txt to match a valid recipient in your GPG keyring.
Problem: fmp command not found after installation.
Solution: Make sure ~/.cargo/bin is added to your PATH:
export PATH=$PATH:~/.cargo/bin/Problem: GPG key not found in your keyring.
Solution: Make sure the recipient email matches a key in your GPG keyring. Use:
gpg --list-keysContributions are welcome! Please follow these steps to contribute:
- Fork this repository.
- Create a new branch for your feature or bug-fix.
- Submit a pull request with a detailed description of your changes.
This project is licensed under the GPLv3 License. See the LICENSE file for details.