facet-asn1-legacy

Crates.iofacet-asn1-legacy
lib.rsfacet-asn1-legacy
version0.36.0
created_at2025-12-29 20:41:03.832944+00
updated_at2025-12-29 20:41:03.832944+00
descriptionLegacy ASN.1 serialization and deserialization for Facet types - use facet-asn1 instead
homepagehttps://facet.rs
repositoryhttps://github.com/facet-rs/facet
max_upload_size
id2011319
size77,232
Amos Wenger (fasterthanlime)

documentation

README

facet-asn1-legacy

Coverage Status crates.io documentation MIT/Apache-2.0 licensed Discord

facet-asn1

A #![no_std] ASN.1 serializer and deserializer based on facet

Currently supports Distinguished Encoding Rules (DER) only

Basic Types

ASN.1 Type Rust
BOOLEAN bool
INTEGER i8, i16, i32, or i64
OCTET STRING Vec<u8>
NULL Any unit struct
REAL f32 or f64
UTF8String String
CHOICE enum
SEQUENCE struct

Other ASN.1 Types

Newtype structs using the facet::Shape::type_tag property can be used to create other basic types without any content validation:

use facet::Facet;

#[derive(Debug, Clone, Facet, PartialEq, Eq)]
#[facet(type_tag = "IA5String", transparent)]
struct IA5String(String);

Context Specific Type Tags

You can also set context specific BER/DER tags to a given number. Implicit tags must be set as transparent.

use facet::Facet;

// ImplicitString ::= [5] IMPLICIT UTF8String
#[derive(Debug, Facet, PartialEq, Eq)]
#[facet(type_tag = "5", transparent)]
struct ImplicitString(String);

// ExplciitString ::= [5] EXPLICIT UTF8String
#[derive(Debug, Facet, PartialEq, Eq)]
#[facet(type_tag = "5")]
struct ExplicitString(String);

The tag classes UNIVERSAL, APPLICATION, and PRIVATE are also supported in type_tags for greater flexibility.

Sponsors

Thanks to all individual sponsors:

GitHub Sponsors Patreon

...along with corporate sponsors:

AWS Zed Depot

...without whom this work could not exist.

Special thanks

The facet logo was drawn by Misiasart.

License

Licensed under either of:

at your option.

Commit count: 3380

cargo fmt