pub struct Header<'a> { /* private fields */ }
Expand description
BER/DER object header (identifier and length)
Implementations§
Source§impl<'a> Header<'a>
impl<'a> Header<'a>
Sourcepub const fn new(
class: Class,
constructed: bool,
tag: Tag,
length: Length,
) -> Header<'a>
pub const fn new( class: Class, constructed: bool, tag: Tag, length: Length, ) -> Header<'a>
Build a new BER/DER header from the provided values
Sourcepub const fn new_simple(tag: Tag) -> Header<'a>
pub const fn new_simple(tag: Tag) -> Header<'a>
Build a new BER/DER header from the provided tag, with default values for other fields
Sourcepub fn with_class(self, class: Class) -> Header<'a>
pub fn with_class(self, class: Class) -> Header<'a>
Set the class of this Header
Sourcepub fn with_constructed(self, constructed: bool) -> Header<'a>
pub fn with_constructed(self, constructed: bool) -> Header<'a>
Set the constructed flags of this Header
Sourcepub fn with_length(self, length: Length) -> Header<'a>
pub fn with_length(self, length: Length) -> Header<'a>
Set the length of this Header
Sourcepub fn with_raw_tag(self, raw_tag: Option<Cow<'a, [u8]>>) -> Header<'a>
pub fn with_raw_tag(self, raw_tag: Option<Cow<'a, [u8]>>) -> Header<'a>
Update header to add reference to raw tag
Sourcepub const fn constructed(&self) -> bool
pub const fn constructed(&self) -> bool
Return true if this header has the ‘constructed’ flag.
Sourcepub fn raw_tag(&self) -> Option<&[u8]>
pub fn raw_tag(&self) -> Option<&[u8]>
Return the raw tag encoding, if it was stored in this object
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<(), Error>
pub const fn assert_class(&self, class: Class) -> Result<(), Error>
Return error if class is not the expected class
Sourcepub const fn assert_tag(&self, tag: Tag) -> Result<(), Error>
pub const fn assert_tag(&self, tag: Tag) -> Result<(), Error>
Return error if tag is not the expected tag
Sourcepub const fn assert_primitive(&self) -> Result<(), Error>
pub const fn assert_primitive(&self) -> Result<(), Error>
Return error if object is not primitive
Sourcepub const fn assert_constructed(&self) -> Result<(), Error>
pub const fn assert_constructed(&self) -> Result<(), Error>
Return error if object is primitive
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 const fn is_private(&self) -> bool
pub const fn is_private(&self) -> bool
Test if object class is Private
Sourcepub const fn assert_definite(&self) -> Result<(), Error>
pub const fn assert_definite(&self) -> Result<(), Error>
Return error if object length is definite
Trait Implementations§
Source§impl<'a> PartialEq for Header<'a>
Compare two BER headers. len
fields are compared only if both objects have it set (same for raw_tag
)
impl<'a> PartialEq for Header<'a>
Compare two BER headers. len
fields are compared only if both objects have it set (same for raw_tag
)
Source§impl ToDer for Header<'_>
impl ToDer for Header<'_>
Source§fn to_der_len(&self) -> Result<usize, Error>
fn to_der_len(&self) -> Result<usize, Error>
Source§fn write_der_header(
&self,
writer: &mut dyn Write,
) -> Result<usize, SerializeError>
fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>
Source§fn write_der_content(
&self,
_writer: &mut dyn Write,
) -> Result<usize, SerializeError>
fn write_der_content( &self, _writer: &mut dyn Write, ) -> Result<usize, SerializeError>
Source§fn write_der_raw(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>
fn write_der_raw(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>
to_der
, but uses provided values without changes.
This can generate an invalid encoding for a DER object.Source§fn to_der_vec(&self) -> Result<Vec<u8>, SerializeError>
fn to_der_vec(&self) -> Result<Vec<u8>, SerializeError>
Vec<u8>
.Source§fn to_der_vec_raw(&self) -> Result<Vec<u8>, SerializeError>
fn to_der_vec_raw(&self) -> Result<Vec<u8>, SerializeError>
to_vec
, but uses provided values without changes.
This can generate an invalid encoding for a DER object.impl Eq for Header<'_>
Auto Trait Implementations§
impl<'a> Freeze for Header<'a>
impl<'a> RefUnwindSafe for Header<'a>
impl<'a> Send for Header<'a>
impl<'a> Sync for Header<'a>
impl<'a> Unpin for Header<'a>
impl<'a> UnwindSafe for Header<'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: 48 bytes