Неможливо розшифрувати .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 не може.

EDIT: Чи може це бути різницею gpg1 vs 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, ви повинні налаштувати її.
nпостаs

Відповіді:


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

і встановіть режим пиляцтва в моєму файлі conf emacs:

(setf epa-pinentry-mode 'loopback)

Перегляньте мої зміни для версій ОС та Emacs. Я точно не планую переосмислювати системні версії gpg / gpg2.
Омаїр Маджід

Стандартний пакувальний пакет 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 від домашньої мови.
Дейв X
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.