我正在使用最新版本的 thunderbird 并尝试导入 PGP 密钥。
我忘记了主密码,因此使用 chrome://pippki/content/resetpassword.xhtml 重置它(来自官方支持页面:https://support.mozilla.org/en-US/kb/reset-your-primary-password-if-youve-forgotten-it)。
然后,我尝试重新导入我的秘密 gpg 密钥,该密钥之前在 thunderbird 中有效。我使用 gpg --export-secret-keys -a 将其转储到文件中。当我尝试使用 OpenPGP 密钥管理器导入它时,出现错误。控制台中显示的错误如下:CryptoAPI.sync() 失败结果:错误:意外的 null/未定义的 OpenPGP 密码
_importKeyBlockWithAutoAccept chrome://openpgp/content/modules/RNP.jsm:1772
sync chrome://openpgp/content/modules/cryptoAPI/interface.js:56
importKeyFromFile chrome://openpgp/content/modules/keyRing.jsm:360
openPgpImportStart chrome://openpgp/content/ui/keyWizard.js:914
wizardNextStep chrome://openpgp/content/ui/keyWizard.js:269
wizardContinue chrome://openpgp/content/ui/keyWizard.js:216
_fireButtonEvent chrome://global/content/elements/dialog.js:495
_doButtonCommand chrome://global/content/elements/dialog.js:474
_handleButtonCommand chrome://global/content/elements/dialog.js:468
openKeyWizard chrome://openpgp/content/ui/enigmailKeyManager.js:1257
oncommand chrome://openpgp/content/ui/enigmailKeyManager.xhtml:1
masterpass.jsm: caught exception: NS_ERROR_FAILURE
Message: 'Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISecretDecoderRing.decryptString]'
File: undefined
Line: 208
Stack: _readPasswordFromFile@chrome://openpgp/content/modules/masterpass.jsm:208:22
retrieveOpenPGPPassword@chrome://openpgp/content/modules/masterpass.jsm:197:17
_importKeyBlockWithAutoAccept@chrome://openpgp/content/modules/RNP.jsm:1768:43
importKeyBlockImpl@chrome://openpgp/content/modules/RNP.jsm:1723:17
importKeyFromFileAPI@chrome://openpgp/content/modules/cryptoAPI/RNPCryptoAPI.jsm:158:16
importKeyFromFile@chrome://openpgp/content/modules/keyRing.jsm:361:16
openPgpImportStart@chrome://openpgp/content/ui/keyWizard.js:914:36
wizardNextStep@chrome://openpgp/content/ui/keyWizard.js:269:13
wizardContinue@chrome://openpgp/content/ui/keyWizard.js:216:5
_fireButtonEvent@chrome://global/content/elements/dialog.js:495:19
_doButtonCommand@chrome://global/content/elements/dialog.js:474:29
_handleButtonCommand@chrome://global/content/elements/dialog.js:468:19
openKeyWizard@chrome://openpgp/content/ui/enigmailKeyManager.js:1257:5
oncommand@chrome://openpgp/content/ui/enigmailKeyManager.xhtml:1:14
我能得到一些帮助来解决这个问题吗?
谢谢
答案1
据我所知,Firefox 和 Thunderbird 的 PGP 密钥和“主密码”已根据以下规定重命名为“主密码”这link-- 是独立且不相关的概念(但这可能并不完全正确;见下文)。此外,据我所知,“主密码”在 Firefox 和 Thunderbird 之间并不共享。您链接的重置主密码的说明看起来像是针对 Firefox 的。
话虽如此,我假设你在 Thunderbird 中设置了主密码,然后重置它Thunderbird 内部通过在错误控制台(工具>开发人员工具>错误控制台)中运行此命令:
openDialog("chrome://pippki/content/resetpassword.xhtml")
(这将触发一个带有“重置”按钮的对话框,按下该按钮将重置主密码)。
之后,您无法使用 OpenPGP 密钥管理器导入密钥。系统不会提示您输入密钥的密码,而是会显示一条错误消息:
导入失败。您尝试导入的密钥可能已损坏或使用了未知属性。您想尝试导入正确的部分吗?这可能会导致导入不完整且不可用的密钥。
以及错误控制台中前面提到的堆栈跟踪。
我能够使用版本 91.7.0 的干净 Thunderbird 配置文件复制此行为,并且根据堆栈跟踪判断,主密码和 OpenPGP 密钥管理器之间似乎确实存在一些无意的耦合。即使为配置文件设置新的主密码、关闭配置文件、重新打开配置文件并再次尝试在 OpenPGP 密钥管理器中导入密钥,仍然会导致上述错误。
我会向 Thunderbird 团队报告错误。
编辑:一个潜在的解决方法
我只用一次性的 Thunderbird 配置文件测试了这一点,但它可以使导入密钥对话框再次工作。
- 确定出现问题的配置文件的文件系统位置(例如
~/.thunderbird/ab3l36sq.default/
)。 encrypted-openpgp-passphrase.txt
该目录中应该有一个名为的文件。- 关闭 Thunderbird。
- 将该文件重命名为类似的名字
backup-encrypted-openpgp-passphrase.txt
。 - 重新打开 Thunderbird。
- 尝试从 OpenPGP 密钥管理器导入密钥。
按照这些步骤后,我能够导入密钥,并且不会出现错误对话框和错误控制台中的堆栈跟踪。