Может ли emacs использовать gpg-agent в терминале вообще?

Я понимаю, что есть проблемы с получением pinentry-curses для работы с emacs (см. Некоторые комментарии на http://emacswiki.org/emacs/EasyPG ), и поэтому использование emacs в терминале несовместимо с gpg-agent из-за этого.

В этом случае я не могу использовать графический инструмент pinentry, поскольку это связано с подключением ssh к удаленной машине.

Однако возможно ли заранее дополнить gpg-agent кодовой фразой, а затем использовать emacs, но не запрашивать парольную фразу, если агент еще не имеет этой информации?

Какие настройки позволят это работать с notmuch.el и EasyPG ?

Или существуют альтернативные методы кэширования кодовой фразы, которые бы достигли такого же эффекта, но могут иметь проблемы с безопасностью (что является причиной того, что gpg-agent существует в первую очередь)?

Альтернативой, если у вас есть довольно недавний pinentry / gpg2 (протестированный с 0.9.7 и 2.1.11 соответственно в Arch Linux), заключается в использовании http://elpa.gnu.org/packages/pinentry.html .

Установите pinentry из Mx list-packages , затем поставьте

 allow-emacs-pinentry 

в вашем .gnupg/gpg-agent.conf и поставьте

 (setenv "INSIDE_EMACS" (format "%s,comint" emacs-version)) (pinentry-start) 

в вашем .emacs.d/init.el Я должен был установить setenv там, потому что, хотя INSIDE_EMACS установлен при запуске Mx shell , он не устанавливается при простом открытии файла .gpg .

Теперь gpg-agent использует обычную версию curses из терминала, а из Emacs использует read-passwd (который скрывает символы из приглашения и из view-lossage ).


EDIT: Кажется, у пакета Debian есть исправление для удаления поддержки Emacs, поэтому на данный момент это решение работает только для других дистрибутивов / людей, готовых скомпилировать pinentry.

ЭТО! -> https://github.com/ecraven/pinentry-emacs

Вам нужно будет сделать некоторые издевательства, но использование этой вещи сработало для меня. поместите скрипт в каталог в PATH а затем добавьте следующую запись в ~/.gnupg/gpg-agent.conf :

pinentry-program <path-to-pinentry-emacs>/pinentry-emacs

Затем перезагрузите агента:

$ echo RELOADAGENT | gpg-connect-agent

Работает как сон для меня 🙂