High Performance SDK V1.1.1 =========================== General: * Add new profile_config files and update existing ones. * Improve traces * Fix warnings when trace is disabled Platform Layer Frontend: * Fix bug in ua_file_mkpath when the first folder does not exist. * Fix handling of absolute paths in ua_file_mkpath. * Add new function ua_file_path_is_absolute * Remove double definitions of defines in template file platform_config.h.in Windows PL: * Make private semaphores working on Windows. Linux PL: * Add missing registration of SIGHUP signal. * Fix unknown pid_t type compiler error when compiling with -std=c99 instead of gnu99 IPC library: * Make semaphore in IPC queue private if MEMORY_USE_SHM is disabled. uabase library: * Allow ua_bytestring_set to be called with NULL ptr, which will create a NULL-ByteString now. * Make ua_variant_set_array a public function. * Change back ua_string_compare() to old behaviour without lexicographical order, which is faster. * Add new ua_string_compare_lex() for sorting lexicographic order. * Add errorcode to ua_statuscode mapping function * fix wrong build number in template file base_config.h.in * Make ua_guid_from_string accept longer strings. This is useful if parsing a guid which contains more additional data. server library: * Remove unnamed union/struct fields as this not supported by all compilers * Fix trace facilities in uasession which use TRACE_FAC_SESSION now. * Fix trace facilities in uatcp which use TRACE_FAC_UATCP now. * Fix returned statuscode in TranslateBrowsePathToNodeIds if authorization is disabled. * Fix ua_node_delete_internal to remove the browsename string from correct namespace specific hashtable * Fix issue in static store, when reading array elements with index range the returned size was one byte too small. * Make session lifetime configurable via appconfig and config file * Add calculation to set missing security level in discovery service. * Make utility function ua_addressspace_traverse for recursive browsing a public function * Add service event hook to allows to monitor each called service * Add session event hook which allows to monitor session and securechannel events. This also gives you the information about securechannel and session relations. DemoServer (uaserverhp): * add restart loop using SIGHUP for testing soft restarts Server-Provider: * Fix Build-Date in ServerStatus * Make SoftwareVersion and BuildNumber configurable via appconfig Demo-Provider: * implement Multiply method xml2c: * Replace size_t format specifier (%zu) with PRIuSIZE_T define, because %zu is not supported by Visual Studio. * Allows generation of multiple namespaces in one call * Add checksum to validate consistent namespaces * Move ns0.c from server provider to examples/ns0 Static namespaces now need to recompile the static NS0 with the application to guarantee consistency * Fix issue with VS, as it does not compile empty arrays '{ }', if one pool is empty, which works fine with GCC and Clang. The solution is now to omit the braces completely, if a pool is empty. * Make the bytestring limit for filtering large bytestrings configurable. * Add missing headerfile common/errors.h to generated code. * Add missing headerfile trace/trace.h to generated provider skeleton. xml2bin: * Fix parsing of the event_notifier attribute in nodeclass Object. UATCP: * fix compiler error when BYTEORDER is configured as BIGENDIAN * add more traces * add more sanity checks Network/Berkeley: * Fix IPV6 support. * Fix DGRAM size in buffer when receiving UDP data. Security: * Fix CVE-2018-7559 which allowed to attack the deprecated security policy Basic128Rsa15. This was already disabled by default in the HP-SDK, but users could enable it. A fix was implemented to mitigate this issue. However it is not recommended to use this policy anyway, because it was deprecated years ago. * Add 'allow_deprecated_policies' switch. This prevents enabling deprecated policies accidentally, which could happen after a software upgrade and keeping old configuration files. The server will only enable configured deprecated policies if the user has explicitly enabled this. Otherwise the server will terminate with a configuration error, if deprecated policies have been configured. PKI: * Fix ASN1 time conversion in OpenSSL backend (adds sanity checks). Month was off by 1 because util_utctime_to_time_t requires January to be 0. Also adds range checks to time values. Unit Test: * Fix memory leak in PKI unit test. High Performance SDK V1.1.0 =========================== New Features: ------------- * New Client SDK * New UaApplication object for SDK initialization * New OPC UA Binary File Format for Information Models * New Platform support for Segger embOS and embOS/IP * New Crypto and PKI backends for Mocana NanoCrypto library * Generic structure encoder/decoder which allows to handle new types at runtime. This also reduces code size for all built-in types in NS0. * New binary file format, which is now a serialized cross-platform file format. V1.0.0 used memory pool dumps which worked not across different hardware platforms. * New xml2bin tool which converts XML Nodeset files into the new binary file format. * New xml2c tool which generates static address spaces. An addition to the address space C file it now also generates C code for all datatypes and type tables for the generic encoder/decoder. - New datatype "class" generation: C data structures and functions. - Support for enums, structures, structures with optional fields and unions. - Supports also inherited datatypes. - Type tables generation - CMake project generation to build complete libraries for type systems. * New examples: - Sensor Model Server: Demonstrate usage of dynamic and static type systems, as well as type instantiation. - History Example Server: Demonstrates how to implement UA history and how to implement underlying protocols using the SDK's network API. - Client Getting Started Tutorial - HP SDK Sample Client * More documentation Bugfixes: --------- We've fixed a large number of bugs found in V1.0.0 and improved the overall performance and stability. Breaking Changes: ----------------- The Client SDK required to change the way the application gets initialized. There is now a new 'uaapplication' object which must be created and which initializes the SDK. This simplifies application initialization and works for both client and server side. Please have a look into the examples/ folder for an example. High Performance SDK V1.0.0 =========================== Welcome to our first release of the High Performance OPC UA SDK. This SDK was tested on the following platforms: * Linux (PC,x86/x86-64): GCC, Clang * Linux (Raspberry PI, ARM): GCC * Windows (PC, x86/x86-64): Visual Studio 2008 - 2015 Supported Profiles: ------------------- * Nano Embedded Device Server Profile * Micro Embedded Device Server Profile * Embedded UA Server Profile (not yet, due to missing Monitor Triggering) * Standard UA Server Profile (not yet, due to missing Monitor Triggering) Supported Protocols: -------------------- * OPC UA TCP Supported Encodings: -------------------- * OPC UA Binary Supported Security Policies: ---------------------------- * None (not secure by design) * Basic128Rsa15 (not recommended, weak algorithms) * Basic256 * Basic256Sha256 Supported User Token Types: --------------------------- * Anonymous * Username Supported UA Services: ---------------------- * Discovery Service Set: FindServers, GetEndpoints * Secure Channel Service Set: OpenSecureChannel, CloseSecureChannel * Session Service Set: CreateSession, ActivateSession, CloseSession * View Service Set: Browse, BrowseNext, TranslateBrowsePathToNodeIds, RegisterNodes, UnregisterNodes * Attribute Service Set: Read, Write * Method Service Set: Call * MonitoredItem Service Set: CreateMonitoredItems, ModifyMonitoredItems, DeleteMonitoredItems, SetMonitoringMode * Subscription Service Set: CreateSubscription, ModifySubscription, DeleteSubscription, SetPublishingMode, Publish, Republish Unsupported Services: --------------------- * Query Service Set: QueryFirst, QueryNext * Attribute Service Set: HistoryRead, HistoryUpdate * MonitoredItem Service Set: SetTriggering * Subscription Service Set: TransferSubscription Supported NodeIds: ------------------ * Numeric * String * Guid * Opaque (not supported for static address spaces yet) Available Platform Backends: ---------------------------- * Linux * Windows Available Crypto Backends: -------------------------- * OpenSSL * mbedTLS (not stable yet) Available PKI Backends: ----------------------- * OpenSSL * mbedTLS (not stable yet) Available PKI Store Backends: ----------------------------- * file Available Trace Backends: ------------------------- * stderr * file * syslog (Linux only) Available Timer Backends: ------------------------- * soft Available Network Backends: --------------------------- * berkeley * epool (Linux only) Available Authentication Backends: ---------------------------------- * internal (file based user management) Available Authorization Backends: --------------------------------- * inode Additional Features: -------------------- * Configurable memory pools to avoid memory usage and fragmentation * Address Space can be compiled into binary (ROM based address space) * Loading binary address space file * XML to binary file converter * XML to C code converter * IPC framework * Sandbox mechanism * Portable XML parser * Unit test framework * Extensive unit test suite to support porting the SDK * Extensive API documentation and examples and tutorials * Structured type support * Dynamic object instantiation support Missing Features: ----------------- The following bullet points list missing features that will be added in future versions of the SDK. * Client side SDK for implementing OPC UA Clients * Event support: creating, sending and filtering of events * Alarm support: this depends on events * State machine framework * Triggering for monitored items * Structure support with optional fields * Union support * PLCOpen example * AutoId example (requires structures with optional fields, unions, and events)