NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #614 most downloaded on crates.io
Parser/encoder for ASN.1 BER/DER data
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 11 months
Most releases are documented
notes for 35 of 51 stable releases
3 versions withdrawn
withdrawn after publishing
10 years old
60 releases · first in 2017
BerObject: convert BmpString data to &[u8] to properly handle UTF-16 data
Breaking change:
BerObject: convert BmpString data to &[u8] to properly handle UTF-16 data (#76)
Upgrade asn1-rs to 0.7.0
Rename feature "bitvec" to "as_bitvec" and update to bitvec 1.0 (#73)
Serialize: fix possible wrong encoding of length if exactly 128 (#77)
Implement BerObject::try_from(Any)
asn1-rs to 0.6.0BerObject::try_from(Any) (#67)One column per quarter.
Fix parser name to parse_der_visiblestring for VisibleString (Closes #64 ). Keep previous function for compatibility (mark it as deprecated).
parse_der_visiblestring for VisibleString (Closes #64).Full Changelog: der-parser-8.1.0...der-parser-8.2.0
Upgrade asn1-rs to 0.5.0 (new features only: only increment minor number)
asn1-rs to 0.5.0 (new features only: only increment minor number)Upgrade asn1-rs to 0.4.0 This causes an increment of the major number, because asn1-rs is re-exported
asn1-rs to 0.4.0
This causes an increment of the major number, because asn1-rs is re-exportedDerClass and DerTag have been deprecated. Use Class and Tag instead.
This release marks the beginning of the merge with the asn1-rs crate. This will break things.
However, this is necessary, because the asn1-rs crate is much cleaner and supports more types
and features (like serialization, custom derive, etc.).
Ultimately, this crate will become a frontend to asn1-rs, that will be optional: crate users can
switch to asn1-rs and use it directly.
MSRV: The minimum supported rust version is now 1.53.
BerObjectHeader:
BerSize has been renamed to LengthBerClass has been renamed to ClassBerTag has been renamed to TagBerObjectContent:
Unknown variant now contains an Any object, with both the header and object contentPrivate variant has been merged into UnknownBmpString, GeneralString, GraphicString, T61String, VideotexString and ObjectDescriptor are now decodedGeneralizedTime and UtcTime are now decodedBerError:
UnexpectedClass and UnexpectedTagInvalidTag for tags with invalid form (length/encoding/etc.)displaydoc for BerErrorIndefiniteLengthUnexpectedDER:
DerClass and DerTag have been deprecated. Use Class and Tag instead.DerObjectHeader has been deprecated. Use Header instead.Oid:
Oid object is now the same as asn1_rs::Oid (simply reexported)der-oid-macroMisc:
ber_read_element_content_as now requires a non-zero depth, or itBerMaxDepth error (previously, 0 allowed one level of parsing)rusticata-macros is now re-exported (#55)Full Changelog: https://github.com/rusticata/der-parser/commits/der-parser-7.0.0
Report number of missing bytes when having a complete header and incomplete data
Full Changelog: https://github.com/rusticata/der-parser/commits/der-parser-6.0.1
This release has several major changes:
This release has several major changes:
no_stdoid! macro to be independant of der_parser crate name and path (#46)der-oid-macro, do not depend on nomINTEGER signed/unsigned parsing (#49)as_bigint() and as_uint() to return a Resultno_std (#50)BerError Copy + Clone (#51).as_bitslice() methodsno_std supportBerError traitsINTEGER parsingNothing published for this version
Nothing published for this version
Nothing published for this version
Remove dependency on proc-macro-hack (attempt to fix #36)
Fix typos in the parse_[ber|der]_[u32|u64] doc comments
parse_[ber|der]_[u32|u64] doc commentsSee changelog entries for 5.0.0-beta1 and -beta2 for changes since 4.1
See changelog entries for 5.0.0-beta1 and -beta2 for changes since 4.1
The following changes applies since 5.0.0-beta1, and do not affect 4.x
bytes_to_u64InvalidTag everywhere if tag is not expectedIntegerTooLarge instead of MapResStringInvalidCharset and update string parsing methodsparse_ber_slice and parse_der_slice to parse an expected Tag and get content as sliceConsistency: reorder arguments or function callbacks, always set input slice as first argument (parse_ber_sequence_defined_g, parse_ber_container, par
parse_ber_sequence_defined_g, parse_ber_container, parse_ber_tagged_explicit_g, ...)parse_ber_sequence_of_v and parse_ber_set_of_v accept generic error typesparse_ber_content2, owned version of parse_ber_content, which can directly be combined
with parse_ber_tagged_implicit_gImplement the VideotexString, ObjectDescriptor GraphicString, and VisibleString string types. (Non-breaking changes)
BerSize) to support BER indefinite lengthsInvalidTag)
instead of generic errors (Verify)as_bitslice() to BerObjectas_u64 and as_u32 methods for BerObjects with contents of type BerObjectContent::BitString.VideotexString, ObjectDescriptor GraphicString, and VisibleString string types. (Non-breaking changes)BMPString as UTF-16 instead of UTF-8 when printing. (Non-breaking change)UTCTime and GeneralizedTime into a &str instead of &[u8], as they inherit from VisibleString which is a subset of ASCII. (Breaking change)parse_ber_optionalBy alphabetic order of handle:
@cccs-sadugas@nickelc@p1-mmrNothing published for this version
Deprecate functions parse_{ber,der}_explicit (use _optional)
parse_{ber,der}_explicit (use _optional)Upgrade dependencies on num-bigint and der-oid-macro
Add workaround to fix parsing of empty sequence or set
Attention This is a major release, with several API-breaking changes. See UPGRADING.md for instructions.
Attention This is a major release, with several API-breaking changes. See UPGRADING.md for instructions.
parse_ber_recursive and parse_der_recursive, allowing to specify maximum
recursion depth when parsingIA5String, NumericString, PrintableString and UTF8String
do now only parse if the characters are valid.as_str() was added to BerObjectContent to obtain a &str for the types above.
as_slice() works as before.Error trait for BerErrorBerObjectHeader now has a lifetime and a raw_tag fieldBerObject now has a raw_tag fieldPartialEq manually for BerObject: raw_tag is compared only if both fields provide itBerClassserialize featureBerObject, remove duplicate fieldsOid to achieve zero-copy. The following changed:
Oid struct now has a lifetime and uses Cow internally.oid! was added.Oid::from returns a Result now.Oid struct now encodes whether the oid is relative or not.Debug implementation now shows whether the oid is relative
and uses the bigint feature if available.Oid::iter method now returns an Option. Oid::iter_bigint was
added.Hash is now derived for Oid.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
Make the pretty-printer function public
Add parse_ber_u32 and parse_ber_u64 functions
parse_ber_u32 and parse_ber_u64 functionsAdd crate BerResult and DerResult types
BerResult and DerResult typesder-parser do not need to import nom or rusticata-macros anymoreNew error types, now all functions use BerError
BerErrorHandle BER/DER tags that are longer than one byte.
Revert 2.0.1 release, breaks API
Handle BER/DER tags that are longer than one byte.
Refactor code, split BER and DER, check DER constraints
ber_read_element_contentNothing published for this version
Nothing published for this version
Fix OID parsing, and add support for relative OIDs
Use num-bigint over num and upgrade to 0.2
- Upgrade to nom 4
Add functions parse_der_u32 and parse_der_u64 to quickly parse integers
parse_der_u32 and parse_der_u64 to quickly parse integersOid::from_vec, Oid::from does the sameAdd BitStringObject to wrap BitString objects
BitStringObject to wrap BitString objectsparse_derAdd function DerObject::as_oid_val
DerObject::as_u64DerObject::as_oid_valparse_der_struct! variant to check tagAdd functions to test object class and primitive/constructed state
parse_der_application!parse_der_tagged! to parse [x] EXPLICIT or [x] IMPLICIT tagged values- Add type GeneralString - Add macro parse_der_struct!
parse_der_struct!Allow use of crate without extra use statements
tag_of_der_content() to DerObjectContent::tagAdd macro parse_der_defined_m, to parse a defined sequence or set This macro differs from parse_der_defined because it allows using macros
parse_der_defined because it allows using macrosDerObject::new_int to DerObject::from_int_sliceOid::to_hex to Oid::to_stringNothing published for this version
Nothing published for this version
Add new feature 'bigint' to export DER integers
Der Integers are now represented as slices (byte arrays) since they can be larger than u64.
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
Your coding agent can read these notes before it upgrades. Set up the MCP server →