Конвертировать sh + perl скрипт в php скрипт - PullRequest
0 голосов
/ 30 января 2019

Я нашел код для получения сертификатов CA.Проблема в том, что скрипт имеет формат .sh:

wget -O - https://eidas.agid.gov.it/TL/TSL-IT.xml | perl -ne 'if (/<X509Certificate>/) {
s/^\s+//; s/\s+$//;
s/<\/*X509Certificate>//g;
print "-----BEGIN CERTIFICATE-----\n";
while (length($_)>64) {
print substr($_,0,64)."\n";
$_=substr($_,64);
}
print $_."\n";
print "-----END CERTIFICATE-----\n";
}' >CA.pem

Я хотел бы иметь его на PHP, но я не знаю, как он работает в .sh (я использую Windows, и я не могупросмотреть вывод в .sh), поэтому я не знаю, как начать преобразование: (

ОБНОВЛЕНИЕ: после некоторой попытки я достиг этой точки:

$xmlDoc = simplexml_load_file('https://eidas.agid.gov.it/TL/TSL-IT.xml');

$content = "";

foreach ($xmlDoc->SchemeInformation->PointersToOtherTSL->OtherTSLPointer->ServiceDigitalIdentities->ServiceDigitalIdentity as $key)
{
    $content .= "-----BEGIN CERTIFICATE-----" . PHP_EOL;
    $content .= wordwrap($key->DigitalId->X509Certificate, 64, PHP_EOL, true);
    $content .= PHP_EOL;
    $content .= "-----END CERTIFICATE-----" . PHP_EOL;

}

file_put_contents("test.txt",$content);

Проблема в том,что "X509Certificate" находится в других блоках внутри XML, поэтому я должен создать цикл для каждого блока. Есть ли способ извлечь значение только по элементу name = "X509Certificate" без знания правильной иерархии дерева?

1 Ответ

0 голосов
/ 30 января 2019

Используйте метод xpath () с XPath для искомого узла:

РЕДАКТИРОВАТЬ: просто для включенияс безопасной стороны я добавил обработку пространства имен

# default namespace for elements without namespace prefix
$xmlDoc->registerXPathNamespace('default', 'http://uri.etsi.org/02231/v2#');

foreach ($xmlDoc->xpath("//default:X509Certificate") as $element) {

Если вы строковый $element, вы должны получить текстовое содержимое узла, то есть строку Base64, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...