#der #newtype #serialization #asn-1 #ser #structures #data

no-std ser_der

Newtypes for the der crate to allow for serde de-/serialization

2 unstable releases

0.1.0-alpha.1 May 5, 2024
0.0.0 May 5, 2024

#1566 in Parser implementations

MPL-2.0 license

8KB
82 lines

ser_der

Newtypes for the der crate to allow for serde de-/serialization.

Usage

Add this to your Cargo.toml:

[dependencies]
ser_der = { version = "0", features = ["alloc"] } # Features should match the ones of the der crate
der = { version = "0", features = ["alloc"] } 
serde = { version = "1", features = ["derive"] }

You can then use the newtypes offered by this crate to de-/serialize DER-encoded data structures using serde.

#[derive(serde::Serialize, serde::Deserialize)]
struct MyStruct {
    #[serde(with = "ser_der::asn1::ia5_string")]
    bits: ser_der::asn1::IA5String,
}

All newtypes implement Deref, DerefMut, From<[Newtype]> for [Type] and From<[Type]> for [Newtype] to the underlying der type.

Types covered

  • IA5String
  • DateTime
  • Document
  • Length
  • Any
  • BitString
  • GeneralizedTime
  • Header
  • Int
  • Length
  • Null
  • ObjectIdentifier
  • OctetString
  • PrintableString
  • SequenceOf
  • SetOf
  • Tag
  • TeletexString
  • Uint
  • UtcTime

Upstreaming to der

This crate is a temporary solution until the der crate supports serde de-/serialization. The plan is to upstream the serde support to the der crate.

Dependencies

~0.7–1.4MB
~32K SLoC