导入 gpg 密钥时 Thunderbird 出现错误

导入 gpg 密钥时 Thunderbird 出现错误

我正在使用最新版本的 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 配置文件测试了这一点,但它可以使导入密钥对话框再次工作。

  1. 确定出现问题的配置文件的文件系统位置(例如~/.thunderbird/ab3l36sq.default/)。
  2. encrypted-openpgp-passphrase.txt该目录中应该有一个名为的文件。
  3. 关闭 Thunderbird。
  4. 将该文件重命名为类似的名字backup-encrypted-openpgp-passphrase.txt
  5. 重新打开 Thunderbird。
  6. 尝试从 OpenPGP 密钥管理器导入密钥。

按照这些步骤后,我能够导入密钥,并且不会出现错误对话框和错误控制台中的堆栈跟踪。

相关内容