У меня есть подпись 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.
Как насчет этого решения 🙂
<?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