******************************************************************************** ******************************************************************************** ** ** ** Version 1.9.1 ** ** ** ******************************************************************************** ******************************************************************************** General: -------- * Update generated code for namespace 0 to version 1.04.7 * Update UaStack to latest version 1.4.11 * Update HP SDK components to 1.4.2 * Update OpenSSL to version 1.1.1g * Add PubSub documentation (see new features for more details) ------------------------ Changes ------------------------ Server SDK: ----------- * Adjust custom PubSub callbacks to PubSub stack API changes DataSet message header fields are now merged into one struct pubsub_datasetmsg_ctx The struct has now all header fields. This affects UaServer_pfServer_PubSub_WriterDataCB and UaServer_pfServer_PubSub_ReaderDataCB PubSub Stack: ------------- * Change signature of data callbacks to use a struct type instead of single parameters which affects the following callback types: - PUBSUB_CB_T_WRITER_DATA - PUBSUB_CB_T_READER_DATA * Network back-end API Writer groups that create multiple network messages per sampling interval now create multiple back-end contexts. Back-ends must deal with multiple init/clear, alloc/free calls per group and should be prepared to handle those at runtime as well (if dynamic profiles are planned to be supported) ------------------------ Known Issues ------------------------ Server SDK: ----------- SDK will not build in shared library mode if UASERVER_FILEIMPORTER or UASERVER_PUBSUBMODULE is enabled, as the HP SDK does not support shared library mode at the moment. PubSub Stack: ------------- Due to the following technical limitations, the PubSub stack is in beta mode * Security is not implemented, configurations with security enabled will be rejected with error code UA_EBADNOTIMPL. * Discovery messages are not implemented. * Chunking is not implemented, if the size of a message exceeds the max msg size an error is returned and processing of the group will stop. * Dynamic number of network messages are not supported, that means the configuration must contain an appropriate number of messages per group so that all data will fit in the number of messages configured. This is only the case for periodic fixed header layout configurations * Matrix fields are unsupported in raw encoding of dataset messages, * Structure fields are unsupported in raw encoding of dataset messages. * Only key frames are supported for dataset messages. * The do_com function can't tolerate changes in system time and has slow shutdown times in case of very long publishing intervals. If needed, the application should control execution of all objects instead of using the pubsub_do_com loop. * Timestamps in network message header fields are always 0 / not written. * On the subscriber side no handling of sequence numbers / out of order receives is done. ------------------------ New Features ------------------------ Server SDK: ----------- * Implements support for Condition Branches Adds basic handling of Condition Branches as children of the UaServer_EventType structure. Adds handling of Condition Branches in UaServer_Events_ConditionRefresh * Export UaServer_Events_FindEventType for external use * Adds X409 user token handling to all authentication back-ends * Add option to deactivate Method RequestServerStateChange New UaServer_Configuration::bDisableServerStateChange setting for runtime configuration New CMake option UASERVER_DISABLE_SERVER_STATE_CHANGE to disable in code * Add support for reading of index ranges of multidimensional arrays PubSub Stack: ------------- * Add more data types / value ranks to raw encoding * Implement multiple network messages per writer group * Implement writer group configuration options: - data_set_ordering - network_message_number - data_set_offset Documentation: -------------- * Add PubSub documentation - Add extended OPC UA overview with all OPC Unified Architecture building blocks including PubSub 'OPC UA Fundamentals' > 'OPC Unified Architecture Overview' - Add general PubSub concept introduction 'OPC UA Fundamentals' > 'OPC UA PubSub Messaging Concept' - Add PubSub SDK documentation 'PubSub SDK Overview' * Add documentation for structure data types See 'OPC UA Fundamentals' > 'OPC UA DataTypes' * Add documentation for server localization See 'Server SDK Overview' > 'Localization of strings' * Add documentation of new OPC UA 1.04 attributes Examples: --------- * Add additional client getting started lessons - Lesson 3: Write Values - Lesson 4: Discovery and Secure Connection - Lesson 5: Register Nodes - Lesson 6: Create EventMonitoredItem * Add sample code for client side structure data type handling * Add sample code for server condition branch support to ANSI C demo server including extension of demo server documentation with information about alarm example (Server Examples and Tutorials > ANSI C SDK Demo Server > Alarm Example) * Add X509 user token related users to ANSI C demo server for CTT testing * Add PAM and SASL authentication back-end to ANSI C demo server ------------------------ Bugfixes ------------------------ Client SDK: ----------- * Fix compilation without trace Server SDK: ----------- * Update namespace 0 to latest 1.04.7 specification * Add missing null pointer check for g_UaServer_GlobalEventFieldTable in UaServer_Events_Clear * Fix issue in UaServer_DeleteSubscriptions related to transfer subscription CTT test * Fix compilation without trace * Adds processing of EndpointUrl in FindServers Make sure the EndpointUrl passed in to FindServers is returned as first entry in the DiscoveryUrls array * Fix value returned for index range in Read in case of BadIndexRangeNoData error * Fix monitored item creation with index range on array with empty value * Fix tranlateBrowsePathsToNodeIds error handling Adds missing error handling for invalid path elements in timer callback * Fix MessageSecurityMode setting in AuditOpenSecureChannelEvent * Fix TrustList::Write if open for Read only * Fix asynchronous handling of ServerConfig changes related to GDS PUSH * Fix memory leak in PubSub data monitoring for data types with dynamic size * Update ANSI C SDK to HP SDK data type conversion utils * Enhance error handling for FileType methods for TrustListType and PubSub config * Fix PubSub connection management in UDP network back-end Reuse send socket in a PubSub connection for all WriterGroups * Fix error handling if PubSub startup fails PubSub Stack: ------------- * Cleanup handling of encoding errors of payload encode functions * Fix status code handling of raw encoding * Fix handling of DataSetClassId by readers * Send invalid DataSetMessages instead of going to error state if possible * Fix handling of configurations with disabled objects in reader groups * Do not ignore reserved bits in DataSetMessage header * Fix Byte PublisherId evaluation * Fix security mode evaluation of subscriber * Write padding if configured size exceeds DataSetMessage size * Fix calculation of string padding for raw decoding * Pass recv_complete cb in connection_subscribe * Remove obsolete ipc lib from target_link_library ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.12 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * Types: - update to UANodeset 1.04.07 ------------------------ Features ------------------------ * Several Platforms: - Add integer constant macros. * Project: - Add experimental option UASTACK_ENABLE_UNUSED_RESULT_CHECK ------------------------ Bug Fixes ------------------------ * Several Platforms: - Correct build check for threads in trace. * TcpConnection: - Add missing result code checks. * SecureConnection: - Disconnect if signature error is detected. * Endpoint: - Fix wrong status code when response is too large * General: - Fixes static analyzer warning targeted on memory allocation fail. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.11 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * SecureListener: - Make security checks on final message chunks in separate thread. (MT configuration only) * SecureChannel: - Set initial sequence number to 1 * WindowsCE - Print warning is number of sockets is larger than 64 on Windows CE ------------------------ Features ------------------------ * Encoder: - Warn if encoded extension object length is not correct. ------------------------ Bug Fixes ------------------------ * SecureListener: - Fix invalid status in error message if wrong server certificate is used. * Core: -Fix warnings/errors that occur when stack trace is disabled * Linux: - Fix compile error in socket code occurring on newer distribution. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.9.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ Base Library: ------------- * Change signature of UaBase_P_TimeTFromDateTime to allow returning error on overflow Server SDK: ----------- * Move Trace object below VendorServerInfo * Remove Filename argument from ConfigureFileTrace method There's no use case to remotely change the trace file path or name. * Keep all registered EventFields during runtime This prevents reuse of the global index of an EventField when unregistering and registering EventFields. This leads to growing memory usage when unregistering and registering lots of different EventFields. * UaServer_ContinuationPointInfo::pContinuationPoint changed to not be a pointer This prevents use of dynamically allocated memory for this structure. * UaServer_ContinuationPointInfo::pDescription changed to be a union Description This prevents use of dynamically allocated memory for this structure. * Combine serverprovider/models_di/models_plcopen into serverlib The SDK build structure was changed to combine serverprovider, models_di and models_plcopen into the serverlib library. Hence, it is not necessary anymore to link against those libraries; the only library required when using the server SDK is serverlib(d).lib and libserverlib(d) respectively. ------------------------ New Features ------------------------ Setup: ------ * New applications xml2bin, fileinfo and filetest are now part of the setup See the documentation chapter 'Address Space Generation' for details PubSub Module: -------------- * New PubSub module integration into the SDK - Currently in experimental state and NOT intended for productive use - Binary config file can be set with the [PubSub] --> ConfigFilePath setting - Example for handling PubSub in the application is contained in demoserver.c CMake: ------ * Add convenience variables UASDK_CLIENT_INCLUDE, UASDK_SERVER_INCLUDE, UASDK_CLIENT_LIBRARIES and UASDK_SERVER_LIBRARIES that can be used instead of including / linking against all required dependencies manually Base Library: ------------- * Number of files in a folder can be determined using UaBase_P_LoadFilesFromFolder by passing NULL as a_ppFiles * Add UaBase_PkiCertificate_GetSignatureAlgorithm * Add UaBase_PkiCertificate_GetKeyLength * Add UaBase_PkiCertificate_IsSelfSigned Client SDK: ----------- * Add UaClient_Session::DisconnectTimeout Server SDK: ----------- * Add endpoint setting UaServer_Endpoint::bCommissioningMode * Add optional ModifyItem callback to provider interface * Add capability to import binary file format nodesets * Add UaServer_Session_Disconnect * Add per-endpoint diagnostic variables below VendorServerInfo * Add reverse connect capability * New InternalEx authentication module using SHA2 hashes and salt values ------------------------ Bugfixes ------------------------ General: -------- * Updates UaStack to latest version 1.4.10 * Update OpenSSL to version 1.1.1b * Update namespace 0 to version 1.04.3 * Update DI and PLCopen namespaces to latest versions Client SDK: ----------- * Set session ConnectTimeout for Create/ActivateSession Server SDK: ----------- * Set TrustList CertificateTypes depending on actually used certificate * Add check for PKI store if non-anonymous user token is configured * Fix compilation without trace * Use up all publish requests as long as a subscription is in late state * Don't create inverse references for HasTypeDefinition in server provider * Set event notifier and references of Trace object depending on configuration * Simplify session state machine * Avoid needless copy of NotificationMessage to sent notifications queue * Prevent use of dynamically allocated memory in ContinuationPoint handling * Don't act on closed sessions in UaServer_SessionManager_BeginCloseSession * Check for triggered items after resetting subscription changed flags after calls to DeleteMonitoredItems and SetMonitoringMode * Calculate time to next publish after handling all publishes This makes the subscription intervals much more accurate. * Move certificate usage check to secure channel creation * Don't require dynamically allocated memory for purging subscriptions * Fix memleak on shutdown when handling async service call response * Fix browse/display name of SubscriptionDiagnostics nodes * Limit event filter nesting depth to prevent stack overflows Datalogger: ----------- * Filelogger: fix deserializing of continuation point on systems with 32bit time_t Examples: --------- * Fix data type of values of abstract data type variables ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.10 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- * SecureListener: - Fix memory leak when error occured during standard message handling in a specific location. (#14071) ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.9 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- * SecureChannel: - Fix status code when response is too big * Types: - Update to latest 1.04.3 spec + amendments * Several Platforms: - Add format specifier for size_t - Extend platform config string. * Solaris: - Several fixes for project files and platform adaption. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.8.4 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ Server SDK: ----------- * Move ServerProfiles/LocaleIds to config struct for runtime changes The hard coded arrays g_UaServer_sLocaleIds and g_UaServer_sServerProfiles have been replaced by equivalent children of the UaServer_Configuration structure (pServerProfiles / pLocaleIds). Those are filled with default values on startup and can be modified during runtime to match the current configuration of the application. ------------------------ New Features ------------------------ Server SDK: ----------- * Add user data and clear function pointer to UaServer_ContinuationPointInfo ------------------------ Bugfixes ------------------------ General: -------- * Updates UaStack to latest version 1.4.8 Base Library: ------------- * Return correct status code from OpcUa_Variant_... functions * Avoid use of deprecated OpenSSL API functions * vxworks: implement fallbacks for isnan and isfinite * Fix atomic intrinsics detection on ARM64 * Don't overwrite good status with substatus in UaBase_TimedDoCom Client SDK: ----------- * Improve error handling in OOM situations * Fix format specifiers in traces * Set correct RequestHandle in case of client side errors * Change C++ style comments to C style comments * Use a NULL user token for anonymous logon if no PolicyId could be determined Server SDK: ----------- * Fix rare memory leak in case of failing CloseSecureChannel * Fix null pointer check in UaServer_Events_Set/AttachEventField * Fix display name of children of session diagnostics node * GDS push: fix check for certificate type if certificate group parameter is null * Change C++ style comments to C style comments * Update namespace 0 to latest 1.04 specification * Add traces to UaServer_VerifyUserTokenCertificateCallback Examples: --------- * Adapt default serializer settings to defaults in uastack ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.8 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- * TcpConnection: - Fix send chunk count calculation bug resulting in misleading traces in certain server configurations. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.7 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * General: - Update types to current 1.04 specification * vxWorks: - Increase default thread priority * Several Platforms: - Improve OpcUa_P_OpenSSL_SeedPRNG ------------------------ Features ------------------------ * Several Platforms: - Add print and scan format specifiers. ------------------------ Bug Fixes ------------------------ * TcpConnection: - Fix send chunk count calculation bug resulting in broken communication depending on server. * SecureConnection: - Fix bug leading to too many chunks per message being sent under rare conditions. * SecureListener: - Fix possible server crash if channel manager creation fails during startup. * Several Platforms: - Improve OpcUa_P_OpenSSL_SeedPRNG * Linux and Win32: - Fix URL parsing problem related to IPv6 zone id separators. * Win32_v6: - Load inet_pton dynamically; fixes dynamic linkage error on XP. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.6 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * General: - Update Types to current 1.04 specification ------------------------ Bug Fixes ------------------------ * General: - Handle reports from PVS analyzer. - Update Types to current 1.04 specification * StackCore: - Check return values of embedded CopyTo calls. * Core: - Fix double free in Memory Stream * Endpoint: - Fix OpcUa_Endpoint_CloseSecureChannel returning error code without a reason. * SecureListener - OpcUa_SecureListener_CloseConnection returned invalid async status. * SecureConnection: - Do not trigger error handling if connection is closed while disconnect still in progress. - Do not start delayed renew during disconnect. - Fix infinite wait when request was send during disconnect. - Fix rare infinite wait during connect * TcpConnection: - Handle double Disconnects. - Fix server URL in Hello message during reverse connect. * Several Platforms: - Fix compilation with OpenSSL < 1.0.1 - Fix path string checks in OpenCertificateStore - Fix resource leak when socket manager thread creation fails. - Major update to URL parsing. - Fix bug in SSL socket handling. * Windows: - Trace reason for error during CRL loading. * Linux: - is not always defined EAI_NODATA - Remove unused SHA1 160 implementation. - Fix potential memory leak in recursive mutex implementation. * vxWorks: - Fix missing timeout in select during socket pair creation ******************************************************************************** ******************************************************************************** ** ** ** Version 1.8.3 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ New Features ------------------------ Server SDK: ----------- * Add an UserData pointer to UaServer_PublicSession ------------------------ Bugfixes ------------------------ General: -------- * Updates UaStack to latest version 1.4.5 * Update OpenSSL to version 1.0.2o Base Library: ------------- * Use OpcUa_Free to free memory alloc'd by OpcUa_Alloc * Fix build with UNICODE disabled Server SDK: ----------- * Fix null pointer access when shutting down with multithreaded provider * Fix data types of child variables of ServerStatus * Set correct NamespacePublicationDate of namespace 0 * Fix build without trace support * Additional null pointer checks to prevent crash on error during startup * Use app-configured application type for registration at LDS * Prevent access to provider via UaServer_GetNodeById etc. after unloading it * Don't delete session on ActivateSession error if there are outstanding transactions * Prevent duplicate SessionClosed CB if session has outstanding transactions * Block incoming service calls on shutdown * Fix compilation with OPCUA_TRACE_ERROR_MACROS enabled * Prevent infinite recursion with OPCUA_TRACE_ERROR_MACROS enabled * Fix freeing order on error in UaServer_ContinuationPointInfo_Create * Flag session as invalid if it was used without activation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.5 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Core - Change value of internal status codes. Use dedicated bit 29 instead of the subcode flag to mark application specific codes. Fixes an issue where some internal codes shared the value with newer standardized status codes. * Several platforms: - Fix possible deadlocks in socket implementation. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.4 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * SecureListener: - Remove listener lock during transport connect (affects reverse connect only) * SecureConnection: - Fix connect timeout in one stage * Several platforms: - Fix missing release of sockets (Resource Leak) - Fix possible deadlock in socket implementation * Linux and QNX platform: - Fix freeze in thread API caused by deleting an not started thread in a thread different from where it has been created * TcpListener - Fix rare deadlock during the response sending process. - Fix deadlock during reverse connect. - Fix missing peer IP for reverse connections. * Fix server becoming unresponsive when processing unexpected message ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.3 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Extend stack version string with field names * Platform Layer: - Accept private keys in OpcUa_P_OpenSSL_RSA_Public_GetKeyLength - Change OpcUa_P_OpenSSL_X509_GetSignature ------------------------ Bug Fixes ------------------------ * Generated OPC UA structures and related encoders - update based on fix in OPC UA UANodeSet XML model file - fix wrong field length for DataSetFieldFlags in StructFieldMetaData structure * Channel: - Ignore unexpected events in disconnect event handler Fixes a race condition during connect when timeout and connect happened nearly simultanously. * Tcp Protocol: - Create connection mutex during TcpManager initialization Increases number of used handles during object lifetime. This was necessary because of changes in locking made in addition to reference counting. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.8.2 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ Server SDK: ----------- * Add new setting AllowDeprecatedSecurityPolicies By default, deprecated SecurityPolicies (currently Basic128Rsa15 and Basic256) are rejected by the SDK when loading the configuration. Using the new setting, this behaviour can be overridden. * Add new endpoint setting DisableCertificateAlgorithmCheck This release introduces a check that validates the signature algorithm used for the client certificate against the used security policy. Using the new setting, this check can be overridden. ------------------------ Bugfixes ------------------------ General: -------- * Updates UaStack to latest version 1.4.2 Base Library: ------------- * Fix memleak when calling UaBase_PkiCRL_FromDER in out-of-memory situation * Force inclusion of keyid in certificate authorityKeyIdentifier extension Client SDK: ----------- * Fix memleak of sequence numbers in publish callback Server SDK: ----------- * Fixes for the user authentication token exploit (CVE-2018-7559, see also https://www.unified-automation.com/news/news-details/article/user-authentication-token-exploit.html): - Call OpcUa_Crypto_AsymmetricDecrypt only once when decrypting a password - Only return BadUserAccessDenied for user token if password check fails, return BadIdentityTokenInvalid in all other cases - Return error if optional padding in encrypted user password token doesn't consist of zeroes only - Don't allow the encrypted user password token to be larger than one RSA block - Add new setting AllowDeprecatedSecurityPolicies * Fix crash when handling cancel request for a publish request * Don't require Timestamp in RequestHeaders to be set * Don't activate session if ActivateSession is being called on wrong SecureChannel * Fix crash if password is not encrypted correctly by the client * Trace warning if SecurityPolicy 'None' is being used * Prevent out of bounds array access in UaServer_ParseIndexRange() * Fix handling of namespace table with gaps and dynamically loaded providers * Check for invalid UTF-8 characters in like patterns * Fix memleak when parsing invalid like pattern * Fix crash on filter operand count mismatch in event filters * Restore previous default MinimumSamplingInterval in server/DI/PLCOpen provider instead of setting it to -1 * Fix calculation of session timeout if SessionTimeoutResolution != 0 * Add missing modeling rules Optional/MandatoryPlacehholder to ServerCapabilities * Fix handling of range operator in like operand * Fix handling of invalid UTF-8 in like operand * Fix handling of missing end-of-range operator in like operand * Fix reading of CRLs in TrustList objects Examples: --------- * Use printf where the trace has not been initialized * Fix version and configuration output of demo applications ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.2 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * SecureChannel: - Add check for certificate signature algorithm ******************************************************************************** ******************************************************************************** ** ** ** Version 1.8.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ Server SDK: ----------- * Return the last used numeric node identifier in UaServer_CreateInstance(); see the according documentation for details ------------------------ New Features ------------------------ General: -------- * Add sample settings file for running a server without security Server SDK: ----------- * Add UaServer_DumpServerDiagnostics() * Add UaServer_GetInstanceChild() * Add UaServer_ClearAddressSpace() * Add UaServer_Events_GetEventFieldByPath() and UaServer_Events_GetLocalIndexByPath() ------------------------ Bugfixes ------------------------ General: -------- * Add migration chapter for V1.7 -> V1.8 to documentation * Don't show irrelevant options in CMake option list * Updates UaStack to latest version 1.4.1 Base Library: ------------- * Implement missing file access functions on WindowsCE Client SDK: ----------- * Fix high CPU usage when calling UaBase_DoCom() without any configured sessions * Fix logic for reacknowledging sequence numbers if publish fails Server SDK: ----------- * Prevent deletion of instance declaration nodes in UaServer_DeleteInstance() * Fix UaServer_Events_RegisterEventField() in case of full event field list * Skip numeric nodes that are already in use in UaServer_CreateInstance() * Omit OpcUa_Method::UserExecutable if UASERVER_SUPPORT_AUTHORIZATION is enabled * Fix datachange check for NaN values if a deadband is set * Fix unit of megavar in uaserver_units.c (changed 'kvar' to 'Mvar') * Fix possible hang during shutdown if there are outstanding requests * Fix possible memleak during shutdown if there are outstanding requests ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.1 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Tcp Protocol: - Fix leak and/or hang when server is shut down or restarted with active connections. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.8.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ Base Library: ------------- * Remove uabase_sha1, using new uastack interface OpcUa_Hash_Create instead * Rename max/min to UaBase_Max/Min to avoid conflicts with system libraries * Enable console trace by default * Add OpcUa_PkiCertificateInfo::extendedKeyUsage; we strongly recommend initializing OpcUa_PkiCertificateInfo instances using OPCUA_PKICERTIFICATEINFO_STATICINITIALIZER Client SDK: ----------- * The type of UaClient_Session::UserToken::Token::X509::UserPrivateKey was changed to OpcUa_Key to match the new signature of OpcUa_PKIProvider::LoadPrivateKey * Rename parameter a_clientSideError of UaClient_Session_ConnectError_CB to a_overridable to clarify that it might be either a server or a client side error if the flag is false Server SDK: ----------- * Change SubscriptionDiagnostics->DataChangeNotificationsCount/EventNotificationsCount to contain the number of MonitoredItemNotifications instead of the number of DataChangeNotifications as expected by the CTT * Check if a value that is written matches the variable's array dimensions and return an error if the value is too big; can be disabled with UASERVER_ENABLE_ARRAYDIMENSIONS_CHECK * Add parameter a_bInstantiateMethods to UaServer_CreateInstance; if false, no methods are created and the method instance declarations are referenced instead * Increase default value of UASERVER_MAX_EVENT_FIELDS to 250, as more than 200 event fields are created in the new 1.04 specification address space * Increase default value of UASERVER_MAX_PROVIDERNODES to 3500, as more than 3000 nodes are created in the new 1.04 specification address space Examples: --------- * Disable deprecated security policies Basic128Rsa15 and Basic256 by default * Enable new security policies Aes128_Sha256_RsaOaep and Aes256_Sha256_RsaPss by default * Don't use getchar() and exit application immediately on error or shutdown * Remove demo application parameter '-d' ------------------------ New Features ------------------------ General: -------- * Support new security policies Aes128Sha256RsaOaep and Aes256Sha256RsaPss NOTE: Aes128Sha256RsaOaep is supported only for OpenSSL V1.0.0 and higher NOTE: Aes256Sha256RsaPss is supported only for OpenSSL V1.0.2 and higher * Update namespace 0, DI and PLCOpen to their latest versions * Update OpenSSL to version 1.0.2j Base Library: ------------- * Add support for all SHA2 family signature algorithms in certificate handling * Add UaBase_syslog to platform layer * Add UaBase_ParseUrl * Add OpcUa_PkiCertificateInfo::extendedKeyUsage * Make UaBase_Trace_RegisterRawTraceHook usable by application Client SDK: ----------- * Notify application about errors in UaClient_Session_Action_CreateSession and UaClient_Session_Action_ActivateSession via the connect error callback * Use user tokens of best matching endpoint of CreateSessionResponse if no user tokens are set at the session * Try to reuse existing SecureChannel on reconnect * Detect missing notifications when receiving KeepAlive * Automatically call Republish to get missing notifications before calling Publish * Add UaClient_Discovery_BeginFindServersOnNetwork * Add UaClient_Session::ServerUri Server SDK: ----------- * Add UaServer_ProviderBrowseContext::nCreatedContinuationPoints * Add setting FallbackSecurityPolicy * Move UaServer_ParseUrl to Base Library * Add UaServer_ValidateReadParams so providers can validate the read call without calling UaServer_ReadInternal and then overriding the value * Add UaServer_ValidateWriteParams so providers can validate the write call without calling UaServer_WriteInternal and then writing their own value * Add UaServer_ReadNodeInternal which only reads the value and should only be used in combination with UaServer_ValidateReadParams * Add UaServer_WriteNodeInternal which only writes the value and should only be used in combination with UaServer_ValidateWriteParams * Add UaServer_SetNonValueAttribute * Add CMake option UASERVER_ENABLE_MINSAMPLINGINTERVAL * Add support for DataTypeDefinition attribute * Add support for AccessLevelEx attribute * Add support for AccessRestrictions attribute * Add user management flag UA_ALL_SIGNING_REQUIRED * Add UaServer_ProviderList_GetProviderByName * Support RegisterServer2 * Check if certificate key length matches the SecurityPolicy requirements * Add endpoint option DisableCertificateKeyLengthCheck * Add CMake option UASERVER_ENABLE_ARRAYDIMENSIONS_CHECK * Make UaServer_Browse_BrowseNode usable by providers ------------------------ Bugfixes ------------------------ General: -------- * Use trace instead of calling printf * Fix compile errors with OpenSSL >= 1.1.0 * Fix several issues building the SDK as RTP for vxWorks * Correctly react to errors in OpcUa_List_AddElement/AddElementToEnd/Insert * Updates UaStack to latest version 1.4.0 Base Library: ------------- * Escape forbidden characters in certificate filenames * Ensure to call OpcUa_SocketManager_SignalEvent() only once per DoCom call * Correctly handle UTF8 in certificate paths * Check result of scandir * Fix certificate creation with multiple hostnames / IP addresses Client SDK: ----------- * Try to acknowledge sequence numbers again if publish fails * Don't call connect error callback for unexpected signature algorithm, as it is redundant information and might get deprecated in a future OPC UA spec version * Prevent copies where possible Server SDK: ----------- * Set bStartupFlag before adding monitored item to the provider * Discard old continuation points if new ones are required * Always lock subscription list on access to prevent race condition when firing events * Allow escaped group names containing spaces * Only return nodes in TranslateBrowsePath that are AttributeReadable * Cleanup and optimize generated server provider * Fix handling of array size -1 * Set correct SecurityLevel for all EndpointDescriptions * Return browse results if client sets RequestedMaxReferencesPerNode to 0 * Don't require one mutex per monitored item by using UaBase_Vector instead of OpcUa_List for TriggeringLinks of monitored items * Fix return value of UaServer_Events_ApplyHistoryReadFilter if last event is filtered * Change mutex unlocking order in UaServer_EndSendResponse to prevent deadlocks * Fix crash on cleanup if endpoint couldn't be set from settings * Set new monitoring mode before adding the monitored item to the provider * Fix error code when trying to write a non-writable attribute * Fix check for valid and accepted DataEncoding on read * Fix operation limits in server config after updating proxy stub config * Don't allow creating or activating sessions while in shutdown state * Create copy of NamespaceUri instead of relying on providers to keep it valid * Fix session transaction count for CloseSession on invalid SecureChannel * Fix crash triggered by invalid length value in password decryption * Copy uProviderHandle to modified monitored item before adding the item to the provider * Fix UASERVER_TRACE_METHODCALL if OPCUA_ERRORHANDLING_OMIT_METHODNAME is disabled * Correctly evaluate IndexRange for all namespace 0 nodes * Instead of always returning BadNotWritable, return BadNotWritable/BadUserAccessDenied depending on which of AccessLevel/UserAccessLevel restricts access * Copy Structure/SemanticsChanged bits on queue overflow of monitored items * Don't return error if non-activated sessions gets closed * Check for valid combination of SecurityPolicy and MessageSecurityMode * Fix CurrentMonitoredItemsCount when deleting non-empty subscription * Fix accessing wrong element in TranslateBrowsePath handling on error * Fix file handle leak in UaTestServer_GetFileContent * Send service fault when service is being called on wrong secure channel * Don't require FallbackSecurityPolicy if PKI support is disabled * Fix clearing of reference in error handling of OpcUa_BaseNode_AddReferenceToNode * Rework subscription purge logic to prevent memory leaks in OOM situations * Fix several GDS push model issues Datalogger: ----------- * Correctly handle UTF8 in file paths ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Module UaStack 1.4.0 ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Add support for reverse connect. * Add support for new OPC UA 1.04 data types and identifiers - Add PubSub type support. - Add Role type support. * Platform Layer: - Add crypto algorithms for new security policies. ------------------------ Bug Fixes ------------------------ * General - Fix leak of memory in case of error in several locations. * Tcp Protocol: - Fix issue when shutting down server while clients are connected. * Platform Layer: - Fix high CPU load when network was used without active timer. - QNX: Improve timed semaphore implementation ******************************************************************************** ******************************************************************************** ** ** ** Version 1.7.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ General: -------- * Enable UASTACK_USE_TRACE_RAW / OPCUA_TRACE_RAW by default * Remove functions and macros that are deprecated since at least version 1.5.0 * Remove compatibility headers Base Library: ------------- * Rename and reorganize shutdown flag functions If registered using UaBase_P_RegisterShutdownHandler, the shutdown keystrokes and signals are now automatically handled inside the UaBase_DoCom loop for server applications. Checking UaBase_P_IsShutdownFlagSet/IsRestartFlagSet is not necessary anymore for server applications, clients still need to check the flags if desired. The shutdown delay can be set with UaServer_SetShutdownDelay. * Move UaServer_VerifySignature to UaBase_VerifySignature Server SDK: ----------- * Change signature of UaServer_SetUserAuthenticationTypeEx to take a UaServer_AuthCallbackInterface instead of UaServer_pfServer_AuthenticateSessionEx * Rename function UaServer_GetUserIdentity to UaServer_GetUserId and remove the password string out parameter UaStack: -------- * Rename advanced CMake variables: - MAX_TCP_SOCKETS_PER_THREAD -> UASTACK_TCPLISTENER_MAX_CONNECTIONS - NUMBER_OF_AVAILABLE_TIMERS -> UASTACK_NUMBER_OF_AVAILABLE_TIMERS - SOCKETMANAGER_NUMBEROFSOCKETS -> UASTACK_SOCKETMANAGER_NUMBER_OF_SOCKETS ------------------------ New Features ------------------------ Base Library: ------------- * Add UaBase_TurboVector * Add min/max macros if not already defined * Add common name to filename of rejected certificates * Add UaBase_Trace getter functions * Add UaBase_RingBuffer_PushBack and UaBase_RingBuffer_PopBack * Add UaBase_CreateGuidNodeIdFromString(Ex) Client SDK: ----------- * Make client nonce size configurable * Add setting (Default)CreateSignatureWithChain Server SDK: ----------- * Add UaServer_Events_AttachEventField and ApplyHistoryReadFilter * Add UaServer_GetUserId, UaServer_GetGroupId and UaServer_GetUserGroups * Pass NodeManagement and Query service calls to the providers * Make server nonce size configurable * Add settings MaxSessionsPerClient, MaxSubscriptions, MaxMonitoredItems, MaxMonitoredItemsPerSession and GuaranteedMonitoredItemsPerSubscription * Add pUserData field to UaServer_Event * Add UaServer_SetCallback_TranslateEventField for localization of LocalizedTexts inside EventFields * Add method RequestServerStateChange * Add UaServer_CreateDataTypeS, UaServer_CreateMethod and UaServer_CreateMethodS * Add Objects/Server/Trace object for configuring the trace during runtime * Add trace events and trace history * Add setting CreateSignatureWithChain * Add DeleteNodeUserData to provider interface Datalogger: ----------- * Add ReadEvent function to data logger interface * Add UASERVER_FILELOGGER_MAX_YEAR for reducing HistoryRead duration ------------------------ Bugfixes ------------------------ General: -------- * Don't set calling convention when using GCC/clang on Windows * Force setting the UaStack to single-threaded Base Library: ------------- * Fix statuscode returned by UaBase_Vector_RemoveAt(_Ex) * Improve performance of UaBase_Pki_GetCertificateLength * Accept other string encodings than UTF8STRING in UaBase_Pki_CertificateToFile * Fix UaBase_DoCom when using server and client functionality simultaneously Client SDK: ----------- * Fix memleak on error in certificate check of CreateSession response handler * Check if SignatureAlgorithm in CreateSessionResponse is as expected Server SDK: ----------- * Fix memleak in WIN32 authentication provider * Check if the configured user token types are supported * Remove file system dependency of authorization module * Set the 'Symmetric' attribute of NS0 nodes correctly * Add MaxNodesPerNodeManagement node * Fix leaking TranslateBrowsePaths timer * Improve performance of UaServer_Events_GetEventFieldByGlobalIndex, UaServer_IsSubReference, OpcUa_BaseNode_RemoveReferences and UaServer_SubscriptionManager_AddPrioritySorted * Fix setting LocaleIDs in UaServer_PublicSession * Check for valid TimestampsToReturn in HistoryReadRequest * Call PROV_REMOVEITEM only for enabled / sampling MonitoredItems * Ensure that requested PublishingInterval is a valid number using isnan * Don't require password to be set for UserPassword tokens * Set status of session audit events correctly * Don't reserve memory for MaxMonitoredItemsPerSubscription in every subscription * Create HasProperty reference instead of Organizes in UaServer_CreatePropertyS * Don't set description in UaServer_Create... node creation functions * Only create an event monitored item if the EventNotifier attribute is subscribed and an EventFilter is set * Don't resize list of stored NotificationMessages on ModifySubscription * Check access rights of an item when sampling instead of when adding the item * Check if SignatureAlgorithm in ActivateSessionRequest is as expected * Fix status code returned for rejected X509 user tokens * Use 0 as special meaning 'no limit' for MaxMonitoredItemsPerSubscription * Cancel creating / activating session if bad status is returned by callback function Datalogger: ----------- * Fix internal item count on cleanup Examples: --------- * Fix setting AutomaticReconnect in demo client * Cleanup simulation code of demo server * Disable file trace by default ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ * Replace UaClient_(Timed)DoCom and UaServer_(Timed)DoCom with UaBase_(Timed)DoCom Instead of the removed functions, UaBase_(Timed)DoCom needs to be called in a loop, independent of the type of the application (server / client / both) Base Library: ------------- * Add UaBase_InterruptCom; can be called from another thread to let the main loop (UaBase_(Timed)DoCom) return as fast as possible * Add parameter 'signatureAlgorithm' to UaBase_PkiCertificate_Create * Deprecate UaBase_PkiCertificate_FromDERFile/UaBase_PkiRsaKeyPair_FromPEMFile, instead one can use OpcUa_PKIProvider to load a certificate/key from file * Set ProxyStubConfiguration->iTcpTransport_MaxChunkCount to 256 by default to prevent small-chunk attacks on the server Client SDK: ----------- * Remove UaClient_(Timed)DoCom, use UaBase_(Timed)DoCom instead Server SDK: ----------- * Remove UaServer_(Timed)DoCom, use UaBase_(Timed)DoCom instead * New default paths for X509 user token certificates * Use same iNode mode bit for UA_EVENTREADABLE and UA_READABLE; the bit previously used for UA_EVENTREADABLE is now used for UA_HISTORYINSERT/MODIFY/DELETE * Hide OpcUa_Method_Set/GetUserExecutable if authorization is enabled ------------------------ New Features ------------------------ Base Library: ------------- * Add trace to file functionality * Add UaBase_Structure_To_ExtensionObject/From_ExtensionObject * Add UaBase_Structures_To_ExtensionObjects/To_Variant/From_ExtensionObjects * Add UaBase_Pki_LoadCertificateChain and UaBase_Pki_GetCertificateLength * Make UaStack settings configurable via .ini/.config file * Change private key type to OpcUa_Key to make using handles possible Client SDK: ----------- * Check server ApplicationURI in CreateSession response * Check hostname in EndpointURL against server certificate * Check certificate usage extension of server certificate * Add configuration settings - DisableApplicationUriCheck - DisableDomainCheck - DisableCertificateUsageCheck * Add list of subscriptions to UaClient_Session * Add simplified functions UaClient_Session_BeginBrowse/BrowseNext/Call * Support certificate chains either in ClientCertificate or by specifying additional certificates * Change private key type to OpcUa_Key to make using handles possible * Check for empty ServerNonce and if password is not encrypted, allow overriding those errors in UaClient_Session_ConnectError_CB; this adds a new ConnectServiceType: UaClient_ConnectServiceType_UserIdentityToken Server SDK: ----------- * Add UaServer_MonitoredItem::AddStatus for returning AddItem status asynchronously in CreateMonitoredItems * Check certificate usage extension of client certificate * Add endpoint configuration settings - DisableApplicationUriCheck - DisableCertificateUsageCheck * Add option UASERVER_SUPPORT_INODE_LIST to support ACLs * Add UaServer_IsSubtypeOf * Add UaServer_Create/DeleteInstance for generic node instantiation * Add configuration settings uMin/MaxSessionTimeout & uSessionTimeoutResolution * GDS push functionality is enabled by default * Allow suppressing revocation/time errors for X509 user tokens * Add option UASERVER_ENABLE_ENCODING_NODES, remove HAVE_ENCODING_NODES * Add option UASERVER_NO_OF_RUNTIME_NODES for configuring the server provider's hash table size * Automatically set SourceTimestamp in UaServer_NewItemValue if not set by provider * Support certificate chains either in ServerCertificate or by specifying additional certificates * Trace information about rejected certificates * Change private key type to OpcUa_Key to make using handles possible Datalogger: ----------- * Add data logger interface to vxWorks package Examples: --------- * Add browse example to demo client * Updated address space in demo server * Add method call example to demo client * Add demo server argument -s for specifying shutdown delay ------------------------ Bugfixes ------------------------ * Updates UaStack to latest version 1.3.6 Base Library: ------------- * Set certificate CA bit to true and pathlen constraint to 0 for new certificates * Review and update documentation of UaBase_Vector * Reorganize uabase_p_filesystem.h/.c, use defines where possible * Fix dependencies of UABASE_USE_FILESYSTEM Server SDK: ----------- * Fix cleanup / check for unknown nodes after async handling of RegisterNodes * Prevent invalid memory access when firing audit events * Wait until EndModifyMonitoredItems to set revised MonitoredItem parameters * Synchronize access to SecureChannel when sending responses * Move UASERVER_MAX_EVENT_FIELDS to config header, reduce default value * Rename UA_USERMGT_MAXGROUPS to UASERVER_USERMGT_MAXGROUPS * Move defines OpcUa_uid_t and OpcUa_gid_t to config header * Fix access to SecureChannel if transport connection was lost * Check revocation status of X509 user tokens * Check SessionTimeout and SamplingInterval for NaN and infinite * Remove check for IsBrowseable in UaServer_BrowseInternal * Don't allow writing the UserAccessLevel if authorization is enabled * Fix data type check of value in UaServer_WriteInternal * Don't set default Locale of LocalizedTexts in UaServer_CreateNode * Fix cleanup if creating the session node fails * Don't reset CurrentKeepAliveCount on each subscription related service call * Always create a ServerNonce * Close current SecureChannel if MaxSecureChannels limit is reached * Delete certificate from rejected list if it's trusted via GDS model * Fix Symmetric attribute of references in namespaces UA / DI / PLCopen * Fix time diff calculation on TickCount overflow * Allow groups in 'group' file to contain spaces * Fix evaluating InList operator in WhereClause Examples: --------- * Restore initial DiscoveryUrl after FindServers/GetEndpoints in demo client ******************************************************************************** ******************************************************************************** ** ** ** Version 1.5.3 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Bugfixes ------------------------ * Updates UaStack to latest version 1.3.5 * Restore UaStack configuration defaults of SDK version 1.4.x (timer and socket counts) * Add config header input files to Visual Studio file lists Server SDK: ----------- * Apply IndexRange of MonitoredItems before checking for data change * Fire session closed audit event before deleting the session diagnostics * Prevent duplicate namespace URIs * Return oldest instead of current publish on queue overflow * Don't return error in UaServer_CreateNode if UASERVER_ENABLE_DESCRIPTIONS is disabled Datalogger: ----------- * Fix possible infinite loop when deleting data logger items * Fix infinite ContinuationPoints with TimeoutHint set to infinite ******************************************************************************** ******************************************************************************** ** ** ** Version 1.5.2 ** ** ** ******************************************************************************** ******************************************************************************** This SDK release removes all occurences of alloca and replaces them with stack variables or calls to malloc. The new define UASERVER_MAX_HASH_KEY_LENGTH is used for creating a stack variable that is used for creating hashes. It should be set big enough to contain the longest string NodeId identifier. ------------------------ New Features ------------------------ * Support Windows 10 IoT Core Client SDK: ----------- * Add DisableError... settings for suppressing certificate validation errors Server SDK: ----------- * Update server address space to the latest UA specification * Update DI and PLCOpen models to the latest specification versions * Add UaServer_Configuration::uMaxTranslateResults to prevent resource exhaustion * Add define UASERVER_MAX_HASH_KEY_LENGTH * Add UaServer_RegisterNodesContext::serviceResult for returning errors ------------------------ Bugfixes ------------------------ * Updates UaStack to latest version 1.3.4 * Update OpenSSL to V1.0.1q * Update status code table to latest UA specification * Check if OpcUa_Alloc succeeded and handle errors accordingly * Don't use alloca anymore, replace it with stack variables Base Library: ------------- * Validate input arguments of UaBase_Pki_CertificateToFile * Always include strlcat/cpy, rename them to OpcUa_StrlCpyA/CatA Client SDK: ----------- * Fix use of OPCUA_P_PKI_TYPE_OPENSSL * Always call connect error callback on unexpected disconnect * Don't try to load certificates if security is disabled * Invoke UaClient_Session_ConnectError_CB once for each certificate validation error Server SDK: ----------- * Fix use of OPCUA_P_PKI_TYPE_OPENSSL * Set reasonable default min/max values for subscription lifetime and keepalive count * Add CMake option BUILD_AUTH_USER for user defined authentication modules * Fix memleaks in error handling of UaServer_Fill_Endpoints and UaServer_Fill_Servers * Make URL check in UaServer_OpenEndpoint depend on SDK configuration * Set correct ClientUserId in SecureChannel AuditEvents * Fix handling of GDS methods for additional TrustList objects * Call SessionCreated callback only if session was actually created * Avoid possible null pointer access if socket gets closed unexpectedly * Fix memleak in BeginActivateSession for invalid AuthenticationTokens * Prevent null pointer access if TrustList cannot be found * Use correct object in CreateCSR/UpdateCertificate * Fix memset size in methods handled by the SDK * Delete all outstanding publishes if secure channel is closed * Fix error handling if CreateTimer fails in UaServer_TranslateComplete * Reset subscription lifetime count in each subscription/monitoring service call Datalogger: ----------- * Make maximum defines configurable via CMake * Fix potential crash if data log item list contains gaps * Reuse empty slots in data log item list ******************************************************************************** ******************************************************************************** ** ** ** Version 1.5.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ Base Library: ------------- * Move OpcUa_Variant_Set... functions from uaserver_utilities.h to uabase_utilities.h * Move OpcUa DataType helper functions from uaserver_addressspace.h to uabase_utilities.h, rename them from UaServer_... to UaBase_... Client SDK: ----------- * Make calling objects passed to callback functions const to prevent modification and deletion of the objects inside the callback ------------------------ Bugfixes ------------------------ * Updates UaStack to latest version 1.3.1 * Replace direct invocations of string and memory functions like strlen and memcmp with UaStack platform layer wrappers like OpcUa_StrLenA and OpcUa_MemCmp Server SDK: ----------- * Fix infinite loop on shutdown if endpoint was not opened due to error Examples: --------- * Set Endpoint PkiConfigName in Server GettingStarted lessons Documentation: -------------- * Add missing screenshot to client lesson 01 ******************************************************************************** ******************************************************************************** ** ** ** Version 1.5.0 ** ** ** ******************************************************************************** ******************************************************************************** This SDK release introduces API changes which will lead to compilation errors when used with existing providers and applications. Please refer to the 'Migration from V1.4.2 to V1.5' chapter of the documentation for an easy step-by-step guide on how to get your existing code working with this SDK. ------------------------ New Features ------------------------ * Updates UaStack to latest version 1.3 * Update OpenSSL to V1.0.1m Base Library: ------------- * Base library containing common functions and utilities * Add UaBase_Settings_ReadNodeId * Add UaBase_P_SetLastError / UaBase_P_GetLastError * Add UaBase_Atomic_Get * Add UaBase_P_IsRestartFlagSet * Simplify PKI library by reusing non-platform-dependent code * Add utility functions for handling certificate signing requests * Add UaBase_RingBuffer_Resize and UaBase_RingBuffer_ReplaceFirst * Improve performance of UaBase_Vector and UaBase_TurboList * Add UaBase_Vector_RemoveAt_Ex Instead of moving all elements right to the deleted one to the left, only the last element is moved to the location of the deleted one. Client SDK: ----------- * Client SDK Server SDK: ----------- * GDS push model (Beta) Can be enabled with the CMake option UASERVER_GDS_PUSH * RootUser / SecurityAdminGroup The two new settings allow specifying a user and group that have access to all security relevant features like auditing and certificate configuration * Audit events SecureChannel/Session/Certificate audit events are generated automatically and can be received by users of the SecurityAdminGroup * Authorization for events New member of type UaServer_iNode in UaServer_Event structure allows setting custom access rights * Improved support for (un)loading providers during runtime: - Update the namespace table when (un)loading a provider - The next release of UaModeler will provide new templates containing the new function UaProvider_XYZ_ClearEventHierarchy - OpcUa_ProxyStub_AddTypes shall not be called if a provider will be (un)loaded dynamically, instead the provider should (de)serialize the structured types manually * Update DI namespace to latest version * Update PLCOpen namespace to latest version * Improved documentation * MaxEventMonitoredItemsQueueSize allows limiting the queue size for event monitored items * Certificate validation checks for valid CRLs by default The checks can be disabled by the new DisableErrorCertificate... settings * Support for security policy 256Sha256 * Service operation limits Limits for the number of operations in one service call can be specified in the server configuration * Add ServerCapabilities->OperationLimits and child nodes * Add ServerCapabilities->MaxByteStringLength * Add UaServer_UserMgt_IsEventReadable and UaServer_UserMgt_GetDefaultPermissions * Use 8 bit type for gid/uid by default to reduce size of UaServer_iNode to 32 bit * Reorganize usermanagement flags, add EXECUTABLE, HISTORYINSERT, HISTORYMODIFY, HISTORYDELETE HISTORYREADABLE, ATTRREADABLE and UA_ALL_ENCRYPTION_REQUIRED * Obey MaxMonitoredItemsQueueSize also for event monitored items * Add setting MaxSecureChannels Unused secure channels are closed if limit is reached to prevent blocking of the server Demoserver: ----------- * Server can be restarted to reread its configuration CMake: ------ * Reorganize CMake files and modules * Add option BUILD_WITH_UNITS for disabling unit support * Add option UASERVER_ENABLE_DESCRIPTIONS for disabling the description attribute of namespace 0 nodes * Add option UABASE_SETTINGS_USE_FILEBACKEND ------------------------ Changes ------------------------ Base Library: ------------- * Rename all common utility structures and functions to have UaBase_ as prefix Server SDK: ----------- * Change the defaults for anonymous user and group With the introduction of the RootUser / SecurityAdminGroup (both have the ID 0 by default), the default IDs for the anonymous user and group have been changed to 1 * Disable SecurityPolicyBasic128Rsa15 by default This security policy is deprecated and should only be used if necessary for legacy applications * Remove Flags parameter of OpenSSL PKI stores Now the revocation status is always checked, OPENSSL_SET_DEFAULT_PATHS is obsolete * Require an encrypted connection for accessing security relevant information - Only create SessionSecurityDiagnostics if UASERVER_SUPPORT_AUTHORIZATION is enabled - Only allow authenticated users to read their own SessionSecurityDiagnostics * Change UaServer_ProviderList_DeleteProvider to take NsIdx instead of Index as argument UaStack: -------- * Change return value of OpcUa_String_StrnCmp to match strncmp * Change OpcUa_VariantMatrix_GetElementCount to return a status code CMake: ------ * Rename BUILD_UASTACK_MT to UASTACK_USE_THREADS * Rename BUILD_UASTACK_USE_SYNC to UASTACK_USE_SYNCHRONIZATION * Rename BUILD_UASTACK_ENC_OBJ to UASTACK_SUPPORT_ENC_OBJ_EXTENSIONS * Rename BUILD_WITH_ERROR_LOOKUP with UABASE_ENABLE_ERROR_LOOKUP ------------------------ Bugfixes ------------------------ Base Library: ------------- * Reorganize and clean up the atomic headers * Return error in settings read functions if $ENV{} variable doesn't exist Server SDK: ----------- * Set correct NamespaceIndex in PLCOpen reference types * Set correct NamespaceIndex in PLCOpen and DI browse names * Use dwLowDateTime of current time as start value for session and subscription IDs * Send data change with error BadNodeIdUnknown if node of monitored item was deleted * Handle event monitored item queue overflows correctly * Check for validity of the specified security policies * Take requested namespace index into account in UaServer_RequestNamespaceIndex * Ensure that the same user token is used in subsequent ActivateSession call if using a different SecureChannel than before * Set SessionSecurityDiagnosticsArray to correct value * Fix calculation of rejected cert count, was always zero on non-Windows platforms * Delay deletion of monitored items until the provider finished handling them * Wait for outstanding transactions before closing session or shutdown * Add mutex locks where necessary in subscription / session handling * Cancel outstanding publish calls when if transport connection was closed * Return error in UaServer_InitializePKI if PKI type is empty * Limit MaxNotificationsPerPublish to MaxArrayLength * Compare SecureChannel certificate with session certificate in CreateSession UaStack: -------- * Replace invocations of malloc/realloc/free with OpcUa_Alloc/ReAlloc/Free where possible * Use dwLowDateTime of current time as start value for SecureChannel IDs * Fix crash in TCP connection read event handler ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.2 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ New Features ------------------------ * Updates UaStack to latest version 1.2 * Update OpenSSL to V1.0.1j SDK: ---- * Mark deprecated functions and defines using OPCUA_P_DEPRECATED * Improved documentation ------------------------ Bugfixes ------------------------ SDK: ---- * Create new monitored item instead of reusing the existing one in ModifyMonitoredItems * Delay deletion of old item until after SubscribeComplete has been called by provider * Handle SetMonitoringMode asynchronously * Handle data logger items asynchronously * Copy queues when modifying data logger items * Remove monitored item from provider if MonitoringMode is set to Disabled * Fix replacing ENV{} placeholders in OpcUa_String variables * Return error if environment variable requested in ENV{} doesn't exist * On queue overflow, discard oldest NotificationMessage instead of newest one * Fix data type of SubscriptionDiagnostics variables * Fix ApplicationUri check for client certs containing only the URI extension * Replace all occurences of intptr_t with OpcUa_IntPtr * Allow closing a session only from the SecureChannel that activated the session * Don't fail CreateMonitoredItems if not all items can be added; instead add as many items as possible and return BadTooManyMonitoredItems for the rest * Fix status codes being returned in ActivateSession for user token errors * Update internal namespace table after loading provider dynamically * Add error traces in settings functions * Return correct status codes if unsupported DataEncoding is requested in CreateMonitoredItems * Create event monitored item even if some of the event fields are unknown * Use PublishInterval if SamplingInterval is < 0 instead of <= -1 * Fix crash when passing empty certificate in CreateSession on encrypted SecureChannel * Fix crash on Translate with NULL string StartingNodeId in known namespace * Ensure correct order of indices in IndexRange when creating monitored items * Remove unrequested timestamps when filling publish response instead of in UaServer_NewItemValue * Ensure valid AttributeId when creating monitored items * Check for valid AttributeId in WriteInternal * Don't use malloc in SDK code, use OpcUa_Alloc instead * Fix shutdown time calculation on TickCount overflow Providers: ---------- * Speed up deleting monitored items by not iterating over list of items Data Logger: ------------ * Fix parsing string NodeIds containing spaces * Replace gmtime() with thread safe replacement functions Build System: ------------- * Fix building with OpenSSL on vxWorks * Fix building on WindowsCE ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ New Features ------------------------ * Update OpenSSL to V1.0.1g SDK: ---- * Filter returned Endpoints by EndpointURL if given in GetEndpoints ------------------------ Bugfixes ------------------------ SDK: ---- * Fix unloading of providers if UaServer_Providers_Initialize fails * Fix possible deadlock in asynchronous TranslateBrowsePath handling * Allow configuring experimental http:// endpoints * Fix diagnostic MonitoredItemCount and CurrentPublishRequestsInQueue * Fix data type of subscription diagnostics variables * Use correct namespace index in BrowseName and NodeIds of diagnostic variables * Ignore first parameter of UaServer_RequestNamespaceIndex, can be set to 0 now * Fix possible crash when removing nodes after provider has been removed * Make OpcUa_BaseNode_RemoveReferenceToNode behave analogous to AddReferenceToNode * Don't replace hostname in returned URLs (FindServers, GetEndpoints, CreateSession) * Fix MaxSubscriptionsPerSession limitation, was off by one * Fix missing events when being sent from multiple threads in parallel * Fix possible crash when emitting events from multiple threads in parallel Examples: --------- * Prevent double clear of UaStack in error handling before shutdown * Fix initial Historizing value of demo history variables Demoserver: ----------- * Return correct write result for custom handled variables ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.0 ** ** ** ******************************************************************************** ******************************************************************************** This SDK release introduces API changes which will lead to compilation errors when used with existing providers and applications. Please refer to the 'Migration from V1.3.3 to V1.4' chapter of the documentation for an easy step-by-step guide on how to get your existing code working with this SDK. ------------------------ New Features ------------------------ * New oversampling example * Update OpenSSL to V1.0.1f SDK: ---- * Support for deferred provider loading after server startup. This adds the new function UaServer_ProviderList_ReserveProviders. * Update DI namespace to latest version * Remove ProviderCallbackInterface, building the SDK as shared library is now possible: - Remove the ProviderCBInterface - All SDK functions to be used by providers or the application are exported with UASERVER_API macro - Add define LIBRARY_PATH as base path for loading shared libraries with UaServer_P_LoadLibrary * New TranslateBrowsePathsToNodeIds interface: - Make asynchronous handling of Translate possible - Returning more than one target nodes possible * Add functions strlcat and strlcpy * Add function UaServer_Session_GetSecureChannelId() * Add subscription diagnostic objects * Allow creating multiple endpoints - Each endpoint can have its own PKI provider - Discovery uses certificate of first endpoint for registration at LDS - Automatically set the SecurityLevel of endpoints * Rewrite server config structure: - Split uaserver_config.h into compile time and dynamic settings - Dynamic settings in uaserver_config.h are default values, can be overwritten using the server config structure - New defines: UASERVER_MAX_PUBLISHINGRATE The maximum supported publishing interval. UASERVER_ENABLE_DESCRIPTIONS Enables description strings in namespace 0. Disable to save space by omitting the description strings. UASERVER_SUBSCRIPTION_MINLIFETIMEINTERVAL The minimum supported Lifetime for subscriptions. UASERVER_SUBSCRIPTION_MAXLIFETIMEINTERVAL The maximum supported Lifetime for subscriptions. UASERVER_USERISSUERCERTS_DIR The folder containing issuer certificates for X509 authentication tokens. UASERVER_USERISSUERCRL_DIR The folder containing issuer revocation lists for X509 authentication tokens. UASERVER_REJECTED_CERTIFICATES_DIR The folder for storing rejected client certificates. * Evaluate MaxNotificationsPerPublish * Evaluate subscription priority * Allow writing ByteString to Byte[] as needed by the UA specification * Add PKI utility functions (UaServer_PkiCertificate_HasExtension/GetExtension) for getting certificate extensions * Add status code to string conversion function UaServer_StatusCode_ToString * Add UaServer_Settings utility functions and structures for parsing the server configuration: - Configuration can be parsed automatically using UaServer_Settings_GetConfigurationFromSettings - The back-end of UaServer_Settings can be changed at will, no need for accessing a file * Add define UASERVER_PATH_MAX * Add UaServer_TimedDoCom to set the maximum wait time manually * Check if the server certificate matches the private key * Add UaServer_Events_UnregisterEventNotifier and UaServer_Events_UnregisterEventSource * Allow passing lists of DNS names and IP addresses when creating a certificate * Storing all certificates separately if receiving a certificate chain from a client * Add return code defines for being used by UaServer_Mkdir and UaServer_MkPath * Add support for Opaque and GUID NodeIds Demoserver: ----------- * Sources of demoserver included in SDK * Add static matrix values * Using new settings interface * New default port 48020 is now used instead of 4842 UaStack: -------- * Update UaStack to version 1.2 * Experimental HTTPS support ------------------------ Changes ------------------------ Demoserver: ----------- * Command line arguments: - remove [-p ] as now multiple endpoints are allowed - remove [-x] as datalogger can be enabled/disabled via configuration file - add [-c ] (default: settings.ini/settings.conf) - add [-d] for increasing the trace level SDK: ---- * UAPROVIDER_STATIC has been replaced by BUILD_SHARED_LIBS * New PKI defines OPCUA_PKI_TYPE_NONE / OPCUA_P_PKI_TYPE_OPENSSL have to be used * Rewrite UaServer_Initialize to only take a_pUaServer as argument * Security- and UserTokenPolicies are not created with default values any more * Changes in uaserver_config.h: - Renamed defines: UASERVER_SUBSCRIPTION_MAXKEEPALIVECOUNT -> UASERVER_SUBSCRIPTION_MAXKEEPALIVEINTERVAL The maximum supported KeepAliveInterval for subscriptions. - Deleted defines: UASERVER_SUPPORT_64BIT The SDK always supports 64 bit. NUM_SAMPLINGRATES This has to be set by each provider individually. UASERVER_MIN_SAMPLINGRATE This has to be set by each provider individually. UAPROVIDER_STATIC Has been replaced by BUILD_SHARED_LIBS * UaServer_Session_GetContinuationPoints returns 'const UaServer_TurboList*' now For providers that need to create their own ContinuationPoints, the functions UaServer_ContinuationPointInfo_AddToList and UaServer_ContinuationPointInfo_RemoveFromList must be used. ------------------------ Bugfixes ------------------------ SDK: ---- * Fix Translate over provider boundaries * Make asynchronous handling of Translate possible * Make asynchronous handling of BrowseNext possible * Always storing client certificates in rejected folder on error (before: only on OpcUa_BadCertificateInvalid) * All dynamic variables are simulated now * Update monitored item queue handling according to the UA specification 1.02 * Fix error code returned for invalid deadband * Fix error code for IndexRange on inapplicable attributes * Fix calculating the CurrentKeepAliveCount (was off by one) * Additional checks for unsupported parameters in UaServer_Read_Internal * Check client ApplicationURI in CreateSession * Set subscription state to late if it was late and not all notifications could be sent in publish * Delay deletion of monitored items until after last SubscribeComplete callback * Fix de-serializing of password length on big endian systems * Fix locking of session and subscription if built with synchronization support * Fix deletion order of subscriptions when closing a session * Fix atomic functions to really be atomic * Keep the monitored item queue on ModifyMonitoredItems * Allow ActivateSession with empty UserIdentityToken * Remove UaServer_P_WaitForKeypress and UaServer_P_GetKeypress * Fix storing rejected certificate if rejected path does not end with '/' * Use the passed URL for discovery registration instead of the one received in GetEndpoints * Non-activated sessions are closed after 10 seconds if MaxSessionCount is reached to avoid being spammed by clients * Fix wrong reference of Integer to UInteger in namespace 0 * Fix status code for read on non-applicable attributes * Check access rights of nodes when browsing, hiding nodes correctly if not browsable/readable * User names in internal authentication module may now contain spaces (enclose in " in passwd/group files) * Allow asynchronous handling of BrowseNext calls * Always create a ServerNonce if PKI is available Demoserver: ----------- * Remove needless CRL generation CMake: ------ * Reorganize include directories, only CMAKE_MODULE_PATH has to be set * Only add needed source files (e.g. provider_call.c only if call service is enabled) ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.3 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ New Features ------------------------ * Add function UaServer_UserMgt_SetHistoryUserContext for setting the user context to be used for historizing variables. This is only enabled if HAVE_DATA_LOGGER is defined. ------------------------ Changes ------------------------ * Try registration at discovery server in increasing intervals if errors occur * Add IndexRange handling for missing data types ------------------------ Bugfixes ------------------------ SDK: ---- * Fix filename generation when saving rejected client certificates * Fix comparison in UaServer_IsSubReference * Return correct error code in UaServer_ParseIndexRange if string is empty * Fix memleak in BeginActivateSession * Fix subscription KeepAlive logic for subscriptions in late state * Fix check for data changes of triggered items * Fix handling of IndexRange with two ranges for String and ByteString values * Fix crash if adding history monitored item fails * Fix possible crash when adding encodeable types to the UaStack during runtime UaStack: -------- * Fix release of invalid heap address during certificate validation. By passing a buffer containing additional data behind the encoded certificate, free() will be called with an potentially invalid address. This allows to remotely crash a server. There is risk of remote code injection. * Fix crash in secure listener upon receive of Abort message type. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.2 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Bugfixes ------------------------ * Fix data change filter if Deadband and Status/Value/Timestamp is configured ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ * Aborting startup if initialize provider fails * Removing references when deleting an OpcUa_BaseNode ------------------------ Bugfixes ------------------------ * Fix handling of TimeoutHint==0 in PublishRequests * Fix build with OPCUA_USE_SYNCHRONISATION enabled * Fix crash in GetEndpoints if EndpointURL is empty * Fix check for forward/inverse references in TranslateBrowsePathsToNodeIds * Fix namespace check in TranslateBrowsePathsToNodeIds * Check for correct data type on write to MinimumSamplingInterval * Check reference type before deleting inverse reference * Remove needless trace messages * Fix OpcUa_BaseNode_AddReferenceToNode behaviour if no inverse reference is created * Fix endianness check in UaServer_P_TimeTFromDateTime * Fix UserExecutable attribute when built with authorization * DemoProvider: - Review address space - Set reasonable values for EURange and DiscreteTypes - Using AlarmType instead of AcknowledgeableConditionType, fix state strings - Set correct event type of SampleEvent - Check method access rights when built with authorization ------------------------ New Features ------------------------ * Add function UaServer_Shutdown for automatic shutdown after defined interval * Replace hostname in FindServers like in GetEndpoints * Add GetNodeById function to ProviderCBInterface * Add function UaServer_TurboList_GetNext * Add function UaServer_Session_GetContinuationPoints * Register server again at LDS with isOnline == false on shutdown * Update UA namespace to include Complex and DoubleComplexNumberType ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ * BREAKING CHANGE: Changed the type of the last value stored at data monitored items to use OpcUa_DataValue to allow storing timestamps and status code together with the last value. Use the new UaServer_NewItemValue function to let the SDK detect data changes. * IMPORTANT: Using new stack functions for copying UA structures. The XYZ_Clone methods (e.g. OpcUa_NodeId_Clone) are deprecated, use the new XYZ_CopyTo methods instead * Removed unused history helper functions (HistoryReadEventInternal, HistoryReadRawModifiedInternal, HistoryReadProcessedInternal, ReadAtTimeInternal, HistoryUpdateInternal) * Updated UA address space to UA Specification 1.02 * UaServer_Events_GetEventField can now be used to retrieve event field values using their local index * Change timeout checks of session and subscription to use monotonic GetTickCount, avoiding system time change issues ------------------------ Bugfixes ------------------------ * IMPORTANT: Fixed the creation of the extensions of certificates. It is recommended to recreate existing application instance certificates in order to contain correct extensions. Without this extension multiple certificates with the same identity might not work. * Checking the client signature in ActivateSession * Creating a new ServerNonce with each ActivateSession call * Fixed 64 bit compilation warnings * Fixed Compliance Test Tool errors * Aborting all outstanding publish requests if the last subscription of a session is deleted * Fixed connection loss after call to unsupported service * Added check for minimum length of the client nonce * Deleting session when being used without activation * Fixed status code returned on close session if session was not activated * Returning correct user access rights if UASERVER_SUPPORT_AUTHORIZATION is enabled * Startup flag status is correctly copied in ModifyMonitoredItems * Fixed deadband filter behaviour after call to ModifyMonitoredItems * Fixed index range handling for String and ByteString values * Fixed crash if client certificate is empty * Returning correct status code for non-applicable IndexRange * Using GetTickCount as starting value for SubscriptionIds * Using ApplicationUri in server array node * Fixed TranslateBrowsePaths for PLCOpen and DI nodes * Implemented special handling for access to the server's CurrentTime node to be as accurate as possible * Windows: - Removes wrong endianness check in UaServer_P_TimeTFromDateTime ------------------------ New Features ------------------------ * IMPORTANT: UaServer_SetUserAuthenticationType is deprecated, use UaServer_SetUserAuthenticationTypeEx instead for using X509 authentication tokens * New helper function UaServer_NewItemValue that can be used instead of UaServer_DataChanged that allows to move data change detection to the SDK. * New DataLogger module for logging and reading history data * Added GettingStarted lessons explaining the usage of the SDK in detail * Publishing and sampling timers now use one timer per interval, so independent intervals can now be used * Added support for Units * Added support for DeadbandPercent * X509 authentication possible using the internal authentication module, added helper function UaServer_VerifySignature * New Demo provider with a more complex address space, providing all nodes needed for Compliance Testing * New UA method GetMonitoredItems allows retrieving of all MonitoredItems in a subscription * Added define UASERVER_MAX_PUBLISH_PER_SESSION for limiting the number of outstanding publish requests * Added define UASERVER_MAX_SESSIONS for limiting the number of sessions * Added define UASERVER_MAX_REJECTED_CERTIFICATES to limit the number of stored rejected certificates * Added define UASERVER_SUPPORT_DISCOVERY (CMake option BUILD_WITH_DISCOVERY) for disabling registration at the local discovery server * Added functions UaServer_P_InitShutdownFlag, UaServer_P_IsShutdownFlagSet and UaServer_P_ClearShutdownFlag for platform independent detection of shutdown keystrokes * Added functions UaServer_Session_IsEncrypted and UaServer_Session_IsSigned * Added function UaServer_Session_SetCurrentClientUserId to set the current user's name in the session diagnostic object * Providers can now be deleted during runtime * Setting client's SessionName as DisplayName and BrowseName of session node * Added version info defines to uaserver_config.h * Added SessionDiagnostics and SessionSecurityDiagnostics nodes * Replacing the hostname in the GetEndpoints response if EndpointUrl is set in request * Added new FindUASDK.cmake CMake module, making the CMakeLists.txt easier to read * CMake generates a uaserver_cmake_config.h header which can be included in other projects linking against the SDK. This way the SDK specific preprocessor defines don't have to be specified in other projects. Simply define UASERVER_HAVE_CONFIG in the other project to use the generated header. * Optimized UA, PLCOpen and DI address space tables * Optimized grow strategy in UaServer_Vector (used for storing references) * NEW convenience functions for creating NodeIds, LocalizedTexts, and QualifiedNames. This is useful for creating address spaces in less lines: - UaServer_SetDefaultNamespace - UaServer_GetDefaultNamespace - UaServer_CreateStringNodeId - UaServer_CreateStringNodeIdEx - UaServer_CreateNumericNodeId - UaServer_CreateNumericNodeIdEx - UaServer_CreateLocalizedText - UaServer_CreateQualifiedName See API reference documentation for more information. * NEW convenience functions for setting variant values. - OpcUa_Variant_SetBoolean - OpcUa_Variant_SetSByte - OpcUa_Variant_SetByte - ... See API reference documentation for more information. * NEW UaModeler version will be release shortly after the SDK release The new UaModeler version supports generation of complete provider code based on the designed information model. This supports creation of folders, variables, object types and instances, complex data types and enumerations, event types including the event hierarchy and last but not least icon properties. The complete new Demo provider of the UaDemoServer was generated using this UaModeler. * Demo server: - Supporting commandline options (start with '-h' as parameter for details) - Using the fully qualified hostname as endpoint URL - Added sample for dynamic creation of nodes * Windows: - Added CMake option to build against the static C runtime ******************************************************************************** ******************************************************************************** ** ** ** Version 1.2.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ * IMPORTANT: The UserData stored in BaseNodes and their subtypes will not any more be freed on shutdown. It is now in the responsibility of the application to free the memory referenced by the UserData. * Removed usage of OpcUa_DateTime_ToInt64 after it was removed in uastack * Removed UASTACK_SUPPORT_PKI, replaced UASTACK_WITH_SECURITY with UASTACK_WITH_OPENSSL after that was unified in uastack * Made authentication and authorization settings configurable in CMakeLists.txt ------------------------ Bugfixes ------------------------ * Alarms & Events: - Storing events of type ConditionType in UaServer_Events_CreateEvent instead of UaServer_Events_FireEvent - Fixed removing of Conditions from internal management list - Fixed crash in UaServer_ModifyMonitoredItems for event items * SampleProvider: - Fixed write on invalid memory for dynamic GUID - Removed usage of hard coded NodeId identifiers * ServerProvider: - Setting correct requested address space size - Added error checks in server provider address space creation - Removed creation of duplicate references in server address space * Discovery: - Fixed crash in discovery registration if no response was received - Removed usage of hard coded Endpoint index in discovery registration - Fixed check for NULL ResponseType in discovery registration * Linux: - Implements missing methods UaServer_P_DateTime_ToMilliseconds and UaServer_P_DateTime_Diff - Added SIGPIPE handler in demoserver application * Fixed possible crashes for array lengths of -1 * Initializing providers correctly to prevent crashes after errors in startup phase * Regularly checking sessions for timeout * Creating default security policies of endpoint depending on stack settings * Added missing unlock of session mutex * Fixed possible hijacking of sessions by setting first SessionId with GetTickCount * Added check for creating invalid SessionId * Changed index parameter of UaServer_HashTable methods to unsigned int to prevent invalid array index access * Increased UASERVER_MAX_PROVIDERNODES for generated server address space * Returning service fault if PublishRequest times out * Using stack datatypes in utility methods * Added check for system time changes to prevent erroneous Session timeouts * Removed overwriting of PKIType setting in PkiConfig * Fixes error checks in node creation methods * Not adding security policies if PkiType == NO_PKI * Clearing server struct in demoserver only if it has been initialized * Building the SDK libraries without security (without OpenSSL) possible * Using Mutexes and Semaphores only if OPCUA_USE_SYNCHRONISATION is set * Not allowing to write value of different ArrayType ------------------------ New Features ------------------------ * Added method RemoveNode to Provider interface * Alarms & Events: - Added method UaServer_Events_GetConditionByNodeId - Extended Alarms & Events example and added tutorial 3 * Made the server callback interface available for the application via UaServer_SetCallback_SessionCreated/SessionActivated/SessionClosed * Added getter methods for ClientName and LastClientContact of a Session ******************************************************************************** ******************************************************************************** ** ** ** Version 1.2.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Changes ------------------------ * IMPORTANT: Preprocessor defines for the server application PKI configuration have been moved from uaserver_config.h to uaserver.c. These values now have to be set in the UaServer_Configuration struct that can be retrieved by UaServer_GetConfiguration(). This allows to change BuildInfo and PKI configuration of the UA application without recompiling the SDK. * Windows: The PKI directory used by the sample application is now "All Users\Application Data\UnifiedAutomation\\PKI" (or equivalent) * Moved DI/PLCOpen model files to sub-folders * Split HistoryRead in HistoryReadEvent / HistoryReadRawModified / HistoryReadProcessed / HistoryReadAtTime * New method UaServer_DoCom() is to be called in a loop instead of OpcUa_SocketManager_Loop() in the application * Renamed define UASERVER_MAX_NAMESPACEINDICIES to UASERVER_MAX_NAMESPACEINDICES ------------------------ Bugfixes ------------------------ * Fixed returned StatusCode for UaServer_Write_Internal() * Fixed creation of DataChange if DataChangeTrigger is StatusCode only * Unified include policy of header files and file structure * Changed processing order of LinksToAdd/LinksToDelete in UaServer_SetTriggering to be compliant * Fixed memleak in UaProvider_Server_InitServerStatus * Removed usage of OpcUa_BaseNode's UserData in SDK * Fixed potential crashes in OpcUa_BaseNode_Set... methods that use strings * Added handling of unhandled data types to OpcUa_Variant_Clone * Added handling of unhandled data types to OpcUa_Variant_ScalarCompare/ArrayCompare/MatrixCompare/CompareDeadbandAbsolute * Setting PolicyId of configured UserTokenPolicies * Fixed application URI in linux sample server ------------------------ New Features ------------------------ * Authentication: - Added Internal / Win32 / PAM / SASL authentication modules - Only accepting connections if used UserIdentityToken is configured and valid - If UserIdentityToken is set to Username/Password, an authentication module must be enabled - Added support for encrypted passwords in UserIdentityToken - Added authorization support to Server- and Sampleprovider * Authorization: - Added UaServer_iNode structure to OpcUa_BaseNode for authorization handling - Added user management methods to provider interface - Added UaServer_UserCtx as session's UserIdentityData - Using UaServer_iNode instead of UserWriteMask/UserAccessLevel for authorization - Added sample nodes with different access rights in sample provider - Added sample passwd and group files * Alarms & Events: - Added support for event monitored items - Added methods for firing events - Added all event types from UA address space - Creating custom event types is possible - Added sample event type to sample provider - Added sample EventNotifier and EventSource to sample provider - Added convenient methods to set event fields of BaseEventType - SetTriggering supports event monitored items - WhereClause supporting all operators (except for Cast) - Handling ConditionRefresh() method in SDK * OpcUa_BaseNode members are not visible any more, removed UASERVER_BASENODE_HIDEMEMBERS define * UaServer members are not visible any more, configuration is accessible with UaServer_GetConfiguration() * Added server side limit for ReferencesPerNode for Browse/BrowseNext responses * Added OpcUa_BaseNode_RemoveReferenceToNode and OpcUa_BaseNode_RemoveReferenceToNodeId * Added periodic registration at discovery server ******************************************************************************** ******************************************************************************** ** ** ** Version 1.1.1 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ Bugfixes ------------------------ * Fixed bug in UaServer_TurboList freelist handling * Fixed bug in UaServer_HashTable_RemoveAt * Fixed bug in removing UA nodes dynamically * Fixed bug in cloning opaque NodeIds in OpcUa_NodeId_Clone ------------------------ New Features ------------------------ * Added 5 static and 5 dynamic UInt32 variables to demo address space * Added SessionCancel implementation * Added Triggering of subscriptions * Completed UA Data Access information model support: - Added BrowseContinuationPoints and MinSupportedSampleRate nodes - Added UaSession nodes. Each new session creates a new node in the address space. * Added monitoring support for all attributes * Added datachange filter (absolute deadband) * Added AvailableSequenceNumbers to publish response * Changed ModifyMonitoredItems to work asynchronously * Improved timer precision by time measurements instead of just counting number of timeouts * Improved item queue handling of datachange notifications * Added IndexRange support for datatypes String and ByteString * Added missing results for SubscriptionAcknowledgements in Publish requests * Added standard conformant ApplicationURI * Added Browse Checks - Check ReferenceTypeId - Check BrowseDirection - Check if ReferenceNodeId is an empty String * Improved error handling in BrowseNext * TranslateBrowsePathToNodeId: return OpcUa_BadNodeIdInvalid if StartingNode not found * Session Management: - check if session is used un activated - check the SecureChannelId - verify Timestamp and TimeoutHint * Utilities: - Added new function UaServer_NamespaceIndex_GetByUri() ******************************************************************************** ******************************************************************************** ** ** ** Version 1.1.0 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------ New Features ------------------------ * BrowseNext Service * Continuationpoints * Republish Service * ModifySubscription Service * Support for PLCopen and DI Type System * Certificate and CRL generation at server startup (if not existent) * Certificates of unknown clients are stored in rejected folder * Improved internal node management * Support for multiple namespaces in one provider * AddressSpace creation with auto generated sources (UaModeler) ******************************************************************************** ******************************************************************************** ** ** ** Version 1.0.0 ** ** ** ******************************************************************************** ******************************************************************************** Initial release