【问题标题】:BER-TLV open source library for Objective-CObjective-C 的 BER-TLV 开源库
【发布时间】:2012-11-21 07:03:22
【问题描述】:

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

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

任何人都可以参考任何开源项目或任何参考吗?

【问题讨论】:

  • 我没有在您指出的 JACCAL 中看到任何 BER 解析/编码。 ISO 7816-4 需要极其有限的 BER 解析/编码子集(而且,有趣的是,没有 ASN.1 定义),因此您可能需要创建一些帮助程序类和方法。
  • Botan 似乎有一个小的 BER 解析工具。
  • 我最近通过引用令牌项目来解析来自智能卡的 BER TLV 响应。我最终编写了自己的函数,但严重依赖标记项目进行长度解析。需要注意的是,长度可以占用 1、2、3 或 4 个字节。我现在无法访问我的代码。今晚晚些时候我会尝试发布它,
  • 谢谢!如果我能获得如何做的参考,我可以创建自己的函数。请发帖。
  • 嗨,我想使用第一个库 github.com/chrisridd/asn1-dump 进行 BER-TLV 解码,但我找不到如何使用它的示例。非常感谢您的帮助,谢谢

标签: objective-c smartcard tlv


【解决方案1】:

这是一个解码 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”...) 和上下文特定(以区分具有相同类型的不同字段)。
    • 原始(如布尔和整数)或构造(通常是序列)。 因为构造类型可以包含原始类型或构造类型。 可能需要递归解码。
    • 标签号,确定数据类型(布尔?整数?位串?)
  • 长度:

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

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

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

【讨论】:

  • 嗨,我想使用第一个库 github.com/chrisridd/asn1-dump 进行 BER-TLV 解码,但我找不到如何使用它的示例。非常感谢您的帮助,谢谢
  • 嗨@Sarah,下载github中的代码,并在xcode中打开,构建它,然后运行。您将运行一个应用程序“ASN.1 转储”。使用 File->open 打开 swview.org/sites/swview.org/files/… 中的 *.cer 文件并查看显示的 winodw 以了解扩展的 asn.1 结构。因为 *.cer 文件是 BER 格式。
  • @Sarah,如果您在 Skype 上需要更多帮助,请联系我(id:whunmr)
【解决方案2】:

tlve 怎么样? http://tlve.sourceforge.net/

Apple 的 Tokend 似乎也很有用:http://www.opensource.apple.com/source/Tokend/Tokend-36720/PIV/TLV.cpp

sourceforge 上的 jayacard 是另一个处理此问题的项目,现在似乎已被废弃,但源代码在这里:http://www.codeforge.com/read/7149/tlv.c__html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2011-05-16
    • 1970-01-01
    相关资源
    最近更新 更多