Struct oid_registry::OidRegistry
source · pub struct OidRegistry<'a> { /* private fields */ }
Expand description
Registry of known OIDs
Use OidRegistry::default()
to create an empty registry. If the corresponding features have
been selected, the with_xxx()
methods can be used to add sets of known objets to the
database.
§Example
use asn1_rs::{oid, Oid};
use oid_registry::{OidEntry, OidRegistry};
let mut registry = OidRegistry::default()
.with_crypto() // only if the 'crypto' feature is enabled
;
// 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"));
// To query an entry, use the `get` method:
const OID_1234: Oid<'static> = oid!(1.2.3.4);
let e = registry.get(&OID_1234);
assert!(e.is_some());
if let Some(e) = e {
assert_eq!(e.sn(), "shortName");
}
Implementations§
source§impl<'a> OidRegistry<'a>
impl<'a> OidRegistry<'a>
sourcepub fn get(&self, oid: &Oid<'a>) -> Option<&OidEntry>
pub fn get(&self, oid: &Oid<'a>) -> Option<&OidEntry>
Returns a reference to the registry entry, if found for this OID.
sourcepub fn keys(&self) -> impl Iterator<Item = &Oid<'a>>
pub fn keys(&self) -> impl Iterator<Item = &Oid<'a>>
Return an Iterator over references to the OID numbers (registry keys)
sourcepub fn values(&self) -> impl Iterator<Item = &OidEntry>
pub fn values(&self) -> impl Iterator<Item = &OidEntry>
Return an Iterator over references to the OidEntry
values
sourcepub fn iter(&self) -> impl Iterator<Item = (&Oid<'a>, &OidEntry)>
pub fn iter(&self) -> impl Iterator<Item = (&Oid<'a>, &OidEntry)>
Return an Iterator over references to the (Oid, OidEntry)
key/value pairs
sourcepub fn iter_by_sn<S: Into<String>>(
&self,
sn: S,
) -> impl Iterator<Item = (&Oid<'a>, &OidEntry)>
pub fn iter_by_sn<S: Into<String>>( &self, sn: S, ) -> impl Iterator<Item = (&Oid<'a>, &OidEntry)>
Return the (Oid, OidEntry)
key/value pairs, matching a short name
The registry should not contain entries with same short name to avoid ambiguity, but it is not mandatory.
This function returns an iterator over the key/value pairs. In most cases, it will have 0 (not found) or 1 item, but can contain more if there are multiple definitions.
// iterate all entries matching "shortName"
for (oid, entry) in registry.iter_by_sn("shortName") {
// do something
}
// if you are *sure* that there is at most one entry:
let opt_sn = registry.iter_by_sn("shortName").next();
if let Some((oid, entry)) = opt_sn {
// do something
}
sourcepub fn with_crypto(self) -> Self
pub fn with_crypto(self) -> Self
Populate registry with common crypto OIDs (encryption, hash algorithms)
sourcepub fn with_all_crypto(self) -> Self
pub fn with_all_crypto(self) -> Self
Populate registry with all known crypto OIDs (encryption, hash algorithms, PKCS constants, etc.)
source§impl<'a> OidRegistry<'a>
impl<'a> OidRegistry<'a>
sourcepub fn with_nist_algs(self) -> Self
pub fn with_nist_algs(self) -> Self
Load all known OIDs for feature nist_algs
in the registry.
sourcepub fn with_pkcs1(self) -> Self
pub fn with_pkcs1(self) -> Self
Load all known OIDs for feature pkcs1
in the registry.
sourcepub fn with_pkcs12(self) -> Self
pub fn with_pkcs12(self) -> Self
Load all known OIDs for feature pkcs12
in the registry.
sourcepub fn with_pkcs7(self) -> Self
pub fn with_pkcs7(self) -> Self
Load all known OIDs for feature pkcs7
in the registry.
sourcepub fn with_pkcs9(self) -> Self
pub fn with_pkcs9(self) -> Self
Load all known OIDs for feature pkcs9
in the registry.