passage 0.3.0

A password manager with age encryption
# passage

password manager with [age encryption](https://age-encryption.org/)

[![Build status](https://github.com/stchris/passage/workflows/Tests%20&%20Clippy/badge.svg)](https://github.com/stchris/passage/actions)
[![Crates.io](https://img.shields.io/crates/v/passage.svg)](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
```