#oid #iso #itu #iec #embedded

无std const-oid

根据ITU X.660定义的ISO/IEC对象标识符(OID)标准,提供友好const实现,支持BER/DER编码/解码以及无堆栈空间no_std(即嵌入式)环境支持

27次发布

0.10.0-rc.02024年7月26日
0.10.0-pre.22024年1月5日
0.10.0-pre.02023年10月8日
0.9.6 2023年12月15日
0.2.0 2020年9月5日

#38 in 编码

Download history 728332/week @ 2024-04-28 732379/week @ 2024-05-05 831734/week @ 2024-05-12 815341/week @ 2024-05-19 798755/week @ 2024-05-26 895420/week @ 2024-06-02 835049/week @ 2024-06-09 802552/week @ 2024-06-16 818185/week @ 2024-06-23 729459/week @ 2024-06-30 844593/week @ 2024-07-07 830944/week @ 2024-07-14 886012/week @ 2024-07-21 887108/week @ 2024-07-28 891723/week @ 2024-08-04 918443/week @ 2024-08-11

3,628,260每月下载量
4,578个crate中使用 (35 直接)

Apache-2.0 OR MIT

300KB
6K SLoC

RustCrypto: 对象标识符 (OID)

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

根据ITU X.660定义的ISO/IEC对象标识符(OID)标准的友好const实现,支持BER/DER编码/解码以及无堆栈空间no_std(即嵌入式)环境。

文档

关于OID

对象标识符,即OID,是国际电信联盟(ITU)和ISO/IEC为任何对象、概念或“事物”提供具有全球唯一持久名称的标准。

ITU的X.660标准提供了OID规范。每个OID都是层次命名空间的一部分,从根OID开始,根OID可以是ITU的根OID(0),ISO的根OID(1)或ISO/ITU的联合根OID(2)。

以下是一个OID的示例,在这种情况下用于标识rsaEncryption算法

1.2.840.113549.1.1.1

更多信息请见:https://en.wikipedia.org/wiki/Object_identifier

实现

此库支持在const上下文中解析OID,例如。

use const_oid::ObjectIdentifier;

pub const MY_OID: ObjectIdentifier = ObjectIdentifier::new_unwrap("1.2.840.113549.1.1.1");

OID解析器完全使用const fn实现,不使用proc宏。

此外,它还包括一个const fn OID序列化器,并将从const上下文中解析的OID使用BER/DER序列化(不带头)存储。

这允许 ObjectIdentifier 实现 AsRef<[u8]>,它可以用来获取 OID 的 BER/DER 序列化,即使是声明为 const 的。

此外,它还实现了 FromStrTryFrom<&[u8]>,并且与运行时的 OID 库一样好用。

最低支持的 Rust 版本

此软件包至少需要 Rust 1.71

我们可能会在未来更改最低支持版本,但将伴随小版本号的增加。

许可证

在以下许可证之一下授权:

任选其一。

贡献

除非您明确声明,否则您提交的任何旨在包含在作品中的贡献(根据 Apache-2.0 许可证定义),将按上述方式双重许可,不附加任何额外的条款或条件。

依赖项

~130KB