#password-manager #password #passage #age #team

app pasejo

passage re-implementation in Rust for teams

1 stable release

Uses new Rust 2024

new 1.0.0 May 16, 2025

#654 in Command line utilities

0BSD license

81KB
2K SLoC

pasejo

pasejo (esperanto for passage) is a re-implementation of passage. It uses age keys for encryption and decryption, stores all your passwords locally, and offers a simple command line interface.

It saves all your secrets in one single encrypted file, and has built-in support to synchronize with a remote repository using Git, Mercurial, or Pijul.

NOTE: pasejo relies on the age crate which itself is in beta and not intended for production use. Therefore, this project is not intended for production use either. Use at your own risk.

Installation

You can install pasejo using cargo:

$ cargo install pasejo

Alternatively, you can download the latest version from the release page and extract the archive. The binary is named pasejo and can be run directly from the extracted folder.

Concepts

Store

A store is an encrypted file that contains the secrets and recipients. You can create multiple stores to organize your secrets. Each store is encrypted with the keys of the registered recipients. You can decrypt stores with a matching identity file.

Identity

An identity is a private key used to decrypt stores. You can add multiple identities for different stores. Identities can be used for multiple stores as well as registered globally for all stores.

Recipient

A recipient is a public key used to encrypt stores. You can add multiple recipients for different stores.

Secret

A secret is an arbitrary text stored in a store. You can add, remove, and list secrets in a store. Secrets are encrypted with the keys of the registered recipients. You can decrypt secrets with a matching identity file.

Usage

Add a new store to your configuration first:

$ pasejo stores add --path path/to/store --name some-name

Add an age identity file to your store:

$ pasejo identity add --file path/to/age/private/key

Add an age recipient file to your store:

$ pasejo recipient add --file path/to/age/public/key

Add a new secret to your store:

$ pasejo secret add some-secret

Show a secret in your store:

$ pasejo secret show some-secret

See pasejo help for more details.

How-to guides

Create age identity files

You can create age identity files using the age-keygen command line tool. For example, to create a new identity file, run:

$ age-keygen --output path/to/age/private/key

This will create a new identity file at the specified path. You can then use this file to decrypt stores.

Create age recipient files

You can create age recipient files using the age-keygen command line tool. For example, to create a new recipient file, run:

$ age-keygen -y > path/to/age/public/key < path/to/age/private/key 

This will create a new recipient file at the specified path. You can then use this file to encrypt stores.

Use SSH keys

The age crate supports SSH keys as well. You can re-use existing SSH keys as identity and recipient files. For example, to add an SSH key as an identity file, run:

$ pasejo identity add --file ~/.ssh/id_rsa --store some-name

To add an SSH key as a recipient file, run:

$ pasejo recipient add --file ~/.ssh/id_rsa.pub --store some-name

Alternatives

In case you are looking for something different, try these:

Dependencies

~37–72MB
~1M SLoC