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>
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>
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>
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>
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>
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>
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>
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
Available on crate feature std only.
impl ToDer for &str
std only.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]
Available on crate feature std only.
impl ToDer for &[u8]
std only.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)
Available on crate feature std only.
impl ToDer for (Class, bool, Tag)
std only.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
Available on crate feature std only.
impl ToDer for bool
std only.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
Available on crate feature std only.
impl ToDer for i8
std only.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
Available on crate feature std only.
impl ToDer for i16
std only.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
Available on crate feature std only.
impl ToDer for i32
std only.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
Available on crate feature std only.
impl ToDer for i64
std only.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
Available on crate feature std only.
impl ToDer for i128
std only.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
Available on crate feature std only.
impl ToDer for u8
std only.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
Available on crate feature std only.
impl ToDer for u16
std only.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
Available on crate feature std only.
impl ToDer for u32
std only.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
Available on crate feature std only.
impl ToDer for u64
std only.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
Available on crate feature std only.
impl ToDer for u128
std only.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 ()
Available on crate feature std only.
impl ToDer for ()
std only.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
Available on crate feature std only.
impl<'a, T> ToDer for &'a T
std only.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
std only.impl ToDer for Real
std only.impl ToDer for Any<'_>
std only.impl ToDer for BitString<'_>
std only.impl ToDer for BmpString<'_>
std only.impl ToDer for Boolean
std only.impl ToDer for Enumerated
std only.impl ToDer for GeneralString<'_>
std only.impl ToDer for GeneralizedTime
std only.impl ToDer for GraphicString<'_>
std only.impl ToDer for Header<'_>
std only.impl ToDer for Ia5String<'_>
std only.impl ToDer for Integer<'_>
std only.impl ToDer for Null
std only.impl ToDer for NumericString<'_>
std only.impl ToDer for ObjectDescriptor<'_>
std only.impl ToDer for OctetString<'_>
std only.impl ToDer for Oid<'_>
std only.impl ToDer for PrintableString<'_>
std only.impl ToDer for Sequence<'_>
std only.impl ToDer for Set<'_>
std only.impl ToDer for TeletexString<'_>
std only.impl ToDer for UniversalString<'_>
std only.impl ToDer for UtcTime
std only.impl ToDer for Utf8String<'_>
std only.impl ToDer for VideotexString<'_>
std only.impl ToDer for VisibleString<'_>
std only.impl ToDer for String
std only.impl<T> ToDer for Option<T>where
T: ToDer,
std only.impl<T> ToDer for HashSet<T>where
T: ToDer,
impl<T> ToDer for SequenceOf<T>where
T: ToDer,
std only.impl<T> ToDer for SetOf<T>where
T: ToDer,
std only.impl<T> ToDer for TaggedParser<'_, Explicit, T>where
T: ToDer,
std only.impl<T> ToDer for TaggedParser<'_, Implicit, T>where
T: ToDer,
std only.impl<T> ToDer for Vec<T>where
T: ToDer,
std only.impl<T> ToDer for BTreeSet<T>where
T: ToDer,
std only.impl<T, E, const CLASS: u8, const TAG: u32> ToDer for TaggedValue<T, E, Explicit, CLASS, TAG>where
T: ToDer,
std only.impl<T, E, const CLASS: u8, const TAG: u32> ToDer for TaggedValue<T, E, Implicit, CLASS, TAG>where
T: ToDer,
std only.