| 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)