Crates.io | serde_asn1_der |
lib.rs | serde_asn1_der |
version | 0.8.0 |
source | src |
created_at | 2019-03-24 13:55:00.866082 |
updated_at | 2023-03-07 18:54:01.224299 |
description | A basic ASN.1-DER implementation for `serde` based upon `asn1_der` |
homepage | |
repository | https://github.com/KizzyCode/serde_asn1_der-rust |
max_upload_size | |
id | 123495 |
size | 45,398 |
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-typeu8
, 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-typeWith the serde_derive
-crate you can derive Serialize
and Deserialize
for all non-primitive
elements:
use serde_derive::{ Serialize, Deserialize };
#[derive(Serialize, Deserialize)] // Now our struct supports all DER-conversion-traits
struct Address {
street: String,
house_number: u128,
postal_code: u128,
state: String,
country: String
}
#[derive(Serialize, Deserialize)] // Now our struct supports all DER-conversion-traits too
struct Customer {
name: String,
e_mail_address: String,
postal_address: Address
}
use serde_asn1_der::{ to_vec, from_bytes };
use serde_derive::{ Serialize, Deserialize };
#[derive(Serialize, Deserialize)]
struct TestStruct {
number: u8,
#[serde(with = "serde_bytes")]
vec: Vec<u8>,
tuple: (usize, ())
}
fn main() {
let plain = TestStruct{ number: 7, vec: b"Testolope".to_vec(), tuple: (4, ()) };
let serialized = to_vec(&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.