шифрование — PHP GnuPG — Сбой подписания сообщения

Очевидно, хотя я думал, что генерирую ключи, у которых нет пароля, gnupg все еще ожидал пароль для них (который расширение gnupg больше не поддерживает). Я восстановил новую пару ключей, используя Kleopatra в Windows, и обошел все предупреждения «без пароля», и я смог успешно подписать / зашифровать эти ключи.

Итак, суть будет очень убедитесь, что ваш ключ не имеет парольной фразы.


Я пытаюсь подписать сообщение, используя расширение gnupg в PHP. У меня правильно настроена среда, и я могу успешно импортировать ключ и добавить его, используя gnupg_addsignkey успешно (возвращает true).

Когда я пытаюсь подписать сообщение, используя gnupg_sign($res, "my message")Я получаю следующую ошибку и gnupg_sign возвращает false:

gnupg_sign(): data signing failed

Я не могу найти какой-либо способ получить более подробную информацию, чтобы выяснить, почему она не работает.

Я попробовал процедурные методы, а также методы ОО, и получил тот же результат. Разрешение все правильно на сервере.

Вот код OO, который я использовал:

# /tmp/.gnupg is there (but empty if that helps figure out the problem)
putenv("GNUPGHOME=/tmp/.gnupg");
$gpg = new gnupg();
$gpg->seterrormode(GNUPG_ERROR_WARNING);
$ascii = file_get_contents('/etc/my.key'); // Yes, this reads successfully

$start = strpos($ascii, '-----BEGIN PGP PRIVATE KEY BLOCK-----');
$end = strpos($ascii, '-----END PGP PRIVATE KEY BLOCK-----')+34;
$key = substr($ascii, $start, ($end-$start));

$info = $gpg->import($key); // Fingerprint is there and everything seems OK
$gpg->addsignkey($info['fingerprint']);
$signed = $gpg->sign("test!"); // fails with any string I try

$signed ложно, и я получаю предупреждение PHP gnupg::sign(): data signing failed

1

Решение

Защищен ли ваш личный пароль паролем?
В соответствии с документация по pecl / gnupg Вы не можете передать незашифрованный пароль для gnupg ≥ версия 2.
Так что все, что вы можете сделать, это использовать закрытый ключ, который имеет нет пароля установить, я думаю.

Ошибки IMO pecl / gnupg вводят в заблуждение.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]