Commit Graph
2189 Commits
Author SHA1 Message Date
KircMax 36dc85b525 reuse usertokenpolicy used in connect for Reconnect / "ReactivateSession" (#3581)
* reuse usertokenpolicy

* change assert not null to assert ignore when null

* reportauditevent -> Utils.Clone(session?.IdentityToken?.Token)

* use standard credentials

* only assign to endpoint when not null, in UpdateSession -> also update m_userTokenSecurityPolicyUri, change endpoint configuration only on cloned object

* keep using m_userTokenSecurityPolicyUri in Encrypt

* use 'cleaner clone'
2026-03-10 06:55:47 +01:00
romanett a255facf68 [Server] Implement DiagnosticsNodeManager using AsyncCustomNodemanager (#3595)
* Refactor MonitoredItem.ValueChanged & cert validation

Refactored MonitoredItem.ValueChanged for correctness, performance, and comprehensive test coverage, including improved deadband and array handling. Rewrote equality logic for Variants and arrays. Made certificate validation thread-safe using ConcurrentDictionary and proper semaphore usage. Added extensive unit tests and benchmarks for value change detection.

* Implement DiagnosticsNodeManager using AsyncCustomNodeManager

* Implement CoreNodeManager using AsyncCustomNodeManager
2026-03-09 21:13:36 +01:00
Joost Molenkamp 25a4882145 Fix non enumerable generic type info construction (#3597)
* test(type-info): add failing test

* fix(type-info): require IEnumerable implementation before treating generic type as array

* test(type-info): add test for coverage
2026-03-09 21:12:49 +01:00
KircMax d7d870d28b Add Testcase for EncodeDataValueWithoutValueProperty (#3579)
* add EncodeDataValueWithoutValueProperty

* adjust de and encoder for datavalue -> always handle sourcepico, etc.

* extend EncodeDataValueWithoutValueProperty test

* nullhandling is needed

* keep declaration as it was

* keep binarydecoder, adjust the test case

* add spec. comment

* keep binaryencoder
2026-03-06 20:31:52 +01:00
KircMax 6ea5902f3e fix client session error code for Endpoint does not support usertoken - BadIdentityTokenInvalid instead of rejected (#3591)
* fix client session error code for Endpoint does not support the user identity type provided.

* further places of BadIdentityTokenRejected

* adjust test expectation
2026-03-06 20:22:41 +01:00
Copilotandromanett 341bbb71ec [GDS] Allow Global Discovery Server to Work with Custom Certificate Groups (#3589)
* Initial plan

* Extend GDS to support custom certificate groups with dynamic node creation

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Use CertificateGroup.Id to select predefined or create custom group nodes

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add integration tests for custom certificate group in GDS address space

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2026-03-04 20:27:03 +01:00
romanett c19e83b63d Refactor MonitoredItem.ValueChanged & cert validation (#3592)
Refactored MonitoredItem.ValueChanged for correctness, performance, and comprehensive test coverage, including improved deadband and array handling. Rewrote equality logic for Variants and arrays. Made certificate validation thread-safe using ConcurrentDictionary and proper semaphore usage. Added extensive unit tests and benchmarks for value change detection.
2026-03-04 20:22:28 +01:00
Anatoly Kochnev 6a09c1c7b7 [Client] Fixed freezing of Subscription with sequential publishing (#3565)
* [Client] Fixed freezing of Subscription with sequential publishing

- Fixed freezing of Subscription (messages were not moving from Subscription.m_incomingMessages to Subscription.m_messageCache). Was happening when sequentialPublishing is active and first received publish response had SequenceNumber greater when 1.
- Constant Subscription.kRepublishMessageTimeout was made public (Subscription.REPUBLISH_MESSAGE_TIMEOUT) so it can be used in tests.
- Added unit tests to cover fixed problem.
- Added unit test to cover invalid handling of reordered message queue for sequential publishing (UnorderedMessagesWouldBeLostForSequentialPublishingAsync). For now, test was made [Explicit].

* [PR] fix naming convention violation

* [PR] removed region in tests
2026-02-28 07:47:42 +01:00
588b7e9237 [Server] Implement event-driven RolePermissionsValidation caching in MonitoredNode2 (#3583)
* Initial plan

* Implement event-driven RolePermissionsValidation with permission caching in MonitoredNode2

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add DefaultPermissionsChanged event to IConfigurationNodeManager to handle namespace-level default permission changes

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add test & make validation functional

* cover case when DefaultRolePermissions are aded after the node exists

* cleanup

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2026-02-28 07:44:19 +01:00
romanett 0a4c87cef8 [Server] Implement smaller Performance improvements found when profiling (#3584)
* Add namespace index lookup for NamespaceMetadataState

Added GetNamespaceMetadataState(ushort) to ConfigurationNodeManager and interface for efficient lookup by namespace index. Switched to ConcurrentDictionary for thread safety. Updated AsyncCustomNodeManager to use index-based lookup. Cleared index cache in Clear method.

* Refactor Variant and ServiceResult handling for speed

- Use WrappedValue assignment for DataValue in MonitoredNode and NodeState to align with updated Variant usage.
- Return ServiceResult objects instead of raw StatusCodes for bad attribute IDs.
- Update ServiceResult exception handling: include stack trace only in DEBUG, message only in release.
- Optimize StatusCode to ServiceResult conversion by returning static Good/Bad instances.

* Add Read Limited load test

* Optimize MonitoredItem.IsReadToPublish

* Add Subscription unit tests and improve triggering logic

Added SubscriptionTests to verify PublishTimerExpired behavior, including timer expiry, monitored item readiness, keep-alive, and triggering scenarios. Updated Subscription.cs only process triggering if triggered items are configured, improving correctness and efficiency.

* CR feedback
2026-02-28 07:43:51 +01:00
romanett a0e1e9f42e [Server] Optimize NodeState.ReadAttributes & base ReferenceNodeManager on AsyncCustomNodeManager (#3574)
* Use Interfaces Introduced with 1.5.378

Refactor to use interfaces for node managers and server

Replaced concrete types with interfaces (e.g., IMasterNodeManager, ICoreNodeManager, IDiagnosticsNodeManager, IConfigurationNodeManager, IServerBase) across method signatures, properties, and internal structures to improve abstraction and flexibility.

* Refactor CoreNodeManager to be Based on CustomNodeManager2

* Add Test

* Add INodeManager3 with role permission validation

Introduce INodeManager3 interface extending INodeManager2, adding synchronous role permission validation methods. Update all node manager interfaces and classes to use INodeManager3. Extend IAsyncNodeManager with async permission validation methods and update adapters for sync/async bridging. Deprecate FindNodeInAddressSpace in favor of new async FindNodeInAddressSpaceAsync. Refactor MonitoredNode2 to use thread-safe collections and locking for monitored items. Enhance event reporting with security and permission checks. Update constructors and documentation to reflect new interfaces and best practices.

* Implement AsyncCustomNodeManager

* fix comment

* fix

* Add tests

* fix

* Implement better locking strategy

* fix

* Add more tests

* Add tests

* Add tests

* Add Tests

* cleanup

* cleanup

* Add tests that verifies for AnalogItemState the instrument range is checked brefore writing

* only assign new NodeID in default factory if NodeId isNull

* Run all tests also with sampling groups

* Add Docs

* cleanup

* Add chaos test

* fix test

* Use AsyncCustomNodeManager for ReferenceNodeManger & imrpove ReadAttributes method of NodeState

* fixes

* fixes and code review comments
2026-02-24 17:07:50 +02:00
Marc Schier 2f493f3a34 use IVT in csproj instead of code (#3577) 2026-02-23 19:17:54 +01:00
Marc Schier 79cb229834 Move version to 1.6 and enable preview build (#3575) 2026-02-21 21:34:19 +01:00
romanett 0a2eb23e3a [Server] Implement AsyncCustomNodeManager (#3563)
* Use Interfaces Introduced with 1.5.378

Refactor to use interfaces for node managers and server

Replaced concrete types with interfaces (e.g., IMasterNodeManager, ICoreNodeManager, IDiagnosticsNodeManager, IConfigurationNodeManager, IServerBase) across method signatures, properties, and internal structures to improve abstraction and flexibility.

* Refactor CoreNodeManager to be Based on CustomNodeManager2

* Add Test

* Add INodeManager3 with role permission validation

Introduce INodeManager3 interface extending INodeManager2, adding synchronous role permission validation methods. Update all node manager interfaces and classes to use INodeManager3. Extend IAsyncNodeManager with async permission validation methods and update adapters for sync/async bridging. Deprecate FindNodeInAddressSpace in favor of new async FindNodeInAddressSpaceAsync. Refactor MonitoredNode2 to use thread-safe collections and locking for monitored items. Enhance event reporting with security and permission checks. Update constructors and documentation to reflect new interfaces and best practices.

* Implement AsyncCustomNodeManager

* fix comment

* fix

* Add tests

* fix

* Implement better locking strategy

* fix

* Add more tests

* Add tests

* Add tests

* Add Tests

* cleanup

* cleanup

* Add tests that verifies for AnalogItemState the instrument range is checked brefore writing

* only assign new NodeID in default factory if NodeId isNull

* Run all tests also with sampling groups

* Add Docs

* cleanup

* Add chaos test

* fix test
2026-02-20 10:19:33 +01:00
romanett 8c008a172f [Server] Add INodeManager3 with role permission validation. Improve MonitoredNode Datastructures & Locks (#3553)
* Use Interfaces Introduced with 1.5.378

Refactor to use interfaces for node managers and server

Replaced concrete types with interfaces (e.g., IMasterNodeManager, ICoreNodeManager, IDiagnosticsNodeManager, IConfigurationNodeManager, IServerBase) across method signatures, properties, and internal structures to improve abstraction and flexibility.

* Refactor CoreNodeManager to be Based on CustomNodeManager2

* Add Test

* Add INodeManager3 with role permission validation

Introduce INodeManager3 interface extending INodeManager2, adding synchronous role permission validation methods. Update all node manager interfaces and classes to use INodeManager3. Extend IAsyncNodeManager with async permission validation methods and update adapters for sync/async bridging. Deprecate FindNodeInAddressSpace in favor of new async FindNodeInAddressSpaceAsync. Refactor MonitoredNode2 to use thread-safe collections and locking for monitored items. Enhance event reporting with security and permission checks. Update constructors and documentation to reflect new interfaces and best practices.

* fix comment

* fix
2026-02-17 17:38:36 +01:00
Rico Suter 63a77a2a2a Fix memory leaks in server disposal (#3560) 2026-02-17 07:40:26 +01:00
romanett 4d0d26b054 [Server] Refactor CoreNodeManager to be based on CustomNodeManager2 (#3558)
* Use Interfaces Introduced with 1.5.378

Refactor to use interfaces for node managers and server

Replaced concrete types with interfaces (e.g., IMasterNodeManager, ICoreNodeManager, IDiagnosticsNodeManager, IConfigurationNodeManager, IServerBase) across method signatures, properties, and internal structures to improve abstraction and flexibility.

* Refactor CoreNodeManager to be Based on CustomNodeManager2

* Add Test

* fix
2026-02-17 06:30:42 +01:00
Rico Suter 47877a22ea Fix TcpTransportListener resource leak in ServerBase.StopAsync (#3561)
ServerBase.StopAsync() calls Close() on each transport listener then
Clear() on the list. ServerBase.Dispose() later iterates
TransportListeners to call Dispose() on each — but the list is already
empty, so TcpTransportListener.Dispose() never runs.

Add Utils.SilentDispose() after Close() in StopAsync to ensure
TcpTransportListener.Dispose() executes before the list is cleared.
2026-02-17 06:30:05 +01:00
Rico Suter 6a837eb574 fix: Subscription diagnostic nodes not deleted when diagnostics disabled (#3559) 2026-02-17 06:27:55 +01:00
KircMax 42addbb5f7 Add possibility for Sub-CA to be revoked, Removed auto-creation of empty crl for revokecertificate call with CA (#3547)
* add revoke sub ca possible ->

* cert group tests

* fix revoking for sub-cas

* do not use bouncycastle
add test for Test_Root_CA_throws_Exception + throw if applicable
use LoadCrlCreateEmptyIfNonExistantAsync

* remove allowance for initialcrl to be null

* unify with first check for self-signed certificate

* warning -> use StringComparison.Ordinal
2026-02-17 06:27:10 +01:00
romanett 0bde90ab9e Use Interfaces Introduced with 1.5.378 (#3551)
* Use Interfaces Introduced with 1.5.378

Refactor to use interfaces for node managers and server

Replaced concrete types with interfaces (e.g., IMasterNodeManager, ICoreNodeManager, IDiagnosticsNodeManager, IConfigurationNodeManager, IServerBase) across method signatures, properties, and internal structures to improve abstraction and flexibility.

* [Server] Refactor CoreNodeManager to be based on CustomNodeManager2 (#3552)

* Refactor CoreNodeManager to be Based on CustomNodeManager2

* Add Test

* Revert "[Server] Refactor CoreNodeManager to be based on CustomNodeManager2 (#3552)"

This reverts commit bb1d868c81.
2026-02-16 20:36:11 +02:00
romanett 4e10027adb [Server] Implement Client Lockout (#3549)
* Implement Client Lockout

* fix test, decrease lockout time
2026-02-15 06:20:01 +01:00
Marc Schier 601cabf86f Replace all use of object in code and API with Variant (#3550) 2026-02-15 06:19:38 +01:00
Marc Schier f66ceffd75 Immutable built in types and code generation (#3534)
Generate stack and application code using source generators
Change built in types to readonly structs
  Update localized text implementation to use JSON text serializer
  Status code with symbolic names
  Immutable node ids
  No boxing for all built in types <= 8 bytes in Variant.
Split user identity token and token handling via token handler
Add migration guide for breaking changes
2026-02-12 16:27:07 +01:00
raserleandRoman Ettlinger 029a8fbaa6 [Server] Fix generation of UserTokenPolicyIDs (#3525)
* add Equals, change id generation

* add equality operators and gethashcode

* add override Equals

* Copilot issues

* fix TranslateEndpointDescriptionsTest, that relied on ServerUnique UserTokenPolicy Ids

---------

Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2026-02-11 13:36:28 +01:00
KircMax 39ac3f665a add throwing serviceresultexception with stacktrace (#3539) 2026-02-10 13:48:24 +01:00
KircMax f77e96ea97 add FindIssuerCAByKeyIdentifierAsync (#3535)
* add FindIssuerCAByKeyIdentifierAsync

* remove unnecessary using for Org.BouncyCastle.Asn1.X9
2026-02-10 13:20:43 +01:00
romanett 95fbdaa99a [CTT / ConsoleReferenceServer] Enforce numeric DataTypes for AnalogItem variables. (#3530)
* Enforce numeric DataTypes for AnalogItem variables

Removed creation of non-numeric array AnalogItems and added a check to throw an exception if a non-numeric DataType is used. This ensures AnalogItems are restricted to numeric types, improving type safety and compliance.

* Set default description
2026-02-09 13:39:25 +01:00
Marc Schier 43ce7ed229 Code clean up and improvements (#3532)
This pull request modernizes the OPC UA .NET codebase and tests, removes .NET Standard 2.0 support from certificate/security code, and updates test code to use C# 12 and .NET 8+ features for clarity and maintainability.
- Certificate and BouncyCastle interop files (e.g., CertificateBuilder.cs, X509Extensions.cs, X509SignatureFactory.cs) are refactored to drop NETSTANDARD2_0 support and use modern .NET APIs and conditional compilation.
- Test code across the codebase is updated to use default, strongly-typed Parse methods, collection expressions, and improved async/await patterns.
- Exception handling and assertions in tests are modernized, and test method naming is made consistent with Async suffixes.
- The project and build files are updated to clarify Roslynator analyzer usage and remove obsolete netstandard tags.
- General code and test cleanup includes improved null safety, type safety, and removal of deprecated or unused code.
2026-02-09 13:37:06 +01:00
Marc Schier bafd63db5a Hook lookup of symbol in types project and set hook in opc ua core on assembly loading (#3520)
* Hook lookup of symbol in types project and set hook in opc ua core on assembly loading

* Use module initializer instead of static constructor
2026-02-06 17:10:26 +01:00
Marc SchierandCopilot 0d92760547 Ignore 0 references in data dictionary and provide better logging. (#3521)
* Ignore 0 references in data dictionary and provide better logging.

* Update Libraries/Opc.Ua.Client.ComplexTypes/ComplexTypeSystem.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-06 11:49:36 +01:00
Robert Richter 6d539c9e92 fix minor xml docs copy error (#3518) 2026-02-06 11:49:10 +01:00
romanett 6eca246166 Improve logging and fix UserNameIdentityToken to return BadIdentityTokenInvalid for failed verification (#3514)
* Improve  logging and fix UserNameIdentityToken to return BadIdentityTokenInvalid for failed verification

Refactor DataChangeQueueHandler to return overflow status from QueueValue and Enqueue, updating MonitoredItem to log overflows accurately. Update IDataChangeQueueHandler interface accordingly. Enhance ConsoleTelemetry logger configuration management and ensure proper disposal of old logger factories.
Change UserNameIdentityToken password/nonce failure to return BadIdentityTokenInvalid for more precise error reporting. To prevent the leakage of information useful to attackers, Servers shall ensure that the process of validating UserIdentityTokens completes in a fixed interval independent of whether an error occurs or not. The process of validation includes decrypting, check for padding and checking for a valid nonce. If any errors occur the return code is Bad_IdentityTokenInvalid.

* fix GDS ApplicationNames to include the Locale

* fix ctt testcase by allowing faster sampling for XmlNodeNode
2026-02-05 11:57:12 +01:00
Suciu Mircea Adrian 0cb20d6c74 Respect configured RSA key size when creating app certificates (#3513) 2026-02-02 10:11:09 +02:00
romanett 219f0e14ad revert breaking changes for 1.5.378 (#3508)
* revert breaking changes

* Add TrustList for backcompat

* revert more changes
2026-01-27 21:24:26 +01:00
Copilotandromanett 3580d28c7e Fix OperationLimits to apply min(client, server) logic per documentation (#3503)
* Initial plan

* Implement OperationLimits min logic and add tests

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2026-01-27 16:43:52 +01:00
romanett c26de8df0d Modified error handling to raise publish error events for (#3502)
BadNoSubscription if there are active subscriptions.
Fix typo in param name .
2026-01-27 07:44:07 +01:00
romanett 6765151a00 Fix EndpointIncomingRequest to do serviceLookup at invocation time instead of construction. This makes the object smaller and fixes a bug where the transport channel response was not sent due to unhandled exception (#3505) 2026-01-27 07:42:01 +01:00
romanett 8966e1d358 [Server] Use Classes instead of Interfaces for NodeManagers to ensure compatibility for 1.5.378 (#3497)
* Point to concrete classes instead of interfaces

* cleanup
2026-01-25 19:12:32 +01:00
Copilotandmarcschier 9f335c39d8 Change DebugCheck conditional compilation from DEBUG to CHECKED (#3496)
* Initial plan

* Change [Conditional("DEBUG")] to [Conditional("CHECKED")] in DebugCheck methods

Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: marcschier <11168470+marcschier@users.noreply.github.com>
2026-01-24 05:42:59 +01:00
Alexander KöpkeandMarc Schier d511adc507 Extend NodeSet Export (#3491)
* Add per-namespace NodeSet2 export and CLI option

Implemented ExportNodesToNodeSet2PerNamespaceAsync in ClientSamples to export nodes into separate NodeSet2 XML files per namespace, excluding OPC Foundation companion specs. Added a helper for safe filename generation. Introduced a new -e/--export command-line option in Program.cs to trigger this export after node fetching. Also added System.Xml.Linq import for potential XML handling.

* Add NodeSetExportOptions for flexible NodeSet2 export

Introduce NodeSetExportOptions to control which attributes and values are exported to NodeSet2 XML, with Default, Minimal, and Complete presets. Overload ExportNodesToNodeSet2 to accept these options and update internal logic accordingly. Update CreateNodeState to honor export preferences. Add comprehensive unit tests for all export modes and ensure backward compatibility. Update ClientSamples to use Complete export mode.

* Refactor NodeSet export options for minimal default output

- Change ExportValues default to false; values only for Complete option
- Remove ExportUserAccessLevel and ExportMethodDeclarationId options
- Always export MethodDeclarationId; export UserAccessLevel only if different from AccessLevel
- Remove Minimal option; Default now produces minimal schema output
- Update export logic and tests to reflect new option semantics
- Rename and revise unit test to verify new default and complete behaviors

* Remove unused BitVector32 import

* Add ExportUserContext option to NodeSet2 export

Introduce ExportUserContext to NodeSetExportOptions, allowing selective export of user context attributes (UserAccessLevel, UserExecutable, UserWriteMask, UserRolePermissions) in NodeSet2 files. Update export logic to honor this option and add unit tests to verify correct behavior. This enhances flexibility and control over exported user-specific metadata.


---------

Co-authored-by: Marc Schier <marcschier@users.noreply.github.com>
2026-01-22 08:39:42 +01:00
Copilotandromanett d71ee2a13a Add async callback support to TrustList implementation (#3483)
* Initial plan

* Add async callback support to TrustList implementation

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix redundant security check in OpenAsync

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix audit logging parameters in RemoveCertificateAsync

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Refactor TrustList to use async core implementation with sync wrappers

Based on feedback, changed approach:
- Make internal implementation async (OpenCoreAsync, etc.)
- Sync methods now wrap async using .AsTask().GetAwaiter().GetResult()
- Both OnCall and OnCallAsync handlers registered
- Eliminates .GetAwaiter().GetResult() in async paths

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add ConfigureAwait(false) to sync wrapper methods

Prevents potential deadlocks by adding ConfigureAwait(false) before GetAwaiter().GetResult() in all sync wrapper methods. Also made the pattern consistent across all methods.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add CancellationToken support to helper methods

Updated UpdateStoreCertificatesAsync and UpdateStoreCrlsAsync to properly propagate CancellationToken through all async operations. Ensures consistent async patterns throughout the implementation.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2026-01-20 15:04:41 +01:00
dependabot[bot]andMarc Schier 424f53fd98 Bump Microsoft.Extensions.Logging from 10.0.1 to 10.0.2 (#3488)
* Bump Microsoft.Extensions.Logging from 10.0.1 to 10.0.2

---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Logging
  dependency-version: 10.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Marc Schier <marcschier@hotmail.com>
2026-01-20 13:17:26 +01:00
dependabot[bot] 4f089ba86b Bump System.Collections.Immutable from 10.0.1 to 10.0.2 (#3490)
---
updated-dependencies:
- dependency-name: System.Collections.Immutable
  dependency-version: 10.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-20 09:58:19 +01:00
dependabot[bot] 12704afa68 Bump Microsoft.AspNetCore.Server.Kestrel and Microsoft.AspNetCore.Server.Kestrel.Core (#3485)
Bumps Microsoft.AspNetCore.Server.Kestrel from 2.3.0 to 2.3.9
Bumps Microsoft.AspNetCore.Server.Kestrel.Core from 2.3.6 to 2.3.8

---
updated-dependencies:
- dependency-name: Microsoft.AspNetCore.Server.Kestrel
  dependency-version: 2.3.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: Microsoft.AspNetCore.Server.Kestrel.Core
  dependency-version: 2.3.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-20 08:16:07 +01:00
dependabot[bot] f2ac68f10f Bump Microsoft.Extensions.Configuration and Microsoft.Extensions.Configuration.EnvironmentVariables (#3487)
Bumps Microsoft.Extensions.Configuration from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.Configuration.EnvironmentVariables from 10.0.1 to 10.0.2

---
updated-dependencies:
- dependency-name: Microsoft.Extensions.Configuration
  dependency-version: 10.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: Microsoft.Extensions.Configuration.EnvironmentVariables
  dependency-version: 10.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-20 08:15:38 +01:00
Copilotandromanett 3561c68784 Document certificate validation workflow with chain building and configuration details (#3481)
* Initial plan

* Document certificate validation workflow in Certificates.md

- Add comprehensive Certificate Validation section
- Document validation workflow and steps
- List all configuration settings with defaults and examples
- Enumerate suppressible validation errors
- Provide examples for registering validation callbacks
- Show how to implement custom certificate validators
- Include best practices for certificate validation

Addresses the issue by documenting the CertificateValidator.cs
implementation including config settings and suppressible errors.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Fix trailing whitespace in Certificates.md per .editorconfig

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add detailed chain building technical documentation

- Add comprehensive Chain Building Process section with diagram
- Include ASCII flowchart showing complete validation flow
- Add pseudocode for all chain building steps:
  - Initialization and loop structure
  - Three-tier issuer search (Trusted → Issuer → Untrusted)
  - Issuer matching algorithm with criteria
  - CRL checking logic with revocation handling
  - X509Chain integration and validation
- Document search priority and trust anchoring behavior
- Add key behaviors section explaining design decisions
- Link from validation workflow to detailed section

Addresses feedback requesting more technical detail, diagram,
and pseudocode visualization of the chain building process.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add certificate list configuration documentation

- Add Certificate List Configuration section (~190 lines)
- Document configuration sources (XML config and runtime API)
- Provide XML configuration structure with examples
- Explain certificate store types (Directory and X509Store)
- Detail certificate list population process:
  - Initialization via ApplicationConfiguration
  - Internal update process
  - Certificate search behavior and priority
- Add runtime certificate management examples
- Document certificate store management (file operations)
- Explain dual-mode operation (explicit list + store)
- Include configuration best practices
- Link from Trust Check step to configuration section

Addresses feedback requesting details on where certificate
lists are configured and populated.

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
2026-01-19 15:44:11 +01:00
e314cf53f7 Fix SourceTimestamp for variables without explicit timestamps in BaseVariableState (#3451)
* Initial plan

* Add OnReadValue callback to update timestamps on variable reads

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* Add test to verify timestamp updates on variable reads

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* fix timestamp for scalar values

set loglevel in session publish when no subscriptions

ignore more keepalive errors in Client Fixture

* Fix timestamp updates for all variables (scalars and arrays)

Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>

* create a proper fix

* Add Order parameter to test to check the timestamp before an explicit write was done

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: romanett <7413710+romanett@users.noreply.github.com>
Co-authored-by: Roman Ettlinger <romanett98@gmail.com>
2026-01-19 15:18:28 +01:00
Marc Schier 0497953af2 Change license reference in copilot agents file (#3479) 2026-01-15 18:16:21 +01:00
Marc Schier 78a9ba2ffa Set correct target framework for long running test (#3474)
* Set correct target framework

* Split long and short haul tests but maintain most of the current code
2026-01-14 16:21:59 +01:00