ToDer

Trait ToDer 

pub trait ToDer: DynTagged {
    // Required methods
    fn to_der_len(&self) -> Result<usize, Error>;
    fn write_der_header(
        &self,
        writer: &mut dyn Write,
    ) -> Result<usize, SerializeError>;
    fn write_der_content(
        &self,
        writer: &mut dyn Write,
    ) -> Result<usize, SerializeError>;

    // Provided methods
    fn to_der_vec(&self) -> Result<Vec<u8>, SerializeError> { ... }
    fn to_der_vec_raw(&self) -> Result<Vec<u8>, SerializeError> { ... }
    fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError> { ... }
    fn write_der_raw(
        &self,
        writer: &mut dyn Write,
    ) -> Result<usize, SerializeError> { ... }
}
Available on crate features crypto and std only.
Expand description

Common trait for all objects that can be encoded using the DER representation

§Examples

Objects from this crate can be encoded as DER:

use asn1_rs::{Integer, ToDer};

let int = Integer::from(4u32);
let mut writer = Vec::new();
let sz = int.write_der(&mut writer).expect("serialization failed");

assert_eq!(&writer, &[0x02, 0x01, 0x04]);

Many of the primitive types can also directly be encoded as DER:

use asn1_rs::ToDer;

let mut writer = Vec::new();
let sz = 4.write_der(&mut writer).expect("serialization failed");

assert_eq!(&writer, &[0x02, 0x01, 0x04]);

Required Methods§

fn to_der_len(&self) -> Result<usize, Error>

Get the length of the object (including the header), when encoded

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

Attempt to write the DER header to this writer.

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

Attempt to write the DER content (all except header) to this writer.

Provided Methods§

fn to_der_vec(&self) -> Result<Vec<u8>, SerializeError>

Write the DER encoded representation to a newly allocated Vec<u8>.

fn to_der_vec_raw(&self) -> Result<Vec<u8>, SerializeError>

Similar to using to_vec, but uses provided values without changes. This can generate an invalid encoding for a DER object.

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

Attempt to write the DER encoded representation (header and content) into this writer.

§Examples
use asn1_rs::{Integer, ToDer};

let int = Integer::from(4u32);
let mut writer = Vec::new();
let sz = int.write_der(&mut writer).expect("serialization failed");

assert_eq!(&writer, &[0x02, 0x01, 0x04]);

fn write_der_raw(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

Similar to using to_der, but uses provided values without changes. This can generate an invalid encoding for a DER object.

Implementations on Foreign Types§

§

impl ToDer for &str

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for &[u8]

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for (Class, bool, Tag)

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, _writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for bool

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for i8

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for i16

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for i32

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for i64

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for i128

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for u8

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for u16

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for u32

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for u64

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for u128

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl ToDer for ()

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, _writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

impl<'a, T> ToDer for &'a T
where T: ToDer, &'a T: DynTagged,

§

fn to_der_len(&self) -> Result<usize, Error>

§

fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

§

fn write_der_content( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>

Implementors§

§

impl ToDer for Length

§

impl ToDer for Real

§

impl ToDer for String

§

impl ToDer for Any<'_>

§

impl ToDer for BitString<'_>

§

impl ToDer for BmpString<'_>

§

impl ToDer for Boolean

§

impl ToDer for Enumerated

§

impl ToDer for GeneralString<'_>

§

impl ToDer for GeneralizedTime

§

impl ToDer for GraphicString<'_>

§

impl ToDer for Header<'_>

§

impl ToDer for Ia5String<'_>

§

impl ToDer for Integer<'_>

§

impl ToDer for Null

§

impl ToDer for NumericString<'_>

§

impl ToDer for ObjectDescriptor<'_>

§

impl ToDer for OctetString<'_>

§

impl ToDer for Oid<'_>

§

impl ToDer for PrintableString<'_>

§

impl ToDer for Sequence<'_>

§

impl ToDer for Set<'_>

§

impl ToDer for TeletexString<'_>

§

impl ToDer for UniversalString<'_>

§

impl ToDer for UtcTime

§

impl ToDer for Utf8String<'_>

§

impl ToDer for VideotexString<'_>

§

impl ToDer for VisibleString<'_>

§

impl<T> ToDer for Option<T>
where T: ToDer,

§

impl<T> ToDer for BTreeSet<T>
where T: ToDer,

§

impl<T> ToDer for HashSet<T>
where T: ToDer,

§

impl<T> ToDer for Vec<T>
where T: ToDer,

§

impl<T> ToDer for SequenceOf<T>
where T: ToDer,

§

impl<T> ToDer for SetOf<T>
where T: ToDer,

§

impl<T> ToDer for TaggedParser<'_, Explicit, T>
where T: ToDer,

§

impl<T> ToDer for TaggedParser<'_, Implicit, T>
where T: ToDer,

§

impl<T, E, const CLASS: u8, const TAG: u32> ToDer for TaggedValue<T, E, Explicit, CLASS, TAG>
where T: ToDer,

§

impl<T, E, const CLASS: u8, const TAG: u32> ToDer for TaggedValue<T, E, Implicit, CLASS, TAG>
where T: ToDer,