Oid

Struct Oid 

pub struct Oid<'a> { /* private fields */ }
Available on crate feature crypto only.
Expand description

Object ID (OID) representation which can be relative or non-relative.

An example for an OID in string representation is "1.2.840.113549.1.1.5".

For non-relative OIDs restrictions apply to the first two components.

This library contains a procedural macro oid which can be used to create oids. For example oid!(1.2.44.233) or oid!(rel 44.233) for relative oids. See the module documentation for more information.

Implementations§

§

impl<'a> Oid<'a>

pub const fn new(asn1: Cow<'a, [u8]>) -> Oid<'a>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Create an OID from the ASN.1 DER encoded form. See the module documentation for other ways to create oids.

pub const fn new_relative(asn1: Cow<'a, [u8]>) -> Oid<'a>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Create a relative OID from the ASN.1 DER encoded form. See the module documentation for other ways to create relative oids.

pub fn from(s: &[u64]) -> Result<Oid<'static>, OidParseError>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Build an OID from an array of object identifier components. This method allocates memory on the heap.

pub fn from_relative(s: &[u64]) -> Result<Oid<'static>, OidParseError>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Build a relative OID from an array of object identifier components.

pub fn to_owned(&self) -> Oid<'static>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Create a deep copy of the oid.

This method allocates data on the heap. The returned oid can be used without keeping the ASN.1 representation around.

Cloning the returned oid does again allocate data.

pub fn as_bytes(&self) -> &[u8]

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Get the encoded oid without the header.

pub fn bytes(&self) -> &[u8]

👎Deprecated since 0.2.0: Use as_bytes instead
Available on (crate features rustls or boring or acme) and crate feature rustls only.

Get the encoded oid without the header.

pub fn into_cow(self) -> Cow<'a, [u8]>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Get the bytes representation of the encoded oid

pub fn to_id_string(&self) -> String

Available on (crate features rustls or boring or acme) and crate feature rustls and non-crate feature bigint only.

Convert the OID to a string representation.

If every arc fits into a u64 a string like “1.2.840.113549.1.1.5” is returned, otherwise a hex representation.

See also the “bigint” feature of this crate.

pub fn iter(&self) -> Option<impl FusedIterator + ExactSizeIterator>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Return an iterator over the sub-identifiers (arcs). Returns None if at least one arc does not fit into u64.

pub fn from_ber_relative( bytes: &'a [u8], ) -> Result<(&'a [u8], Oid<'a>), Err<Error>>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

pub fn from_der_relative( bytes: &'a [u8], ) -> Result<(&'a [u8], Oid<'a>), Err<Error>>

Available on (crate features rustls or boring or acme) and crate feature rustls only.

pub fn starts_with(&self, needle: &Oid<'_>) -> bool

Available on (crate features rustls or boring or acme) and crate feature rustls only.

Returns true if needle is a prefix of the OID.

Trait Implementations§

§

impl CheckDerConstraints for Oid<'_>

§

impl<'a> Clone for Oid<'a>

§

fn clone(&self) -> Oid<'a>

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for Oid<'_>

§

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

Formats the value using the given formatter. Read more
§

impl Display for Oid<'_>

§

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

Formats the value using the given formatter. Read more
§

impl<'a> From<Oid<'a>> for BerObject<'a>

Build a DER object from an OID.

§

fn from(oid: Oid<'a>) -> BerObject<'a>

Converts to this type from the input type.
§

impl FromStr for Oid<'_>

§

type Err = OidParseError

The associated error which can be returned from parsing.
§

fn from_str(s: &str) -> Result<Oid<'_>, <Oid<'_> as FromStr>::Err>

Parses a string s to return a value of this type. Read more
§

impl<'a> Hash for Oid<'a>

§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl<'a> PartialEq for Oid<'a>

§

fn eq(&self, other: &Oid<'a>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl Tagged for Oid<'_>

§

const TAG: Tag = Tag::Oid

§

impl ToDer for Oid<'_>

Available on crate feature std only.
§

fn to_der_len(&self) -> Result<usize, Error>

Get the length of the object (including the header), when encoded
§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

Attempt to write the DER header to this writer.
§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

Attempt to write the DER content (all except header) to this writer.
§

fn to_der_vec(&self) -> Result<Vec<u8>, SerializeError>

Write the DER encoded representation to a newly allocated Vec<u8>.
§

fn to_der_vec_raw(&self) -> Result<Vec<u8>, SerializeError>

Similar to using to_vec, but uses provided values without changes. This can generate an invalid encoding for a DER object.
§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

Attempt to write the DER encoded representation (header and content) into this writer. Read more
§

fn write_der_raw(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

Similar to using to_der, but uses provided values without changes. This can generate an invalid encoding for a DER object.
§

impl<'a, 'b> TryFrom<&'b Any<'a>> for Oid<'a>

§

type Error = Error

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

fn try_from(any: &'b Any<'a>) -> Result<Oid<'a>, Error>

Performs the conversion.
§

impl<'a> TryFrom<Any<'a>> for Oid<'a>

§

type Error = Error

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

fn try_from(any: Any<'a>) -> Result<Oid<'a>, Error>

Performs the conversion.
§

impl DerAutoDerive for Oid<'_>

§

impl<'a> Eq for Oid<'a>

§

impl<'a> StructuralPartialEq for Oid<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Oid<'a>

§

impl<'a> RefUnwindSafe for Oid<'a>

§

impl<'a> Send for Oid<'a>

§

impl<'a> Sync for Oid<'a>

§

impl<'a> Unpin for Oid<'a>

§

impl<'a> UnwindSafe for Oid<'a>

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

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

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

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

§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> Choice for T
where T: Tagged,

§

fn can_decode(tag: Tag) -> bool

Is the provided Tag decodable as a variant of this CHOICE?
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> DynTagged for T
where T: Tagged,

§

fn tag(&self) -> Tag

§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<'a, T, E> FromBer<'a, E> for T
where T: TryFrom<Any<'a>, Error = E>, E: From<Error>,

§

fn from_ber(bytes: &'a [u8]) -> Result<(&'a [u8], T), Err<E>>

Attempt to parse input bytes into a BER object
§

impl<'a, T, E> FromDer<'a, E> for T
where T: TryFrom<Any<'a>, Error = E> + CheckDerConstraints + DerAutoDerive, E: From<Error> + Display + Debug,

§

fn from_der(bytes: &'a [u8]) -> Result<(&'a [u8], T), Err<E>>

Attempt to parse input bytes into a DER object (enforcing constraints)
§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
§

impl<T> Instrument for T

§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

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

§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
§

impl<T, U> RamaFrom<T> for U
where U: From<T>,

§

fn rama_from(value: T) -> U

§

impl<T, U, CrateMarker> RamaInto<U, CrateMarker> for T
where U: RamaFrom<T, CrateMarker>,

§

fn rama_into(self) -> U

§

impl<T, U> RamaTryFrom<T> for U
where U: TryFrom<T>,

§

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

§

fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>

§

impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for T
where U: RamaTryFrom<T, CrateMarker>,

§

type Error = <U as RamaTryFrom<T, CrateMarker>>::Error

§

fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

§

fn to_smolstr(&self) -> SmolStr

§

impl<T> ToString for T
where T: Display + ?Sized,

§

fn to_string(&self) -> String

Converts the given value to a String. Read more
§

impl<T> ToStringFallible for T
where T: Display,

§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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