Skip to main content

Header

Struct Header 

Source
pub struct Header { /* private fields */ }
Expand description

ASN.1 DER headers: tag + length component of TLV-encoded values

§Examples

use der::{Decode, Header, Length, Reader, SliceReader, Tag};

let mut reader = SliceReader::new(&[0x04, 0x02, 0x31, 0x32]).unwrap();
let header = Header::decode(&mut reader).expect("valid header");

assert_eq!(header, Header::new(Tag::OctetString, Length::new(2)));

assert_eq!(reader.read_slice(2u8.into()).unwrap(), b"12");
use der::{Encode, Header, Length, Tag};
let header = Header::new(Tag::Sequence, Length::new(256));

// Header of 256-byte SEQUENCE is 4-byte long
assert_eq!(header.encoded_len(), Ok(Length::new(4)));

Implementations§

Source§

impl Header

Source

pub fn new(tag: Tag, length: Length) -> Self

Create a new Header from a Tag and a Length.

Source

pub fn tag(&self) -> Tag

Tag of this header.

Source

pub fn length(&self) -> Length

Length of this header.

Source

pub fn is_constructed(&self) -> bool

True if the Tag of this header has its constructed bit set.

Source

pub fn with_length(&self, length: Length) -> Self

Copy of header with adjusted length.

Source

pub fn peek<'a>(reader: &impl Reader<'a>) -> Result<Self>

Peek forward in the reader, attempting to decode a Header at the current position.

Does not modify the reader’s state.

§Errors

Returns Error in the event a header decoding error occurred.

Trait Implementations§

Source§

impl Clone for Header

Source§

fn clone(&self) -> Header

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Header

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Decode<'a> for Header

Source§

type Error = Error

Type returned in the event of a decoding error.
Source§

fn decode<R: Reader<'a>>(reader: &mut R) -> Result<Header>

Attempt to decode this TLV message using the provided decoder. Read more
Source§

fn from_der(bytes: &'a [u8]) -> Result<Self, Self::Error>

Parse Self from the provided DER-encoded byte slice. Read more
Source§

fn from_der_partial(bytes: &'a [u8]) -> Result<(Self, &'a [u8]), Self::Error>

Parse Self from the provided DER-encoded byte slice. Read more
Source§

impl DerOrd for Header

Source§

fn der_cmp(&self, other: &Self) -> Result<Ordering>

Return an Ordering between self and other when serialized as ASN.1 DER. Read more
Source§

impl Encode for Header

Source§

fn encoded_len(&self) -> Result<Length>

Compute the length of this TLV object in bytes when encoded as ASN.1 DER. Read more
Source§

fn encode(&self, writer: &mut impl Writer) -> Result<()>

Encode this TLV object as ASN.1 DER using the provided Writer. Read more
Source§

fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>

Encode this TLV object to the provided byte slice, returning a sub-slice containing the encoded message. Read more
Source§

fn encode_to_vec(&self, buf: &mut Vec<u8>) -> Result<Length>

Encode this TLV object as ASN.1 DER, appending it to the provided byte vector. Read more
Source§

fn to_der(&self) -> Result<Vec<u8>>

Encode this TLV object as ASN.1 DER, returning a byte vector. Read more
Source§

impl PartialEq for Header

Source§

fn eq(&self, other: &Header) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Header

Source§

impl Eq for Header

Source§

impl StructuralPartialEq for Header

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DecodeOwned for T
where T: for<'a> Decode<'a>,