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 };
struct Address { street: String, housenumber: u128, postalcode: u128, state: String, country: String }
struct Customer { name: String, emailaddress: String, postal_address: Address } ```
```rust use serdeasn1der::{ tovec, frombytes }; use serde_derive::{ Serialize, Deserialize };
struct TestStruct {
number: u8,
#[serde(with = "serde_bytes")]
vec: Vec
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(); } ```
Obviously serde
. Otherwise, it's dependency less.