NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #277 most downloaded on crates.io
Pure Rust embedded-friendly implementation of the Distinguished Encoding Rules (DER) for Abstract Syntax Notation One (ASN.1) as described in ITU X.690 with full support for heapless `no_std`/`no_alloc` targets
Last release 1 months ago
05 Sep 2026
Release timing varies
gaps range from 2 weeks to 8 months
Nearly every release is documented
notes for 24 of 24 stable releases
20 versions withdrawn
withdrawn after publishing
6 years old
65 releases · first in 2020
der v0.8.2
der v0.8.1
der v0.8.1 (#2377)
One column per quarter.
Deprecate TagNumber::new ([#1727])
NOTE: this release was yanked to fix a minimal-versions check in CI.
Decode and DecodeValue traits (#1055)EncodingRules enum (#1321)Decode::from_ber (#1389)tag_mode attribute (#1401)Hash implementation for AlgorithmIdentifier (#1414)SequenceRef::as_bytes and AsRef<[u8]> impl (#1454)Reader::peek_into (#1478)GeneralString variant to Tag (#1512)OctetString(Ref) to Vec/Bytes (#1540)::new to Length, BytesRef, and AnyRef (#1713)GeneralizedTime::from_date_time (#1718)Decode::from_der_partial (#1725)BitStringRef/OctetStringRef and [u8; N] (#1731)heapless:Vec<u8> and OctetStringRef (#1735)IsConstructed trait, impl'ed on any FixedTag (#1744)Hash for SetOf (#1764)Uint/Int conversions from native types (#1762)APPLICATION, CONTEXT-SPECIFIC and PRIVATE tags (#1819, #1825, #1944)Cow<[u8]> in derive(Sequence) (#1850)diagnostic::on_unimplemented attributes (#1876)Reader::read_value, auto-nest DecodeValue (#1877, #1895, #1897, #1901)Any::header (#1935)Tag::RelativeOid (#1942)ber feature (#1948, #1950)StringOwned and Ia5String (#1973)DecodeValue/EncodeValue/Tagged for Cow (#2093)EncodeValue, Encode, DecodeValue, Decode, Error, ErrorKind, Tagged, FixedTag,
IsConstructed, Tag, Length, Header (#2075, #2071, #2070, #2064, #2058, #2052, #2053, #2051)SequenceRef::new (#2224)Tag::Integer.length_error() on empty ints (#1400)?Sized types (#1451)Tag::peek (#1479)Header::peek (#1480)core::error::Error (#1553)const-oid to v0.10 (#1676)TagNumber::new (#1727)Any::to_ref, BytesOwned::to_ref (#1797)ErrorKind::Noncanonical in EXPLICIT when primitive (#1818)read_nested to check length of IMPLICIT types (#1739)From<&UintRef<'a>> for Uint (#1840)ObjectIdentifier<MAX_SIZE> impls generic (#1851)reader::position::Position (#1880)Reader cloneable (#1883)Header::peek and Tag::peek (#1886)OctetStringRef, consolidate bytes/string modules, improve internal ref types
(#1920, #1921, #1998, #2040)Header::new, add Header::with_length, tests for constructed octet string (#1931, #1930)der_cmp for Length (#1997)PemReader decode to Cow::Owned (#2094)SET OF types with EncodingRules::Der (#2219)SetOf and SequenceOf now require heapless feature (#2220, #2229)Encode::encode_to_vec (#1760)Option<&[u8]> (#1737)Tag::peek_optional for 6-byte and 7+ byte tags (#1804)Header::peek for 11-byte tag-lengths (#1828)value_cmp: add Iterator::size_hint (#1830)Decode(Value)::Error on core::error::Error (#2137)SetOf(Vec)::insert check for duplicates (#2217)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
append in Encode::encode_to_vec (backport [#1760])
Encode::encode_to_vec (backport #1760)make sure der is comptatible with potential language breaking changed (backport [#1374])
TryFrom impl for strings based on StrOwned ([#1064])
TryFrom<String> impl for strings based on StrOwned (#1064)Deprecate SetOf(Vec)::add ([#1067])
adds support for DateTime::INFINITY ([#1026])
DateTime::INFINITY (#1026)Decode and Encode impls for PhantomData ([#1009])
UtcTime::MAX_YEAR associated constant ([#989])
UtcTime::MAX_YEAR associated constant (#989)[#925]: https://github.com/RustCrypto/formats/pull/925 [#965]: https://github.com/RustCrypto/formats/pull/965 [#969]: https://github.com/RustCrypto/fo
Make zeroize's alloc feature conditional ([#920])
zeroize's alloc feature conditional (#920)OwnedtoRef/RefToOwned traits; MSRV 1.65 ([#797])
OwnedtoRef/RefToOwned traits; MSRV 1.65 (#797)OctetStringRef::decode_into (#817)Int and IntRef types (#823)IndefiniteLength type (#830)Any::value accessor (#833)OctetString::into_bytes (#845)Box<T> for DecodeValue, EncodeValue, and Sequence (#860)UIntRef => UintRef (#786)dyn Writer with impl Writer (#828)AnyRef::decode_into -> ::decode_as (#829)pem-rfc7468 dependency to v0.7 (#894)Encode::to_vec => ::to_der (#898)Rudimentary implementation of TeletexString and VideotexString ([#691])
Impl ValueOrd for SetOf and SetOfVec ([#362])
ValueOrd for SetOf and SetOfVec (#362)SequenceRef type (#374)SetOf sorting on heapless no_std targets (#401)BitString to/from a FlagSet (#412)DecodeOwned marker trait (#529)REAL type (#346)DecodePem and EncodePem traits (#571)Document and SecretDocument types (#571)EncodeRef/EncodeValueRef wrapper types (#604)Writer trait (#605)Reader trait (#606)PemReader and PemWriter (#618, #636)BitString (#636)Any and OctetString types (#640)Header to DecodeValue (#392)const-oid dependency to v0.9 (#507)Decodable/Encodable => Decode/Encode (#523)clippy lints (#556, #579)&mut dyn Writer as output for Encode::encode and EncodeValue::encode_value (#611)pem-rfc7468 dependency to v0.6 (#620)Reader<'a> as input for Decode::decode and DecodeValue::decode_value (#633)Any => AnyRef (#637)BitString => BitStringRef (#637)Ia5String => Ia5StringRef (#637)OctetString => OctetStringRef (#637)PrintableString => PrintableStringRef (#637)Utf8String => Utf8StringRef (#637)UIntBytes => UIntRef (#637)Decoder => SliceReader (#651)Encoder => SliceWriter (#651)INTEGER inputs (#447)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
[#226]: https://github.com/RustCrypto/formats/pull/226
Any::NULL constant (#226)Support for IMPLICIT mode CONTEXT-SPECIFIC fields ([#61])
IMPLICIT mode CONTEXT-SPECIFIC fields (#61)DecodeValue/EncodeValue traits (#63)DateTime through public API (#75)SEQUENCE OF support for [T; N] (#90)SequenceOf type (#95)SEQUENCE OF support for Vec (#96)Document trait (#117)time crate (#129)Tag::NumericString (#132)BitString (#141)Decoder::{peek_tag, peek_header} (#142)encoder sequence` method (#147)Tag::Enumerated (#153)ErrorKind::TagNumberInvalid (#156)Tag::VisibleString and Tag::BmpString (#160)TagNumbers (#165)DerOrd and ValueOrd traits (#190)ContextSpecificRef type (#199)ContextSpecific generic around an inner type (#60)SetOf trait; rename SetOfArray => SetOf (#97)Message trait to Sequence (#99)GeneralizedTime/UtcTime into DateTime newtypes (#102)ErrorKind::Truncated with ErrorKind::Incomplete (#143)ErrorKind::UnknownTagMode => ErrorKind::TagModeUnknown (#155)ErrorKind::UnexpectedTag => ErrorKind::TagUnexpected (#155)ErrorKind::UnknownTag => ErrorKind::TagUnknown (#155)ErrorKind::{Incomplete, Underlength} (#157)Tagged => FixedTag; add new Tagged trait (#189)DerOrd for SetOf* types (#200)impl From<BitString> for &[u8] to TryFrom (#203)crypto-bigint dependency to v0.3 (#215)const-oid dependency to v0.7 (#216)pem-rfc7468 dependency to v0.3 (#217)der_derive dependency to v0.5 (#221)Nothing published for this version
Backport [#147] type hint fix for WASM platforms to 0.4.x
Accidentally checked-in target/ directory ([#66])
target/ directory (#66)[#33]: https://github.com/RustCrypto/formats/pull/33
Tag::unexpected_error (#33)ASN.1 SET type now flagged with the constructed bit
Encoding UTCTime for dates with 20xx years
UTCTime for dates with 20xx yearsDeprecated methods replaced by associated constants
TagNumber typecrypto-bigint supportTag number helpersTag::octetErrorKind::Value helpersSequenceIterconst-oid crate dependency to v0.6Tag structuredasn1 modulebig-uint crate feature to bigintBigUInt to UIntBytesDecoder::error() return an ErrorHelper methods for context-specific fields
ContextSpecific field wrapperAny<'a> decodingFrom conversion for BitString into Any### Changed - Support Length of up to 1 MiB
Length of up to 1 MiBDeprecate const fn methods replaced by Length constants
Length constantsconst fn methods replaced by Length constantsNon-critical bug allowing Length to exceed the max invariant
Length to exceed the max invariantPartialOrd + Ord impls to all ASN.1 types
PartialOrd + Ord impls to all ASN.1 typesImpl Decode/Encoded/Tagged for String
Decode/Encoded/Tagged for StringLength::one and Length::for_tlvSET OF support with SetOf trait and SetOfRefDecodable::from_bytes => Decodable::from_dersequence and messageErrorKind::Oid => ErrorKind::MalformedOidFrom impls for variants when deriving ChoiceLength use u32 internallySequence constructor privateconst_oid to v0.5der_derive to v0.3BigUIntSizeBump minimum const-oid dependency to v0.4.4
From<ObjectIdentifier> for Anyconst-oid dependency to v0.4.4### Added - Support for IA5String
IA5String### Added - Choice trait
Choice trait### Added - Export Header publicly - Make Encoder::reserve public
Header publiclyEncoder::reserve publicMake the unit type an encoding of NULL
NULL### Added - ErrorKind::UnknownOid variant
ErrorKind::UnknownOid variant### Added - Any::is_null method ### Changed - Deprecate Any::null method
Any::is_null methodAny::null methodAdditional rustdoc documentation
rustdoc documentationSupport for UTCTime and GeneralizedTime
UTCTime and GeneralizedTimeYour coding agent can read these notes before it upgrades. Set up the MCP server →