Невозможно расшифровать файл .gpg с помощью emacs, но командная строка gpg работает

12

У меня есть accounts.org.gpgфайл. Я могу открыть его с помощью gpg напрямую:

$ gpg -d ./accounts.org.gpg 

You need a passphrase to unlock the secret key for
user: "Omair Majid <removed@removed>"
4096-bit RSA key, ID 7CC8AAC6, created 2012-01-18 (main key ID 66484681)

gpg: encrypted with 4096-bit RSA key, ID 7CC8AAC6, created 2012-01-18
    "Omair Majid <removed@removed>"
+TITLE: Accounts
<rest of output removed>

Но я не могу открыть тот же файл с помощью Emacs. Попытка открыть его в emacs выдает ошибку:

epa-file--find-file-not-found-function: Opening input file: Decryption failed, No secret key: E295ECEC7CC8AAC6

Что-то мне нужно настроить на стороне emacs, чтобы это работало?

Для некоторого дополнительного фона я создал этот файл на другом компьютере (используя ту же версию Emacs), на котором Emacs мог читать / записывать в этот файл просто отлично. Затем я скопировал содержимое ~/.gnupg этой машины. И теперь gpg все еще может это прочитать, а Emacs - нет.

РЕДАКТИРОВАТЬ: Может ли это быть разница между gpg1 и gpg2?

$ gpg2 --decrypt accounts.org.gpg 
gpg: encrypted with RSA key, ID E295ECEC7CC8AAC6
gpg: decryption failed: No secret key

Как Emacs на другом компьютере (используя ту же конфигурацию, ту же версию Emacs (25.1) и ту же ОС (Fedora 24 x86_64, та же версия пакетов gpg и gpg2)) читал с нее и записывал на нее. Во всяком случае, используя,

(setq epg-gpg-program "/usr/bin/gpg")

По-прежнему приводит к той же ошибке.

Омаир Маджид
источник
Ты пробовал (setq epg-gpg-program "gpg2")?
Caisah
Я сделал. Это тоже по умолчанию. И это не работает. Как и программа командной строки gpg2. Я начинаю думать, что это проблема самого gpg2, а не emacs.
Омаир Маджид
3
@caisah Смотрите ошибку # 24229 , setqне работает epg-gpg-program, вы должны настроить ее.
npostavs

Ответы:

15

Вы не говорите, какая ОС или версия emacs у вас есть.

Вчера я решил точно такую ​​же проблему в OSX и emacs 25.1, используя информацию по этой ссылке: http://colinxy.github.io/software-installation/2016/09/24/emacs25-easypg-issue.html

Я выполнил эти команды:

brew unlink gnupg2 gpg-agent dirmngr
brew uninstall gnupg2 gpg-agent dirmngr
brew install gnupg21
ln -s /usr/local/bin/gpg2 /usr/local/bin/gpg

и установите режим pinentry в моем файле emacs conf:

(setf epa-pinentry-mode 'loopback)
Хейкки
источник
Пожалуйста, смотрите мои правки для версий ОС и Emacs. Я определенно не планирую переопределять системные версии gpg / gpg2.
Омаир Маджид
Стандартный пакет brew gnupg уже некоторое время является версией 2.1. Старые версии 1.4 и 2.0, которые не полностью совместимы с ним, доступны в виде отдельных пакетов.
Хейкки
Просто информация: у меня была похожая проблема в Linux, и это решение также исправило мою проблему.
Маноэль Вилела
2
Спасибо за указание на (setf epa-pinentry-mode 'loopback)трюк.
PHS
1
Добавление (setf epa-pinentry-mode 'loopback)строки в .emacs было достаточно для моего Gnu Emacs 26.2 с gpg 2.2.16 от homebrew.
Дэйв Икс