License License Travis CI AppVeyor CI

serdeasn1der

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

The following types have built-in support: - bool: The ASN.1-BOOLEAN-type - u8, u16, u32, u64, u128, usize: The ASN.1-INTEGER-type - (): 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(); } ```

Dependencies

Obviously serde. Otherwise, it's dependency less.