Crate oid_registry

Source
Expand description

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 asn1_rs::oid;
use oid_registry::{OidEntry, OidRegistry};

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"));

§Versions and compatibility with asn1-rs

Versions of oid-registry must be chosen specifically, to depend on a precise version of asn1-rs. The following table summarizes the matching versions:

  • oid-registry 0.7.x depends on asn1-rs 0.6.0
  • oid-registry 0.6.x depends on asn1-rs 0.5.0
  • oid-registry 0.5.x depends on asn1-rs 0.4.0

§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.

Re-exports§

pub use asn1_rs;

Structs§

LoadedEntry
Temporary structure, created when reading a file containing OID declarations
Oid
Object ID (OID) representation which can be relative or non-relative.
OidEntry
An entry stored in the OID registry
OidRegistry
Registry of known OIDs

Constants§

MS_CTL
1.3.6.1.4.1.311.10.1
MS_JURISDICTION_COUNTRY
1.3.6.1.4.1.311.60.2.1.3
MS_JURISDICTION_LOCALITY
1.3.6.1.4.1.311.60.2.1.1
MS_JURISDICTION_STATE_OR_PROVINCE
1.3.6.1.4.1.311.60.2.1.2
OID_CT_LIST_SCT
1.3.6.1.4.1.11129.2.4.2
OID_DOMAIN_COMPONENT
0.9.2342.19200300.100.1.25
OID_EC_P256
1.2.840.10045.3.1.7
OID_GOST_R3410_2001
1.2.643.2.2.19
OID_HASH_SHA1
1.3.14.3.2.26
OID_KDF_SHA1_SINGLE
1.3.133.16.840.63.0.2
OID_KEY_TYPE_DSA
1.2.840.10040.4.1
OID_KEY_TYPE_EC_PUBLIC_KEY
1.2.840.10045.2.1
OID_KEY_TYPE_GOST_R3410_2012_256
1.2.643.7.1.1.1.1
OID_KEY_TYPE_GOST_R3410_2012_512
1.2.643.7.1.1.1.2
OID_MD5_WITH_RSA
1.3.14.3.2.25
OID_NIST_EC_P384
1.3.132.0.34
OID_NIST_EC_P521
1.3.132.0.35
OID_NIST_ENC_AES256_CBC
2.16.840.1.101.3.4.1.42
OID_NIST_HASH_SHA256
2.16.840.1.101.3.4.2.1
OID_NIST_HASH_SHA384
2.16.840.1.101.3.4.2.2
OID_NIST_HASH_SHA512
2.16.840.1.101.3.4.2.3
OID_PKCS1_MD2WITHRSAENC
1.2.840.113549.1.1.2
OID_PKCS1_MD4WITHRSAENC
1.2.840.113549.1.1.3
OID_PKCS1_MD5WITHRSAENC
1.2.840.113549.1.1.4
OID_PKCS1_RSAENCRYPTION
1.2.840.113549.1.1.1
OID_PKCS1_RSASSAPSS
1.2.840.113549.1.1.10
OID_PKCS1_SHA1WITHRSA
1.2.840.113549.1.1.5
OID_PKCS1_SHA224WITHRSA
1.2.840.113549.1.1.14
OID_PKCS1_SHA256WITHRSA
1.2.840.113549.1.1.11
OID_PKCS1_SHA384WITHRSA
1.2.840.113549.1.1.12
OID_PKCS1_SHA512WITHRSA
1.2.840.113549.1.1.13
OID_PKCS7_ID_DATA
1.2.840.113549.1.7.1
OID_PKCS7_ID_DIGESTED_DATA
1.2.840.113549.1.7.5
OID_PKCS7_ID_ENCRYPTED_DATA
1.2.840.113549.1.7.6
OID_PKCS7_ID_ENVELOPED_DATA
1.2.840.113549.1.7.3
OID_PKCS7_ID_SIGNED_DATA
1.2.840.113549.1.7.2
OID_PKCS7_ID_SIGNED_ENVELOPED_DATA
1.2.840.113549.1.7.4
OID_PKCS9_CHALLENGE_PASSWORD
1.2.840.113549.1.9.7
OID_PKCS9_CONTENT_TYPE
1.2.840.113549.1.9.3
OID_PKCS9_EMAIL_ADDRESS
1.2.840.113549.1.9.1
OID_PKCS9_EXTENSION_REQUEST
1.2.840.113549.1.9.14
OID_PKCS9_FRIENDLY_NAME
1.2.840.113549.1.9.20
OID_PKCS9_ID_MESSAGE_DIGEST
1.2.840.113549.1.9.4
OID_PKCS9_SIGNING_TIME
1.2.840.113549.1.9.5
OID_PKCS9_SMIME_CAPABILITIES
1.2.840.113549.1.9.15
OID_PKCS9_UNSTRUCTURED_NAME
1.2.840.113549.1.9.2
OID_PKCS12
1.2.840.113549.1.12
OID_PKCS12_PBEIDS
1.2.840.113549.1.12.1
OID_PKCS12_PBE_SHA1_2K_3DES_CBC
1.2.840.113549.1.12.1.4
OID_PKCS12_PBE_SHA1_3K_3DES_CBC
1.2.840.113549.1.12.1.3
OID_PKCS12_PBE_SHA1_40RC4
1.2.840.113549.1.12.1.2
OID_PKCS12_PBE_SHA1_40RC2_CBC
1.2.840.113549.1.12.1.6
OID_PKCS12_PBE_SHA1_128RC4
1.2.840.113549.1.12.1.1
OID_PKCS12_PBE_SHA1_128RC2_CBC
1.2.840.113549.1.12.1.5
OID_PKIX_ACCESS_DESCRIPTOR_CA_ISSUERS
1.3.6.1.5.5.7.48.2
OID_PKIX_ACCESS_DESCRIPTOR_CA_REPOSITORY
1.3.6.1.5.5.7.48.5
OID_PKIX_ACCESS_DESCRIPTOR_CMC
1.3.6.1.5.5.7.48.12
OID_PKIX_ACCESS_DESCRIPTOR_DVCS
1.3.6.1.5.5.7.48.4
OID_PKIX_ACCESS_DESCRIPTOR_HTTP_CERTS
1.3.6.1.5.5.7.48.6
OID_PKIX_ACCESS_DESCRIPTOR_HTTP_CRLS
1.3.6.1.5.5.7.48.7
OID_PKIX_ACCESS_DESCRIPTOR_OCSP
1.3.6.1.5.5.7.48.1
OID_PKIX_ACCESS_DESCRIPTOR_RPKI_MANIFEST
1.3.6.1.5.5.7.48.10
OID_PKIX_ACCESS_DESCRIPTOR_RPKI_NOTIFY
1.3.6.1.5.5.7.48.13
OID_PKIX_ACCESS_DESCRIPTOR_SIGNED_OBJECT
1.3.6.1.5.5.7.48.11
OID_PKIX_ACCESS_DESCRIPTOR_STIRTNLIST
1.3.6.1.5.5.7.48.14
OID_PKIX_ACCESS_DESCRIPTOR_TIMESTAMPING
1.3.6.1.5.5.7.48.3
OID_PKIX_AUTHORITY_INFO_ACCESS
1.3.6.1.5.5.7.1.1
OID_PKIX_SUBJECT_INFO_ACCESS
1.3.6.1.5.5.7.1.11
OID_SHA1_WITH_RSA
1.3.14.3.2.29
OID_SIG_DSA_WITH_SHA1
1.2.840.10040.4.3
OID_SIG_ECDSA_WITH_SHA224
1.2.840.10045.4.3.1
OID_SIG_ECDSA_WITH_SHA256
1.2.840.10045.4.3.2
OID_SIG_ECDSA_WITH_SHA384
1.2.840.10045.4.3.3
OID_SIG_ECDSA_WITH_SHA512
1.2.840.10045.4.3.4
OID_SIG_ED448
1.3.101.113
OID_SIG_ED25519
1.3.101.112
OID_SIG_GOST_R3410_2012_256
1.2.643.7.1.1.3.2
OID_SIG_GOST_R3410_2012_512
1.2.643.7.1.1.3.3
OID_SIG_GOST_R3411_94_WITH_R3410_2001
1.2.643.2.2.3
OID_SIG_RSA_RIPE_MD160
1.3.36.3.3.1.2
OID_USERID
0.9.2342.19200300.100.1.1
OID_X500
2.5
OID_X509
2.5.4
OID_X509_ALIASED_ENTRY_NAME
2.5.4.1
OID_X509_BUSINESS_CATEGORY
2.5.4.15
OID_X509_COMMON_NAME
2.5.4.3
OID_X509_COUNTRY_NAME
2.5.4.6
OID_X509_DESCRIPTION
2.5.4.13
OID_X509_DN_QUALIFIER
2.5.4.46
OID_X509_EXT_AUTHORITY_KEY_IDENTIFIER
2.5.29.35
OID_X509_EXT_BASE_URL
2.16.840.1.113730.1.2
OID_X509_EXT_BASIC_CONSTRAINTS
2.5.29.19
OID_X509_EXT_CA_CERT_URL
2.16.840.1.113730.1.6
OID_X509_EXT_CA_CRL_URL
2.16.840.1.113730.1.5
OID_X509_EXT_CA_POLICY_URL
2.16.840.1.113730.1.8
OID_X509_EXT_CA_REVOCATION_URL
2.16.840.1.113730.1.4
OID_X509_EXT_CERTIFICATE_POLICIES
2.5.29.32
OID_X509_EXT_CERT_COMMENT
2.16.840.1.113730.1.13
OID_X509_EXT_CERT_TYPE
2.16.840.1.113730.1.1
OID_X509_EXT_CRL_DISTRIBUTION_POINTS
2.5.29.31
OID_X509_EXT_CRL_NUMBER
2.5.29.20
OID_X509_EXT_DELTA_CRL_INDICATOR
2.5.29.27
OID_X509_EXT_ENTITY_LOGO
2.16.840.1.113730.1.10
OID_X509_EXT_EXTENDED_KEY_USAGE
2.5.29.37
OID_X509_EXT_FRESHEST_CRL
2.5.29.46
OID_X509_EXT_HOLD_INSTRUCTION_CODE
2.5.29.23
OID_X509_EXT_HOMEPAGE_URL
2.16.840.1.113730.1.9
OID_X509_EXT_INHIBITANT_ANY_POLICYDeprecated
X509v3 Inhibit Any-policy
OID_X509_EXT_INHIBIT_ANY_POLICY
2.5.29.54
OID_X509_EXT_INVALIDITY_DATE
2.5.29.24
OID_X509_EXT_ISSUER
2.5.29.29
OID_X509_EXT_ISSUER_ALT_NAME
2.5.29.18
OID_X509_EXT_ISSUER_DISTRIBUTION_POINT
2.5.29.28
OID_X509_EXT_KEY_USAGE
2.5.29.15
OID_X509_EXT_NAME_CONSTRAINTS
2.5.29.30
OID_X509_EXT_POLICY_CONSTRAINTS
2.5.29.36
OID_X509_EXT_POLICY_MAPPINGS
2.5.29.33
OID_X509_EXT_PRIVATE_KEY_USAGE_PERIOD
2.5.29.16
OID_X509_EXT_REASON_CODE
2.5.29.21
OID_X509_EXT_RENEWAL_URL
2.16.840.1.113730.1.7
OID_X509_EXT_REVOCATION_URL
2.16.840.1.113730.1.3
OID_X509_EXT_SSL_SERVER_NAME
2.16.840.1.113730.1.12
OID_X509_EXT_SUBJECT_ALT_NAME
2.5.29.17
OID_X509_EXT_SUBJECT_KEY_IDENTIFIER
2.5.29.14
OID_X509_EXT_USER_PICTURE
2.16.840.1.113730.1.11
OID_X509_GENERATION_QUALIFIER
2.5.4.44
OID_X509_GIVEN_NAME
2.5.4.42
OID_X509_INITIALS
2.5.4.43
OID_X509_KNOWLEDGE_INFORMATION
2.5.4.2
OID_X509_LOCALITY_NAME
2.5.4.7
OID_X509_NAME
2.5.4.41
OID_X509_OBJECT_CLASS
2.5.4.0
OID_X509_OBSOLETE_AUTHORITY_KEY_IDENTIFIER
2.5.29.1
OID_X509_OBSOLETE_CERTIFICATE_POLICIES
2.5.29.3
OID_X509_OBSOLETE_ISSUER_ALT_NAME
2.5.29.8
OID_X509_OBSOLETE_KEY_ATTRIBUTES
2.5.29.2
OID_X509_OBSOLETE_KEY_USAGE
2.5.29.4
OID_X509_OBSOLETE_POLICY_MAPPING
2.5.29.5
OID_X509_OBSOLETE_SUBJECT_ALT_NAME
2.5.29.7
OID_X509_OBSOLETE_SUBTREES_CONSTRAINT
2.5.29.6
OID_X509_ORGANIZATIONAL_UNIT
2.5.4.11
OID_X509_ORGANIZATION_NAME
2.5.4.10
OID_X509_POSTAL_ADDRESS
2.5.4.16
OID_X509_POSTAL_CODE
2.5.4.17
OID_X509_SEARCH_GUIDE
2.5.4.14
OID_X509_SERIALNUMBER
2.5.4.5
OID_X509_STATE_OR_PROVINCE_NAME
2.5.4.8
OID_X509_STREET_ADDRESS
2.5.4.9
OID_X509_SURNAME
2.5.4.4
OID_X509_TITLE
2.5.4.12
OID_X509_UNIQUE_IDENTIFIER
2.5.4.45
SPC_INDIRECT_DATA_OBJID
1.3.6.1.4.1.311.2.1.4
SPC_INDIVIDUAL_SP_KEY_PURPOSE_OBJID
1.3.6.1.4.1.311.2.1.21
SPC_PE_IMAGE_DATA
1.3.6.1.4.1.311.2.1.15
SPC_SP_OPUS_INFO_OBJID
1.3.6.1.4.1.311.2.1.12
SPC_STATEMENT_TYPE_OBJID
1.3.6.1.4.1.311.2.1.11

Functions§

format_oid
Format a OID to a String, using the provided registry to get the short name if present.
generate_file
Generate a file containing a with_<feat> method for OidRegistry
load_file
Load a file to an OID description map

Type Aliases§

LoadedMap
Temporary structure, created when reading a file containing OID declarations