9.2 KiB
9.2 KiB
Change Log
[Unreleased][unreleased]
Changed/Fixed
Added
Thanks
6.0.0
This release has several major changes:
- upgrade to nom 7
- add support for
no_std
- remove all macros
- update MSRV to 1.48
Changed/Fixed
- Do not attempt to parse PRIVATE object contents (closes #48)
- BER: raise error if using Indefinite length and not constructed
- Fix
oid!
macro to be independant ofder_parser
crate name and path (#46) - Simplify
der-oid-macro
, do not depend onnom
- Fix
INTEGER
signed/unsigned parsing (#49) - Change
as_bigint()
andas_uint()
to return aResult
- Remove deprecated functions
Added
- Added support for
no_std
(#50) - Make
BerError
Copy + Clone (#51) - Add feature 'bitvec' for
.as_bitslice()
methods
Removed
- Remove all macros
Thanks
- @yoguorui for
no_std
support - @SergioBenitez for
BerError
traits - @lilyball for
INTEGER
parsing
5.1.0
Changed/Fixed
- Remove dependency on proc-macro-hack (attempt to fix #36)
- Update pretty_assertions requirement from 0.6 to 0.7
- Update num-bigint to 0.4 (Closes #42)
5.0.1
Changed/Fixed
- Fix typos in the
parse_[ber|der]_[u32|u64]
doc comments - Add documentation for BerObjectContent variants (#41)
- Fixes for clippy
Added
5.0.0
See changelog entries for 5.0.0-beta1 and -beta2 for changes since 4.1
Changed/Fixed
The following changes applies since 5.0.0-beta1, and do not affect 4.x
- Fix potential integer underflow in
bytes_to_u64
- Fix potential stack recursion overflow for indefinite length objects (Add maximum depth).
- Fix potential UB in bitstring_to_u64 with large input and many ignored bits
- Fix constructed objects parsing with indefinite length (do not include EOC)
- Constructed objects: use
InvalidTag
everywhere if tag is not expected - Integer parsing functions now all return
IntegerTooLarge
instead ofMapRes
- Ensure Indefinite length form is only used in BER constructed objects
Added
- Add new error
StringInvalidCharset
and update string parsing methods - Add methods
parse_ber_slice
andparse_der_slice
to parse an expected Tag and get content as slice
5.0.0-beta2
Changed/Fixed
- Consistency: reorder arguments or function callbacks, always set input slice as first argument
(
parse_ber_sequence_defined_g
,parse_ber_container
,parse_ber_tagged_explicit_g
, ...) - Make functions
parse_ber_sequence_of_v
andparse_ber_set_of_v
accept generic error types
Added
- Add
parse_ber_content2
, owned version ofparse_ber_content
, which can directly be combined withparse_ber_tagged_implicit_g
- Add methods to parse DER tagged values and containers (with constraints)
5.0.0-beta1
Changed/Fixed
- Upgrade to nom 6
- Switch all parsers to function-based parsers
- Change representation of size (new type
BerSize
) to support BER indefinite lengths - Rewrite BER/DER parsing macros to use functional parsing combinators
- The constructed bit is now tested for explicit tagged structures
- Some checks (for ex. tags in constructed objects) now return specific errors (
InvalidTag
) instead of generic errors (Verify
) - Refactor BerObject for parsing of tagged and optional values
- Add method
as_bitslice()
to BerObject - Remove Copy trait from BerObjectHeader, copy is non-trivial and should be explicit
- Fix the bug that caused OIDs longer than two subidentifiers which started by subidentifiers "0.0" ("itu-t recommenation") not to be decoded correctly
- Implement the
as_u64
andas_u32
methods for BerObjects with contents of typeBerObjectContent::BitString
. - Implement the
VideotexString
,ObjectDescriptor
GraphicString
, andVisibleString
string types. (Non-breaking changes) - Correctly decode
BMPString
as UTF-16 instead of UTF-8 when printing. (Non-breaking change) - Turn
UTCTime
andGeneralizedTime
into a&str
instead of&[u8]
, as they inherit fromVisibleString
which is a subset of ASCII. (Breaking change)
Added
- Add combinator
parse_ber_optional
Thanks
By alphabetic order of handle:
@cccs-sadugas
@nickelc
@p1-mmr
4.1.0
Added/Changed
- Re-export num-bigint so crate users do not have to import it
- Add function versions to parse BER sequences/sets (#20)
- Add function versions to parse BER tagged objects (#20)
- Add generic error type to structured parsing functions
- Add function to parse a generic BER container object
- Document that trailing bytes from SEQUENCE/SET are ignored
- Deprecate functions
parse_{ber,der}_explicit
(use_optional
)
4.0.2
Changed/Fixed
- Upgrade dependencies on num-bigint and der-oid-macro
4.0.1
Changed/Fixed
- Add workaround to fix parsing of empty sequence or set
4.0.0
Attention This is a major release, with several API-breaking changes. See UPGRADING.md
for instructions.
Thanks
- Jannik Schürg (oid, string verifications)
Added
- Add functions
parse_ber_recursive
andparse_der_recursive
, allowing to specify maximum recursion depth when parsing - The string types
IA5String
,NumericString
,PrintableString
andUTF8String
do now only parse if the characters are valid. as_str()
was added toBerObjectContent
to obtain a&str
for the types above.as_slice()
works as before.- Implement
Error
trait forBerError
- Add method to extract raw tag from header
BerObjectHeader
now has a lifetime and araw_tag
fieldBerObject
now has araw_tag
field- Implement
PartialEq
manually forBerObject
:raw_tag
is compared only if both fields provide it
- Add type
BerClass
- Start adding serialization support (experimental) using the
serialize
feature
Changed/Fixed
- Make header part of
BerObject
, remove duplicate fields - Maximum recursion logic has changed. Instead of providing the current depth, the argument is now the maximum possible depth.
- Change the api around
Oid
to achieve zero-copy. The following changed:- The
Oid
struct now has a lifetime and usesCow
internally. - The procedural macro
oid!
was added. Oid::from
returns aResult
now.- The
Oid
struct now encodes whether the oid is relative or not. - The
Debug
implementation now shows whether the oid is relative and uses the bigint feature if available. - The
Oid::iter
method now returns anOption
.Oid::iter_bigint
was added. Hash
is now derived forOid
.
- The
- Minimum rust version is now 1.34
3.0.3
- Make the pretty-printer function public
- Fix DER datestring sanity check
- CI
- add rusfmt check
- add cargo clippy
3.0.2
- Add
parse_ber_u32
andparse_ber_u64
functions - Fix typo in description
3.0.1
- Add crate
BerResult
andDerResult
types - Use crate result types, remove uneeded imports
- Crates using
der-parser
do not need to importnom
orrusticata-macros
anymore - Result types are aliases, so API is unchanged
- Crates using
3.0.0
- Upgrade to nom 5 (breaks API)
- New error types, now all functions use
BerError
2.1.0
- Handle BER/DER tags that are longer than one byte.
- Set edition to 2018
2.0.2
- Revert 2.0.1 release, breaks API
2.0.1
- Handle BER/DER tags that are longer than one byte.
2.0.0
- Refactor code, split BER and DER, check DER constraints
- Add recursion limit for sequences and sets
- Rustfmt
- Documentation
- Remove unused function
ber_read_element_content
1.1.1
- Fix OID parsing, and add support for relative OIDs
- Add FromStr trait for Oid
1.1.0
- Use num-bigint over num and upgrade to 0.2
1.0.0
- Upgrade to nom 4
0.5.5
- Add functions
parse_der_u32
andparse_der_u64
to quickly parse integers - Remove
Oid::from_vec
,Oid::from
does the same - Enforce constraints on DER booleans
0.5.4
- Add
BitStringObject
to wrap BitString objects - Mark constructed BitStrings as unsupported
- Do not try to parse application-specific data in
parse_der
0.5.3
- Add function
DerObject::as_u64
- Add function
DerObject::as_oid_val
- Add
parse_der_struct!
variant to check tag
0.5.2
- Add functions to test object class and primitive/constructed state
- Add macro
parse_der_application!
- Add macro
parse_der_tagged!
to parse[x] EXPLICIT
or[x] IMPLICIT
tagged values
0.5.1
- Add type GeneralString
- Add macro
parse_der_struct!
0.5.0
- Allow use of crate without extra use statements
- Use constants for u32 errors instead of magical numbers
- Rename
tag_of_der_content()
toDerObjectContent::tag
- Rename DerElementxxx structs to have a consistent naming scheme
- Add documentation for parsing DER sequences and sets, and fix wrong return type for sets
- Fix a lot of clippy warnings
- QA: add pragma rules (disable unsafe code, unstable features etc.)
- More documentation
- Switch license to MIT + APLv2
0.4.4
- Add macro parse_der_defined_m, to parse a defined sequence or set
This macro differs from
parse_der_defined
because it allows using macros - Rename
DerObject::new_int
toDerObject::from_int_slice
- Rename
Oid::to_hex
toOid::to_string
- Document more functions
0.4.1
- Add new feature 'bigint' to export DER integers
- OID is now a specific type
- Add new types T61String and BmpString
- Fix wrong expected tag in parse_der_set_of
0.4.0
- Der Integers are now represented as slices (byte arrays) since they can be larger than u64.