用于Objective-C的BER-TLV开源库

Hel*_*miB 6 objective-c smartcard tlv

我打算从智能卡响应中解析BER-TLV格式来解释数据.

它类似于JACCAL,但在Objective-C或C++中

任何人都可以参考任何开源项目或任何参考来做到这一点?

whu*_*nmr 4

这是一个解码 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://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf /luca.ntop.org/Teaching/Appunti/asn1.html

解码流程是这样的:读入Tag、Length、Value序列。

  • 从标签你会得到

    • 数据类,通常是通用的(标准中预定义的类型,如“布尔”,“序列”...)和上下文特定的(以区分具有相同类型的不同字段)。
    • 原始的(如布尔值和整数)或构造的(通常是序列)。因为构造类型可以包含原始类型或构造类型。也许需要递归解码。
    • 标记编号,确定数据类型(布尔?整数?位串?)
  • 长度:

    • 确定要解码的内容的长度(可能需要递归解码)。
    • 长度有两种形式(短和长)。你最好两者都支持。
  • Value:当前TLV级别读取的实际值。如果这是一个构造数据(如序列),则该值将包含 TLV 的内部级别。

在标准的末尾(http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf)有一个图像显示了多级TLV,也许可以更好地帮助您理解误码率。

阅读标准后,最好的方法是:1)找到一些 GUI 查看器来查看一些 BER 证书文件,以熟悉它。谷歌“ASN.1查看器”即可找到。2)开始查看代码https://github.com/chrisridd/asn1-dump/blob/master/berd.m