Nie można odszyfrować pliku .gpg za pomocą emacsa, ale gpg z wiersza poleceń działa

12

Mam accounts.org.gpgplik Mogę otworzyć bezpośrednio za pomocą 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>

Ale nie mogę otworzyć tego samego pliku za pomocą Emacsa. Próba otwarcia go w emacsie powoduje błąd:

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

Czy jest coś, co muszę skonfigurować po stronie emacsa, aby to działało?

Dla dodatkowego tła stworzyłem ten plik na innym komputerze (używając tej samej wersji Emacsa), na którym Emacs mógł dobrze czytać / zapisywać do tego pliku. Następnie skopiowałem zawartość ~/.gnupg over na to urządzenie. A teraz gpg nadal może to czytać, ale Emacs nie.

EDYCJA: Czy może to być różnica między gpg1 a gpg2?

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

W jaki sposób Emacs na drugim komputerze (przy użyciu tej samej konfiguracji, tej samej wersji Emacsa (25.1) i tego samego systemu operacyjnego (Fedora 24 x86_64, ta sama wersja pakietów gpg i gpg2)) odczytano z niego i napisano na nim. W każdym razie używając

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

Nadal powoduje ten sam błąd.

Omair Majid
źródło
Próbowałeś (setq epg-gpg-program "gpg2")?
caisah
Zrobiłem. To też jest domyślne. I to nie działa. Tak jak nie robi to program wiersza poleceń gpg2. Zaczynam myśleć, że jest to problem z samym gpg2, a nie z emacsem.
Omair Majid
3
@caisah See Bug # 24229 , setqnie działa epg-gpg-program, musisz go dostosować.
npostavs

Odpowiedzi:

15

Nie mówisz, jaki system operacyjny ani wersję emacsa posiadasz.

Wczoraj rozwiązałem dokładnie ten sam problem w OSX i emacsie 25.1, używając informacji z tego linku: http://colinxy.github.io/software-installation/2016/09/24/emacs25-easypg-issue.html

Uruchomiłem następujące polecenia:

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

i ustaw tryb pinentry w moim pliku conf emacs:

(setf epa-pinentry-mode 'loopback)
Heikki
źródło
Proszę zobaczyć moje zmiany dla wersji systemu operacyjnego i Emacsa. Zdecydowanie nie planuję przesłonić systemowych wersji gpg / gpg2.
Omair Majid
Standardowy pakiet parzenia gnupg już od jakiegoś czasu ma wersję 2.1. Starsze wersje 1.4 i 2.0, które nie są w pełni z nim zgodne, są dostępne jako osobne pakiety.
Heikki,
Tylko informacja: miałem podobny problem w Linuksie i to rozwiązanie również rozwiązało mój problem.
Manoel Vilela
2
Dzięki za wskazanie (setf epa-pinentry-mode 'loopback)triku.
phs
1
Dodanie (setf epa-pinentry-mode 'loopback)linii w .emacs było wystarczające dla mojego Gnu Emacsa 26.2 z gpg 2.2.16 z homebrew.
Dave X