GnuPG 的奇怪错误:当终端太小时声称“没有密钥”

GnuPG 的奇怪错误:当终端太小时声称“没有密钥”

这是我的内容.gnupg/gpg-agent.conf

pinentry-program /usr/bin/pinentry-curses

pass当我尝试从商店检索密码时,例如pass -c path/to/password通过非常小的终端窗口,命令错误如下:

gpg: decryption failed: No secret key

所以这是 GnuPG 的一个错误,我相信是因为 ncurses 没有足够的空间来绘制 pinentry 对话框。

有人可以复制这个吗?如果是这样,我可以在哪里报告此错误?

在此输入图像描述

答案1

每当您报告(可疑的)错误时,您应该说明您观察到的行为以及您的预期。因此,在这种情况下,当您使用 GnuPG 打开错误报告时,您应该说明您认为应该发生的情况。如果您在此处添加它,您应该编辑问题,而不是仅在评论中添加它。另请参阅底部的建议。

是的,出现这种情况是因为窗口太小。它也不是源自 GnuPG:GnuPG 只是调用pinentry-program您在配置中指定的。

有关发生的详细信息,我们可以尝试手动调用它。

$ stty cols 20 rows 10
$ pinentry-curses 
OK Pleased to meet you
GETPIN
S ERROR curses.dialog_create 83886381 
ERR 83886381 Screen or window too small <Pinentry>

这里我首先将 tty 大小调小,然后调用pinentry-curses.它等待命令,我输入了GETPIN获取 PIN 码的命令。它抱怨屏幕太小而无法显示对话框。 GnuPG 只是报告它无法获取 PIN。

我看到了你写的票,但是你的建议是介于困难和不可能之间,因为gpg不应该关心终端尺寸,因此不应该声称终端太小。

相反,我建议使用以下文本(我不想在那里创建帐户):

gpgpinentry-program如果需要解密密钥,则调用。如果pgp不显示通用消息
decryption failed: No secret key
而是从 转发消息pinentry-program,例如:
Can't decrypt key, pinentry-program failed with (text from ERR response),那么对用户来说会更好。

此外,如果由 gpg 团队维护,它可以检测到小窗口,并与未设置pinentry-curses时的行为相同,从而避免此错误。$TERM

相关内容