Releases: openemv/tr31
0.6.2
Changes since 0.6.1:
- Update to latest OpenEMV common crypto submodule:
- Minor improvement to cmdline option parsing for
tr31-tool
- Remove builds for Fedora 39 and add builds for Fedora 41
NOTE: This release can be installed on MacOS via Homebrew using brew install openemv/tap/tr31
0.6.1
Changes since 0.6.0:
- Remove 32-bit builds from Windows workflow. MSYS2 has deprecated many 32-bit packages.
- Add Clang builds for Windows workflow
- Update to latest OpenEMV common crypto submodule to support MbedTLS 3.6.0 LTS for self-contained builds
- Add Ubuntu 24.04 builds
- Remove builds for Fedora 37 and Fedora 38 because they are EOL
- Add builds for Fedora 40
- Update MacOS builds to use MacOS 13 and MacOS 14. Note that Github's MacOS 14 runners are arm64, not x86_64.
- Minor Clang and doxygen improvements
This is a maintenance release that is mostly aimed at Ubuntu 24.04 and Fedora 40.
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
0.5.2
Changes since 0.5.1:
- Remove Fedora 36 builds and add Fedora 39 debug and release builds
- Remove MacOS 11 test builds and add MacOS 13 test builds
- Persist CMake variables used during multiple builds in cache
- Let CMake configuration file for
tr31
library specifyCOMPATIBILITY
asSameMinorVersion
to match theSONAME
versioning as well as the intended API compatibility
This is a maintenance release for projects that wish to continue using the 0.5.x
API because the future 0.6.x
API will be incompatible. But note that there is no intention to maintain this branch long term.
0.5.1
Changes since 0.4.6:
- Misc fixes and improvements
- Fix import and export of optional blocks that contain non-hex data
- Improve import and export of optional block
PB
(see commit bd6e50d) - Implement import and export of extended length optional blocks
- Fix key version handling to support format AN
- Update to latest OpenEMV common crypto submodule to support MbedTLS 3.x and OpenSSL 3.x
- Update to latest libargp to fix build warnings on MacOS
- Add builds for Microsoft Universal C Runtime (UCRT) using MSYS2's UCRT64 environment to Github Actions workflows for Windows
- ANSI X9.143 support
- Update various description strings for ANSI X9.143
- Implement key length obfuscation as required by ANSI X9.143 (backward compatible with ASC TR-31:2018)
- Improve support for optional blocks
HM
,IK
andKS
- Implement ISO 8601 for optional blocks
TC
andTS
- Implement date/time representation according to the current locale
- Implement "now" for
tr31-tool
when specifying optional blocksTC
andTS
- Implement optional block
AL
- Implement optional block
BI
- Implement optional block
CT
- Implement optional block
DA
- Implement optional block
FL
- Implement optional block
LB
- Implement optional block
PK
- Implement optional block
WP
NOTE:
- Version
0.5.1
is intended to replace0.5.0
and the latter release has been removed. This is due to a bug in the CMake package configuration file for 0.5.0 that renders it useless to packages that depend on it when MbedTLS 3.x is used - This release can be installed on MacOS via Homebrew using
brew install openemv/tap/tr31
0.4.6
Changes since 0.4.5:
- Add Fedora 38 debug and release builds
- Improve CTest usage
- Add -Wall option for AppleClang compiler
- Misc Doxygen updates
Note that this release does not provide any new functionality and only provides minor aesthetic changes along with Fedora 38 builds.
0.4.5
Changes since 0.4.4:
- Fix return values for
tr31_key_set_data()
- Fix typo in TR-31 command line tool help output
- Improve Github Actions testing of static and shared library builds on Windows
- Update Github Actions for Fedora 37
- Use git describe string when possible
- Update CMake module for finding argp (this makes
brew
formulas possible)
NOTE: This release can be installed on MacOS via Homebrew using brew install openemv/tap/tr31
0.4.4
Changes since 0.4.3:
- Implement
BUILD_TR31_TOOL
option (ON
by default) to determine whethertr31-tool
will be built and whetherargp
is required. - Ensure that tests can find required DLLs (if any) for Windows builds
- Fix missing library dependency for Windows builds
- Use CMake policy CMP0135 for CMake >=3.24 to suppress warning
0.4.3
Changes since 0.4.2:
- Allow TR-31 command line tool to read raw bytes from stdin
- Deprecate
TR31_KEY_USAGE_DUKPT_IPEK
in favour ofTR31_KEY_USAGE_DUKPT_IK
- Improve generation of CMake config file and pkgconfig file
- Support Ubuntu 20.04 as well as Ubuntu 22.04 and release separate packages
- Improve Fedora release package by adding dist tag to release version
- Fix Gentoo ebuild to use source tarballs instead of Github sources (due to submodules)
- Remove deprecated MacOS 10.15 from Github Actions
0.4.2
Changes since 0.4.1:
- Add Github Actions workflows for Ubuntu, MacOS and Windows builds
- Update to latest OpenEMV common crypto submodule to fix MacOS builds with AppleClang 13.1 and later
- Add header checks to fix Windows builds
- Allow use of platform-provided standalone
argp
implementation - Replace
argp-standalone-1.3
with libargp - Misc CMake and Doxygen improvements