Intereting Posts
.htaccess переписать: субдомен как GET var и путь как GET var полезно ли использовать mysql_free_result ($ result)? Переход от prefork MPM к рабочему MPM + php-fpm на ubuntu mysql / php: показать сообщения и для каждого сообщения все комментарии FTP-сервер PHP не работает над экземпляром EC2 Amazon Linux? Использование виртуальных полей в cakePHP 2.x str_replace () на многобайтовых строках опасно? Как вы анализируете и обрабатываете HTML / XML в PHP? Загрузить изображение в imgur с помощью ajax Создание регулярного выражения url global Ограничьте количество результатов из mySQL условно? Как получить все строки, которые соответствуют по крайней мере одному значению из массива? При использовании уникальной буквенно-цифровой строки для короткого URL-адреса лучше ли хранить созданную строку в базе данных или кодировать / декодировать «на лету»? Как я могу отобразить отформатированную дату из метки времени Unix в twig? вывод отладки phpmailer в переменную html

PHP Как разобрать pkcs7 подпись blob?

У меня есть подпись PKCS7, с которой я могу получить содержимое с

openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text 

Но как архивировать тот же результат с помощью функций opensl PHP?

Редактировать. Мне удалось создать правильный файл PEM со следующей функцией:

 function der2pem($der_data, $type="CERTIFICATE") { $pem = chunk_split(base64_encode($der_data), 64, "\n"); $pem = "-----BEGIN $type-----\n".$pem."-----END $type-----\n"; return $pem; } $data = der2pem($der_data, "PKCS7); 

Тем не менее, я не смог проанализировать данные с помощью любой из функций, упомянутых в руководстве по PHP. Он работает с помощью openssl:

 openssl pkcs7 -inform PEM -in signature.pkcs7 -print_certs -text 

    К несчастью, я считаю, что нет простого решения. Если вы хотите разобрать кодировку PKCS # 7 DER в PHP, вам понадобится парсер ASN.1. Функции OpenSSL в PHP не способны это сделать.

    Существуют ли какие-либо библиотеки PHP для разбора ASN.1 или генерирования PHP-кода на его основе?

    Попробуйте декодировать данные DER с помощью некоторых парсеров, на которые указывает ссылка. Если какой-либо парсер будет работать, вы сможете увидеть и извлечь необходимую информацию. В качестве первого шага вы можете попробовать онлайн-парсер из проекта phpseclib.

    http://phpseclib.sourceforge.net/x509/asn1parse.php

    Как насчет этого решения 🙂

     <?php $result = shell_exec('openssl pkcs7 -inform DER -in signature.pkcs7 -print_certs -text'); var_dump ($result); // you can use preg_match() if you want to parse something specific