BER-TLV библиотека с открытым исходным кодом для Objective-C

Я намерен проанализировать формат BER-TLV из ответа смарт-карты, чтобы интерпретировать данные.

это похоже на JACCAL, но в Objective-C или C++

Может ли кто-нибудь дать ссылку на какой-либо проект с открытым исходным кодом или ссылку для этого?

2 ответа

Решение

Вот проект, декодирующий формат ASN.1 BER. https://github.com/chrisridd/asn1-dump/

Основная логика находится в этом файле: https://github.com/chrisridd/asn1-dump/blob/master/berd.m

И если у вас будет достаточно времени, не сложно написать собственный декодер после прочтения стандарта: http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf http: / /luca.ntop.org/Teaching/Appunti/asn1.html

Поток декодирования выглядит следующим образом: читайте в последовательности Tag, Length, Value.

  • Из тега вы получите

    • Класс данных, как правило, универсальный (предопределенный тип в стандарте, такой как "Boolean","Sequence"...) и специфичный для контекста (чтобы различать различные поля с одинаковым типом).
    • Примитивный (как логическое и целое) или Конструктивный (обычно это последовательность). потому что сконструированный тип может содержать примитивный или сконструированный тип. возможно, нужно рекурсивное декодирование.
    • Номер тега, определить типы данных (логическое "целое число" bitstring ")
  • Длина:

    • определить длину содержимого для декодирования (возможно, потребуется рекурсивное декодирование).
    • Длина имеет две формы (короткая и длинная). вам лучше поддержать оба.
  • Значение: реальное значение для чтения в текущем уровне TLV. если это построенные данные (например, последовательность), значение будет содержать внутренний уровень TLV.

В конце стандарта (http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf) есть изображение, показывающее многоуровневый TLV, может быть, может лучше помочь вам понять BER.

После того, как вы прочитали стандарты, лучше всего: 1) найти программу просмотра GUI, чтобы посмотреть файл сертификата BER и ознакомиться с ним. Google "ASN.1 просмотра", чтобы найти. 2) начинай смотреть код https://github.com/chrisridd/asn1-dump/blob/master/berd.m

Как насчет ТЛВЭ? http://tlve.sourceforge.net/

Apple Token тоже кажется полезным: http://www.opensource.apple.com/source/Tokend/Tokend-36720/PIV/TLV.cpp

jayacard на sourceforge - еще один проект, который занимался этим, сейчас кажется заброшенным, но источник здесь: http://www.codeforge.com/read/7149/tlv.c__html

Другие вопросы по тегам