Changelog for the BALTECH SDK

3.15.00 (2020-02-09)

Bug fixes

  • Fixed a NULL pointer exception which could occur when disconnecting a USB HID device while running brp_open()call_made. This bug was already fixed in release 3.14.00 for protocol objects that were created with snr <> 0. Now, it also works with snr = 0 (see brp_create_usb_hid()call_made).

3.14.00 (2020-11-30)

Bug fixes

  • When receiving a command response with an undefined enum value, the wrapper silently ignored this in the past and returned an invalid enum. Now it either returns an error or (for some extendable commands) it returns a special *_undefined enum value.
  • Fixed a NULL pointer exception which could occur when disconnecting a USB HID device while running brp_open()call_made.
  • If the reader returned a payload that was too short or too long, the BALTECH API library returned INVALID_API_ERRCODE or ignored the error. Now it correctly returns BRP_ERR_PAYLOAD_FORMATcall_made.

3.13.00 (2020-10-26)

Bug fixes

  • When connecting USB HID readers of different report sizes at the same time, only one of the reader types could be opened. For customers working with our standard products, this bug couldn't occur as long as they didn't connect readers with a customized (USB) firmware in parallel.

3.12.00 (2020-08-21)

Bug fixes

  • Windows only: When connecting via RS-232 (not virtual COM port!) and running a command with a very long response, BRP_ERR_FRAMEFORMATcall_made was usually returned instead of the correct answer.
  • macOS only: RS-232/virtual COM port didn't work at all.
  • Linux and macOS only: Working with more than one RS-232/virtual COM port interface didn't work (see also version 3.11.00).

3.11.00 (2020-08-19)

Bug fixes

  • Working with more than one RS-232 or virtual COM port interface didn't work. The SDK successfully opened the second interface, but all commands sent to the first device failed.

    This is a quickfix for Windows only. The fix for macOS and Linux was implemented in version 3.12.00.

3.10.00 (2020-08-07)

Bug fixes

  • Windows only: The statically linked C runtime introduced in version 3.02.00 was accidentally changed back to a dynamically linked C runtime in version 3.05.00. Thus, MSVCRTxx.DLL was always required.

3.09.00 (2020-07-15)

Bug fixes

  • When opening HID devices with version 3.08.00, the devices could no longer be detected by tools such as BALTECH ToolSuite. Now the interoperability with ToolSuite has been improved.

3.08.00 (2020-07-15)

BALTECH API breaking changes

Features

  • The app notes "tcp_client", "tcp_server", and "udp_introspection" got a makeover. There's more detailed information in the comment sections now, and also the command line output has been reworded.

Bug fixes

  • After the installation of USBpcapcall_made (part of Wireshark), the SDK could no longer open an HID connection to devices that were additionally configured for keyboard emulation, virtual COM port, or PC/SC.
  • Windows only: 2 applications could connect to the same HID device simultaneously and thus interfere with each other. Now the application connecting first gets exclusive access to an HID device.
  • macOS only: The SDK did no longer compile since version 3.03.00.

3.07.00 (2020-04-19)

Bug fixes

  • Since version 3.03.00, the SDK contained a buffer overflow when monitoring wasn't suppressed explicitlycall_made. This overflow caused macOS software to crash, while Windows and Linux applications kept running. Now it's fixed and all OSes work as expected.

3.06.00 (2020-04-16)

Bug fixes

  • Since version 3.03.00, the SDK failed to compile on Windows SDK 10.0.18363 and newer without warnings.

3.05.00 (2020-04-13)

Features

  • Removed Visual Studio projects files. Please use CMake to create them after unpacking – it's natively supported as of Visual Studio 2017.
  • Changed the error code names in the monitoring log files. They now match the names in the BALTECH API (e.g. BRP_VHL_ErrNoTagcall_made instead of VHL.ErrNoTag), so it's easier to search for them in the API reference.

Bug fixes

  • Since version 3.02.00, compiling the SDK on Windows showed the warning replace /MT by /MD.
  • Since version 3.03.00, the SDK didn't compile on Linux/macOS any more.

3.04.00 (2020-03-30)

Features

  • Added support for brp_open_tcp_session() and brp_open_tcp_handle_session()to BrpDriver.

3.03.00 (2020-03-25)

Features

  • Added the brp_get_io_id()call_made command. You can use it to retrieve the actual interface identification name.
  • Added a monitoring mechanism. You can now log all commands and responses exchanged with a reader and view them in an HTML file.
  • BALTECH API changed
  • BrpDriver:
    • brp.h had a dependency to brplib.h, which required the directory with the brp_lib-headerfiles to be in the include path. Now this dependency is optional (and can be activated via BRP_SDK_COMPATIBILITY).
    • Added support for opening HID devices with specific serial numbers (although in a non-backward-compatible way via serialnr-str instead of windows-device-name).

Bug fixes

  • Fixed a memory leak on closing a connection.
  • On Linux/macOS, the RS-232 implementation printed log messages to stdout when trying to open a connection.
  • BrpDriver:
    • brp_exec_command() and brp_get_response() didn't reset the return value resp_len to 0 in case of an error. This caused applications relying on this behavior to crash.
    • The general BRP status codes are now returned as error code BRP_ERR_STATUS. (They were mapped to other error codes in the past).

3.02.00 (2020-01-31)

Features

  • Moved the documentation online: https://docs.baltech.de/developers/sdk.html
    It has also grown quite a bit, so you're welcome to check out the new parts as well. Feedback appreciated at support@baltech.de
  • Made libBrpDriver.so (Linux) and libBrpDriver.dylib (macOS) relocatable: They search for brp_lib in their own directory via relative RPATH settings.
  • Switched the Windows DLL to a statically compiled C runtime. This has increased the DLL sizes by about 100 kB per file, but made them standalone, so you don't have to include MSVCRTxx.DLL in your application anymore.

Bug fixes

  • In the RS-232 implementation of Linux/macOS, the characters 0x11 and 0x13 were swallowed, resulting in the error BRP_ERR_FRAMEFORMATcall_made (0x04000003). This was caused by the XON/XOFF protocol, which was accidentally enabled and has now been disabled.
  • The main CMakeLists.txt wasn't part of the SDK ZIP file and has now been added.
  • The pre-built /binaries/winXX/ImportLibs/Release/baltech_api.lib wasn't part of the SDK ZIP file and has now been added.

3.01.00 (2020-12-12)

Features

  • Added support for custom HID report formats.

Bug fixes

  • The USB HID interface doesn't detect non-HID devices any more. Thus, brp_create_usb_hid(0)call_made now works reliably if a non-HID BALTECH USB device is connected additionally to the HID BALTECH USB device.

3.00.00 (2019-12-06)

Features

  • Added support for macOS. You can now create macOS applications that access our readers.
  • Added support for "secure channels" to use (AES) encryption/authentication when communicating with a reader.
  • Added wrapper for legacy driver BrpDriver.DLL that maps all calls to brp_lib.dll.
  • Added support for ID-engine SD and PAD reader with USB connection. (Until now, every connection attempt failed with a timeout.)
  • Added application note secure_communication to demonstrate how to use secure channels.
  • brp_create_pki()call_made now supports session_timeout=BRP_INFINITE for sessions that never shall time out (additionally to the already supported session_timeout=0).
  • brp_lib.h can now be included from C++ files. (Until now, the include statement had to be embraced by an external "C" statement.)
  • Simplified API for PKI by adding brp_pki_get_session_buf_size()call_made as a replacement for brp_pki_save_session(, NULL, 0, )call_made.
  • The RS-232 interface is less restrictive: Now, it accepts not only COM1 (Windows) and /dev/ttyS0 (Linux), but also \\.\COM1 and ttyS0.
  • You can now chain multiple protocol stacks ("composite protocols") by setting the I/O layer of the upper stack to a composite protocol stack that implements the lower part.
  • BALTECH API has been changed (HostSecurityAccessConditionBits were extended).

Bug fixes

  • If a BRP command timed out, the protocols RS-232 and USB HID returned BRP_ERR_TIMEOUTcall_made. Now, they return BRP_ERR_CMD_TIMEOUTcall_made. (BRP/TCP already worked correctly before this fix).
  • Skipped to version 2.20.00 to be able to distinguish between original BrpDriver.dll and wrapper BrpDriver.dll when looking at the version string.
  • RS-232/virtual COM port used the wrong protocol ID. (In practice, most applications don't check this ID.)
  • The Windows version of appnote_tcp_server didn't work. (The path to the certificate file was invalid.)

2.06.00 (2019-10-29)

Bug fixes

  • Version 2.05.00 was invalid as the generated ZIP file didn't contain the /brp_lib/src/release.h and /binaries directories.

2.05.00 (2019-10-24)

Bug fixes

  • Version 2.04.00 was invalid as the generated ZIP file was empty.

2.04.00 (2019-10-24)

Features

  • Added application note tcp_client
  • Updated documentation
  • BALTECH API changed:
    • CardEmu.StartEmu deleted
    • signature of Desfire.ChangeKey changed
    • signature of Sec.AuthPhase1 changed
    • signature of Sec.Tunnel changed

Bug fixes

2.03.00 (2019-04-17)

Features

  • BALTECH C API header file has been split into multiple header files. Now, there's 1 header file per command group.
  • BALTECH API changed

Bug fixes

  • Missing files for app notes added

2.02.00 (2019-02-05)

Features

  • Added "BALTECH C API" so you can execute BALTECH commands via simple C function calls now
  • Added support for RS-232 and USB/virtual COM port connections
  • Restructured directory layout
  • int parameters/return values that specify the size of a buffer/object were replaced by size_t.
  • Added app note for reading/writing data to/from card via VHL commands
  • Updated documentation

Bug fixes

  • Possible memory leak in BRP and TCP/IP protocol fixed
  • Timeouts in TCP/IP connections had only an accuracy of 1 sec (instead of 1 ms)

2.01.00 (2018-10-31)

Features

  • Added support for Linux. You can now create Linux applications that access our readers.

Bug fixes

  • License files of subprojects used by brp_lib (and other files not necessary for building brp_lib) weren't distributed. Now they can be found in /src/<subproject>/.

2.00.00 (2018-10-23)

Features

  • Added support for USB HID.
  • BRP communication library is now deployed as part of 6003_baltech_sdk together with the reference manual.

Bug fixes

  • Fixed memory leak during protocol destruction.

1.06.00 (2018-08-14)

Features

  • Added support for 64-bit Windows
  • Added support for Base64-encoded PKI certificates/keys (see filename extensions PEM/CRT/KEY)
  • Added user manual
  • Added app note for UDP introspection
  • Added encryption to BRP-over-TCP app note

1.05.00 (2018-07-26)

Features

  • Added app note for C#
  • Switched from Visual Studio 2008 to Visual Studio 2015

1.04.00 (2018-07-06)

Bug fixes

  • Package was renamed from brp_lib_x_xx_xx.zip to 3038_brp_lib_x_xx_xx.zip

1.03.00 (2018-07-06)

Features

  • Replaced app note that demonstrates how to create a BRP-over-TCP client with an app note that demonstrates how to create a BRP-over-TCP server.

1.02.01 (2017-04-04)

Bug fixes

  • Fixed a bug where brp_lib could enter an endless loop under specific circumstances if a TCP connection was canceled.

1.02.00 (2016-11-10)

Features

  • Added support for CMake
  • Added support for the MinGW compiler

1.01.00 (2016-03-08)

Features

  • The default roundtrip timeout of 500 ms on TCP/IP protocols is now configurable via brp_set_tcpip_roundtrip_timeout()call_made. This is required for very slow connections (i.e. GSM).
  • Added support for continuous and repeat modes.

Bug fixes

  • Security related bug fix: RAM where keys are stored will be overwritten with zeros on close (session key) or on destroy (private ecc key) respectively.

1.00.01 (2015-11-09)

Features

1.00.00 (2015-10-31)

Features