Struct coins_bip32::ecdsa::signature::digest::const_oid::ObjectIdentifier
pub struct ObjectIdentifier { /* 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§
§impl ObjectIdentifier
impl ObjectIdentifier
pub const fn new_unwrap(s: &str) -> ObjectIdentifier
pub const fn new_unwrap(s: &str) -> ObjectIdentifier
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.
pub const fn new(s: &str) -> Result<ObjectIdentifier, Error>
pub const fn new(s: &str) -> Result<ObjectIdentifier, Error>
Parse an ObjectIdentifier
from the dot-delimited string form.
pub fn from_arcs(
arcs: impl IntoIterator<Item = u32>
) -> Result<ObjectIdentifier, Error>
pub fn from_arcs( arcs: impl IntoIterator<Item = u32> ) -> Result<ObjectIdentifier, Error>
Parse an OID from a slice of Arc
values (i.e. integers).
pub fn from_bytes(ber_bytes: &[u8]) -> Result<ObjectIdentifier, Error>
pub fn from_bytes(ber_bytes: &[u8]) -> Result<ObjectIdentifier, Error>
Parse an OID from from its BER/DER encoding.
pub 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 tag/length, and only contains the value portion of the encoded OID.
pub fn arcs(&self) -> Arcs<'_> ⓘ
pub fn arcs(&self) -> Arcs<'_> ⓘ
Iterate over the arcs (a.k.a. nodes) of an ObjectIdentifier
.
pub fn len(&self) -> usize
pub fn len(&self) -> usize
Get the length of this ObjectIdentifier
in arcs.
pub fn parent(&self) -> Option<ObjectIdentifier>
pub fn parent(&self) -> Option<ObjectIdentifier>
Get the parent OID of this one (if applicable).
pub const fn push_arc(self, arc: u32) -> Result<ObjectIdentifier, Error>
pub const fn push_arc(self, arc: u32) -> Result<ObjectIdentifier, Error>
Push an additional arc onto this OID, returning the child OID.
Trait Implementations§
§impl AsRef<[u8]> for ObjectIdentifier
impl AsRef<[u8]> for ObjectIdentifier
§impl Clone for ObjectIdentifier
impl Clone for ObjectIdentifier
§fn clone(&self) -> ObjectIdentifier
fn clone(&self) -> ObjectIdentifier
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for ObjectIdentifier
impl Debug for ObjectIdentifier
§impl<'a> DecodeValue<'a> for ObjectIdentifier
impl<'a> DecodeValue<'a> for ObjectIdentifier
§fn decode_value<R>(
reader: &mut R,
header: Header
) -> Result<ObjectIdentifier, Error>where
R: Reader<'a>,
fn decode_value<R>( reader: &mut R, header: Header ) -> Result<ObjectIdentifier, Error>where R: Reader<'a>,
Reader
].§impl Display for ObjectIdentifier
impl Display for ObjectIdentifier
§impl EncodeValue for ObjectIdentifier
impl EncodeValue for ObjectIdentifier
§impl FixedTag for ObjectIdentifier
impl FixedTag for ObjectIdentifier
§impl From<&ObjectIdentifier> for ObjectIdentifier
impl From<&ObjectIdentifier> for ObjectIdentifier
§fn from(oid: &ObjectIdentifier) -> ObjectIdentifier
fn from(oid: &ObjectIdentifier) -> ObjectIdentifier
§impl FromStr for ObjectIdentifier
impl FromStr for ObjectIdentifier
§impl Hash for ObjectIdentifier
impl Hash for ObjectIdentifier
§impl Ord for ObjectIdentifier
impl Ord for ObjectIdentifier
§fn cmp(&self, other: &ObjectIdentifier) -> Ordering
fn cmp(&self, other: &ObjectIdentifier) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
§impl PartialEq<ObjectIdentifier> for ObjectIdentifier
impl PartialEq<ObjectIdentifier> for ObjectIdentifier
§fn eq(&self, other: &ObjectIdentifier) -> bool
fn eq(&self, other: &ObjectIdentifier) -> bool
self
and other
values to be equal, and is used
by ==
.§impl PartialOrd<ObjectIdentifier> for ObjectIdentifier
impl PartialOrd<ObjectIdentifier> for ObjectIdentifier
§fn partial_cmp(&self, other: &ObjectIdentifier) -> Option<Ordering>
fn partial_cmp(&self, other: &ObjectIdentifier) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl TryFrom<&[u8]> for ObjectIdentifier
impl TryFrom<&[u8]> for ObjectIdentifier
§impl TryFrom<AnyRef<'_>> for ObjectIdentifier
impl TryFrom<AnyRef<'_>> for ObjectIdentifier
impl Copy for ObjectIdentifier
impl Eq for ObjectIdentifier
impl StructuralEq for ObjectIdentifier
impl StructuralPartialEq for ObjectIdentifier
Auto Trait Implementations§
impl RefUnwindSafe for ObjectIdentifier
impl Send for ObjectIdentifier
impl Sync for ObjectIdentifier
impl Unpin for ObjectIdentifier
impl UnwindSafe for ObjectIdentifier
Blanket Implementations§
§impl<T> Base32Len for Twhere
T: AsRef<[u8]>,
impl<T> Base32Len for Twhere T: AsRef<[u8]>,
§fn base32_len(&self) -> usize
fn base32_len(&self) -> usize
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<'a, T> Choice<'a> for Twhere
T: Decode<'a> + FixedTag,
impl<'a, T> Choice<'a> for Twhere T: Decode<'a> + FixedTag,
§fn can_decode(tag: Tag) -> bool
fn can_decode(tag: Tag) -> bool
Tag
] decodable as a variant of this CHOICE
?§impl<'a, T> Decode<'a> for Twhere
T: DecodeValue<'a> + FixedTag,
impl<'a, T> Decode<'a> for Twhere T: DecodeValue<'a> + FixedTag,
§impl<T> DerOrd for Twhere
T: EncodeValue + ValueOrd + Tagged,
impl<T> DerOrd for Twhere T: EncodeValue + ValueOrd + Tagged,
§impl<T> Encode for Twhere
T: EncodeValue + Tagged,
impl<T> Encode for Twhere T: EncodeValue + Tagged,
§fn encoded_len(&self) -> Result<Length, Error>
fn encoded_len(&self) -> Result<Length, Error>
Compute the length of this value in bytes when encoded as ASN.1 DER.
§fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
Encode this value as ASN.1 DER using the provided [Writer
].
§fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8], Error>
fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8], Error>
§impl<T> Tagged for Twhere
T: FixedTag,
impl<T> Tagged for Twhere T: FixedTag,
source§impl<T> ToHex for Twhere
T: AsRef<[u8]>,
impl<T> ToHex for Twhere T: AsRef<[u8]>,
source§fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex<U>(&self) -> Uwhere U: FromIterator<char>,
self
into the result. Lower case
letters are used (e.g. f9b4ca
)source§fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex_upper<U>(&self) -> Uwhere U: FromIterator<char>,
self
into the result. Upper case
letters are used (e.g. F9B4CA
)