Компиляция сложной (со многими ссылками) схемы ASN — Формат запроса сертификата (RFC4211)

То, что я хочу сделать, — это иметь собственную подпрограмму (предпочтительно CPP), которая может создавать сообщение запроса сертификата, как в RFC4211.

Я понимаю, что способ сделать это в первую очередь получить описание модуля ASN, а затем скомпилировать его, чтобы получить код, который я могу использовать для создания объекта нужного мне типа (в данном случае CertReqMessage). Тогда я могу закодировать это, используя BER или XER или что-то еще …

Поэтому я сначала настроил сбор всех необходимых модулей ASN, и список содержит много RFCS — RFC4211, RFC5280, RFC5652, RFC5755 и, возможно, еще один, который мне не хватает сейчас. Я извлек их из RFC, а затем попытался скомпилировать их, но я не могу скомпилировать все файлы (я использую этот компилятор http://lionet.info/asn1c/compiler.html ). RFcs «самого низкого уровня» (чтобы не импортировать из других) работают, но когда я добавляю другие RFC в список компиляции, в какой-то момент (обычно при добавлении последнего) я получаю сообщение, что один или два из внешнего Модули не найдены, даже если они находятся в списке аргументов как файлы для компиляции. Я также получаю сообщения о столкновениях выражений между модулями ASN …

Я попытался поместить все модули в один файл и использовал этот компилятор: http://asn1-playground.oss.com/ и казалось, что он работает (с некоторыми предупреждениями), но я не могу получить код, используя этот онлайн.

Я не уверен, что не так — есть проблема с этим компилятором asn1c (v0.9.27), или есть некоторые шаги, которые я должен сделать, что я не сделал? Нужно ли вручную исправлять все эти конфликты самостоятельно и при импорте или как?

Или есть какой-то лучший компилятор, который я могу использовать?

Спасибо за любую помощь!

0

Решение

Список инструментов ASN.1 доступен по адресу http://www.itu.int/en/ITU-T/asn1/Pages/Tools.aspx. Если вы ищете открытый исходный код, вы можете рассмотреть компилятор Objective Systems с библиотекой ooberrt (см. http://www.obj-sys.com/products/opensource/index.php) как альтернатива льонету.

0

Другие решения

Если кто-то заинтересован или имеет такую ​​же проблему —

Я нашел «решение» с помощью API BouncyCastle (1.49-1.52) в Java. Библиотека включает в себя конкретные реализации контейнера CMS и CRMF и так далее, в которых я нуждался, и я смог найти несколько (хотя и не очень подробных) примеров приложений, из которых я мог бы создавать нужные мне сообщения.

Если вам это нужно в C #, имейте в виду, что реализация bouncycastle в C # не поддерживается так же, как и в java, и есть разница в API. Есть некоторые инструменты, которые позволяют вам «портировать» библиотеку с Java на C #, поэтому у вас самая последняя версия.

Я до сих пор не смог полностью скомпилировать всю схему самостоятельно … просто нашел способ обойти это.

Возможно, ответ может помочь кому-то еще нуждающемуся.

0

По вопросам рекламы [email protected]