Ранее я уже выкладывал здесь ссылку на свою статью "ASN.1 простыми словами". Сегодня я хочу представить свой новый труд - свободно распространяемый набор тестов, проверяющих правильность работы кодировщика/декодировщика ASN.1.
Кроме того я также представляю и свою собственную разработку ASN.1 BER кодировщика/декодировщика, распространяемую в исходных кодах под BSD license. Ниже об особенностях программы:
1) Представляет из себя кодер/декодер для наиболее общего формата кодирования ASN.1 - BER (то есть форматы DER и CER программа обрабатывает также);
2) Также программный продукт позволяет работать с бинарными данными, дополнительно закодированными в BASE64-формате, а также с внутренним XML форматом описания ASN.1 типов (см. ниже);
3) Кодирование и декодирование реализовано для всех типов из последнего стандарта ASN.1:2008;
4) Кодирование и декодирование для каждого из типов на 100% удовлетворяет предлагаемым ранее тестовым случаям для тестирования совместимости со стандартом ASN.1;
5) Программа поставляется в исходных кодах, под лицензией, позволяющей использовать их даже в коммерческих разработках;
6) Код программы написан на С++ с применением объектной модели программирования;
7) Код проверен на отсутствие ошибок и утечек памяти;
8) Код произвольно расширяем, позволяя добавлять работу с новыми форматами кодирования ASN.1;
9) Программа имеет пакетный режим работы с файлами, позволяя за один раз обработать множество входных файлов, причем в одном пакете обработки могут быть как операции декодирования для определенного типа, так и операции кодирования. Конфигурационный файл представляется в XML, формат конфигурационного файла описан в виде XSD-схемы ( ссылка на файл XSD );
10) Стандартный выходной формат (CompliXML) описывает декодированные типы в виде XML, что позволяет проще воспринимать результаты декодирования, а также дает возможность делать вторичные отчеты на основе декодированных данных;
11) Стандартный выходной формат подробно описан в виде XSD-схемы ( ссылка на файл XSD );
12) Стандартный выходной формат описывает каждый отдельный подблок внутри каждого декодированного типа. Например при декодировании OBJECT IDENTIFIER в выходном файле создается отдельный блок информации для каждого "sub-identifier", а при декодировании типа REAL - отдельные блоки информации для подблоков мантиссы, экспоненты и информационного подблок
13) Кроме собственно декодированных данных стандартный выходной формат позволяет описывать возникающие при декодировании предупреждения и ошибки. Причём предупреждения и ошибки могут относиться как ко всему декодированному файлу, так и к каждому из декодированных подблоков внутри каждого ASN.1 типа;
14) Для упрощения возможностей кодирования выходной и входной форматы программы полностью идентичны. То есть декодировав сложный файл (например X.509 сертификат) и получив выходной XML файл в формате CompliXML можно этот же файл передать на вход программы и получить закодированный бинарный файл, абсолютно идентичный исходному декодированному файлу;
15) Подобная гибкость программы позволяет даже например декодировать бинарный файл, поменять в нем тип ASN.1 данных (например с BMP STRING на PRINTABLE STRING), а затем закодировать новый бинарный файл с новыми, измененными типами данных;
Более полное описание всего предлагаемого набора продуктов, а также ссылки на все исходные коды, тесты и схемы доступны в документе
по ссылке.
Любые комментарии прошу присылать по адресу
e-mail.