Skip to content

feat: fetch GPG passphrases from Bitwarden vault#182

Merged
anfimovdm merged 1 commit into
masterfrom
feat/bitwarden-passphrases
Jul 7, 2026
Merged

feat: fetch GPG passphrases from Bitwarden vault#182
anfimovdm merged 1 commit into
masterfrom
feat/bitwarden-passphrases

Conversation

@anfimovdm

@anfimovdm anfimovdm commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Add optional Bitwarden integration so the sign node can pull each PGP key passphrase from a vault at startup instead of prompting interactively or using dev_pgp_key_password.

  • New sign_node/utils/bitwarden.py: fetch_passphrases() maps each keyid to a vault item by name and returns the passphrases; fails fast when a keyid is missing. Imports BWCLIWrapper from bsbw.wrapper (the package root does not re-export it).
  • SignNodeConfig gains bitwarden_enabled and bitwarden_username / password / password_file / collection_id (defaults + schema).
  • PGPPasswordDB accepts preloaded_passwords; ask_for_passwords() uses them with precedence over the development password and interactive prompts, and still verifies each passphrase unlocks the key.
  • almalinux_sign_node.py fetches from Bitwarden in main() when enabled.
  • Install bitwarden-wrapper from the AlmaLinux git repo (not on PyPI).
  • Tests for the fetcher and the preloaded-password path; document the new config keys in README and node-config/sign_node.yml.

Resolves: AlmaLinux/build-system#280

Add optional Bitwarden integration so the sign node can pull each PGP
key passphrase from a vault at startup instead of prompting interactively
or using dev_pgp_key_password.

- New sign_node/utils/bitwarden.py: fetch_passphrases() maps each keyid
  to a vault item by name and returns the passphrases; fails fast when a
  keyid is missing. Imports BWCLIWrapper from bsbw.wrapper (the package
  root does not re-export it).
- SignNodeConfig gains bitwarden_enabled and bitwarden_username /
  password / password_file / collection_id (defaults + schema).
- PGPPasswordDB accepts preloaded_passwords; ask_for_passwords() uses
  them with precedence over the development password and interactive
  prompts, and still verifies each passphrase unlocks the key.
- almalinux_sign_node.py fetches from Bitwarden in main() when enabled.
- Install bitwarden-wrapper from the AlmaLinux git repo (not on PyPI).
- Tests for the fetcher and the preloaded-password path; document the
  new config keys in README and node-config/sign_node.yml.
@anfimovdm anfimovdm merged commit 67593fe into master Jul 7, 2026
2 of 4 checks passed
@anfimovdm anfimovdm deleted the feat/bitwarden-passphrases branch July 7, 2026 10:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bitwarden (and other vaults) integration in sign service

2 participants