From a77fce943cdaf9784276035eb28c3fe67d69eed3 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 22 May 2023 15:33:01 -0500 Subject: initial commit --- README.md | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..e0fd588 --- /dev/null +++ b/README.md @@ -0,0 +1,159 @@ +# rpass + +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](https://docs.rs/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](#todo) section for more details. + +--- + +## Table of Contents + +- [Usage](#usage) + - [Arguments](#arguments) + - [Examples](#examples) +- [Contributing](#contributing) + - [TODO](#todo) + - [Development](#development) + +## Usage + +[(Back to top)](#table-of-contents) + +All arguments can be passed to the app with the following template: + +```bash +rpass ARGUMENT [VALUES] +``` + +### Arguments + +#### Summary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Argument (Short)Argument (Long)Explanation
-h--helpPrint the welcome message
-n--newCreate a new account
-l--listList all saved accounts
-e--edit [UUID] [FIELD_NAME]Edit a saved account
-d--delete [UUID]Delete a saved account
-p--purgePurge all accounts and delete the vault
+ +## Contributing + +[(Back to top)](#table-of-contents) + +Any and all contributions are welcome. Feel free to fork the project, add +features, and submit a pull request. + +### TODO: + +- [x] Create an account in memory (as a `struct`) +- [x] Allow random password generation +- [x] Allow random passphrase generation +- [x] Create an empty database or file, if not created yet +- [x] Save new accounts to database or file +- [x] Pretty-print all saved accounts +- [ ] Allow editing of a saved account +- [ ] Allow deletion of a saved account +- [ ] Allow purging the database +- [x] Allow user encryption of database or file +- [x] 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 + +```bash +git clone REPO_URL +``` + +```bash +cd REPO +``` + +#### Local Testing + +If you've made changes to the code and would like to test them, use the +following commands. + +```bash +cargo build --release +``` + +```bash +./target/release/REPO --help +``` + +#### 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). + +```bash +cargo build --release +``` + +```bash +cargo login [API_TOKEN] +``` + +```bash +cargo publish --dry-run +``` + +```bash +cargo publish +``` -- cgit v1.2.3-70-g09d2