ToDer

Trait ToDer 

Source
pub trait ToDer
where Self: DynTagged,
{ // Required methods fn to_der_len(&self) -> Result<usize>; fn write_der_header(&self, writer: &mut dyn Write) -> SerializeResult<usize>; fn write_der_content( &self, writer: &mut dyn Write, ) -> SerializeResult<usize>; // Provided methods fn to_der_vec(&self) -> SerializeResult<Vec<u8>> { ... } fn to_der_vec_raw(&self) -> SerializeResult<Vec<u8>> { ... } fn write_der(&self, writer: &mut dyn Write) -> SerializeResult<usize> { ... } fn write_der_raw(&self, writer: &mut dyn Write) -> SerializeResult<usize> { ... } }
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§

Source

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

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

Source

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

Attempt to write the DER header to this writer.

Source

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

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

Provided Methods§

Source

fn to_der_vec(&self) -> SerializeResult<Vec<u8>>

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

Source

fn to_der_vec_raw(&self) -> SerializeResult<Vec<u8>>

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

Source

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

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]);
Source

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

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§

Source§

impl ToDer for &str

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

impl ToDer for &[u8]

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

impl ToDer for (Class, bool, Tag)

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

impl ToDer for bool

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

impl ToDer for i8

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for i16

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for i32

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for i64

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for i128

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for u8

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for u16

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for u32

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for u64

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for u128

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl ToDer for ()

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

impl ToDer for String

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Available on crate feature std only.
Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Implementors§

Source§

impl ToDer for Length

Available on crate feature std only.
Source§

impl ToDer for Real

Available on crate feature std only.
Source§

impl ToDer for Any<'_>

Available on crate feature std only.
Source§

impl ToDer for BitString<'_>

Available on crate feature std only.
Source§

impl ToDer for BmpString<'_>

Available on crate feature std only.
Source§

impl ToDer for Boolean

Available on crate feature std only.
Source§

impl ToDer for Enumerated

Available on crate feature std only.
Source§

impl ToDer for GeneralString<'_>

Available on crate feature std only.
Source§

impl ToDer for GeneralizedTime

Available on crate feature std only.
Source§

impl ToDer for GraphicString<'_>

Available on crate feature std only.
Source§

impl ToDer for Header<'_>

Available on crate feature std only.
Source§

impl ToDer for Ia5String<'_>

Available on crate feature std only.
Source§

impl ToDer for Integer<'_>

Available on crate feature std only.
Source§

impl ToDer for Null

Available on crate feature std only.
Source§

impl ToDer for NumericString<'_>

Available on crate feature std only.
Source§

impl ToDer for ObjectDescriptor<'_>

Available on crate feature std only.
Source§

impl ToDer for OctetString<'_>

Available on crate feature std only.
Source§

impl ToDer for Oid<'_>

Available on crate feature std only.
Source§

impl ToDer for PrintableString<'_>

Available on crate feature std only.
Source§

impl ToDer for Sequence<'_>

Available on crate feature std only.
Source§

impl ToDer for Set<'_>

Available on crate feature std only.
Source§

impl ToDer for TeletexString<'_>

Available on crate feature std only.
Source§

impl ToDer for UniversalString<'_>

Available on crate feature std only.
Source§

impl ToDer for UtcTime

Available on crate feature std only.
Source§

impl ToDer for Utf8String<'_>

Available on crate feature std only.
Source§

impl ToDer for VideotexString<'_>

Available on crate feature std only.
Source§

impl ToDer for VisibleString<'_>

Available on crate feature std only.
Source§

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

Available on crate feature std only.
Source§

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

Available on crate feature std only.
Source§

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

Available on crate feature std only.
Source§

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

Available on crate feature std only.
Source§

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

Available on crate feature std only.
Source§

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

Available on crate feature std only.