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> { ... }
}
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,