# passage
password manager with [age encryption](https://age-encryption.org/)
[](https://github.com/stchris/passage/actions)
[](https://crates.io/crates/passage)
## Use with care
This project is in development, not ready for serious use. Things might break. That being said, please use it and report any issues.
## Installation
### Binaries and packages (preferred)
The [release page](https://github.com/stchris/passage/releases) includes binaries for Linux, mac OS and Windows as well as `deb` files for Debian / Ubuntu.
### Build from source (for development)
With a rust toolchain present, you could do this (which makes sense if you want to contribute):
```bash
$ git clone https://github.com/stchris/passage.git
# Dependencies for Debian / Ubuntu
$ apt install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev
$ cargo install --path .
```
## Walkthrough
`passage` creates an age-encrypted storage file, whose current default location depends on the OS family, for a given username `user`:
Linux: `/home/user/.local/share/passage/entries.toml.age`
mac OS: `/Users/user/Library/Application Support/entries.toml.age`
Windows: `C:\Users\user\AppData\Roaming\passage\data\entries.toml.age`
You can create this file by running `passage init` once. Check the path to the storage folder at any time with `passage info`:
```
$ passage info
Storage folder: /home/chris/.local/share/passage/entries.toml.age
```
Now let's create a new entry with `$ passage new`:
```
Passphrase:
New Entry: email
Password for email:
```
So here we are prompted for three things:
* `Passphrase` is the secret we want to encrypt the password with
* `New Entry` is the name of the entry we want to create
* `Password for <entry>` is the password we want to store
Now `passage list` should show one entry (`email`) and we can decrypt this with either:
```
$ passage show email # the password gets copied to the clipboard
```
or
```
$ passage show --on-screen email # the password is printed to the console
```
## Usage
```bash
$ passage
passage 0.3.0
Password manager with age encryption
USAGE:
passage <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
help Prints this message or the help of the given subcommand(s)
info Display status information
init Initialize the password store
list List all known entries
new Add a new entry
show Decrypt and show an entry
```