QCBOR v1.5
This has small feature additions, bug fixes and adjustments.
Very minor behavior changes were made:
- Decoding of maps limited to 32K items
- Decoding unexpected tag numbers on strings no longer an error
- Decoding of some negative big number mantissa's no longer off by one
- This should be compatible for the vast majority of uses by far and it is generally better to upgrade to this.
Bug fixes:
- QCBORDecode_GetBigFloatBig() and QCBORDecode_GetDecimalFractionBig() return negative big number mantissas consistently. They inconsistently applied the negative 1 offset.
- QCBORDecode_DoubleConvertAll() was off by 1 when the input to decode was a decimal fraction with a negative big number mantissa.
Changes:
- Map decoding is limited to 32K items rather than 65K so encoding and decoding map sizes are the same (inconsistency was turned up while bringing test coverage to 100%).
- QCBORDecode_GetXxxxString() no longer errors on the presence of tag numbers to be consistent with all the other spiffy decode functions QCBORDecode_GetXxxx() functions. Use QCBORDecode_GetNthTagOfLast() to check and error on the presence of tag numbers.
- Set SOVERSION in CMAKE to indicate version when built as a shared library.
Features:
- Add Encode_SubString() to get partial encoded results; useful for hashing/signing sub-parts of encoded output
- Add Encode_Tell() to current encoding offset
- Add QCBORDecode_RetrieveUndecodedInput() to get original input string back from decoder context
- Add QCBOREncode_RetrieveOutputStorage() to get original output buffer back from encoder context
Other:
- Restored some license text that was missing
- Consolidated all license stuff in the LICENSE file
- Test coverage for encode to 100%
- All functions that encode with string labels are named consistently ending in "SZ"
- Deprecated functions are better organized (deprecated functions will never be removed from QCBOR to keep backward compatibility).