#iso #itu #oid #iec

no-std const-oid

Const-friendly implementation of the ISO/IEC Object Identifier (OID) standard as defined in ITU X.660, with support for BER/DER encoding/decoding as well as heapless no_std (i.e. embedded) support

17 releases (8 breaking)

Uses new Rust 2021

0.9.0 Mar 12, 2022
0.7.1 Nov 30, 2021
0.6.0 Jun 3, 2021
0.5.0 Mar 21, 2021
0.2.0 Sep 5, 2020

#42 in Data structures

Download history 123415/week @ 2022-06-09 140419/week @ 2022-06-16 166841/week @ 2022-06-23 169285/week @ 2022-06-30 177223/week @ 2022-07-07 191743/week @ 2022-07-14 157827/week @ 2022-07-21 165745/week @ 2022-07-28 157570/week @ 2022-08-04 153036/week @ 2022-08-11 152423/week @ 2022-08-18 166895/week @ 2022-08-25 163991/week @ 2022-09-01 163438/week @ 2022-09-08 187255/week @ 2022-09-15 151476/week @ 2022-09-22

697,963 downloads per month
Used in 828 crates (7 directly)

Apache-2.0 OR MIT

240KB
4.5K SLoC

RustCrypto: Object Identifiers (OIDs)

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

Const-friendly implementation of the ISO/IEC Object Identifier (OID) standard as defined in ITU X.660, with support for BER/DER encoding/decoding as well as heapless no_std (i.e. embedded) environments.

Documentation

About OIDs

Object Identifiers, a.k.a. OIDs, are an International Telecommunications Union (ITU) and ISO/IEC standard for naming any object, concept, or "thing" with a globally unambiguous persistent name.

The ITU's X.660 standard provides the OID specification. Every OID is part of a hierarchical namespace which begins with a root OID, which is either the ITU's root OID (0), the ISO's root OID (1), or the joint ISO/ITU root OID (2).

The following is an example of an OID, in this case identifying the rsaEncryption algorithm:

1.2.840.113549.1.1.1

For more information, see: https://en.wikipedia.org/wiki/Object_identifier

Implementation

This library supports parsing OIDs in const contexts, e.g.:

use const_oid::ObjectIdentifier;

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

The OID parser is implemented entirely in terms of const fn and without the use of proc macros.

Additionally, it also includes a const fn OID serializer, and stores the OIDs parsed from const contexts encoded using the BER/DER serialization (sans header).

This allows ObjectIdentifier to impl AsRef<[u8]> which can be used to obtain the BER/DER serialization of an OID, even one declared const.

Additionally, it impls FromStr and TryFrom<&[u8]> and functions just as well as a runtime OID library.

Minimum Supported Rust Version

This crate requires Rust 1.57 at a minimum.

We may change the MSRV in the future, but it will be accompanied by a minor version bump.

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps