| # Changelog | |
| All notable changes to this project will be documented in this file. | |
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | |
| and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | |
| ## 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]) | |
| [#691]: https://github.com/RustCrypto/formats/pull/691 | |
| [#697]: https://github.com/RustCrypto/formats/pull/697 | |
| [#723]: https://github.com/RustCrypto/formats/pull/723 | |
| ## 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]) | |
| [#344]: https://github.com/RustCrypto/formats/pull/344 | |
| [#346]: https://github.com/RustCrypto/formats/pull/346 | |
| [#359]: https://github.com/RustCrypto/formats/pull/359 | |
| [#362]: https://github.com/RustCrypto/formats/pull/362 | |
| [#374]: https://github.com/RustCrypto/formats/pull/374 | |
| [#392]: https://github.com/RustCrypto/formats/pull/392 | |
| [#401]: https://github.com/RustCrypto/formats/pull/401 | |
| [#412]: https://github.com/RustCrypto/formats/pull/412 | |
| [#447]: https://github.com/RustCrypto/formats/pull/447 | |
| [#507]: https://github.com/RustCrypto/formats/pull/507 | |
| [#523]: https://github.com/RustCrypto/formats/pull/523 | |
| [#529]: https://github.com/RustCrypto/formats/pull/529 | |
| [#556]: https://github.com/RustCrypto/formats/pull/556 | |
| [#571]: https://github.com/RustCrypto/formats/pull/571 | |
| [#579]: https://github.com/RustCrypto/formats/pull/579 | |
| [#604]: https://github.com/RustCrypto/formats/pull/604 | |
| [#605]: https://github.com/RustCrypto/formats/pull/605 | |
| [#606]: https://github.com/RustCrypto/formats/pull/606 | |
| [#611]: https://github.com/RustCrypto/formats/pull/611 | |
| [#618]: https://github.com/RustCrypto/formats/pull/618 | |
| [#620]: https://github.com/RustCrypto/formats/pull/620 | |
| [#625]: https://github.com/RustCrypto/formats/pull/625 | |
| [#633]: https://github.com/RustCrypto/formats/pull/633 | |
| [#636]: https://github.com/RustCrypto/formats/pull/636 | |
| [#637]: https://github.com/RustCrypto/formats/pull/637 | |
| [#640]: https://github.com/RustCrypto/formats/pull/640 | |
| [#651]: https://github.com/RustCrypto/formats/pull/651 | |
| ## 0.5.1 (2021-11-17) | |
| ### Added | |
| - `Any::NULL` constant ([#226]) | |
| [#226]: https://github.com/RustCrypto/formats/pull/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 `TagNumber`s ([#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]) | |
| [#60]: https://github.com/RustCrypto/formats/pull/60 | |
| [#61]: https://github.com/RustCrypto/formats/pull/61 | |
| [#63]: https://github.com/RustCrypto/formats/pull/63 | |
| [#75]: https://github.com/RustCrypto/formats/pull/75 | |
| [#90]: https://github.com/RustCrypto/formats/pull/90 | |
| [#95]: https://github.com/RustCrypto/formats/pull/95 | |
| [#96]: https://github.com/RustCrypto/formats/pull/96 | |
| [#97]: https://github.com/RustCrypto/formats/pull/97 | |
| [#98]: https://github.com/RustCrypto/formats/pull/98 | |
| [#99]: https://github.com/RustCrypto/formats/pull/99 | |
| [#102]: https://github.com/RustCrypto/formats/pull/102 | |
| [#117]: https://github.com/RustCrypto/formats/pull/117 | |
| [#129]: https://github.com/RustCrypto/formats/pull/129 | |
| [#132]: https://github.com/RustCrypto/formats/pull/132 | |
| [#136]: https://github.com/RustCrypto/formats/pull/136 | |
| [#141]: https://github.com/RustCrypto/formats/pull/141 | |
| [#142]: https://github.com/RustCrypto/formats/pull/142 | |
| [#143]: https://github.com/RustCrypto/formats/pull/143 | |
| [#147]: https://github.com/RustCrypto/formats/pull/147 | |
| [#153]: https://github.com/RustCrypto/formats/pull/153 | |
| [#155]: https://github.com/RustCrypto/formats/pull/155 | |
| [#156]: https://github.com/RustCrypto/formats/pull/156 | |
| [#157]: https://github.com/RustCrypto/formats/pull/157 | |
| [#160]: https://github.com/RustCrypto/formats/pull/160 | |
| [#161]: https://github.com/RustCrypto/formats/pull/161 | |
| [#162]: https://github.com/RustCrypto/formats/pull/162 | |
| [#165]: https://github.com/RustCrypto/formats/pull/165 | |
| [#189]: https://github.com/RustCrypto/formats/pull/189 | |
| [#190]: https://github.com/RustCrypto/formats/pull/190 | |
| [#199]: https://github.com/RustCrypto/formats/pull/199 | |
| [#200]: https://github.com/RustCrypto/formats/pull/200 | |
| [#203]: https://github.com/RustCrypto/formats/pull/203 | |
| [#215]: https://github.com/RustCrypto/formats/pull/215 | |
| [#216]: https://github.com/RustCrypto/formats/pull/216 | |
| [#217]: https://github.com/RustCrypto/formats/pull/217 | |
| [#221]: https://github.com/RustCrypto/formats/pull/221 | |
| ## 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]) | |
| [#66]: https://github.com/RustCrypto/formats/pull/66 | |
| ## 0.4.3 (2021-09-15) | |
| ### Added | |
| - `Tag::unexpected_error` ([#33]) | |
| [#33]: https://github.com/RustCrypto/formats/pull/33 | |
| ## 0.4.2 (2021-09-14) | |
| ### Changed | |
| - Moved to `formats` repo ([#2]) | |
| ### Fixed | |
| - ASN.1 `SET` type now flagged with the constructed bit | |
| [#2]: https://github.com/RustCrypto/formats/pull/2 | |
| ## 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 STRING`s | |
| ## 0.1.0 (2020-12-21) | |
| - Initial release |