Skip to content

Fix GPG encryption subkey warm-up#208

Merged
danielrobbins merged 5 commits into
masterfrom
feature/gpg-encryption-subkey-warming
Jun 11, 2026
Merged

Fix GPG encryption subkey warm-up#208
danielrobbins merged 5 commits into
masterfrom
feature/gpg-encryption-subkey-warming

Conversation

@danielrobbins

Copy link
Copy Markdown
Owner

Summary

Keychain 3 now gives encryption/decryption GPG subkeys an explicit warm-up path instead of routing gpge: through a signing-style GPG probe.

The new gpge: path creates a tiny temporary ciphertext for the requested key and decrypts it through gpg-agent, which exercises the secret encryption subkey used by pass and other decrypt-oriented workflows. gpga: now warms both signing and encryption/decryption capability.

This also documents the GPG subkey prefix behavior in the embedded manual and adds an authoritative Linux-only e2e test using an isolated GNUPGHOME and fake pinentry.

Fixes #62.
Fixes #204.

Validation

  • PYTHONPATH=src python -m pytest tests/test_gpg_e2e.py tests/test_help.py tests/test_cli_help.py tests/test_build_doc_texts.py -q
  • Earlier full branch sweep before the README cleanup:
    • PYTHONPATH=src python -m pytest tests -q
    • python -m ruff check src tests
    • python -m mypy
    • python -m bandit -q -c pyproject.toml -r src
  • git diff --check

@danielrobbins danielrobbins force-pushed the feature/gpg-encryption-subkey-warming branch 2 times, most recently from 329e68d to 3a4e051 Compare June 10, 2026 21:11
Keychain 3 now gives encryption/decryption subkeys an explicit warm-up path instead of routing gpge: through a signing-style GPG probe. The new path creates a tiny temporary ciphertext for the requested key and decrypts it through gpg-agent, which exercises the secret encryption subkey used by pass and other decrypt-oriented workflows.

Also update gpga: to warm both signing and encryption/decryption capability, document the GPG subkey prefixes in the embedded manual, and add a Linux-only e2e test with an isolated GNUPGHOME and fake pinentry.

Fixes #62.
Fixes #204.
@danielrobbins danielrobbins force-pushed the feature/gpg-encryption-subkey-warming branch from 3a4e051 to 51565ed Compare June 10, 2026 21:16
@danielrobbins danielrobbins marked this pull request as ready for review June 11, 2026 00:06
@danielrobbins danielrobbins merged commit e1b0730 into master Jun 11, 2026
12 checks passed
@danielrobbins danielrobbins deleted the feature/gpg-encryption-subkey-warming branch June 11, 2026 00:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant