Joseph Abbott III Software Engineer

Notes on software, projects, and education.


Project maintained by jabbott-iii Hosted on GitHub Pages — Theme by mattgraham

Cryptare v1.3.2 — Stored-Key Encryption, Signed Releases, and a Container Image

I am excited to announce Cryptare v1.3.2, the release that makes stored keys do what they were always meant to do!

Cryptare is a Go terminal tool for encrypting, decrypting, compressing, and extracting files and directories. It combines a scriptable command-line interface with an interactive terminal UI and a small local store for password-protected keys. Files are encrypted with AES-256-GCM, streamed in authenticated chunks, under a key derived from your password with Argon2id.

v1.0.0 shipped on September 14. Since then, six releases have reworked the file format, the password handling, and the release pipeline. v1.3.2 lets you encrypt with a key from the key store instead of a password, gives every key a single password, and ships each release with signed build provenance and a container image on GitHub Container Registry.

$ cryptare keys generate --password-file master.txt
Generated key: ab0430cd1abad9e0

$ cryptare keys list
KEY ID                ALGORITHM     CREATED
ab0430cd1abad9e0      AES-256-GCM   2026-10-05 10:25

$ cryptare encrypt report.pdf --key ab0430cd1abad9e0 --password-file master.txt
Encrypted: report.pdf → report.pdf.enc

$ cryptare decrypt report.pdf.enc
Enter master password for key ab0430cd1abad9e0:
Decrypted: report.pdf.enc → report.pdf

What’s new in v1.3.2

Since v1.0.0

If you last looked at Cryptare in the v1.0.0 post, here is what changed along the way:

Example uses

# Protect a document before copying it to a USB drive or cloud storage
cryptare encrypt ./tax-return.pdf

# Back up a project folder as one encrypted file, then restore it later
cryptare encrypt ./project-dir --output ./project-dir-backup.enc
cryptare decrypt ./project-dir-backup.enc --output ./restored-project-dir

# Encrypt with a stored key instead of choosing a password for each file
cryptare keys generate                       # prints "Generated key: <key-id>"
cryptare encrypt ./report.pdf --key 3f9a1c0e7b2d4a6f
cryptare keys export 3f9a1c0e7b2d4a6f --output /media/backup/3f9a1c0e7b2d4a6f.ckey

# In scripts, read the password from a file only you can read
cryptare encrypt ./secret.txt --password-file ~/.config/cryptare/pw.txt

# Package build output as a zip, and extract a large archive with a higher limit
cryptare compress ./build --format zip
cryptare decompress ./huge-dataset.tar.gz --max-size 50GiB

# Use menus instead of flags
cryptare --vim

Installation

Download the archive for your platform and checksums.txt from the v1.3.2 release:

Platform Archive
Linux (x86-64) cryptare_linux_amd64.tar.gz
Linux (ARM64) cryptare_linux_arm64.tar.gz
macOS (Apple Silicon) cryptare_darwin_arm64.tar.gz
macOS (Intel) cryptare_darwin_amd64.tar.gz
Windows (x86-64) cryptare_windows_amd64.zip

On Linux (use linux_arm64 in place of linux_amd64 on ARM64):

BASE=https://github.com/jabbott-iii/Cryptare/releases/download/v1.3.2
curl -LO "$BASE/cryptare_linux_amd64.tar.gz"
curl -LO "$BASE/checksums.txt"
sha256sum --ignore-missing -c checksums.txt
tar -xzf cryptare_linux_amd64.tar.gz
chmod +x cryptare_linux_amd64
sudo mv cryptare_linux_amd64 /usr/local/bin/cryptare
cryptare --version

On macOS, use the matching darwin archive the same way and check its hash with shasum -a 256. On Windows, extract the zip, rename cryptare_windows_amd64.exe to cryptare.exe, and add it to your PATH. There is no Windows ARM64 build.

Container image

docker pull ghcr.io/jabbott-iii/cryptare:1.3.2
docker run --rm -it -v cryptare-data:/app/data ghcr.io/jabbott-iii/cryptare:1.3.2

This opens the TUI with its key store in the cryptare-data volume. To use a folder on the host instead, run the container as your own user with --user "$(id -u):$(id -g)", as the README’s Docker section shows.

Building from source

Building needs Go 1.26 or newer and a C compiler (gcc or clang) with CGO enabled, because the SQLite driver behind the key store uses CGO. On Windows, use a MinGW-w64 toolchain and run make from Git Bash.

git clone https://github.com/jabbott-iii/Cryptare.git
cd Cryptare
git checkout v1.3.2
make build
./bin/cryptare --version

Verifying build provenance

checksums.txt shows that a download wasn’t damaged; the attestation shows where it came from. Verify an archive or the image with the GitHub CLI (after gh auth login):

gh attestation verify cryptare_linux_amd64.tar.gz --repo jabbott-iii/Cryptare \
  --signer-workflow jabbott-iii/Cryptare/.github/workflows/cd.yml \
  --source-ref refs/tags/v1.3.2

gh attestation verify oci://ghcr.io/jabbott-iii/cryptare:1.3.2 --repo jabbott-iii/Cryptare \
  --signer-workflow jabbott-iii/Cryptare/.github/workflows/cd.yml \
  --source-ref refs/tags/v1.3.2

Upgrading from v1.3.1

Everything v1.3.1 wrote still opens in v1.3.2. A few behaviours changed:

The full list, including notes for older versions, is in the README.

Security and quality

Get involved

Found a bug or have an idea for a feature? Please open an issue. Contributions are welcome. See CONTRIBUTING.md, and confirm the idea on an issue before opening a pull request.

Thank you for following along!

← Back to home