Struct rocket::mtls::oid::OidRegistry

pub struct OidRegistry<'a> { /* private fields */ }
Available on crate feature mtls only.
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§

§

impl<'a> OidRegistry<'a>

pub fn insert<E>(&mut self, oid: Oid<'a>, entry: E) -> Option<OidEntry>where E: Into<OidEntry>,

Insert a new entry

pub fn get(&self, oid: &Oid<'a>) -> Option<&OidEntry>

Returns a reference to the registry entry, if found for this OID.

pub fn keys(&self) -> impl Iterator<Item = &Oid<'a>>

Return an Iterator over references to the OID numbers (registry keys)

pub fn values(&self) -> impl Iterator<Item = &OidEntry>

Return an Iterator over references to the OidEntry values

pub fn iter(&self) -> impl Iterator<Item = (&Oid<'a>, &OidEntry)>

Return an Iterator over references to the (Oid, OidEntry) key/value pairs

pub fn iter_by_sn<S>( &self, sn: S ) -> impl Iterator<Item = (&Oid<'a>, &OidEntry)>where S: Into<String>,

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
}

pub fn with_crypto(self) -> OidRegistry<'a>

Populate registry with common crypto OIDs (encryption, hash algorithms)

pub fn with_all_crypto(self) -> OidRegistry<'a>

Populate registry with all known crypto OIDs (encryption, hash algorithms, PKCS constants, etc.)

§

impl<'a> OidRegistry<'a>

pub fn with_kdf(self) -> OidRegistry<'a>

Load all known OIDs for feature kdf in the registry.

pub fn with_nist_algs(self) -> OidRegistry<'a>

Load all known OIDs for feature nist_algs in the registry.

pub fn with_pkcs1(self) -> OidRegistry<'a>

Load all known OIDs for feature pkcs1 in the registry.

pub fn with_pkcs12(self) -> OidRegistry<'a>

Load all known OIDs for feature pkcs12 in the registry.

pub fn with_pkcs7(self) -> OidRegistry<'a>

Load all known OIDs for feature pkcs7 in the registry.

pub fn with_pkcs9(self) -> OidRegistry<'a>

Load all known OIDs for feature pkcs9 in the registry.

pub fn with_x509(self) -> OidRegistry<'a>

Load all known OIDs for feature x509 in the registry.

pub fn with_x962(self) -> OidRegistry<'a>

Load all known OIDs for feature x962 in the registry.

Trait Implementations§

§

impl<'a> Debug for OidRegistry<'a>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<'a> Default for OidRegistry<'a>

§

fn default() -> OidRegistry<'a>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for OidRegistry<'a>

§

impl<'a> Send for OidRegistry<'a>

§

impl<'a> Sync for OidRegistry<'a>

§

impl<'a> Unpin for OidRegistry<'a>

§

impl<'a> UnwindSafe for OidRegistry<'a>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T> AsTaggedExplicit<'a> for Twhere T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self>

§

impl<'a, T> AsTaggedImplicit<'a> for Twhere T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self>

source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoCollection<T> for T

§

fn into_collection<A>(self) -> SmallVec<A>where A: Array<Item = T>,

Converts self into a collection.
§

fn mapped<U, F, A>(self, f: F) -> SmallVec<A>where F: FnMut(T) -> U, A: Array<Item = U>,

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more