Отправка XML-файла содержит подпись gpg с помощью PHP + cURL - PullRequest
2 голосов
/ 11 ноября 2011

У меня есть XML-файл и подпись GPG в нем, в теге <SIGNATURE>.

Вот XML:

$xml = "<DATA>
 ....
  <SIGNATURE>-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx

-----END PGP SIGNATURE-----
  </SIGNATURE>
</DATA>";

Когда я отправляю этот xml с помощью perl, ответ в порядке, и удаленный хост принимает подпись.

Но если я отправлю этот xml с php и cURL, удаленный сервер отклонит подпись.

В скрипте perl используются следующие модули: use URI (); use GnuPG qw( :algo ); use LWP::UserAgent (); use IO::Socket::SSL;

Следующие параметры cURL устанавливаются в скрипте php:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);

Я думаю, что есть проблема с curl .... Возможно, настройка скручивания пропущена, но я не знаю, какая именно. Я пробовал urlencode, qoutemeta php функции для $xml строки, но безрезультатно.

1 Ответ

0 голосов
/ 27 ноября 2011

Добавить опцию агента пользователя.
curl_setopt ($ ch, CURLOPT_USERAGENT, "Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv: 1.9.0.1) Gecko / 2008070206 Firefox / 3.0.1");
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ ch, CURLOPT_URL, $ url);
curl_setopt ($ ch, CURLOPT_POST, 1);
curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ xml);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);

...