Enum der_parser::ber::BerObjectContent
source · 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 str),
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 str)
BmpString: decoded string
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>
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<BerObjectContent<'a>> for BerObjectContent<'a>
impl<'a> PartialEq<BerObjectContent<'a>> for BerObjectContent<'a>
source§fn eq(&self, other: &BerObjectContent<'a>) -> bool
fn eq(&self, other: &BerObjectContent<'a>) -> bool
self
and other
values to be equal, and is used
by ==
.