pub enum BerObjectContent<'a> {
Show 28 variants
EndOfContent,
Boolean(bool),
Integer(&'a [u8]),
BitString(u8, BitStringObject<'a>),
OctetString(&'a [u8]),
Null,
Enum(u64),
OID(Oid<'a>),
RelativeOID(Oid<'a>),
NumericString(&'a str),
VisibleString(&'a str),
PrintableString(&'a str),
IA5String(&'a str),
UTF8String(&'a str),
T61String(&'a str),
VideotexString(&'a str),
BmpString(&'a [u8]),
UniversalString(&'a [u8]),
Sequence(Vec<BerObject<'a>>),
Set(Vec<BerObject<'a>>),
UTCTime(ASN1DateTime),
GeneralizedTime(ASN1DateTime),
ObjectDescriptor(&'a str),
GraphicString(&'a str),
GeneralString(&'a str),
Optional(Option<Box<BerObject<'a>>>),
Tagged(Class, Tag, Box<BerObject<'a>>),
Unknown(Any<'a>),
}
Expand description
BER object content
Variants§
EndOfContent
EOC (no content)
Boolean(bool)
BOOLEAN: decoded value
Integer(&'a [u8])
INTEGER: raw bytes
Note: the reason to store the raw bytes is that integers have non-finite length in the spec, and also that the raw encoding is also important for some applications.
To extract the number, see the as_u64
, as_u32
, as_bigint
and as_biguint
methods.
BitString(u8, BitStringObject<'a>)
BIT STRING: number of unused bits, and object
OctetString(&'a [u8])
OCTET STRING: slice
Null
NULL (no content)
Enum(u64)
ENUMERATED: decoded enum number
OID(Oid<'a>)
OID
RelativeOID(Oid<'a>)
RELATIVE OID
NumericString(&'a str)
NumericString: decoded string
VisibleString(&'a str)
VisibleString: decoded string
PrintableString(&'a str)
PrintableString: decoded string
IA5String(&'a str)
IA5String: decoded string
UTF8String(&'a str)
UTF8String: decoded string
T61String(&'a str)
T61String: decoded string
VideotexString(&'a str)
VideotexString: decoded string
BmpString(&'a [u8])
BmpString: raw object bytes
Note: the string is stored as raw bytes because not all UTF-16 sequences can be stored as
&str
. To access content, use String::from_utf16
or String::from_utf16_lossy
.
UniversalString(&'a [u8])
UniversalString: raw object bytes
Sequence(Vec<BerObject<'a>>)
SEQUENCE: list of objects
Set(Vec<BerObject<'a>>)
SET: list of objects
UTCTime(ASN1DateTime)
UTCTime: decoded string
GeneralizedTime(ASN1DateTime)
GeneralizedTime: decoded string
ObjectDescriptor(&'a str)
Object descriptor: decoded string
GraphicString(&'a str)
GraphicString: decoded string
GeneralString(&'a str)
GeneralString: decoded string
Optional(Option<Box<BerObject<'a>>>)
Optional object
Tagged(Class, Tag, Box<BerObject<'a>>)
Tagged object (EXPLICIT): class, tag and content of inner object
Unknown(Any<'a>)
Private or Unknown (for ex. unknown tag) object
Implementations§
Source§impl<'a> BerObjectContent<'a>
impl<'a> BerObjectContent<'a>
Sourcepub fn as_i64(&self) -> Result<i64, BerError>
pub fn as_i64(&self) -> Result<i64, BerError>
Attempt to read a signed integer value from this object.
This can fail if the object is not an integer, or if it is too large.
§Examples
let der_int = BerObject::from_int_slice(b"\x80");
assert_eq!(
der_int.as_i64(),
Ok(-128)
);
Sourcepub fn as_i32(&self) -> Result<i32, BerError>
pub fn as_i32(&self) -> Result<i32, BerError>
Attempt to read a signed integer value from this object.
This can fail if the object is not an integer, or if it is too large.
§Examples
let der_int = BerObject::from_int_slice(b"\x80");
assert_eq!(
der_int.as_i32(),
Ok(-128)
);
Sourcepub fn as_u64(&self) -> Result<u64, BerError>
pub fn as_u64(&self) -> Result<u64, BerError>
Attempt to read integer value from this object.
This can fail if the object is not an unsigned integer, or if it is too large.
§Examples
let der_int = BerObject::from_int_slice(b"\x01\x00\x01");
assert_eq!(
der_int.as_u64(),
Ok(0x10001)
);
Sourcepub fn as_u32(&self) -> Result<u32, BerError>
pub fn as_u32(&self) -> Result<u32, BerError>
Attempt to read integer value from this object.
This can fail if the object is not an unsigned integer, or if it is too large.
§Examples
let der_int = BerObject::from_obj(BerObjectContent::Integer(b"\x01\x00\x01"));
assert_eq!(
der_int.as_u32(),
Ok(0x10001)
);
pub fn as_bool(&self) -> Result<bool, BerError>
pub fn as_oid(&self) -> Result<&Oid<'a>, BerError>
pub fn as_oid_val(&self) -> Result<Oid<'a>, BerError>
pub fn as_optional(&self) -> Result<Option<&BerObject<'a>>, BerError>
pub fn as_tagged(&self) -> Result<(Class, Tag, &BerObject<'a>), BerError>
pub fn as_bitstring_ref(&self) -> Result<&BitStringObject<'_>, BerError>
pub fn as_bitstring(&self) -> Result<BitStringObject<'a>, BerError>
pub fn as_sequence(&self) -> Result<&Vec<BerObject<'a>>, BerError>
pub fn as_set(&self) -> Result<&Vec<BerObject<'a>>, BerError>
pub fn as_slice(&self) -> Result<&'a [u8], BerError>
pub fn as_str(&self) -> Result<&'a str, BerError>
Trait Implementations§
Source§impl<'a> Clone for BerObjectContent<'a>
impl<'a> Clone for BerObjectContent<'a>
Source§fn clone(&self) -> BerObjectContent<'a>
fn clone(&self) -> BerObjectContent<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'a> Debug for BerObjectContent<'a>
impl<'a> Debug for BerObjectContent<'a>
Source§impl<'a> From<BerObjectContent<'a>> for BerObject<'a>
Build a DER object from a BerObjectContent.
impl<'a> From<BerObjectContent<'a>> for BerObject<'a>
Build a DER object from a BerObjectContent.
Source§fn from(obj: BerObjectContent<'a>) -> BerObject<'a>
fn from(obj: BerObjectContent<'a>) -> BerObject<'a>
Source§impl<'a> PartialEq for BerObjectContent<'a>
impl<'a> PartialEq for BerObjectContent<'a>
impl<'a> StructuralPartialEq for BerObjectContent<'a>
Auto Trait Implementations§
impl<'a> Freeze for BerObjectContent<'a>
impl<'a> RefUnwindSafe for BerObjectContent<'a>
impl<'a> Send for BerObjectContent<'a>
impl<'a> Sync for BerObjectContent<'a>
impl<'a> Unpin for BerObjectContent<'a>
impl<'a> UnwindSafe for BerObjectContent<'a>
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 64 bytes
Size for each variant:
EndOfContent
: 0 bytesBoolean
: 9 bytesInteger
: 24 bytesBitString
: 32 bytesOctetString
: 24 bytesNull
: 0 bytesEnum
: 16 bytesOID
: 40 bytesRelativeOID
: 40 bytesNumericString
: 24 bytesVisibleString
: 24 bytesPrintableString
: 24 bytesIA5String
: 24 bytesUTF8String
: 24 bytesT61String
: 24 bytesVideotexString
: 24 bytesBmpString
: 24 bytesUniversalString
: 24 bytesSequence
: 32 bytesSet
: 32 bytesUTCTime
: 24 bytesGeneralizedTime
: 24 bytesObjectDescriptor
: 24 bytesGraphicString
: 24 bytesGeneralString
: 24 bytesOptional
: 16 bytesTagged
: 24 bytesUnknown
: 64 bytes