emacsを使用して.gpgファイルを復号化できませんが、コマンドライン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はそのファイルに対して正常に読み取り/書き込みを行うことができました。次に、overの内容~/.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)、同じOS(Fedora 24 x86_64、同じバージョンのgpgおよびgpg2パッケージ)を使用)は、どのようにしてそこから読み取り、それに書き込みましたか。とにかく使って、

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

それでも同じエラーが発生します。


試しました(setq epg-gpg-program "gpg2")か?
caisah

やった。これもデフォルトです。そしてそれは機能しません。gpg2コマンドラインプログラムとは異なります。これは、emacsではなく、gpg2自体の問題だと考え始めています。
Omair Majid

3
@caisah バグ# 24229を参照してください。でsetq機能しませんepg-gpg-program。カスタマイズする必要があります。
npostavs 2016年

回答:


15

あなたはあなたが持っているOSや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

emacs confファイルでpinentryモードを設定します。

(setf epa-pinentry-mode 'loopback)

OS版とEmacs版の編集内容をご覧ください。システムバージョンのgpg / gpg2をオーバーライドする予定はありません。
Omair Majid

標準のbrewパッケージgnupgは、しばらくの間バージョン2.1でした。完全に互換性のない古いバージョン1.4および2.0は、個別のパッケージとして入手できます。
Heikki 2017

単なる情報:Linuxでも同様の問題があり、この解決策で問題も解決しました。
Manoel Vilela、2018年

2
(setf epa-pinentry-mode 'loopback)トリックを指摘してくれてありがとう。
PHS

1
(setf epa-pinentry-mode 'loopback).emacsに行を追加するだけで、自作のgpg 2.2.16を使用するGnu Emacs 26.2で十分です。
Dave X
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.