#der #asn-1 #data-structures #data-stream

simple_asn1

一个简单的 DER/ASN.1 编码/解码库

15 个版本

0.6.2 2022 年 6 月 3 日
0.6.1 2021 年 11 月 14 日
0.6.0 2021 年 10 月 20 日
0.5.4 2021 年 6 月 25 日
0.1.0 2017 年 12 月 27 日

#2#asn1

Download history 304657/week @ 2024-03-14 288952/week @ 2024-03-21 317055/week @ 2024-03-28 309055/week @ 2024-04-04 328454/week @ 2024-04-11 323837/week @ 2024-04-18 327647/week @ 2024-04-25 328846/week @ 2024-05-02 329578/week @ 2024-05-09 350817/week @ 2024-05-16 344374/week @ 2024-05-23 373748/week @ 2024-05-30 398903/week @ 2024-06-06 379756/week @ 2024-06-13 360915/week @ 2024-06-20 321073/week @ 2024-06-27

1,544,042 每月下载量
用于 400 软件包(29 个直接使用)

ISC 许可证

59KB
1.5K SLoC

概述

这是一个解析 DER 编码数据的简单库。

特别是,此库自动处理 ASN.1 数据流中的 DER 编码对象的过程。然后,这些令牌可以根据您的格式中的 ASN.1 描述由您的库进行解析。

为了方便起见,我们创建了 traits ToASN1FromASN 来抽象从 ASN.1 令牌流中解码类型的能力。如果您的类型实现了这些 traits 之一,则您的程序或库可以使用方便的函数 der_encodeder_decode 在一个动作中完成所有解析工作。

欢迎提交补丁!


lib.rs:

一个用于 Rust 的小型 ASN.1 解析库。特别是,此库用于将 ASN.1 格式文档的二进制 DER 编码转换为 ASN.1 的核心原语。假设您可以从那里完成所需的所有操作。

此文档的关键项目是 traits ToASN1FromASN1。前者将您的数据类型编码为简单的 ASN.1 结构(ASN1Block)的 Vec。后者反转此过程。

实现 ToASN1 的项目可以与函数 der_encode 一起使用,以提供将数据类型单步编码为二进制 DER 编码的单一步骤。类似地,实现 FromASN 的项目可以使用辅助函数 der_decode 进行单步解码。

您可以根据需要实现一个或两个 traits。如果您都实现了,强烈建议进行编码/解码快速检查属性。

对于需要与二进制表示关联的实际字节的解码方案,我们还提供了 FromASN1WithBody。这可以与原始 ASN1Block 中的偏移信息一起使用,例如验证 X509 文档中的签名。

最后,此库支持 ASN.1 类信息。我不太确定为什么它有用,但就是这样。

请将任何错误报告、补丁和诅咒发送到 GitHub 仓库 https://github.com/acw/simple_asn1

依赖关系

~1.4–2MB
~42K SLoC