pub struct Integer<'a> { /* private fields */ }
mtls
only.Expand description
ASN.1 INTEGER
type
Generic representation for integer types. BER/DER integers can be of any size, so it is not possible to store them as simple integers (they are stored as raw bytes).
The internal representation can be obtained using .as_ref()
.
Note
Methods from/to BER and DER encodings are also implemented for primitive types
(u8
, u16
to u128
, and i8
to i128
).
In most cases, it is easier to use these types directly.
Examples
Creating an Integer
use asn1_rs::Integer;
// unsigned
let i = Integer::from(4);
assert_eq!(i.as_ref(), &[4]);
// signed
let j = Integer::from(-2);
assert_eq!(j.as_ref(), &[0x0, 0xff, 0xff, 0xff, 0xfe]);
Converting an Integer
to a primitive type (using the TryInto
trait)
use asn1_rs::{Error, Integer};
use std::convert::TryInto;
let i = Integer::new(&[0x12, 0x34, 0x56, 0x78]);
// converts to an u32
let n: u32 = i.try_into().unwrap();
// Same, but converting to an u16: will fail, value cannot fit into an u16
let i = Integer::new(&[0x12, 0x34, 0x56, 0x78]);
assert_eq!(i.try_into() as Result<u16, _>, Err(Error::IntegerTooLarge));
Encoding an Integer
to DER
use asn1_rs::{Integer, ToDer};
let i = Integer::from(4);
let v = i.to_der_vec().unwrap();
assert_eq!(&v, &[2, 1, 4]);
// same, with primitive types
let v = 4.to_der_vec().unwrap();
assert_eq!(&v, &[2, 1, 4]);
Implementations
impl<'a> Integer<'a>
impl<'a> Integer<'a>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
impl<'_> Integer<'_>
Trait Implementations
impl<'a> CheckDerConstraints for Integer<'a>
impl<'a> CheckDerConstraints for Integer<'a>
fn check_constraints(any: &Any<'_>) -> Result<(), Error>
impl<'_> ToDer for Integer<'_>
impl<'_> ToDer for Integer<'_>
fn to_der_len(&self) -> Result<usize, Error>
fn to_der_len(&self) -> Result<usize, Error>
Get the length of the object, when encoded Read more
fn write_der_header(
&self,
writer: &mut dyn Write
) -> Result<usize, SerializeError>
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>
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, Global>, SerializeError>
fn to_der_vec(&self) -> Result<Vec<u8, Global>, SerializeError>
Write the DER encoded representation to a newly allocated Vec<u8>
.
fn to_der_vec_raw(&self) -> Result<Vec<u8, Global>, SerializeError>
fn to_der_vec_raw(&self) -> Result<Vec<u8, Global>, SerializeError>
Similar to using to_vec
, but uses provided values without changes.
This can generate an invalid encoding for a DER object. Read more
fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>
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>
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. Read more
impl<'a> Eq for Integer<'a>
impl<'a> StructuralEq for Integer<'a>
impl<'a> StructuralPartialEq for Integer<'a>
Auto Trait Implementations
impl<'a> RefUnwindSafe for Integer<'a>
impl<'a> Send for Integer<'a>
impl<'a> Sync for Integer<'a>
impl<'a> Unpin for Integer<'a>
impl<'a> UnwindSafe for Integer<'a>
Blanket Implementations
impl<'a, T> AsTaggedExplicit<'a> for T where
T: 'a,
impl<'a, T> AsTaggedExplicit<'a> for T where
T: 'a,
fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self>
impl<'a, T> AsTaggedImplicit<'a> for T where
T: 'a,
impl<'a, T> AsTaggedImplicit<'a> for T where
T: 'a,
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Choice for T where
T: Tagged,
impl<T> Choice for T where
T: Tagged,
fn can_decode(tag: Tag) -> bool
fn can_decode(tag: Tag) -> bool
Is the provided Tag
decodable as a variant of this CHOICE
?
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
impl<'a, T> FromDer<'a> for T where
T: TryFrom<Any<'a>, Error = Error> + CheckDerConstraints,
impl<'a, T> FromDer<'a> for T where
T: TryFrom<Any<'a>, Error = Error> + CheckDerConstraints,
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
fn into_collection<A>(self) -> SmallVec<A> where
A: Array<Item = 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>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more