【问题标题】:How to parse ASN.1 with Haskell?如何用 Haskell 解析 ASN.1?
【发布时间】:2012-10-09 08:00:34
【问题描述】:

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

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

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

ASN.1 的简​​要概述:

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

【问题讨论】:

    标签: haskell asn.1


    【解决方案1】:

    快速搜索 Hackage 即可发现

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

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

    【讨论】:

      【解决方案2】:

      您可以使用 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多