password manager using age for encryption

 page
======
password manager using age (https://age-encryption.org/) for encryption.

encrypted secrets are files in the $PAGE_SECRETS/ directory that are encrypted
using the $PAGE_RECIPIENTS age public key.

when opening/editing an encrypted secret the file is decrypted usingj
$PAGE_PRIVKEY to a temporary file which is then opened in $EDITOR. after
closing the temporary file the secret in $PAGE_SECRETS/ is replaced with the
updated encrypted secret.

since secrets are just plaintext files you can store whatever you want in them:
passwords, notes, etc.
when using the 'open' subcommand an entry's content is copied to the clipboard
excluding any lines that start with a '#'.

 building 
----------
to build run make:

$ make
$ make install

to install do a different prefix:

$ make PREFIX=$SOME_PREFIX install

 usage 
-------
usage: page <command> [args]
where <command> can be any of:
* help  show help message
* ls    list password entries
* open  copy a password entry to the clipboard
* edit  create/edit an entry using $EDITOR
* rm    remove password entry

see 'page <command> -h' to read the help message for a specific subcommand.

 environment
-------------
page's functionality can be configured via environment variables. the following
table lists environment variables and their defaults.

 env              | default                          
------------------|----------------------------------
 $PAGE_PRIVKEY    | $XDG_CONFIG_HOME/page/privkey    
 $PAGE_RECIPIENTS | $XDG_CONFIG_HOME/page/recipients 
 $PAGE_SECRETS    | $XDG_DATA_HOME/page/secrets/     

$PAGE_PRIVKEY holds a path to an age(1) private key.
$PAGE_RECIPIENTS contains the path to the associated age(1) public key.
$PAGE_SECRETS should point to a directory containing encrypted entries.

 key setup
-----------
in order to start using page you must first generate an age keypair. install
age and use the age-keygen command:

$ age-keygen -o $PAGE_PRIVKEY
Public key: age1[...]

copy the public key into the $PAGE_RECIPIENTS file.
it is also recommended to lock down the permissions of these files:

$ chmod 0600 $PAGE_PRIVKEY
$ chmod 0644 $PAGE_RECIPIENTS

 scripting
-----------
the contrib/ directory contains some scripts for working with page. feel free
to open a PR if you have a script using page that you'd like to share.

 inspiration
-------------
this project is inspired by:
* https://github.com/somasis/passage
* https://github.com/dylanaraps/pash
* https://github.com/e-zk/cpass (predecessor)

Similar Resources

A convenience library for generating, comparing and inspecting password hashes using the scrypt KDF in Go 🔑

simple-scrypt simple-scrypt provides a convenience wrapper around Go's existing scrypt package that makes it easier to securely derive strong keys ("h

Dec 22, 2022

Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.

Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.

pinentry-touchid Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain. Macbook Pro devic

Jan 1, 2023

A tool for secrets management, encryption as a service, and privileged access management

A tool for secrets management, encryption as a service, and privileged access management

Vault Please note: We take Vault's security and our users' trust very seriously. If you believe you have found a security issue in Vault, please respo

Jan 2, 2023

A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.

age age is a simple, modern and secure file encryption tool, format, and library. It features small explicit keys, no config options, and UNIX-style c

Dec 28, 2022

XXTEA is a fast and secure encryption algorithm.

XXTEA Golang Introduction xxtea is a fast and secure encryption algorithm. This project is the Golang implementation of the xxtea encryption algorithm

Aug 3, 2022

A light package for generating and comparing password hashing with argon2 in Go

argon2-hashing argon2-hashing provides a light wrapper around Go's argon2 package. Argon2 was the winner of the Password Hashing Competition that make

Sep 27, 2022

Argon2 password hashing package for go with constant time hash comparison

argon2pw Argon2 password hashing package with constant time hash comparison Preface: Argon2 was selected as the winner of the Password Hashing Competi

Sep 27, 2022

Password generator written in Go

go-generate-password Password generator written in Go. Use as a library or as a CLI. Usage CLI go-generate-password can be used on the cli, just insta

Dec 19, 2022

Validate the Strength of a Password in Go

Validate the Strength of a Password in Go

go-password-validator Simple password validator using raw entropy values. Hit the project with a star if you find it useful ⭐ Supported by Qvault This

Jan 6, 2023
Comments
  • Does not report if key files are missing

    Does not report if key files are missing

    If the recipient or identity files are missing, page edit just segmentation faults.

    To fix this we need to explicitly check the existence of the recipient and identity files.

Dec 28, 2022
Not Yet Another Password Manager written in Go using libsodium

secrets Secure and simple passwords manager written in Go. It aims to be NYAPM (Not Yet Another Password Manager), but tries to be different from othe

May 30, 2022
Encrypt embedded go files using age.

encembed Encrypt embedded resource in compiled binary using age. Meant for usage with go generate. This tool will generate a go source file that embed

Nov 20, 2022
A Go Module to interact with Passbolt, a Open source Password Manager for Teams

go-passbolt A Go Module to interact with Passbolt, a Open source Password Manager for Teams This Module tries to Support the Latest Passbolt Community

Oct 29, 2022
Password manager written in golang
Password manager written in golang

Go password manager Password manager written in golang. Dependencies: gpg golang

Dec 2, 2021
Simple password manager app in GO

Introduction This is my first project in Go, a password manager application. A humble attempt at execution of an idea I've had for some time now. The

Sep 13, 2022
Convert SSH Ed25519 keys to age keys. This is useful for usage in sops-nix and sops

ssh-to-age Convert SSH Ed25519 keys to age keys. This is useful for usage in sops-nix and sops Usage Exports the private key: $ ssh-to-age -private-ke

Dec 21, 2022
Search for vulnerabilities and exposures while filtering based on age, keywords, and other parameters.
Search for vulnerabilities and exposures while filtering based on age, keywords, and other parameters.

FAV/E FAV/E (Find A Vulnerability/Exposure) utilizes the NIST CVE database search API to search for vulnerabilities and exposures while filtering base

Dec 31, 2022
An easy-to-use XChaCha20-encryption wrapper for io.ReadWriteCloser (even lossy UDP) using ECDH key exchange algorithm, ED25519 signatures and Blake3+Poly1305 checksums/message-authentication for Go (golang). Also a multiplexer.

Quick start Prepare keys (on both sides): [ -f ~/.ssh/id_ed25519 ] && [ -f ~/.ssh/id_ed25519.pub ] || ssh-keygen -t ed25519 scp ~/.ssh/id_ed25519.pub

Dec 30, 2022