This is the twenty-third maintenance release for the 1.3 release family of open62541.
The notable changes in this patch release are:
- core: Use adjusted range for array writes
- server: Check the NodeClass before reading the async flag in CallAsync
- server: Require an authenticated channel for RegisterServer(2)
- server: Reclaim the oldest un-activated Session when maxSessions is hit
- server: Don't let an un-activated Session pin a SecureChannel from purge
- server: Reject condition method calls with a missing EventId for A&C
- server: Give the Session authenticationToken its own random source
- server: Check for NULL after allocations in HistoryRead and mDNS
- server: Reject user identity changes when re-activating a Session
- client: Validate DeleteMonitoredItems response size before indexing request array
- pubsub: Reject field count larger than the remaining DataSetMessage bytes
- pubsub: Verify NetworkMessages with the ReaderGroup that processes them
- pubsub: Bound declared DataSetMessage sizes by the buffer
- plugins: Check the context allocation in the default history database
- plugins: Check allocations in the history data plugins
- plugins: Check allocations in the PKCS#11 PubSub policies
- deps: Warn that MQTT-C is deprecated
open62541 (http://open62541.org/) is an open source and free implementation of OPC UA (OPC Unified Architecture) written in the common subset of the C99 and C++98 languages. The library is usable with all major compilers and provides the necessary tools to implement dedicated OPC UA clients and servers, or to integrate OPC UA-based communication into existing applications. The open62541 library is platform independent. All platform-specific functionality is implemented via exchangeable plugins. Plugin implementations are provided for the major operating systems.
open62541 is licensed under the Mozilla Public License v2.0 (MPLv2). This allows the open62541 library to be combined and distributed as part of proprietary software. Only changes to the files of the open62541 library itself need to be licensed under the MPLv2 when copied and distributed. The plugins, as well as the server and client examples are in the public domain (CC0 license). They can be reused under any license and changes do not have to be published.
New features compared to the previous release series 1.2 include:
- Support for OPC UA PubSub encryption (also TPM-based key handling)
- Session authentication with x509 certificates (server-side)
- Support for Event Filters
- Support for Server Diagnostics
- Binary/JSON encoding as a stable public API
- Handling of Subscriptions with different priority
- Greatly improved Nodeset Compiler, including support for structure values
- Added UA_order function for all data types (equality test / absolute ordering for binary search trees, etc.)
- Support for TLS-encrypted MQTT-based PubSub
- Internally generate temporary self-signed certificates
Besides the major functional additions, many small features, fixes and general improvements went into this release. Particularly, the memory consumption of the information model was reduced by about 1/3 compared to the 1.2 release series.
Note that the v1.3 release family contains new features compared to v1.0. These have not been part of the certification that was achieved for the example server based on the v1.0 release.