Crates.io | asn1 |
lib.rs | asn1 |
version | 0.22.0 |
created_at | 2015-07-21 00:33:43.115959+00 |
updated_at | 2025-06-20 20:17:15.822042+00 |
description | ASN.1 (DER) parser and writer for Rust. |
homepage | |
repository | https://github.com/alex/rust-asn1 |
max_upload_size | |
id | 2639 |
size | 261,394 |
This is a Rust library for parsing and generating ASN.1 data (DER only).
Add asn1
to your Cargo.toml
:
$ cargo add asn1
Builds on Rust 1.74.0 and newer.
rust-asn1
is compatible with #![no_std]
environments:
$ cargo add asn1 --no-default-features
Asn1Writable::encoded_length
, SimpleAsn1Writable::data_length
, and
Asn1DefinedByWritable::encoded_length
. Implementing these functions reduces
the number of re-allocations required when writing. None
can be returned if
it is not possible to provide an efficient implementation.BitString::new
is now const fn
.BigInt::new
, BigUint::new
, and DateTime::new
are now const fn
.Parser
now exposes a peek_tag
method that returns the tag of the next
element in the parse, without consuming that element.
(#532)Parser
now exposes read_explicit_element
and read_implicit_element
methods that allow parsing EXPLICIT/IMPLICIT elements when the tag number
is not known at compile time.PrintableString
, Utf8String
, BMPString
, and UniversalString
now
#[derive(Hash)]
. (#536)#[derive(Asn1DefinedByRead)]
and
#[derive(Asn1DefinedByWrite)]
.
(#506)Writer::{write_explicit_element, write_optional_explicit_element, write_implicit_element, write_optional_implicit_element}
.
These can all be better accomplished with the asn1::Explicit
and
asn1::Implicit
types.#[implicit]
and #[explicit]
.
(#502)GeneralizedTime
has been renamed to X509GeneralizedTime
. The type does
not allow fractional seconds, however this restriction is not actually a DER
rule, it is specific to X.509.
(#494)
GeneralizedTime
is a new type that accepts fractional seconds
replacing the old GeneralizedTime
.
(#492)
#[derive(asn1::Asn1Read)]
and #[derive(asn1::Asn1Write)]
now implement
"perfect derives".
(#496)