High Performance SDK V1.5.1 =========================== Bugfix release for 1.5.x series. documentation: * fix invalid DataTypeDefinitionType values in binary file format documentation * add missing documentation for new namespace fields: version and publication_date this was added in SDK V1.5.0 and fileformat version V1.7 * fix type of Guid encoding example in binary file format documentation * add tips for trace file proccessing: adding/removing color information settings: * As a requirement for certification the default settings.conf and settings_standard.conf are changed to allow the None policy only for discovery. Respective *_insecure.conf settings are added with the previous behavior. * Add settings_embedded.conf which was used for certification with the embedded profile. * Fix server profiles content in the settings files. general: * add missing UA_BEGIN_EXTERN_C/UA_END_EXTERN_C to several header files * replace memset with ua_memset platform: * Align return value for all platforms for ua_file_open and ua_file_scandir because some platforms distinguish between UA_EBADPATHNOTFOUND and UA_EBADFILENOTFOUND and some do not. Only UA_EBADFILENOTFOUND is used for all platforms. trace: * improve trace colors and update trace documentation uaapplication: * Use appconfig write section feature to store certificates. uacertmgr: * Fix issue in import-tree commmand when the 'own' folder is missing in the hierarchy. This happend when importing UACTT generated PKI hierarchy. uaclient: * add check before dereferencing private implementation pointer. This allows to call ua_client_cleanup from the callback without crashing in handle_disconnect. * make certificate hostname verification case insensitive. This fixes a compatibility issue with the .Net SDK, which does an toupper conversion of hostnames for unknown reasons. * fix buffer double free after error (catched by parameter check before fix). uacrypto: * remove crypto_alg_null definition and usage in SeConv uafileformat: * Replace some wrong file handle initializations and comparisons where 0 was used instead of the UA_FILE_T_INVALID macro. This could lead to problems in certain platform layers. Fixes #18010 uafiletransfer: * fixed an infinite loop if filetransfer support is enabled but the number of filehandles in the appconfig is specified as 0 at server shutdown. uagds: * if the storage of a new trust list is failing the old one is restored now. * fixed an issue where updated selfsigned certificates are checked against the trustlist. Selfsigned certificates do not make use of the trustlist. This check would always fail. uaserver: * add callback function which may be called before a node or a references is added. This allows the manipulation of these nodes or references. * fixed an issue with SecurityRejectedSessionCount where it was missed to increase correctly. * fix data type of the MinSupportedSampleRate (i=2272) node * treat empty strings like null strings when handling index ranges for improved interoperability * Remove superfluous semicolon at end of macro, which causes a warning with some compilers * The translate service implementaton is changed to allow a maximum of 10 results per browse path instead of a single result. * The access level of EnabledFlag (i=2294) is changed to read-only. Users of the static address space need to modify the access level in their Opc.Ua.NodeSet2.xml. uapki: * initialize result array in pki_cert_verify to avoid misusage (before it was required that the caller has initialized the result array) * add function to check if certificate is self signed * document restriction to RSA keys in regard to certificate and revocation list signatures uapkistore: * Ignore badsignature in pki_store_crl_find_c. Lookup would fail if first certificate is not the issuer of the crl without looking at the remaining certificates. uapubsub: * implement encoding/decoding of variants containing datavalues (not required in client/server) * fix variant field write for uncertain status uatcpmsg: * fix unnecesary IPC_FREE calls in error handler * free verify context in case of an error xml2bin: * Add check for missing element and error trace. Published models must have this element and it is required for processing namespaces correctly in xml2bin/xml2c. High Performance SDK V1.5.0 =========================== Breaking Changes: ----------------- * Handling of store:// has been changed in settings.conf. See migration section in online documentation for more information. New Features: ------------- * add support for UA FileType * add support for UA binary DataTypeDefinition attribute * add support for UA GDS Push Model for server applications * add new functions attach2 and get2 to value store interface with service call information (e.g. session) * new 'dump' command in uacertmgr * new filter options in xml2bin for excluding descriptions * add include functionality into settings parser * merge support for pubsub addon (beta) into mainline Changes: -------- * improve dynamic instance creation to work with more complex models * fixed all clang code analyzer warnings * fixed all PVS warnings classified as high, and most medium warnings * as usual various bugfixes High Performance SDK V1.4.2 =========================== Bugfix release for 1.4.x series. general: * add some missing NULL ptr checks in various locations * add missing UA_BEGIN_EXTERN_C to several header files * replace most occurences of strncyp with util_strlcpy * update the Opc.Ua.NodeSet2.xml and companion specifications inlcuded in the SDK. The new version is 1.04.6 with the publication date of 2020-04-14T00:00:00Z and the companion specifications from the same time. platform: * win32: add missing UnregisterClass call in pshutdown.c. This fixes a resource leak which can create troubles in soft-restart. * add macro UA_SAFESTR for safe string access. xml2c: * increase max prefix length to 256. This fixes an issue with prefixes longer than 9 characters. * fix some memory leaks * add new option -M to specify address mappings. This allows to specify arbitrary storeindex:valueindex combinations for each nodeid. xml2bin: * xml2bin now parses the LastModified information from XML Nodesets and uses this as LastModified timestamp in generated bin files. So when generating bin files multiple times from the same source this produces the same result. If LastModified is missing it falls back to the PublicationDate. If this is also missing it uses the current time as it was in previous versions. uafileformat: * Update fileinfo tool to print the LastModified timestamp uaapplication: * fix build issue with disabled server (client only) * add new traces about the SDK version and enabled features at init uaserver: * Fixes compatibility issues with .Net client. The server now sends a NULL bytestring when certificates are missing instead of an empty bytestring. This affects discovery.c and createsession.c. * Fix range check of stringtable in persistence.c. * Fix notification counts in diagnostics to fix CTT issue. * Set the client_user_id member of the uasession_session struct correctly. * Set the dimension pool for SessionDiagnostics * In call_table if no method handler at a subtype exists add lookup at the supertypes until a handler is found. * Fix current session count in diagnostics in the case create session fails. * Only add configured user tokens for a endpoint to the endpoint description in discovery. * Improve trace output for address space configuration. uabase: * Support an arbitrary level of millisecond precision from 0 to 7 digits for ua_datetime_from_string util: * Change the util_strto(u)int* functions to produce an error if no digit at all can be parsed. examples: * fix build issues with disabled server (client only) * fix the group id of Observer in the example groups file documentaion: * fix missing documentation of network module High Performance SDK V1.4.1 =========================== Bugfix release for 1.4.x series. platform: * fix return value of ua_filestream_readline and add documentation trace * add missing header file to install target for fnhook backend memory: * move mutex_lock after null pointer check uabase: * add ua_string_clear_s for secure string deletion * add ua_bytestring_compare_data to compare with raw data uaencoder: * add check for the extensionobject length field during decoding, at the moment only creates an error trace but may be made more strict in the next major release uaclient: * add add ua_service_settings_init and ua_service_settings_clear * use ua_string_clear_s to clear username and password in ua_auth_credentials * split server certificate chain in set_security_from_endpointdescription * move configuration defines to new uaclient_config.h * fix cert check with chains when a session is created * fix semantic of ua_client_set_credentials: The function now copies the data and ua_auth_credentials_init/ua_auth_credentials_clear/ua_auth_credentials_copy are added whereas the former ua_client_clear_credentials function is removed. uaserver: * allow any order of fields when checking the application uri of a certificate * fix leak if the last subscription of a client times out and is not re-created * make max namespace configuration available as cmake options UASERVER_MAX_NAMESPACES and UASERVER_MAX_NAMESPACES_PER_PROVIDER * make max valuestores configuration available as cmake option UASERVER_MAX_VALUESTORES * monitoreditem: set revised sampling interval after asynchronous callback is finshed, to allow providers to change the interval in the asynchronous operation. uaprotocol: * update sequence number wraparound according to the errata * enable asynchronous certificate verification during OpenSecureChannel xml2bin/xml2c: * fix typenames for structures with optional fields * handle DOS CRLF also on Linux when parsing placeholders * fix issues with browsenames that contain white spaces * add MAX_ENUM_VALUE entry to generated enums to enforce 32bit uacertmgr: * fix help for import-tree command documentation: * fix various typing errors * add missing parameter descriptions * fix wrong/broken references to other functions inside the documentation examples: * fix provider initialization of lesson_async_data test: * add some tests to increase test coverage High Performance SDK V1.4.0 =========================== Breaking Changes: ----------------- Some of the new features required some breaking changes, especially in the application configuration structure. Please have a look at the SDK Migration Guide in the SDK's documentation for more details on this changes. New Features: ------------- * Alarms & Conditions support * Base Info Diagnostics support: The server supports a collection if diagnostic information inside the server object. * Method registration and lookup functionality with inheritance support and MethodDeclarationId support. Methods at instances directly "point" to the methods at their types using their MethodDeclarationId. This allows quick lookups of method implementations that have been registered at the type, and avoids registering ObjectId/MethodId combinations for each instance. * New callback at the provider interface for changing the monitoring mode of monitored items. This allows disabling of the sampling without removing the items. * New trace backend 'fnhook' which allows registering trace callbacks. This can be used to integrate the SDK trace into existing trace infrastructure without writing a new trace backend. Changes: -------- uaclient: * add support for secure connections. This is demonstrated by the sample_client. * add helper function for certificate verification * add hostname check of certificates uabase: * add generic variant setter for scalars uafileformat: * remove some library dependencies to make it better reusable for other SDKs * add CMake options to be able to disable the file format tools when building * add CMake options to disable file reader and file writer. This allows to build only the part you need. E.g. most servers only need the file reader. * introduce new uafileformat_config.h which contains the configured CMake options Fixes: ------ xml2bin: * fix XML to variant conversion of arrays of Byte and SByte. This issue affected both xml2bin and xml2c. xml2c: * disable descriptions by default. The stringtable is not correct when disabling descriptions using the preprocessor switch. The table must be regenerated. You can enable descriptions by using '-d' command line switch, but you must regenerate all static nsX.c files to match the SDK configuration. uaserver: * add missing UA_BEGIN_EXTERN_C to monitoreditem.h for usage in C++ code * fix some build warnings when building without ENABLE_TO_STRING option uaclient: * fix length check of server nonce: don't accept nonces shorter then 32 byte uaprotocol: * fix memory leak in server when connection is closed internally (#14324) * fix occasional disconnect during renew of security token (#14340) * fix memory leak during renew of security token (#14358, #14370) * apply workaround for seqno reordering issue in renew procedure (#14161) High Performance SDK V1.3.1 =========================== Bugfix release for 1.3.x series. platform: * add new functions ua_file_mkdir_perm, ua_file_mkpath_perm and ua_file_chmod (see PKI store) pki store: * secure file permissions if newly created files and folders (on platforms which support it) * warn about weak file permissions (on platforms which support it) network: * Handle EMSGSIZE error for UPD sockets gracefully * fix error handling of accept in berkeley backend uafileformat: * fix double free in file checksum validation uaserver: * allow writing of bytestrings to array of subtypes of byte, not only array of bytes * add missing header file parselong.h in eval version * add missing header file referencetype.h in eval version * add memset for IPC memory and reset on shutdown to allow clean server restart on embedded systems without CPU reset * fix resource leak in error handler of uasession_createsession and activatesession * add error trace when reaching MAX_PROVIDERS limit for better diagnostics * fix missing datachange of MonitoredItem when changing sampling mode from Disabled to Reporting * fix bug x509 authentication signature check which was introduced in V1.3.0 * fix wrong status code in x509 authentication (CTT error) * fix invalid status code in uasession_checkclientsignature (CTT error) * release resources for created but not activated sessions earlier uaapplication: * fix certificate lookup handling when the store's max file limit is reached uabase: * add missing documentation to some undocumented and sparsely documented functions * add missing variant setter function for GUID uapasswd: * fix getpass function when program is called without terminal (useful for automatic tests) (linux only, tcsetattr failed, now it tested for a terminal using isatty before calling tcsetattr) uaencoder: * fix memory leak with specially crafted request header uapki: * split pki source into CA/General/Utils * add some missing const keywords in interface * fixed element reordering in transcoding of certificate subject names (results in invalid certificate) * add crl_get_identity and crl_get_extension uaprotocol: * fix memory leak in error handling when all secure channels are in use * fix double free in OOM handling during response preparation * fix memory leak in error handling of certificate chain processing * fix unhandled buffer OOM during chunking * throw error if receive chunk count limit is reached * error during sending of message was not handled xml2bin: * add info about LARGE_TABLE_SUPPORT to version info xml2c: * fix missing ENABLE_DIAGNOSTICS define in generated code icc: * add missing version info to icc tool uaclient: * add option to detach response data from message context (grep for UA_EDETACH) demoserver: * Create unique nsidx when loading muliple namespaces via -m option examples: * add client_read test client. This is also used for internal system test. High Performance SDK V1.3.0 =========================== New Features: ------------- * general: C++ support - Using UA_BEGIN_EXTERN_C in headers and removal of enum forward declaration * uabase: add new ua_variant_get_extensionobject function * uabase: add new ua_variant_detach_extensionobject_of_type function * uabase: add new ua_variant_set_extensionobject_binary function for setting pre-encoded structures * uabase: split variant code into multiple files * uabase: add new ua_string_trim function * uaserver: X509 UserToken support * uaserver: Loading multiple PKI store instances * uaserver: Loading multiple UA binary files into a single namespace * uaserver: NamespaceIndex mapping for NodeId, QualifiedName when loading UA binary files * uaserver: New ua_addressspace_load_file_ext function with support for handling * uaserver: Address Space Update to specification V1.04 * uaserver: Triggering support for monitored items (optional) * uaserver: PercentDeadband filter in monitored items (optional) * uaserver: Add support for ArrayDimensions * uaserver: Many new utility functions to simplify typical tasks * uaserver: Add new object instantiation code which allows better control on how instances declarations are created. * uaclient: Stabilization. The client is now able to survive the 72h test with network interruptions. * uaclient: Added security support. Client Getting Started Lesson02 demonstrates this feature. * uaclient: Added user authentication support. Client Getting Started Lesson03 demonstrates this feature. * uafileformat: New XML extension support in UA binary files. * xml2bin/xml2c: Add category filter which allows to filter by category (see UANodeset.xsd) * xml2bin/xml2c: Add option to strip unused types from model. This is important to reduce the sice of NS0 for embedded devices. This can be used also for other information models. This feature is still experimental and requires good knowledge of information models. * xml2bin/xml2c: Add support for structure with optional fields. * xml2bin/xml2c: Improve error output. * xml2c: Add support for arraydimensions. The tool now generates tables for array dimensions, which are referenced by the variable/variabletype tables. All redundancies get eliminated, which means each combination of arraydimensions exists only one time per namespace. * doc: Add new examples and API documentation for client side. Add general chapters for troubleshooting, configuring secure connections, unit testing and many minor fixes. * timer: performance improvement of timer processing when there are not many timers active. High Performance SDK V1.2.2 (candidate) =========================== Fixes: ------ * uasession: Fix improper timeout calculation when choosing deletable secure channels. * uatcp: Fix NULL pointer access during protocol handshake (#10906) * uatcp: Add missing request timeout handling for client. * uatcp: Fix compilation with client disabled. New Features: ------------- * general: Add support for additional security policies. * client: Add secure conversation to client functionality. High Performance SDK V1.2.1 =========================== Bugfix release for 1.2.x series. Fixes: ------ * general: fix compilation with disabled TO_STRING/FROM_STRING support * general: Fix various issues and warnings reported by PVS Studio * client: Fix client reconnect issues * client: Fix memory leak in client example when exiting without deleting subscription * uaclient: fix memory allocation of ACK array in publish * uaserver: remove obsolete methodpool * uaserver: fix 8bit datatypes in pointerstore * uaserver: fix wrong comparison in ua_addr_ht_key_compar * uaserver: fix potential nullptr deref in internal authentication backend * uaserver: change ua_node_set_nodeid to remove node from index only with NULL NodeId. * demoserver: fix memory leaks * uaapplication: fix invalid IPC_CLEAR call of g_pool_cfg * pki_store: fix malloc error check (found with PVS) * pki_store: fix sign of sscanf argument * ipc: fix format specifier of sem_name * trace: fix format specifier * uanetwork: fix potential nullptr deref of a_pSocket->pCurrentSend * uaseconv: fix potential nullptr deref of chan->channel_id * uafileformat: fix missing header field for file extensions (num_extnamespaces) - this field was already specified in previous version but missing - increased file version to be able to distinguish old files version with missing field from newer versions - the library can load both variants now * xmlparser: change malloc() include to use stdlib.h instead of malloc.c (fixes vxWorks build) * xmlparser: fix bug in xml_string_html_decode (invalid length in memcmp) * xmlparser: fix bug in xml_node_attribute_count. Type check was using wrong type. xml2c: * Fix wrong nsidx in encoding tables when subtypes of built-in types are used as structure fields * Fix sorting order of type_identifier.h to be consistent with type_table.c * Use symbolicname instead of browsename when generating defines for type-ids * add code to provider skeleton to register type tables * change default bin file name to use model prefix as basename (e.g. lead 'di.bin' instead of 'ns2.bin') * add missing function prototypes for union types * add missing file header to generated code xml2bin: * fix usage output (-h) * fix missing break in command line argument parser * fix hashing of GUID nodeids uapasswd: * use ua_mem_clear_s instead of ua_memset to securely remove passwords from memory documentation: * improve documentation of ua_reference_remove New Features: ------------- The SDK does not get new features in a bugfix release. Tools and examples delivered with the SDK are an exception to this rule. xml2bin: * Add support for node extensions - General extension handling and skipping - Node Access Info (access permissions) - Generator extension - Runtime address extension - Documentation extension Examples: * improve file writer example to show usage of extensions * enhance file_test application to display new information xml2c: * Add code to generate symbolicnames from browsenames when symbolicnames are missing in XML nodeset - perform Unicode decomposition to remove accents from letters (e.g. รค -> a) - remove remaining invalid ASCII symbols High Performance SDK V1.2.0 =========================== Highlights: * Support for events - Usage of events is explained in the new server gettingstarted lesson04 - The new configuration settings num_eventnotifiers and num_eventfields must be set - Events are enabled by default, but can be disabled with the cmake option UASERVER_SUPPORT_EVENTS * Implementations for new valuestores - floatstore: Stores float data types - uint32store: Stores uint32 data types - pointerstore: Stores pointers to existing C variables * New function to check matching data types: The write service allows only values that match the data type attribute, the new function uaserver_write_matches_datatype() implements an OPC UA Specification conform match check, for easy integration into the application. General: * Add example for the filewriter * Add target config debian_qemu Linux PL: * Remove deprecated definitions for unsafe functions, which caused warnings with new clang compilers. Use static analyzers instead. uabase library: * Add ua_bytestring_set_null() to set NULL bytestrings * Add ua_bytestring_append() to append a bytestring to another bytestring * Add ua_extensionobject_get_object() to get objects when the type matches * Add ua_nodeid_compare_numeric() and ua_nodeid_compare_string() convenience functions * Remove defines to disable arrays and matrices, these are always enabled now * Add new array and matrix handling functions to variant * Add getter functions for scalars to variant server library: * Remove old nodeid from hashtable index when changing a nodeid with ua_node_set_nodeid() * Fix for ua_reference_remove() when removing references between different name spaces * Fix naming of UA_SUPPORT_DESCRIPTION option * Fix objectpool cleanup for certain node classes in ua_node_delete() * Remove old nodeid from hashtable index when deleting a node * Skip the application URI check when the crypto backend does not support it * Add cmake option UASERVER_SUPPORT_LARGE_TABLES that allows more nodes in a single name space client library: * The client side is still considered beta and not recommended for production use * Improve interoperability to .Net and Java based servers * Fix content of the client description transferred during session creation Server-Provider: * Add values for the LocaleIdArray and ServerProfileArray Demo-Provider: * Show usage of array and matrix in variant * Set permissions in the AccessRights folder * Implement the method to change simulation speed xml2bin/xml2c: * Remove dependency to OpenSSL * Add UA_DESCRIPTION_C macro in generated code to make description strings optional. * Implement correct mapping of NsIdx in Variant values containing Argument Structures and ExtensionObjects * Doen't generate a static store anymore of the XML file does not contain any values. * Generated provider skeleton (-m switch) does not generate code which works for static and dynamic address spaces. * Reuse existing namespace indeces. When loading multiple XML files which contain the entries for the same namespace URIs, the assigned SDK NsIdx is reused instead of adding new ones. This fixes an issue with unnecessary empty namespace table entries. * Implement parsing of the EventNotifier attribute of Object nodes. * Correctly escape unicode characaters in string literals of string table. UATCP: * Let client start with message sequence number 1 * Fix install path for headers * Improve calculation of connection limits for the client Unit Test: * Add unit tests for new features and functions * Various fixes and improvement to existing unit tests Trace: * Improved File-Trace backend with file rotation and configuration file. * Improved trace documentation. 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)