emacs EasyPG 询问使用什么密钥,尽管已经指定了 epa-file-encrypt-to

emacs EasyPG 询问使用什么密钥,尽管已经指定了 epa-file-encrypt-to

场景:我使用 emacs 和 EasyPG 自动加密和解密文件。我打开一个名为 test.gpg 的空文件。然后将以下文本粘贴到文件中

;; -*- epa 文件加密至:(“[电子邮件保护]“) -*-
这是一个测试,任何文本都可以用于此测试

然后我继续保存文件。Emacs 将打开一个名为 *Keys* 的缓冲区,我应该在其中选择要用于加密的密钥。但如上所示,我已经插入了密钥规范(“[电子邮件保护]“) 使用手册中规定的语法放入缓冲区。而手动在另一个缓冲区中搜索以找到并选择所需的键是一项繁琐的工作。

为什么 EasyPG 在保存时不检查密钥规范?有没有简单的解决方法?

答案1

运行M-x normal-mode将在尝试保存文件之前立即解析并设置 file-local-variable-prop-line 中的局部变量。运行(setq-local epa-file-encrypt-to '("[email protected]"))

完成后,您应该能够保存而无需提示选择密钥。

答案2

这看起来像是 EPG(MacOS 版 Emacs 26.3 上的 v1.0.0)中的一个错误。

变量的文档epa-file-select-keys说:

Control whether or not to pop up the key selection dialog.

If t, always asks user to select recipients.
If nil, query user only when ‘epa-file-encrypt-to’ is not set.
If neither t nor nil, doesn’t ask user.  In this case, symmetric
encryption is used.

但是,nil仍然会引发密钥选择的查询,而非t或非nil值则保持沉默并.gpg使用指定的公钥保存文件。这不是我所期望的。

因此,在配置文件中添加以下行可以解决问题,并记住谨慎使用:

(setq epa-file-encrypt-to '("[email protected]"))
(setq epa-file-select-keys 1)

答案3

解决方法如下:

  1. 使用以下方式保存文件-gpg 扩展名(或者根本没有文件扩展名)。

  2. 执行“gpg -e文件名“在控制台窗口中。您必须输入密钥规范(电子邮件地址)一次。这应该会创建”文件名.gpg”。不要忘记删除未加密的文件。

之后,您可以在 Emacs 中打开加密文件。它会提示输入密码。保存更改时,将考虑“epa-file-encrypt-to”。

相关内容