https://github.com/kizzycode/serde_asn1_der-rust
An ASN.1-DER subset for serde
https://github.com/kizzycode/serde_asn1_der-rust
Last synced: 29 days ago
JSON representation
An ASN.1-DER subset for serde
- Host: GitHub
- URL: https://github.com/kizzycode/serde_asn1_der-rust
- Owner: KizzyCode
- Created: 2019-03-24T13:46:38.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-07T18:33:43.000Z (about 2 years ago)
- Last Synced: 2025-04-18T01:41:33.667Z (about 1 month ago)
- Language: Rust
- Size: 81.1 KB
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE BSD 2-CLAUSE.md
Awesome Lists containing this project
README
[](https://docs.rs/serde_asn1_der)
[](https://opensource.org/licenses/BSD-2-Clause)
[](https://opensource.org/licenses/MIT)
[](https://crates.io/crates/serde_asn1_der)
[](https://crates.io/crates/serde_asn1_der)
[](https://travis-ci.org/KizzyCode/serde_asn1_der-rust)
[](https://ci.appveyor.com/project/KizzyCode/serde-asn1-der-rust)
[](https://deps.rs/crate/serde_asn1_der/0.8.0)# serde_asn1_der
Welcome to `serde_asn1_der` 🎉This crate implements an ASN.1-DER subset for serde based upon
[`asn1_der`](https://crates.io/crates/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`: The ASN.1-OctetString-type
- `&str`, `String`: The ASN.1-UTF8String-type
- And everything sequence-like combined out of this typesWith 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,
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
}
```# Example
```rust
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,
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`
instead of a specific type. To enable `AnyObject`, use the `"any"`-feature.