pub type DerObject<'a> = BerObject<'a>;
Expand description
Representation of a DER-encoded (X.690) object
Note that a DER object is just a BER object, with additional constraints.
Aliased Type§
struct DerObject<'a> {
pub header: Header<'a>,
pub content: BerObjectContent<'a>,
}
Fields§
§header: Header<'a>
§content: BerObjectContent<'a>
Implementations
Source§impl BerObject<'_>
impl BerObject<'_>
Sourcepub fn as_bigint(&self) -> Result<BigInt, BerError>
pub fn as_bigint(&self) -> Result<BigInt, BerError>
Attempt to read an integer value from this object.
This can fail if the object is not an integer.
§Examples
use der_parser::ber::*;
let data = &[0x02, 0x03, 0x01, 0x00, 0x01];
let (_, object) = parse_ber_integer(data).expect("parsing failed");
assert_eq!(object.as_bigint(), Ok(65537.into()))
Sourcepub fn as_biguint(&self) -> Result<BigUint, BerError>
pub fn as_biguint(&self) -> Result<BigUint, BerError>
Attempt to read a positive integer value from this object.
This can fail if the object is not an integer, or is negative.
§Examples
use der_parser::ber::*;
let data = &[0x02, 0x03, 0x01, 0x00, 0x01];
let (_, object) = parse_ber_integer(data).expect("parsing failed");
assert_eq!(object.as_biguint(), Ok(65537_u32.into()))
Source§impl<'a> BerObject<'a>
impl<'a> BerObject<'a>
Sourcepub const fn from_header_and_content<'o>(
header: Header<'o>,
content: BerObjectContent<'o>,
) -> BerObject<'o>
pub const fn from_header_and_content<'o>( header: Header<'o>, content: BerObjectContent<'o>, ) -> BerObject<'o>
Build a BerObject from a header and content.
Note: values are not checked, so the tag can be different from the real content, or flags can be invalid.
Sourcepub const fn from_obj(c: BerObjectContent<'_>) -> BerObject<'_>
pub const fn from_obj(c: BerObjectContent<'_>) -> BerObject<'_>
Build a BerObject from its content, using default flags (no class, correct tag, and constructed flag set only for Set and Sequence)
Sourcepub const fn from_int_slice(i: &'a [u8]) -> BerObject<'a>
pub const fn from_int_slice(i: &'a [u8]) -> BerObject<'a>
Build a DER integer object from a slice containing an encoded integer
Sourcepub fn set_raw_tag(self, raw_tag: Option<&'a [u8]>) -> BerObject<'a>
pub fn set_raw_tag(self, raw_tag: Option<&'a [u8]>) -> BerObject<'a>
Set a tag for the BER object
Sourcepub const fn from_seq(l: Vec<BerObject<'_>>) -> BerObject<'_>
pub const fn from_seq(l: Vec<BerObject<'_>>) -> BerObject<'_>
Build a DER sequence object from a vector of DER objects
Sourcepub const fn from_set(l: Vec<BerObject<'_>>) -> BerObject<'_>
pub const fn from_set(l: Vec<BerObject<'_>>) -> BerObject<'_>
Build a DER set object from a vector of DER objects
Sourcepub fn as_i64(&self) -> Result<i64, BerError>
pub fn as_i64(&self) -> Result<i64, BerError>
Attempt to read a signed integer value from DER 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 DER 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 DER 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 DER 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)
);
Sourcepub fn as_bool(&self) -> Result<bool, BerError>
pub fn as_bool(&self) -> Result<bool, BerError>
Attempt to read integer value from DER object. This can fail if the object is not a boolean.
Sourcepub fn as_oid(&self) -> Result<&Oid<'a>, BerError>
pub fn as_oid(&self) -> Result<&Oid<'a>, BerError>
Attempt to read an OID value from DER object. This can fail if the object is not an OID.
Sourcepub fn as_oid_val(&self) -> Result<Oid<'a>, BerError>
pub fn as_oid_val(&self) -> Result<Oid<'a>, BerError>
Attempt to read an OID value from DER object. This can fail if the object is not an OID.
Sourcepub fn as_optional(&self) -> Result<Option<&BerObject<'a>>, BerError>
pub fn as_optional(&self) -> Result<Option<&BerObject<'a>>, BerError>
Attempt to get a reference on the content from an optional object. This can fail if the object is not optional.
Sourcepub fn as_tagged(&self) -> Result<(Class, Tag, &BerObject<'a>), BerError>
pub fn as_tagged(&self) -> Result<(Class, Tag, &BerObject<'a>), BerError>
Attempt to get a reference on the content from a tagged object. This can fail if the object is not tagged.
Sourcepub fn as_bitstring_ref(&self) -> Result<&BitStringObject<'_>, BerError>
pub fn as_bitstring_ref(&self) -> Result<&BitStringObject<'_>, BerError>
Attempt to read a reference to a BitString value from DER object. This can fail if the object is not an BitString.
Note that this function returns a reference to the BitString. To get an owned value,
use as_bitstring
Sourcepub fn as_bitstring(&self) -> Result<BitStringObject<'a>, BerError>
pub fn as_bitstring(&self) -> Result<BitStringObject<'a>, BerError>
Attempt to read a BitString value from DER object. This can fail if the object is not an BitString.
Sourcepub fn as_sequence(&self) -> Result<&Vec<BerObject<'a>>, BerError>
pub fn as_sequence(&self) -> Result<&Vec<BerObject<'a>>, BerError>
Attempt to extract the list of objects from a DER sequence. This can fail if the object is not a sequence.
Sourcepub fn as_set(&self) -> Result<&Vec<BerObject<'a>>, BerError>
pub fn as_set(&self) -> Result<&Vec<BerObject<'a>>, BerError>
Attempt to extract the list of objects from a DER set. This can fail if the object is not a set.
Sourcepub fn as_slice(&self) -> Result<&'a [u8], BerError>
pub fn as_slice(&self) -> Result<&'a [u8], BerError>
Attempt to get the content from a DER object, as a slice. This can fail if the object does not contain a type directly equivalent to a slice (e.g a sequence). This function mostly concerns string types, integers, or unknown DER objects.
Sourcepub fn as_str(&self) -> Result<&'a str, BerError>
pub fn as_str(&self) -> Result<&'a str, BerError>
Attempt to get the content from a DER object, as a str. This can fail if the object does not contain a string type.
Only some string types are considered here. Other
string types can be read using as_slice
.
Sourcepub const fn is_universal(&self) -> bool
pub const fn is_universal(&self) -> bool
Test if object class is Universal
Sourcepub const fn is_application(&self) -> bool
pub const fn is_application(&self) -> bool
Test if object class is Application
Sourcepub const fn is_contextspecific(&self) -> bool
pub const fn is_contextspecific(&self) -> bool
Test if object class is Context-specific
Sourcepub fn is_private(&self) -> bool
pub fn is_private(&self) -> bool
Test if object class is Private
Sourcepub const fn is_primitive(&self) -> bool
pub const fn is_primitive(&self) -> bool
Test if object is primitive
Sourcepub const fn is_constructed(&self) -> bool
pub const fn is_constructed(&self) -> bool
Test if object is constructed
Sourcepub const fn assert_class(&self, class: Class) -> Result<(), BerError>
pub const fn assert_class(&self, class: Class) -> Result<(), BerError>
Return error if class
is not the expected class
Sourcepub const fn assert_tag(&self, tag: Tag) -> Result<(), BerError>
pub const fn assert_tag(&self, tag: Tag) -> Result<(), BerError>
Return error if tag
is not the expected tag
Sourcepub const fn assert_constructed(&self) -> Result<(), BerError>
pub const fn assert_constructed(&self) -> Result<(), BerError>
Return error if object is not constructed
Sourcepub const fn assert_primitive(&self) -> Result<(), BerError>
pub const fn assert_primitive(&self) -> Result<(), BerError>
Return error if object is not primitive
Trait Implementations
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.