如何用Haskell解析ASN.1?

时间:2012-10-18 18:57:51

标签: haskell asn.1

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

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

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

ASN.1的简要概述:

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

快速搜索Hackage显示

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

听起来可能是相关的。我对ASN.1并不是很了解......