0.6.0
Changes since 0.5.2:
- Many architectural changes, API changes and various new API functions. These changes are not backward compatible with
0.5.x
and theSONAME
version has been updated accordingly.- Parsing, validation and decoding of optional blocks have been split into separate activities. Optional blocks are no longer decoded immediately during import and instead decoded by new dedicated decoding API functions.
- Internal storage of optional block payloads is now only in format PA (printable ASCII as defined by ANSI X9.143)
- Memory management has been improved and key block processing buffers have been moved from
tr31_ctx_t
to an internal state object. The intention is that, in future, embedded builds can provide alternative memory management strategies that suit their needs. - Various bugfixes and improvements related to data format validation, memory management, error reporting and documentation generation.
- Validation of data formats has been improved and dependence on
ctype.h
has been removed - New
tr31_init_from_header()
API function allows more flexible processing of headers that aren't correctly padded, or are padded but may gain additional optional blocks. The--export-header
command line option also benefits from these improvements. - All string functions, except
tr31_get_error_string()
, have been moved totr31_strings
and renamed
- New features
- Key block header validation can be disabled using the
TR31_IMPORT_NO_STRICT_VALIDATION
API flag or the--import-no-strict-validation
command line option. This is typically useful when decoding/importing non-standard key blocks. - Non-standard or verbatim optional blocks can be added to a key block using the
--export-opt-block
command line option - Support for key algorithms H, I and J as defined by ISO 20038
- Support for the key context header attribute as defined by ANSI X9.143
- Basic support for parsing IBM proprietary key block headers
- Key block header validation can be disabled using the