5

如何使用 Haskell 解析 ASN.1 输入?

是否有能够为给定的 ASN.1 描述文件生成代数数据类型声明和解析器代码的生成器?

(例如用于生成 C 代码的asn1c ...)

快速总结 ASN.1 的内容:

ASN.1 类似于 Google Protocol Buffers,但开发得更早,它是一个实际的标准。基本上,ASN.1 定义了几种用于序列化分层结构化数据的方法和用于定义描述结构的语法的语法。这样的语法可用于自动生成解析器和数据结构以构建语法树。

4

2 回答 2

3

您可以使用asn1-encoding包解码二进制 ASN.1 ,您可以使用模式匹配手动解析它,也可以使用asn1-parse包。

例如,以下帮助函数将 BER 二进制文件解码为ASN1列表:

import Data.ASN1.Encoding
import Data.ASN1.BinaryEncoding
import Data.ASN1.Types
import qualified Data.ByteString as B

decodeASN1File file = decodeASN1' BER `fmap` B.readFile file
于 2013-12-29T05:10:10.127 回答
2

对 Hackage 的快速搜索显示

http://hackage.haskell.org/package/language-asn1-0.2.1

这听起来可能是相关的。我对ASN.1真的不太了解...

于 2012-10-18T19:11:40.193 回答