无法使用 Crypt_GPG 签署文档,失败 'Cannot sign data. No passphrase provided.'

Cannot sign document with Crypt_GPG, fails with 'Cannot sign data. No passphrase provided.'

我正在为 PHP 使用 Crypt_GPG 并且我无法签署 GPG 文档,即使我正在导入我刚刚创建的签名密钥,它确实有密码。

代码非常简单:

    $gpg = new \Crypt_GPG();

    // Import my private key and client public key
    $gpg->importKey($myPrivateKey);
    $gpg->importKey($clientPublicKey);

    $myPrivateFingerprint = $gpg->getKeys('my_email@example.org')[0]->getPrimaryKey()->getFingerprint();
    $clientPublicFingerprint = $gpg->getKeys('client@example.org')[0]->getPrimaryKey()->getFingerprint();

    $gpg->addSignKey($myPrivateFingerprint, 'myunittest');
    $gpg->addEncryptKey($clientPublicFingerprint);

    return $gpg->encryptAndSign('hello');

当我在 return 语句之前转储 Crypt_GPG class 时,我可以看到签名密钥和密码都在那里。这是相关部分:

 #signKeys: array:1 [
    "XXXXXXXXXXXXX" => array:2 [
      "fingerprint" => "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
      "passphrase" => "myunittest"
    ]
  ]

一切都应有尽有。当我到达最终函数 encryptAndSign() 时,它失败并出现此错误:

[Crypt_GPG_BadPassphraseException] Cannot sign data. No passphrase provided.

我在这里错过了什么?

谢谢主教。问题似乎是 gpg 2.0.22 中的错误,这是我在 Docker 中的版本。我做了一些测试,发现我们的质量检查和生产服务器没有问题。我检查了那些盒子上的版本,是 2.0.28。我的代码已被证实。