Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.6.1 (2022-12-05)

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)

0.6.0 (2022-05-08)

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)

0.5.1 (2021-11-17)

Added

  • Any::NULL constant (#226)

0.5.0 (2021-11-15) [YANKED]

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)

0.4.5 (2021-12-01)

Fixed

  • Backport #147 type hint fix for WASM platforms to 0.4.x

0.4.4 (2021-10-06)

Removed

  • Accidentally checked-in target/ directory (#66)

0.4.3 (2021-09-15)

Added

  • Tag::unexpected_error (#33)

0.4.2 (2021-09-14)

Changed

  • Moved to formats repo (#2)

Fixed

  • ASN.1 SET type now flagged with the constructed bit

0.4.1 (2021-08-08)

Fixed

  • Encoding UTCTime for dates with 20xx years

0.4.0 (2021-06-07)

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

0.3.5 (2021-05-24)

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

0.3.4 (2021-05-16)

Changed

  • Support Length of up to 1 MiB

0.3.3 (2021-04-15)

Added

  • Length constants

Changed

  • Deprecate const fn methods replaced by Length constants

0.3.2 (2021-04-15)

Fixed

  • Non-critical bug allowing Length to exceed the max invariant

0.3.1 (2021-04-01) [YANKED]

Added

  • PartialOrd + Ord impls to all ASN.1 types

0.3.0 (2021-03-22) [YANKED]

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

0.2.10 (2021-02-28)

Added

  • Impl From<ObjectIdentifier> for Any

Changed

  • Bump minimum const-oid dependency to v0.4.4

0.2.9 (2021-02-24)

Added

  • Support for IA5String

0.2.8 (2021-02-22)

Added

  • Choice trait

0.2.7 (2021-02-20)

Added

  • Export Header publicly
  • Make Encoder::reserve public

0.2.6 (2021-02-19)

Added

  • Make the unit type an encoding of NULL

0.2.5 (2021-02-18)

Added

  • ErrorKind::UnknownOid variant

0.2.4 (2021-02-16)

Added

  • Any::is_null method

Changed

  • Deprecate Any::null method

0.2.3 (2021-02-15)

Added

  • Additional rustdoc documentation

0.2.2 (2021-02-12)

Added

  • Support for UTCTime and GeneralizedTime

0.2.1 (2021-02-02)

Added

  • Support for PrintableString and Utf8String

0.2.0 (2021-01-22)

Added

  • BigUInt type
  • i16 support
  • u8 and u16 support
  • Integer decoder helper methods

Fixed

  • Handle leading byte of BIT STRINGs

0.1.0 (2020-12-21)

  • Initial release