PackageTrack
Sign in Get early access

der

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

0.8.1 423M downloads/mo #274 most downloaded on crates.io RustCrypto/formats

What this package is like to depend on

Last release 1 months ago

09 Jul 2026

Release timing varies

gaps range from 2 weeks to 8 months

Nearly every release is documented

notes for 24 of 24 stable releases

19 versions withdrawn

withdrawn after publishing

6 years old

64 releases · first in 2020

6 releases in the last 12 months

see the full history below

Release timeline

64 releases · Dec 2020 to Jul 2026
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 64
  1. 0.8.1 09 Jul 2026
    Release notes

    der v0.8.1 (#2377)

    Open source →
    Release notes

    Added

    • SetOfRef struct (#2247)

    Changed

    • Deprecate ErrorKind::SetDuplicate (#2276)
    • Improve SetOf* sorting performance (#2345)
    • Cap maximum number of nested messages at 64 (#2379)

    Fixed

    • SET OF is not supposed to disallow duplicates (#2272)
    Open source →
  2. 0.8.0 13 Feb 2026
    Release notes

    Added

    • Custom error types support to the Decode and DecodeValue traits (#1055)
    • EncodingRules enum (#1321)
    • Decode::from_ber (#1389)
    • Documentation for field-level 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)
    • Conversions from OctetString(Ref) to Vec/Bytes (#1540)
    • Custom error types in derive macros (#1560)
    • Support for tags beyond 30 (#1651)
    • Const ::new to Length, BytesRef, and AnyRef (#1713)
    • Const GeneralizedTime::from_date_time (#1718)
    • Decode::from_der_partial (#1725)
    • Conversions between BitStringRef/OctetStringRef and [u8; N] (#1731)
    • Add class bits consts for Application and Private tag support (#1721)
    • conversions between heapless:Vec<u8> and OctetStringRef (#1735)
    • IsConstructed trait, impl'ed on any FixedTag (#1744)
    • Implement Hash for SetOf (#1764)
    • Implement Uint/Int conversions from native types (#1762)
    • Support for APPLICATION, CONTEXT-SPECIFIC and PRIVATE tags (#1819, #1825, #1944)
    • Support Cow<[u8]> in derive(Sequence) (#1850)
    • diagnostic::on_unimplemented attributes (#1876)
    • Reader::read_value, auto-nest DecodeValue (#1877, #1895, #1897, #1901)
    • Indefinite length support for BER (#1884, #1885, #1894, #1900, #1902, #1910)
    • Constructed OctetString support (#1899, #1922)
    • string conversions, predicate methods for EncodingRules (#1903, #1953)
    • Any::header (#1935)
    • Tag::RelativeOid (#1942)
    • ber feature (#1948, #1950)
    • Hash derive for StringOwned and Ia5String (#1973)
    • Implement DecodeValue/EncodeValue/Tagged for Cow (#2093)
    • Add doc examples for EncodeValue, Encode, DecodeValue, Decode, Error, ErrorKind, Tagged, FixedTag, IsConstructed, Tag, Length, Header (#2075, #2071, #2070, #2064, #2058, #2052, #2053, #2051)
    • SequenceRef::new (#2224)

    Changed

    • Return Tag::Integer.length_error() on empty ints (#1400)
    • Allow all blanket impls on ?Sized types (#1451)
    • Refactor Tag::peek (#1479)
    • Refactor Header::peek (#1480)
    • Use core::error::Error (#1553)
    • Use 2024 edition, bump MSRV to 1.85 (#1670)
    • Bump const-oid to v0.10 (#1676)
    • Reject zero lengths reads (#1716)
    • Deprecate TagNumber::new (#1727)
    • Use strict context-specific skipping condition (equal tag numbers only) (#1740)
    • Const Any::to_ref, BytesOwned::to_ref (#1797)
    • Return ErrorKind::Noncanonical in EXPLICIT when primitive (#1818)
    • Use read_nested to check length of IMPLICIT types (#1739)
    • Simplify From<&UintRef<'a>> for Uint (#1840)
    • Make ObjectIdentifier<MAX_SIZE> impls generic (#1851)
    • Extract reader::position::Position (#1880)
    • Make Reader cloneable (#1883)
    • Simplify Header::peek and Tag::peek (#1886)
    • Improve constructed bit handling (#1919)
    • Use fat pointer in OctetStringRef, consolidate bytes/string modules, improve internal ref types (#1920, #1921, #1998, #2040)
    • Change constructor Header::new, add Header::with_length, tests for constructed octet string (#1931, #1930)
    • Simplify der_cmp for Length (#1997)
    • Rename variable encoder -> writer and improve example (#2078)
    • Have PemReader decode to Cow::Owned (#2094)
    • Only sort SET OF types with EncodingRules::Der (#2219)
    • SetOf and SequenceOf now require heapless feature (#2220, #2229)

    Fixed

    • Append in Encode::encode_to_vec (#1760)
    • Derive optional OCTET/BIT STRING on Option<&[u8]> (#1737)
    • X.680 tag order: compare class and number first (#1790)
    • BMPString compatibility in derive macros (#1793)
    • Tag::peek_optional for 6-byte and 7+ byte tags (#1804)
    • Header::peek for 11-byte tag-lengths (#1828)
    • Panic in value_cmp: add Iterator::size_hint (#1830)
    • Error position tracking improvements (#1889, #2080, #2079)
    • Bound Decode(Value)::Error on core::error::Error (#2137)
    • Have SetOf(Vec)::insert check for duplicates (#2217)

    Removed

    • TagNumber::N0..N30 consts (#1724)
    • 256MiB limit on Length (#1726)
    • Generic <T> from Reader::finish (#1833)
    • Deprecated SetOf(Vec)::add methods (#2232)
    • SequenceRef lifetime (#2224)
    Open source →
  3. 0.8.0-rc.12 11 Feb 2026 pre-release

    Nothing published for this version

  4. 0.8.0-rc.11 11 Feb 2026 pre-release

    Nothing published for this version

  5. 0.8.0-rc.10 08 Nov 2025 pre-release

    Nothing published for this version

  6. 0.8.0-rc.9 15 Sep 2025 pre-release

    Nothing published for this version

  7. 0.8.0-rc.8 05 Aug 2025 pre-release

    Nothing published for this version

  8. 0.8.0-rc.7 10 Jul 2025 pre-release

    Nothing published for this version

  9. 0.8.0-rc.6 03 Jul 2025 pre-release

    Nothing published for this version

  10. 0.8.0-rc.5 20 Jun 2025 pre-release

    Nothing published for this version

  11. 0.8.0-rc.4 05 Jun 2025 pre-release

    Nothing published for this version

  12. 0.8.0-rc.3 30 May 2025 pre-release

    Nothing published for this version

  13. 0.8.0-rc.2 23 Apr 2025 pre-release

    Nothing published for this version

  14. 0.8.0-rc.1 18 Aug 2024 pre-release

    Nothing published for this version

  15. 0.8.0-rc.0 26 Jul 2024 pre-release

    Nothing published for this version

  16. 0.8.0-pre.0 07 Jan 2024 pre-release

    Nothing published for this version

  17. 0.8.0-pre 07 Jan 2024 pre-release

    Nothing published for this version

  18. 0.7.10 18 Apr 2025
    Release notes

    Fixed

    • append in Encode::encode_to_vec (backport #1760)
    Open source →
  19. 0.7.9 01 Apr 2024
    Release notes

    Changed

    • make sure der is comptatible with potential language breaking changed (backport #1374)
    Open source →
  20. 0.7.8 07 Aug 2023
    Release notes

    Added

    • bytes feature (#1156)
    • impl RefToOwned/OwnedToRef for &[u8]/Box<[u8]> (#1188)
    • BmpString (#1164)

    Changed

    • no-panic cleanup (#1169)
    • Bump der_derive dependency to v0.7.2 (#1192)
    Open source →
  21. 0.7.7 29 Jun 2023
    Release notes

    Added

    • TryFrom<String> impl for strings based on StrOwned (#1064)
    Open source →
  22. 0.7.6 16 May 2023
    Release notes

    Added

    • SetOfVec::{extend, from_iter} methods (#1065)
    • SetOf(Vec)::{insert, insert_ordered} methods (#1067)

    Changed

    • Deprecate SetOf(Vec)::add (#1067)

    Fixed

    • Off-by-one error in BMPString tag (#1037)
    • Handling of non-unique items in SetOf(Vec) (#1066)
    Open source →
  23. 0.7.5 25 Apr 2023
    Release notes

    Added

    • adds support for DateTime::INFINITY (#1026)
    Open source →
  24. 0.7.4 19 Apr 2023
    Release notes

    Added

    • Decode and Encode impls for PhantomData (#1009)
    • ValueOrd and DerOrd impls for PhantomData (#1012)

    Changed

    • Bump hex-literal dependency to v0.4.1 ([#999])
    • Bump der_derive dependency to v0.7.1 (#1016)
    Open source →
  25. 0.7.3 06 Apr 2023
    Release notes

    Added

    • UtcTime::MAX_YEAR associated constant (#989)
    Open source →
  26. 0.7.2 04 Apr 2023
    Release notes

    Added

    • Expose `NestedReader (#925)
    • From<ObjectIdentifier> impl for Any (#965)
    • Any::null helper (#969)
    • Any::encode_from (#976)
    Open source →
  27. 0.7.1 07 Mar 2023
    Release notes

    Changed

    • Make zeroize's alloc feature conditional (#920)
    Open source →
  28. 0.7.0 27 Feb 2023 withdrawn
    Release notes

    Added

    • OwnedtoRef/RefToOwned traits; MSRV 1.65 (#797)
    • OctetStringRef::decode_into (#817)
    • Int and IntRef types (#823)
    • IndefiniteLength type (#830)
    • Any::value accessor (#833)
    • Buffered PEM reader (#839)
    • OctetString::into_bytes (#845)
    • Blanket impls on Box<T> for DecodeValue, EncodeValue, and Sequence (#860)

    Changed

    • Rename UIntRef => UintRef (#786)
    • Replace use of dyn Writer with impl Writer (#828)
    • Rename AnyRef::decode_into -> ::decode_as (#829)
    • Bump pem-rfc7468 dependency to v0.7 (#894)
    • Rename Encode::to_vec => ::to_der (#898)

    Removed

    • Sequence::fields method (#828)
    • Inherent AnyRef decoding methods (#829)
    Open source →
  29. 0.6.1 06 Dec 2022
    Release notes

    Added

    • Rudimentary implementation of TeletexString and VideotexString (#691)
    • Impl ValueOrd for FlagSet<T> and UIntRef (#723)

    Changed

    • Eliminate some boilerplate code by using Deref (#697)
    Open source →
  30. 0.6.0 08 May 2022
    Release notes

    Added

    • Impl ValueOrd for SetOf and SetOfVec (#362)
    • SequenceRef type (#374)
    • Support for SetOf sorting on heapless no_std targets (#401)
    • Support for mapping BitString to/from a FlagSet (#412)
    • DecodeOwned marker trait (#529)
    • Support for the ASN.1 REAL type (#346)
    • DecodePem and EncodePem traits (#571)
    • Document and SecretDocument types (#571)
    • EncodeRef/EncodeValueRef wrapper types (#604)
    • Writer trait (#605)
    • Reader trait (#606)
    • Streaming on-the-fly PemReader and PemWriter (#618, #636)
    • Owned BitString (#636)
    • Owned Any and OctetString types (#640)

    Changed

    • Pass Header to DecodeValue (#392)
    • Bump const-oid dependency to v0.9 (#507)
    • Renamed Decodable/Encodable => Decode/Encode (#523)
    • Enable arithmetic, casting, and panic clippy lints (#556, #579)
    • Use &mut dyn Writer as output for Encode::encode and EncodeValue::encode_value (#611)
    • Bump pem-rfc7468 dependency to v0.6 (#620)
    • Use Reader<'a> as input for Decode::decode and DecodeValue::decode_value (#633)
    • Renamed Any => AnyRef (#637)
    • Renamed BitString => BitStringRef (#637)
    • Renamed Ia5String => Ia5StringRef (#637)
    • Renamed OctetString => OctetStringRef (#637)
    • Renamed PrintableString => PrintableStringRef (#637)
    • Renamed Utf8String => Utf8StringRef (#637)
    • Renamed UIntBytes => UIntRef (#637)
    • Renamed Decoder => SliceReader (#651)
    • Renamed Encoder => SliceWriter (#651)

    Fixed

    • Handling of oversized unsigned INTEGER inputs (#447)

    Removed

    • bigint feature (#344)
    • OrdIsValueOrd trait (#359)
    • Document trait (#571)
    • OptionalRef (#604)
    • Decode-time SET OF ordering checks (#625)
    Open source →
  31. 0.6.0-pre.4 05 May 2022 pre-release

    Nothing published for this version

  32. 0.6.0-pre.3 14 Mar 2022 pre-release

    Nothing published for this version

  33. 0.6.0-pre.2 12 Mar 2022 pre-release

    Nothing published for this version

  34. 0.6.0-pre.1 04 Feb 2022 pre-release

    Nothing published for this version

  35. 0.6.0-pre.0 18 Jan 2022 pre-release

    Nothing published for this version

  36. 0.5.1 17 Nov 2021
    Release notes

    Added

    • Any::NULL constant (#226)
    Open source →
  37. 0.5.0 15 Nov 2021 withdrawn
    Release notes

    Added

    • Support for IMPLICIT mode CONTEXT-SPECIFIC fields (#61)
    • DecodeValue/EncodeValue traits (#63)
    • Expose DateTime through public API (#75)
    • SEQUENCE OF support for [T; N] (#90)
    • SequenceOf type (#95)
    • SEQUENCE OF support for Vec (#96)
    • Document trait (#117)
    • Basic integration with time crate (#129)
    • Tag::NumericString (#132)
    • Support for unused bits to BitString (#141)
    • Decoder::{peek_tag, peek_header} (#142)
    • Type hint in encoder sequence` method (#147)
    • Tag::Enumerated (#153)
    • ErrorKind::TagNumberInvalid (#156)
    • Tag::VisibleString and Tag::BmpString (#160)
    • Inherent constants for all valid TagNumbers (#165)
    • DerOrd and ValueOrd traits (#190)
    • ContextSpecificRef type (#199)

    Changed

    • Make ContextSpecific generic around an inner type (#60)
    • Removed SetOf trait; rename SetOfArray => SetOf (#97)
    • Rename Message trait to Sequence (#99)
    • Make GeneralizedTime/UtcTime into DateTime newtypes (#102)
    • Rust 2021 edition upgrade; MSRV 1.56 (#136)
    • Replace ErrorKind::Truncated with ErrorKind::Incomplete (#143)
    • Rename ErrorKind::UnknownTagMode => ErrorKind::TagModeUnknown (#155)
    • Rename ErrorKind::UnexpectedTag => ErrorKind::TagUnexpected (#155)
    • Rename ErrorKind::UnknownTag => ErrorKind::TagUnknown (#155)
    • Consolidate ErrorKind::{Incomplete, Underlength} (#157)
    • Rename Tagged => FixedTag; add new Tagged trait (#189)
    • Use DerOrd for SetOf* types (#200)
    • Switch impl From<BitString> for &[u8] to TryFrom (#203)
    • Bump crypto-bigint dependency to v0.3 (#215)
    • Bump const-oid dependency to v0.7 (#216)
    • Bump pem-rfc7468 dependency to v0.3 (#217)
    • Bump der_derive dependency to v0.5 (#221)

    Removed

    • Sequence struct (#98)
    • Tagged bound on ContextSpecific::decode_implicit (#161)
    • ErrorKind::DuplicateField (#162)
    Open source →
  38. 0.5.0-pre.1 14 Oct 2021 pre-release

    Nothing published for this version

  39. 0.4.5 01 Dec 2021
    Release notes

    Fixed

    • Backport [#147] type hint fix for WASM platforms to 0.4.x
    Open source →
  40. 0.4.4 06 Oct 2021
    Release notes

    Removed

    • Accidentally checked-in target/ directory (#66)
    Open source →
  41. 0.4.3 15 Sep 2021 withdrawn
    Release notes

    Added

    • Tag::unexpected_error (#33)
    Open source →
  42. 0.4.2 14 Sep 2021 withdrawn
    Release notes

    Changed

    • Moved to formats repo (#2)

    Fixed

    • ASN.1 SET type now flagged with the constructed bit
    Open source →
  43. 0.4.1 08 Aug 2021
    Release notes

    Fixed

    • Encoding UTCTime for dates with 20xx years
    Open source →
  44. 0.4.0 08 Jun 2021
    Release notes

    Added

    • TagNumber type
    • Const generic integer de/encoders with support for all of Rust's integer primitives
    • crypto-bigint support
    • Tag number helpers
    • Tag::octet
    • ErrorKind::Value helpers
    • SequenceIter

    Changed

    • Bump const-oid crate dependency to v0.6
    • Make Tag structured
    • Namespace ASN.1 types in asn1 module
    • Refactor context-specific field decoding
    • MSRV 1.51
    • Rename big-uint crate feature to bigint
    • Rename BigUInt to UIntBytes
    • Have Decoder::error() return an Error

    Removed

    • Deprecated methods replaced by associated constants
    Open source →
  45. 0.3.5 24 May 2021
    Release notes

    Added

    • Helper methods for context-specific fields
    • ContextSpecific field wrapper
    • Decoder position tracking for errors during Any<'a> decoding

    Fixed

    • From conversion for BitString into Any
    Open source →
  46. 0.3.4 16 May 2021 withdrawn
    Release notes

    Changed

    • Support Length of up to 1 MiB
    Open source →
  47. 0.3.3 15 Apr 2021 withdrawn
    Release notes

    Added

    • Length constants

    Changed

    • Deprecate const fn methods replaced by Length constants
    Open source →
  48. 0.3.2 15 Apr 2021 withdrawn
    Release notes

    Fixed

    • Non-critical bug allowing Length to exceed the max invariant
    Open source →
  49. 0.3.1 01 Apr 2021 withdrawn
    Release notes

    Added

    • PartialOrd + Ord impls to all ASN.1 types
    Open source →
  50. 0.3.0 22 Mar 2021 withdrawn
    Release notes

    Added

    • Impl Decode/Encoded/Tagged for String
    • Length::one and Length::for_tlv
    • SET OF support with SetOf trait and SetOfRef

    Changed

    • Rename Decodable::from_bytes => Decodable::from_der
    • Separate sequence and message
    • Rename ErrorKind::Oid => ErrorKind::MalformedOid
    • Auto-derive From impls for variants when deriving Choice
    • Make Length use u32 internally
    • Make Sequence constructor private
    • Bump const_oid to v0.5
    • Bump der_derive to v0.3

    Removed

    • Deprecated methods
    • BigUIntSize
    Open source →
  51. 0.2.10 28 Feb 2021
    Release notes

    Added

    • Impl From<ObjectIdentifier> for Any

    Changed

    • Bump minimum const-oid dependency to v0.4.4
    Open source →
  52. 0.2.9 24 Feb 2021
    Release notes

    Added

    • Support for IA5String
    Open source →
  53. 0.2.8 22 Feb 2021
    Release notes

    Added

    • Choice trait
    Open source →
  54. 0.2.7 20 Feb 2021 withdrawn
    Release notes

    Added

    • Export Header publicly
    • Make Encoder::reserve public
    Open source →
  55. 0.2.6 19 Feb 2021 withdrawn
    Release notes

    Added

    • Make the unit type an encoding of NULL
    Open source →
  56. 0.2.5 19 Feb 2021 withdrawn
    Release notes

    Added

    • ErrorKind::UnknownOid variant
    Open source →
  57. 0.2.4 17 Feb 2021 withdrawn
    Release notes

    Added

    • Any::is_null method

    Changed

    • Deprecate Any::null method
    Open source →
  58. 0.2.3 15 Feb 2021 withdrawn
    Release notes

    Added

    • Additional rustdoc documentation
    Open source →
  59. 0.2.2 12 Feb 2021 withdrawn
    Release notes

    Added

    • Support for UTCTime and GeneralizedTime
    Open source →
  60. 0.2.1 02 Feb 2021 withdrawn
    Release notes

    Added

    • Support for PrintableString and Utf8String
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive