调用函数 org-decrypt-entry/org-encrypt-entry 没有提示输入密钥, 加密失败

在加密/解密的过程中, 如果出现要输入密钥的情况, 就会不成功.

------------- 下面是原问题描述 ---------------

调用 org-decrypt-entry 的堆栈 image

试过了用快捷键调用和M-x调用, 不让我输入参数, 直接定为nil.

;; 绑定快捷键 C-x C-.
(add-hook 'org-mode-hook
          (lambda ()
            (local-set-key [24 67108910] 'org-decrypt-entry)))

为什么你要绑一对魔法数字,然后旁边注释键名?

org-decrypt-entry本来就没有参数

这是我用文档给的方式生成的快捷键, 我没有去找怎么样改成不是魔法数字, 就直接注释了一下…

原来如此, 但是我也没有弹出“enter passphrase"的弹窗.

感觉是我终端的问题, 我不会在终端输入密钥是这样的.

image

gpg-agent.conf里设置

pinentry-program /usr/bin/pinentry-gtk-2

默认的是使用ncursor的,可能在使用GUI的时候不会弹出。

可选的选项有

pinentry /usr/bin/pinentry
pinentry /usr/bin/pinentry-curses
pinentry /usr/bin/pinentry-emacs
pinentry /usr/bin/pinentry-gnome3
pinentry /usr/bin/pinentry-gtk-2
pinentry /usr/bin/pinentry-qt
pinentry /usr/bin/pinentry-tty

谢谢大佬, 太厉害了

windows上用Kleopatra,在emacs 28中是在minibuffer提示密钥的。

1 个赞

最后更新一下, 我是mac操作系统, @Youmu 的解决方案是正确的, 但是mac下安装不了pinentry-gtk-2, 我最终使用的是 /usr/local/bin/pinentry-mac. 这样会在加密时弹窗. image

如果想用原生的minibuffer输入密钥, 可以

brew uninstall gpg
brew install gpg1
ln -s /usr/local/bin/gpg1 /usr/local/bin/gpg

尝试一下

(setq epg-pinentry-mode 'loopback)

minibuffer里输入。此解决方案来自IRC的 @bokuno

1 个赞