Bug: 194414278

Clone this repo:
  1. 0c9bf2f Restrict visibility to existing users. by Andrew Walbran · 10 weeks ago main master
  2. 17ec61c Migrate to cargo_embargo. am: bc34fb98ea by Andrew Walbran · 4 months ago
  3. bc34fb9 Migrate to cargo_embargo. by Andrew Walbran · 4 months ago
  4. a6f1c79 Move OWNER reference master=>main. am: da6f4f5002 am: da5a206c4e am: 4d961ab885 am: 3dd4f9cabd by Sam Saccone · 8 months ago
  5. 3dd4f9c Move OWNER reference master=>main. am: da6f4f5002 am: da5a206c4e am: 4d961ab885 by Sam Saccone · 8 months ago

License: MIT Apache License 2.0 docs.rs crates.io Github CI Minimum rustc version

OID Registry

This crate is a helper crate, containing a database of OID objects. These objects are intended for use when manipulating ASN.1 grammars and BER/DER encodings, for example.

This crate provides only a simple registry (similar to a HashMap) by default. This object can be used to get names and descriptions from OID.

This crate provides default lists of known OIDs, that can be selected using the build features. By default, the registry has no feature enabled, to avoid embedding a huge database in crates.

It also declares constants for most of these OIDs.

use oid_registry::OidRegistry;

let mut registry = OidRegistry::default()
    .with_crypto() // only if the 'crypto' feature is enabled
;

let e = registry.get(&oid_registry::OID_PKCS1_SHA256WITHRSA);
if let Some(entry) = e {
    // get sn: sha256WithRSAEncryption
    println!("sn: {}", entry.sn());
    // get description: SHA256 with RSA encryption
    println!("description: {}", entry.description());
}

Extending the registry

These provided lists are often incomplete, or may lack some specific OIDs. This is why the registry allows adding new entries after construction:

use oid_registry::{OidEntry, OidRegistry};
use der_parser::oid;

let mut registry = OidRegistry::default();

// entries can be added by creating an OidEntry object:
let entry = OidEntry::new("shortName", "description");
registry.insert(oid!(1.2.3.4), entry);

// when using static strings, a tuple can also be used directly for the entry:
registry.insert(oid!(1.2.3.5), ("shortName", "A description"));

Contributing OIDs

All OID values, constants, and features are derived from files in the assets directory in the build script (see build.rs). See load_file for documentation of the file format.

Rust version requirements

oid-registry requires Rustc version 1.45 or greater, based on proc-macro attributes support.

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.