我已经使用enigmail一年多了,没有任何问题,但今天它不起作用。
我发现以下有趣的事实:
gpg --decrypt something.gpg # this works
gpg2 --decrypt something.gpg # this fails
所以我的机器上的gpg版本2发生了问题。
这使我看到:
gpg --list-secret-keys # reads from ~/.gnupg/secring.gpg
gpg2 --list-secret-keys # reads from ~/.gnupg/pubring.gpg (pubring?!)
这似乎是问题的根源...当然gpg2
找不到密钥,因为它在错误的文件中查找。
gpg2
我的gpg
工作正常时怎么会失败?我看不到任何指定从何处读取密钥的选项。
有人有什么想法吗?
对@grawity的响应:
谢谢,谢谢您的帮助。我跑了strace
,我明白了你在说什么。
但是,即使gpg2 --import ...
我看到的行为也没有差异。我只能在重新启动(不启动gpg-agent),运行gpg2 --import ...
,然后运行的情况下才能正常工作gpg2 --decrypt ...
。在该顺序之后,雷鸟+ enigmail也表现良好。但是,大约15分钟后(我猜是我输入的用于解密的密码已过期),然后gpg-agent
又恢复了原来的行为。此序列是可重复的。
因此,这是一些有助于清除所有内容的输出:
输出gpg2 -K
:
/home/<username>/.gnupg/pubring.gpg
---------------------------------
sec rsa4096/AAAAAAAA <date> [SC]
uid [ultimate] <description of me>
ssb rsa4096/BBBBBBBB <date> [E]
输出 gpg-connect-agent
> keyinfo --list
S KEYINFO <keygrip associated with AAAAAAAA> D - - - P - - -
S KEYINFO <keygrip associated with BBBBBBBB> D - - - P - - -
OK
输出 gpg2 -v -r <my email> -e testfile
gpg: using PGP trust model
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: This key belongs to us
gpg: reading from 'testfile'
gpg: writing to 'testfile.gpg'
gpg: RSA/AES256 encrypted for: "BBBBBBBB <description of me>"
输出 gpg2 -v -d testfile.gpg
gpg: public key is BBBBBBBB
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: using subkey BBBBBBBB instead of primary key AAAAAAAA
gpg: encrypted with 4096-bit RSA key, ID BBBBBBBB, created <date>
"<description of me>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key
gpg-agent
以及pinentry程序必须设置为pinentry-gtk-2
。在将它设置为之前pinentry-gnome3
,它已经存在于我的系统中,但是没有用。我不得不手动安装pinentry-gtk-2
。