09 August 2021

gpgの暗号化/複合化が遅い問題

最近のEmacsにはgpgを扱う機能が標準で組込まれている。 拡張子を.gpgにして新規にファイルを作るだけでGnuPGで暗号化されたファイルを作ってくれる。また、.gpg拡張子のファイルを開くと自動でパスフレーズを聞いてきて復号してくれる。

しかしいつからか、ubuntuで暗号化/復号化する際にパスフレーズ入力前に数十秒止まるようになってしまった(二回目以降はgpg-agentが覚えていてくれるが)。 検索すると、なんでもgnome-keyring-daemonとの関係でタイムアウトまで待たされているらしい

色々試してとりあえずの解決をみたので、メモしておく

パスフレーズ入力のUIであるpinentryをpinentry-gnome3からpinentry-ttyにする

インストールされていなければaptで入れる sudo apt install pinentry-tty

~/.gnupg/gpg-agent.confを編集

以下を追加

pinentry-program /usr/bin/pinentry-tty
allow-emacs-pinentry
allow-loopback-pinentry

~/.emacs.d/init.elを編集

以下を追加

(setq epa-pinentry-mode 'loopback)

元々はpinentry-gnome3が指定されていたので、パスフレーズ入力時にGTK3のプロンプトが出ていたが、以降はターミナルに直接入力 or Emacsならミニバッファに入力するようになる。