Tidak dapat mendekripsi file .gpg menggunakan emacs tetapi baris perintah gpg berfungsi

12

Saya punya accounts.org.gpgfile. Saya bisa membukanya menggunakan gpg langsung:

$ 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>

Tapi saya tidak bisa membuka file yang sama menggunakan Emacs. Mencoba membukanya di emacs memberi saya kesalahan:

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

Apakah ada sesuatu yang perlu saya konfigurasi di sisi emacs untuk membuat ini berfungsi?

Untuk beberapa latar belakang tambahan, saya membuat file ini di komputer lain (menggunakan versi Emacs yang sama), di mana Emacs dapat membaca / menulis ke file itu dengan baik. Saya kemudian menyalin lebih dari isi ~/.gnupg ke mesin ini. Dan sekarang gpg masih bisa membacanya, tetapi Emacs tidak bisa.

EDIT: Mungkinkah ini perbedaan gpg1 vs gpg2?

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

Bagaimana Emacs pada mesin lain (menggunakan konfigurasi yang sama, versi Emacs yang sama (25.1) dan OS yang sama (Fedora 24 x86_64, versi yang sama dari paket gpg dan gpg2)) membaca dari itu dan menulis kepadanya. Lagi pula menggunakan,

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

Masih menghasilkan kesalahan yang sama.

Omair Majid
sumber
Sudahkah Anda mencoba (setq epg-gpg-program "gpg2")?
caisah
Aku melakukannya. Ini juga standarnya. Dan itu tidak berhasil. Sama seperti program command line gpg2 tidak. Saya mulai berpikir ini adalah masalah dengan gpg2 itu sendiri, bukan emacs sama sekali.
Omair Majid
3
@caisah See Bug # 24229 , setqtidak berfungsi epg-gpg-program, Anda harus menyesuaikannya.
npostavs

Jawaban:

15

Anda tidak mengatakan OS atau versi emacs mana yang Anda miliki.

Saya memecahkan kemarin masalah yang sama persis di OSX dan emacs 25.1 menggunakan informasi dari tautan ini: http://colinxy.github.io/software-installation/2016/09/24/emacs25-easypg-issue.html

Saya menjalankan perintah ini:

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

dan atur mode pinentry di file conf emacs saya:

(setf epa-pinentry-mode 'loopback)
Heikki
sumber
Silakan lihat suntingan saya untuk versi OS dan Emacs. Saya pasti tidak berencana untuk mengganti versi sistem dari gpg / gpg2.
Omair Majid
Paket pembuatan bir standar gnupg untuk beberapa waktu sekarang adalah versi 2.1. Versi yang lebih lama 1.4 dan 2.0 yang tidak sepenuhnya kompatibel dengannya tersedia sebagai paket terpisah.
Heikki
Sekedar info: Saya punya masalah serupa di Linux dan solusi ini memperbaiki masalah saya juga.
Manoel Vilela
2
Terima kasih telah menunjukkan (setf epa-pinentry-mode 'loopback)triknya.
phs
1
Menambahkan (setf epa-pinentry-mode 'loopback)baris dalam .emacs sudah cukup untuk Gnu Emacs 26.2 saya dengan gpg 2.2.16 dari homebrew.
Dave X