【问题标题】:Misformed armored text error when loading key using OpenPGP使用 OpenPGP 加载密钥时出现错误的装甲文本错误
【发布时间】:2021-10-27 05:53:59
【问题描述】:

我正在尝试使用 Node.js 包 openPGP 解密使用 GnuPG 2.2.28 加密的文件,但我什至似乎无法加载私钥开始,并且出现以下错误:

{
  "errorType": "Runtime.UnhandledPromiseRejection",
  "errorMessage": "Error: Misformed armored text",
  "trace": [
    "Runtime.UnhandledPromiseRejection: Error: Misformed armored text",
    "    at process.<anonymous> (/var/runtime/index.js:35:15)",
    "    at process.emit (events.js:314:20)",
    "    at process.EventEmitter.emit (domain.js:483:12)",
    "    at processPromiseRejections (internal/process/promises.js:209:33)",
    "    at processTicksAndRejections (internal/process/task_queues.js:98:32)"
  ]
}

在我的代码中,看起来我已经正确提供了装甲钥匙,使用反引号将钥匙括起来:

const openpgp = require('openpgp');

async() => {

    try {

        const passphrase = `changeit`;

        const priv_key = `-----BEGIN PGP PRIVATE KEY BLOCK-----
    
    lQPGBGEcehABCAC2/ws+pKo/9DB2JgQI3IXUXtj666KfHiFF2GjfEY5FvWIqm7Cq
    MneNHyp+HfgjI6L0C1UAhUtUZaHFpKYfCbKoXH4Odwvor8f1RaxA7/IdvY+JJdx2
    2tv/ZJdAP35XXRp0XrHPQIyEnTlvWPTPNFKb3kRaEFJnJfbCGSfocSWq9mrPc1J3
    ...
    -----END PGP PRIVATE KEY BLOCK-----`;

        const privateKey = await openpgp.decryptKey({
            privateKey: await openpgp.readPrivateKey({
                armoredKey: priv_key
            }),
            passphrase
        });

    } catch (e) {
        console.log("ERROR: Unexpected error in PGP decryption", e.stack);
    }

    //...
}

有没有其他人遇到过类似的问题?

【问题讨论】:

    标签: node.js pgp openpgp


    【解决方案1】:

    这可能是因为行之间有多余的空格。应该只有换行符\n,但这些行之间没有空格。

    在您的情况下,您可以将所有行连接到这样的字符串,如下所示:

    "-----BEGIN PGP PRIVATE KEY BLOCK-----\n\nlQPGBGEcehABCAC2/ws+pKo/9DB2JgQI3IXUXtj666KfHiFF2GjfEY5FvWIqm7Cq\n...\n-----END PGP PRIVATE KEY BLOCK-----"
    

    【讨论】:

      【解决方案2】:

      我刚刚遇到了同样的问题,我找到的唯一解决方案是回滚到 openpgp 4.10.10 (https://www.npmjs.com/package/openpgp/v/4.10.10) 并更新我的代码以使用旧语法。

      const openpgp = require('openpgp');
      
      async () => {
        try {
          const passphrase = `changeit`;
      
          const priv_key = `-----BEGIN PGP PRIVATE KEY BLOCK-----
          
          lQPGBGEcehABCAC2/ws+pKo/9DB2JgQI3IXUXtj666KfHiFF2GjfEY5FvWIqm7Cq
          MneNHyp+HfgjI6L0C1UAhUtUZaHFpKYfCbKoXH4Odwvor8f1RaxA7/IdvY+JJdx2
          2tv/ZJdAP35XXRp0XrHPQIyEnTlvWPTPNFKb3kRaEFJnJfbCGSfocSWq9mrPc1J3
          ...
          -----END PGP PRIVATE KEY BLOCK-----`;
      
          const privateKey = (await openpgp.key.readArmored([priv_key])).keys[0];
          await privateKey.decrypt(passphrase);
        } catch (e) {
          console.log('ERROR: Unexpected error in PGP decryption', e.stack);
        }
      
        //...
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-02
        • 2019-10-28
        • 2015-04-14
        • 1970-01-01
        • 2015-08-22
        • 2019-07-03
        • 2014-04-19
        相关资源
        最近更新 更多