pub struct ObjectIdentifier<const MAX_SIZE: usize = DEFAULT_MAX_SIZE> { /* private fields */ }
Expand description
Object identifier (OID).
OIDs are hierarchical structures consisting of “arcs”, i.e. integer identifiers.
§Validity
In order for an OID to be considered valid by this library, it must meet the following criteria:
- The OID MUST have at least 3 arcs
- The first arc MUST be within the range 0-2
- The second arc MUST be within the range 0-39
- The BER/DER encoding of the OID MUST be shorter than
ObjectIdentifier::MAX_SIZE
Implementations§
Source§impl ObjectIdentifier
impl ObjectIdentifier
Sourcepub const fn new_unwrap(s: &str) -> Self
pub const fn new_unwrap(s: &str) -> Self
Parse an ObjectIdentifier
from the dot-delimited string form,
panicking on parse errors.
This function exists as a workaround for unwrap
not yet being
stable in const fn
contexts, and is intended to allow the result to
be bound to a constant value:
use const_oid::ObjectIdentifier;
pub const MY_OID: ObjectIdentifier = ObjectIdentifier::new_unwrap("1.2.840.113549.1.1.1");
In future versions of Rust it should be possible to replace this with
ObjectIdentifier::new(...).unwrap()
.
Use ObjectIdentifier::new
for fallible parsing.
Sourcepub const fn new(s: &str) -> Result<Self>
pub const fn new(s: &str) -> Result<Self>
Parse an ObjectIdentifier
from the dot-delimited string form.
Sourcepub fn from_arcs(arcs: impl IntoIterator<Item = Arc>) -> Result<Self>
pub fn from_arcs(arcs: impl IntoIterator<Item = Arc>) -> Result<Self>
Parse an OID from a slice of Arc
values (i.e. integers).
Sourcepub fn from_bytes(ber_bytes: &[u8]) -> Result<Self>
pub fn from_bytes(ber_bytes: &[u8]) -> Result<Self>
Parse an OID from from its BER/DER encoding.
Source§impl<const MAX_SIZE: usize> ObjectIdentifier<MAX_SIZE>
impl<const MAX_SIZE: usize> ObjectIdentifier<MAX_SIZE>
Sourcepub const fn as_bytes(&self) -> &[u8] ⓘ
pub const fn as_bytes(&self) -> &[u8] ⓘ
Get the BER/DER serialization of this OID as bytes.
Note that this encoding omits the ASN.1 tag/length, and only contains the value portion of the encoded OID.
Sourcepub const fn as_oid_ref(&self) -> &ObjectIdentifierRef
pub const fn as_oid_ref(&self) -> &ObjectIdentifierRef
Borrow an ObjectIdentifierRef
which corresponds to this ObjectIdentifier
.
Sourcepub const fn push_arc(self, arc: Arc) -> Result<Self>
pub const fn push_arc(self, arc: Arc) -> Result<Self>
Push an additional arc onto this OID, returning the child OID.
Sourcepub const fn starts_with<const SIZE: usize>(
&self,
other: ObjectIdentifier<SIZE>,
) -> bool
pub const fn starts_with<const SIZE: usize>( &self, other: ObjectIdentifier<SIZE>, ) -> bool
Does this OID start with the other OID?
Methods from Deref<Target = ObjectIdentifierRef>§
Sourcepub fn as_bytes(&self) -> &[u8] ⓘ
pub fn as_bytes(&self) -> &[u8] ⓘ
Get the BER/DER serialization of this OID as bytes.
Note that this encoding omits the ASN.1 tag/length, and only contains the value portion of the encoded OID.
Sourcepub fn arc(&self, index: usize) -> Option<Arc>
pub fn arc(&self, index: usize) -> Option<Arc>
Return the arc with the given index, if it exists.
Sourcepub fn arcs(&self) -> Arcs<'_> ⓘ
pub fn arcs(&self) -> Arcs<'_> ⓘ
Iterate over the arcs (a.k.a. nodes) of an ObjectIdentifier
.
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Get the length of this ObjectIdentifier
in arcs.
Trait Implementations§
Source§impl<'a> Arbitrary<'a> for ObjectIdentifier
Available on crate feature arbitrary
only.
impl<'a> Arbitrary<'a> for ObjectIdentifier
arbitrary
only.Source§fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
fn arbitrary(u: &mut Unstructured<'a>) -> Result<Self>
Self
from the given unstructured data. Read moreSource§fn size_hint(depth: usize) -> (usize, Option<usize>)
fn size_hint(depth: usize) -> (usize, Option<usize>)
Unstructured
this type
needs to construct itself. Read moreSource§fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
Self
from the entirety of the given
unstructured data. Read moreSource§fn try_size_hint(
depth: usize,
) -> Result<(usize, Option<usize>), MaxRecursionReached>
fn try_size_hint( depth: usize, ) -> Result<(usize, Option<usize>), MaxRecursionReached>
Unstructured
this type
needs to construct itself. Read moreSource§impl<const MAX_SIZE: usize> AsRef<ObjectIdentifierRef> for ObjectIdentifier<MAX_SIZE>
impl<const MAX_SIZE: usize> AsRef<ObjectIdentifierRef> for ObjectIdentifier<MAX_SIZE>
Source§fn as_ref(&self) -> &ObjectIdentifierRef
fn as_ref(&self) -> &ObjectIdentifierRef
Source§impl<const MAX_SIZE: usize> Borrow<ObjectIdentifierRef> for ObjectIdentifier<MAX_SIZE>
impl<const MAX_SIZE: usize> Borrow<ObjectIdentifierRef> for ObjectIdentifier<MAX_SIZE>
Source§fn borrow(&self) -> &ObjectIdentifierRef
fn borrow(&self) -> &ObjectIdentifierRef
Source§impl<const MAX_SIZE: usize> Clone for ObjectIdentifier<MAX_SIZE>
impl<const MAX_SIZE: usize> Clone for ObjectIdentifier<MAX_SIZE>
Source§fn clone(&self) -> ObjectIdentifier<MAX_SIZE>
fn clone(&self) -> ObjectIdentifier<MAX_SIZE>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more