Crypt: A Password Manager
A simple command-line password manager, written in Rust + SQLite. This tool allows you to manage accounts and generate random passwords containing ASCII letters, numbers, and punctuation or XKCD-like passphrases.
Data is encrypted prior to being saved within the SQLite database using the
fernet crate. Encryption and decryption require the
use of a randomly-generated key saved as vault.key
but the key-file is saved
in plaintext, which means that an attacker that can access the key-file can also
decrypt the database. Further development may allow password-protection of the
key-file; please open an issue or pull request if you want this feature!
NOTE: This crate is not ready for use in production yet. There are many items still left to implement prior to a production-ready release - see the TODO section for more details.
Table of Contents
Installation
To install the package from Crates.io, run the following command:
Visit the Crypt page for more information.
Usage
All arguments can be passed to the app with the following template:
Arguments
Summary
Examples
Contributing
Any and all contributions are welcome. Feel free to fork the project, add features, and submit a pull request.
TODO:
- Create an account in memory (as a
struct
) - Allow random password generation
- Allow random passphrase generation
- Create an empty database or file, if not created yet
- Save new accounts to database or file
- Pretty-print all saved accounts
- Allow editing of a saved account
- Allow deletion of a saved account
- Allow purging the database
- Allow user encryption of database or file
- Allow user-created keys to automatically encrypt/decrypt the database or file
- Require password to encrypt/decrypt/hash/salt/etc. the key file.
- Create test suite
- Publish to crates.io when the package is in a minimally-usable state
- Restructure and format code according to best practices (dead code, unused imports, etc.)
Development
Setup
Local Testing
If you've made changes to the code and would like to test them, use the following commands.
Building & Publishing
If you are ready to push your changes to crates.io, use the commands below. For beginners, note that you cannot publish changes to a crate you don't own (i.e. you must be added as a contributor on crates.io).