docs.rs License BSD-2-Clause License MIT crates.io Download numbers Travis CI AppVeyor CI dependency status

serdeasn1der

Welcome to serde_asn1_der 🎉

This crate implements an ASN.1-DER subset for serde based upon asn1_der.

The following types are supported: - bool: The ASN.1-BOOLEAN-type - u8, u16, u32, u64, u128, usize: The ASN.1-INTEGER-type - (), Option: The ASN.1-NULL-type - &[u8], Vec<u8>: The ASN.1-OctetString-type - &str, String: The ASN.1-UTF8String-type - And everything sequence-like combined out of this types

With the serde_derive-crate you can derive Serialize and Deserialize for all non-primitive elements: ```rust use serde_derive::{ Serialize, Deserialize };

[derive(Serialize, Deserialize)] // Now our struct supports all DER-conversion-traits

struct Address { street: String, housenumber: u128, postalcode: u128, state: String, country: String }

[derive(Serialize, Deserialize)] // Now our struct supports all DER-conversion-traits too

struct Customer { name: String, emailaddress: String, postal_address: Address } ```

Example

```rust use serdeasn1der::{ tovec, frombytes }; use serde_derive::{ Serialize, Deserialize };

[derive(Serialize, Deserialize)]

struct TestStruct { number: u8, #[serde(with = "serde_bytes")] vec: Vec, tuple: (usize, ()) }

fn main() { let plain = TestStruct{ number: 7, vec: b"Testolope".tovec(), tuple: (4, ()) }; let serialized = tovec(&plain).unwrap(); let deserialized: TestStruct = from_bytes(&serialized).unwrap(); } ```

AnyObject

This crate also offers a type-erased AnyObject-trait, that allows you to use Box<dyn AnyObject> instead of a specific type. To enable AnyObject, use the "any"-feature.