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

Я уже посмотрел сам, но, похоже, мой Google-фу сегодня не силен.

Я работаю над разработкой стандартизированного протокола для обмена структурами данных через соединение TCP / IP между сервером Apache / PHP и встроенным кодом C на микроконтроллере.

Мы используем нотацию ASN.1, и я действительно хотел бы иметь кусок PHP-кода, который может анализировать документ ASN.1 и использовать его для интерпретации входящих данных. Он будет производить объект PHP (или массив), который структурирован соответствующим образом на основе ASN.1. В данном случае цель заключается в том, чтобы PHP анализировал документ и создавал объекты, не зависящие от специфики документа (то есть не кодируемые вручную для соответствия содержимому документа).

В качестве альтернативы, если это невозможно, существует ли что-то, что позволило бы мне генерировать простые классы объектов передачи данных PHP, которые я мог бы перезапускать каждый раз при изменении документа протокола ASN.1? На самом деле это может быть предпочтительнее с точки зрения эффективности, поскольку вам не придется повторно интерпретировать ASN.1 для каждого входящего запроса.

Спасибо! Дайте мне знать, если я смогу дать какие-либо дополнительные разъяснения, которые помогут ответить на этот вопрос.

Ответы [ 3 ]

4 голосов
/ 03 октября 2012

На всякий случай, если кто-то еще ищет ответ на этот вопрос:

Вы можете попробовать PHPASN1 для чистой библиотеки кодирования и декодирования ASN.1 или phpseclib , которая также может обрабатывать ASN.1, но не так сосредоточена на ней.

4 голосов
/ 24 марта 2013

phpseclib может декодировать структуры ASN.1 идентично тому, как это делает asn1parse в OpenSSL:

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

Если вы посмотрите на исходный код, он получит массив $ asn1-> decodeBERвозвращается и отображает это в отображаемой строке.Но тот факт, что он идентичен, является свидетельством силы phpseclib, я думаю.

1 голос
/ 10 июня 2011

Попробуйте это: https://web.archive.org/web/20160305171509/http://phpkode.com/source/s/mistpark-server/library/asn1.php.

Это не столько библиотека, сколько сценарий, но вы можете использовать ее как один.

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