Чтобы получить красивый построчный вывод <?php use Sop\ASN1\Element; use Sop\ASN1\Type\Constructed\Sequence; use Webmasterskaya\X509\Certificate\Certificate; require_once __DIR__

. './vendor/autoload.php';

$content = file_get_contents(__DIR__ . '/Polozhenie.pdf');

$regexp
= '#ByteRange\[\s*(\d+) (\d+) (\d+)#'; // subexpressions are used to extract b and c

$result = [];
preg_match_all($regexp, $content, $result);

if (isset($result[2]) && isset($result[3]) && isset($result[2][0])
&& isset($result[3][0])
) {
$start = $result[2][0];
$end = $result[3][0];
if ($stream = fopen(__DIR__ . '/Polozhenie.pdf', 'rb')) {
$signature = stream_get_contents(
$stream, $end - $start - 2, $start + 1
); // because we need to exclude < and > from start and end

fclose($stream);
}

if (!empty($signature)) {
$binary = hex2bin($signature);

$seq = Sequence::fromDER($binary);
$signed_data = $seq->getTagged(0)->asExplicit()->asSequence();
$ecac = $signed_data->getTagged(0)->asImplicit(Element::TYPE_SET)
->asSet();
/** @var Sop\ASN1\Type\UnspecifiedType $ecoc */
$ecoc = $ecac->at($ecac->count() - 1);
$cert = Certificate::fromASN1($ecoc->asSequence());

foreach ($cert->tbsCertificate()->subject()->all() as $attr) {
/** @var Webmasterskaya\X501\ASN1\AttributeTypeAndValue $atv */
$atv = $attr->getIterator()->current();
echo $atv->type()->typeName() . ' : ' . $atv->value()->stringValue() . PHP_EOL;
}
}
}

3 ответов

13 просмотров
Artem-Vasilev Автор вопроса

Код и composer.json Для тестов https://gist.github.com/kernusr/aded2c230a05776bdbd456320f6ae33f

Artem-Vasilev Автор вопроса
Artem Vasilev
Код и composer.json Для тестов https://gist.github...

Туда же предложения/замечания пишите

Подскажите пожалуйста, да это все работает, а можно ли это все завернуть в функцию? Передал ей файл, а функция возвратила текст о сертификате. Я попробовал и у меня все время ругается на use(( syntax error, unexpected 'use' (T_USE) //Все разобрался, просто use вынес наверх файла function.php, а остальной код завернул в функцию. Вроде работает)

Похожие вопросы

Обсуждают сегодня

Доброго вечера. Поскажите, как изменить код number_fomat, что цена была без копеек. <?php if(!empty($value)) { $parts = explode('.',$value); echo number_format ($part...
Katerina Beliayeva
12
слушайте, на многих старых сайта на 1.4 вижу этот алерт конкретно - смущает что ругается на index.php и manager/index.php Сайты друг с другом никак не связаны хостингами и об...
Jacov Borisov
5
core\config\database\connections\default.php На всякий случай проверь всё же файл <?php return [ 'driver' => env('DB_TYPE', 'mysql'), //$database_type 'host' => env('D...
Andrey K
2
А это вообще исполнимо - посчитать прям всех-всех? Я же так понимаю, всегда найдется кто-то, кто не определился, не посчитался или еще как-нибудь испортит картинку
Julia Cherri
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
#оффтоп А кто-то уже видел, что там ребята из roistat настраивают на сайте? Очень хотят в админку "настроить аналитику бесплатно"
Julia Cherri
6
мои еще в начале пути, похоже. А куда уходят, если могут?
Julia Cherri
6
1.4.7 это версия с кораблём, наверно?
Am Ambrion
8
<?php function prepareTel($data, $modx, $_multiTV) { if ($data['iteration'] == $data['row']['total']) { $data['tel'] = '<a class="link" href="tel: ' . $data['tel']...
Кирилл Гацевич
2
Карта сайта