无法使用 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。我的代码已被证实。
我正在为 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。我的代码已被证实。