PINENTRY-KWALLET(1)

πŸ’– pinentry-kwallet β€” the kwallet-based pass-phrase dialog bestie πŸ’–

okay so real talk: this is pinentry-kwallet, section 1 of the General Commands Manual, and she is exactly what her name says she is β€” a kwallet-based pass-phrase dialog for use with GnuPG. no cap. she's not like other pinentry variants, she's got ✨range✨.


✨ NAME ✨

pinentry-kwallet β€” a kwallet-based pass-phrase dialog for use with GnuPG 🫢


πŸŽ€ SYNOPSIS πŸŽ€

pinentry-kwallet [-q] [options]

🌸 DESCRIPTION 🌸

so pinentry-kwallet is a kwallet- and pinentry-based pass-phrase dialog for use with GnuPG. and like… she's meant to be called from the gpg-agent(1) daemon, okay? do not just rock up and invoke her directly, she's got a whole ecosystem, she's booked and busy. main character energy, but in a daemon-dependent way.

here's the vibe: pinentry-kwallet replaces the regular pinentry-program stanza set in ~/.gnupg/gpg-agent.conf, and when a passphrase gets requested she looks it up in the KWallet first. only if it's not found does she fall back to pinentry. so thoughtful. so efficient. πŸ’…

and then β€” because she's generous β€” the user is given the option to store it in the KWallet afterwards. and bestie, the negative answers are also stored in the KWallet, specifically to avoid asking each and every time. she remembers your "no". she respects your "no". she will not make you say it twice. periodt.

now, pinentry-kwallet (like all her other pinentry variant sisters) talks a simplified subset of the regular Assuan protocol on stdio. every command β€” even the unknown ones β€” gets passed through to a pinentry co-process during run-time, even if that co-process is literally never used. she accepts the same options as pinentry, even unknown ones, because she is designed to plug in. she is compatible. she is chill.

as an exception tho, two flags are hers specifically:

  • -q makes pinentry-kwallet more quiet (suppress warnings on stderr) 🀫
  • -V displays the version on stderr (unless -q) πŸ“’

and now the part where she's genuinely doing the most, intellectually: pinentry-kwallet attempts sophisticated error handling. the way that works: if an error dialogue is displayed, an internal counter is increased. if that counter reaches 2, the value stored in the KWallet gets ignored, and the user is asked anew. iconic, honestly.

the counter is stored in the KWallet, which is… suboptimal but necessary, because gpg2(1) does not re-use the Assuan sessions β€” instead it spawns a whole new pinentry-kwallet every single time a passphrase is required (rather stupid). yeah. she said it. 😭

also: error counters are valid for 15 seconds since their last increasement. tick tock, bestie. ⏳


πŸ”₯ RETURN VALUES πŸ”₯

  • pinentry-kwallet exits 1 if it is called recursively
  • exits 0 if help or version information are requested
  • and honestly return codes do not matter in any other cases, because errors are signalled in-band
  • she will exit 0 after the Assuan session is terminated ✨

🌈 ENVIRONMENT 🌈

  • DISPLAY β€” the X11 display to use for child processes. if it's not set, pinentry-kwallet will immediately replace itself with the slave PINENTRY program to use. like, full swap. no hesitation.
  • GPG_TERM β€” terminal type of the current tty πŸ–₯️
  • GPG_TTY β€” the current terminal
  • PINENTRY β€” the pinentry program to use. Default: β€œpinentry”

πŸ‘‘ SEE ALSO πŸ‘‘

date(1), gpg-agent(1), gpg2(1), kwalletcli(1), kwalletcli_getpin(1), mksh(1), pinentry-curses(1), pinentry-gtk-2(1), pinentry-qt(1), pinentry-x11(1) β€” go read the whole squad, iykyk πŸ’œ


🧚 AUTHORS 🧚

pinentry-kwallet was written by mirabilos <m@mirbsd.org> mostly for tarent solutions GmbH. give credit where credit is due, bestie 🫢


πŸ’€ CAVEATS πŸ’€

some newer pinentry features, such as three-button operation, are not supported yet. πŸ™ˆ
some commands, such as version inquiry, are passed through to the pinentry coprocess indiscriminately, which may lead to strange results, should the protocol change or extend. ⚠️

and that's the whole page, babes ✨ this one shipped as part of Debian, dated November 19, 2020 β€” love her, respect her, and please don't invoke her directly, she's got a daemon to answer to πŸ’–πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from