twitterのクライアントとして、日頃からemacs上で動くクライアントの"twittering-mode"を使用しています。 ところが最近、新しいmacにインストールしたemacs-macでtwittering-modeを起動すると、毎回twitterのPINを聞かれるようになってしまいました。 毎回、毎回、起動時の暗号化フェーズで

Encrypt failed Exit

と言われ・・・・ 以前使っていたmacではこのようなことが無かったため、困っていたのですが、以下の手順により解決できました。

背景

結論から言うと、これはGnuPGのバージョンが新しくなったことによる問題でした。 GnuPG2.1.0から、gpg-agentとpinentryと呼ばれる二つのソフトウェアの利用が必須となりました。 twittering-mode事態はgpg-agentやpinentryが必須でも基本的に問題なく動作するようにはなっているハズ・・・でした。 しかし、これらのソフトウェアの必須化に伴って、これまで標準入力から入力できていたパスフレーズが標準入力から入力できなくなっており、そのために暗号化に失敗して毎回PINを聞く・・・という状態になっていたようです。

解決策

みんな大好きarch wiki に解決策がありました。 まず、~/.gnupg/gpg-agent.confに以下のように記述します。

allow-loopback-pinentry

つぎに、~/.gnupg/gpg.confに以下のように記述します。

pinentry-mode loopback

最後に、gpg-agentを再起動します。 コマンドラインから、

$ gpgconf --kill gpg-agent

でgpg-agentを再起動できます。

以上で、twittering-modeが正常に使用できるようになるはずです。