我打算从智能卡响应中解析 BER-TLV 格式来解释数据。
它类似于JACCAL,但在 Objective-C 或 C++ 中
任何人都可以参考任何开源项目或任何参考来做到这一点吗?
这是一个解码 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
解码流程是这样的:读取标签、长度、值序列。
从标签你会得到
长度:
值:在当前 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
tlve怎么样?http://tlve.sourceforge.net/
苹果的 Tokend 似乎也很有用:http ://www.opensource.apple.com/source/Tokend/Tokend-36720/PIV/TLV.cpp
sourceforge 上的 jayacard 是另一个处理此问题的项目,现在似乎已被废弃,但来源在这里: http: //www.codeforge.com/read/7149/tlv.c__html