# Lockbox
Lockbox is a command-line tool for generating and managing passwords. It uses strong encryption algorithms to securely store your passwords, so you can be sure that your data is safe.
[![codecov](https://codecov.io/gh/SonuBardai/lockbox/branch/main/graph/badge.svg?token=XV39653NA5)](https://codecov.io/gh/SonuBardai/lockbox)
Join the Rust Lockbox discord community! Here's the [Invite](https://discord.gg/9f5MFhqY)
### Project Features
- **Secure**: Lockbox uses the cutting-edge AES-GCM (Advanced Encryption Standard with Galoise Counter Mode) encryption algorithm to ensure that your passwords are always safe and secure. You can rest easy knowing that your data is protected by the best.
- **One Master Key**: With Lockbox, you only need to remember one master password. The advanced PBKDF2 (Password-Based Key Derivation Function 2) key derivation function takes care of the rest, allowing you to access all your passwords with ease.
- **Command-Line Power**: Lockbox comes with a fully functional command-line interface (CLI) and a Read-Eval-Print Loop (REPL), giving you complete control over your password management through the terminal.
- **Tested and Verified**: Lockbox’s codebase is thoroughly tested and verified, with code coverage reports available for all to see. You can trust that Lockbox is reliable and dependable.
### Install
```rust
cargo install lock_box
```
### Usage
- To use Lockbox, first make sure you have [Rust installed](https://www.rust-lang.org/tools/install) on your system.
- Then, clone this repository with `git clone git@github.com:SonuBardai/lockbox.git`.
- You can run it using `cargo run`. Here’s an overview of the available commands:
```rust
Usage: lockbox
Commands:
add Add a new password to the password manager
generate Generate a random password.
list List all passwords in the password manager
remove Remove a password from the password manager
show Show a specific password in the password manager
update-master Update the master password
repl Start an interactive REPL session
help Print this message or the help of the given subcommand(s)
```
- You can directly trigger the lockbox REPL by simply running `lockbox`
```rust
$ lockbox
Welcome to L🦀CKBOX!
Please enter the master password
>>
Enter [1] add password [2] generate random password [3] list passwords [4] remove password [5] show password [6] update master password [7] exit
>> add
[1] generate random password [2] enter your own password [3] cancel
>> 1
Please enter the service name
>> github
Please enter the username (Optional)
>> MyAwesomeGithubProfile
Random password generated and copied to clipboard
Password added successfully
Enter [1] add password [2] generate random password [3] list passwords [4] remove password [5] show password [6] update master password [7] exit
>> show
Please enter the service name
>> github
Please enter the username (Optional)
>> MyAwesomeGithubProfile
Password: RkZpFSRPHlFHpK7y
Enter [1] add password [2] generate random password [3] list passwords [4] remove password [5] show password [6] update master password [7] exit
>> exit
```
### How it works
[Store](./src/store/README.md)
### Contributing
Contributions are welcome! If you’d like to contribute, please feel free to open an issue or submit a pull request. Checkout our [CONTRIBUTING](CONTRIBUTING.md) file for details on how to contribute.
### License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
### Changelog
You can find the changelog for all lockbox versions [here](CHANGELOG.md).