Бесплатный Набор Тестов На Соответствие Asn.1:2008

Ранее я уже представлял свою статью на этом ресурсе.

АСН.

1 простыми словами .

Сейчас публикую свою новую работу — свободно распространяемый набор тестов для проверки совместимости со стандартом ASN.1:2008. А точнее даже две мои работы — в качестве дополнения к предложенному набору тестов я предлагаю свой собственный кодер/декодер ASN.1 BER (в исходном коде), который на 100% удовлетворяет требованиям предлагаемого мной набора тестов.

Ниже представлено более подробное описание всего комплекса.

Работая долгое время с АСН.

1, вы постоянно сталкиваетесь с необходимостью использования программы кодирования/декодирования (специальной программы для работы с АСН.

1).

Однако, несмотря на общедоступность стандарта ASN.1, разные программы ASN.1 иногда дают разные результаты.

Зачастую даже известные (и платные!) программы допускают ошибки при работе со стандартными типами ASN.1, что является следствием упущений в тестировании программы или следствием неполного понимания всех аспектов стандарта ASN.1. Для решения этой проблемы, казалось бы, достаточно одного, централизованно разработанного набора тестов для каждого типа ASN.1. Однако, изучая этот вопрос, я обнаружил, что подобных тестов в открытом доступе нет. Совсем.

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

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

1 типы данных.

Набор тестов решает следующие задачи:

  1. Дает тесты для наиболее распространенного формата кодировки ASN.1 — BER;
  2. Выполнение требований кодирования для каждого типа, а также каждого из подблоков каждого типа;
  3. Дает полный набор нестандартных ситуаций при кодировании каждого типа;
  4. Дает полный набор ошибочных кодировок для каждого типа;
  5. Предоставляет нормативное описание поведения программы обработки ASN.1 для каждого из предложенных тестов;
  6. Позволяет любой заинтересованной стороне участвовать в добавлении новых тестовых примеров, а также обеспечивает отправную точку для создания собственных наборов тестов;
Собственно, сами тесты представляют собой бинарные файлы с закодированными данными в формате ASN.1 BER. Для облегчения работы с предлагаемым набором тестов также приводится краткое текстовое описание каждого тестового примера вместе с тестируемым типом данных, а также краткое описание предлагаемых действий программы обработки данных ASN.1. .

Все тесты являются допустимыми вариантами кодирования, то есть все они, так или иначе, могут рано или поздно встретиться в реальной работе программы обработки данных ASN.1. Полный архив со всеми тестами (файлы «tc*.

ber»), файлы CompliXML (см.

ниже), полученные из тестов (файлы «transformed_tc*.

xml»), перекодированные файлы (файлы «encoded_tc*.

ber»), а также краткое описание всех тестов (файл «free_asn1_testsuite.pdf») можно получить по прямой ссылке .

Изначально при составлении приведенных выше тестов я использовал только свой личный опыт и актуальный стандарт кодирования ASN.1. Однако по мере составления полного списка тест-кейсов все чаще возникал вопрос: как должна корректно реагировать программа обработки ASN.1 в каждом конкретном случае и можно ли вообще как-то нормально обработать каждую исключительную ситуацию? Чтобы найти ответ на эти вопросы, мне пришлось создать собственную программу, позволяющую как декодировать ASN.1 BER, так и кодировать те же данные ASN.1 BER. Все исходные коды этой программы я распространяю совершенно бесплатно и каждый волен использовать эти коды по своему усмотрению (почти - программа выпущена под лицензией BSD).

Программа предназначена только для тестирования и информационных целей.

Ниже приведено более подробное описание моего программного продукта.

Программа называется COMPLI (полностью совместимый декодер/кодировщик ASN.1 BER).

Сначала об ограничениях программы:

  1. Программа написана для Windows;
  2. Для работы программы требуется установленный MSXML 6;
  3. Программа предназначена исключительно для ознакомления с принципами кодирования/декодирования типов данных ASN.1, а также для предоставления примера реагирования на нестандартные ситуации, возникающие в процессе кодирования/декодирования;
  4. В программе нет оптимизации исходного кода, что облегчает понимание внутренних процессов программы;
Теперь более подробно об особенностях программы:
  1. Это кодер/декодер самого распространенного формата кодировки ASN.1 — BER (то есть программа также обрабатывает форматы DER и CER);
  2. Программный продукт также позволяет работать с двоичными данными, дополнительно закодированными в формате BASE64, а также с внутренним форматом XML для описания типов ASN.1 (см.

    ниже);

  3. Кодирование и декодирование реализованы для всех типов из последнего стандарта ASN.1:2008;
  4. Кодирование и декодирование для каждого типа удовлетворяет 100% ранее предложенных тестовых случаев для проверки совместимости со стандартом ASN.1;
  5. Программа поставляется в исходном коде, под лицензией, позволяющей использовать ее даже в коммерческих разработках;
  6. Программный код написан на языке C++ с использованием объектной модели программирования;
  7. Код проверен на наличие ошибок и утечек памяти;
  8. Код произвольно расширяем, что позволяет добавлять работу с новыми форматами кодирования ASN.1;
  9. В программе имеется пакетный режим работы с файлами, позволяющий обрабатывать множество входных файлов одновременно, причем один пакет обработки может содержать как операции декодирования для определенного типа, так и операции кодирования.

    Файл конфигурации представлен в формате XML, формат файла конфигурации описан в виде схемы XSD ( ссылка на файл XSD );

  10. Стандартный формат вывода (CompliXML) описывает декодированные типы в XML, что облегчает понимание результатов декодирования, а также дает возможность создавать вторичные отчеты на основе декодированных данных;
  11. Стандартный формат вывода подробно описан в виде XSD-диаграммы ( ссылка на файл XSD );
  12. Стандартный формат вывода описывает каждый отдельный субблок в каждом декодированном типе.

    Например, при декодировании ИДЕНТИФИКАТОРА ОБЪЕКТА в выходном файле создается отдельный блок информации для каждого «подидентификатора», а при декодировании типа REAL создаются отдельные блоки информации для подблоков мантиссы, показателя степени и информации;

  13. Помимо собственно декодированных данных, стандартный формат вывода позволяет описывать предупреждения и ошибки, возникающие при декодировании.

    При этом предупреждения и ошибки могут относиться как ко всему декодируемому файлу, так и к каждому из декодируемых подблоков внутри каждого типа ASN.1;

  14. Для упрощения возможностей кодирования форматы вывода и ввода программы полностью идентичны.

    То есть, декодировав сложный файл (например, сертификат X.509) и получив на выходе XML-файл в формате CompliXML, вы можете передать этот же файл на вход программы и получить закодированный бинарный файл, абсолютно идентичный исходный декодированный файл;

  15. Такая гибкость программы даже позволяет, например, декодировать бинарный файл, изменить в нем тип данных ASN.1 (например, с BMP STRING на PRINTABLE STRING), а затем закодировать новый бинарный файл с новыми, измененными данными.

    типы;

В результате после создания программы КОМПЛИ мне удалось реализовать следующие задачи:
  1. Получите действительный бесплатный кодер/декодер ASN.1 BER;
  2. Получить стенд для тестирования предложенных тест-кейсов кодирования всех типов ASN.1;
  3. Получите максимально подробный и простой формат описания для каждого типа ASN.1;
  4. Получите возможность легко кодировать все типы файлов ASN.1 с использованием XML и формата BER. То есть COMPLI позволяет полностью избавиться от программирования при создании произвольных двоичных файлов ASN.1 BER, предоставляя возможность работать только с текстовыми данными в формате XML;
  5. Показать возможные реакции на все тестовые примеры, которые я предлагаю для кодирования типов ASN.1;
Программа будет продолжать расти и расширяться.

В настоящее время он позволяет кодировать в/из следующих форматов:

  1. BER (DER, CER);
  2. BER дополнительно закодирован в BASE64 (например, сертификаты OpenSSL);
  3. КомплиXML;
  4. Формат XER скоро будет добавлен к этому списку.

Собственно сам набор тестов Источники КОМПЛИ Исполняемый файл COMPLI + схема XSD + файл конфигурации для набора тестов Эта же статья в формате PDF Теги: #Сетевые технологии #asn.1
Вместе с данным постом часто просматривают: