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
mtls 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§
Sourcefn to_der_len(&self) -> Result<usize, Error>
fn to_der_len(&self) -> Result<usize, Error>
Get the length of the object, when encoded
Sourcefn write_der_header(
&self,
writer: &mut dyn Write,
) -> Result<usize, SerializeError>
fn write_der_header( &self, writer: &mut dyn Write, ) -> Result<usize, SerializeError>
Attempt to write the DER header to this writer.
Sourcefn write_der_content(
&self,
writer: &mut dyn Write,
) -> Result<usize, SerializeError>
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§
Sourcefn to_der_vec(&self) -> Result<Vec<u8>, SerializeError>
fn to_der_vec(&self) -> Result<Vec<u8>, SerializeError>
Write the DER encoded representation to a newly allocated Vec<u8>.
Sourcefn to_der_vec_raw(&self) -> Result<Vec<u8>, SerializeError>
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.
Sourcefn write_der(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>
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]);Sourcefn write_der_raw(&self, writer: &mut dyn Write) -> Result<usize, SerializeError>
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.