Files
d1883832e1 Secure channel enhancements 2025 11 (Take 3) (#3665)
* merged security changes

* Tailor SecurityPolicyUri for format expected in s_securityPolicyUriToInfo

* Enhance security policy handling and key computation logic

* Merge SecurityEnhancements.

* Add support for SessionTransferToken. Removed obsolete SoftwareCertificate code.

* Fix NonceLength for None.

* Add support for RSA_DH, more fixes from IOP testings.

* Finish implementation of SecureChannelEnhancements.

* Rename EccUtils.cs to CryptoUtils.cs

* Address feedback from reviewers.

* Fix CoPilot flagged spelling errors.

* Rename EccUtils to CryptoUtils

* Update version from 1.5.378-preview to 1.5.378

* Fix unit tests.

* Allow SignatureData.Algorithm to be NULL or Empty.

* Fix issue with BrainPool_p256r1_ChaChaPoly

* Fix RSA_DH_AesGcm

* Fix OSC/padding by deriving HMAC keys, tightening symmetric size math, and correcting ECC_brainpoolP384r1/Basic128Rsa15 IV, signature, padding, and nonce parameters.

* Policies without asymmetric encryption (ECC) return the plaintext when encrypting user tokens; this prevents null payloads from causing BadIdentityTokenInvalid.

* Reserve outer CBC padding for avoiding SymetricEncryptAndSign->AddPadding to overwrite next fields (signature)

* Nonce stored as byte array in SessionConfiguration; Sesion snapshot restores ServerNonce and reconstructs ECC ephemeral key Nonce from bytes and policy

* Added _AesGcm and _ChaChaPoly variants to BuildSupportedSecurityPolicies() for all six ECC certificate types (nistP256, nistP384, brainpoolP256r1, brainpoolP384r1, curve25519, curve448) to SecurityConfiguration. Added Sign and SignAndEncrypt endpoints for the four ECC AesGcm/ChaChaPoly policy pairs (nistP256, nistP384, brainpoolP256r1, brainpoolP384r1) to ServerFixture.

* make ephemeralKeyPolicyUri nullable

* GenerateSecret also for NET7 and NET8

* Adjust Basic128Rsa15 policy properties for backword compatibility

* Exclude unsuported AEAD policies from .NET Framework client tests

* Addapt to new changes (still build fail)

* Addapt code to make it compile

* Fixed failing build on net48 (by ignoring potential null ref which is not reported on other newer targets)

* Preserve the certificate reference in Clone() so copied handlers can still sign

* Remove extra code and addapt to existing master configuration settings

* Filter *_AesGcm and *_ChaChaPoly security policies based on actual runtime support, so unsupported AEAD policies are not advertised or selected on older frameworks

* Expand ECC/RSA policy test coverage and keep Basic128Rsa15 nonce length backward-compatible

* Fix ReconnectSessionOnAlternateChannel _AES and _ChaCha policies

* Fixed IgnoreIfPolicyNotAdvertised so it now fetches endpoints on-demand (instead of relying on Endpoints being preloaded by earlier tests), which avoids false ignores when running tests directlyy

* Merge with commit 5e627f2ca1 from secure-channel-enhancements-2025-11 branch

* minor log mesatge formating

* Fix ClientLockoutTests

* Add ServerFixture policies upfront only if framework and runtime capability supports them

* A few cosmetic/config changes as review sugested

* Moved the session/security handling from StandardServer into a dedicated helper

* use X509IdentityTokenHandler from secure-channel-enhancements-2025-11

* Removed unused Opc.Ua.Types.UnitTests.csproj

* test(client): fix Basic128Rsa15 reconnect token-policy coverage

Advertise an explicit Basic128Rsa15 user token policy in the test fixture and tighten the reconnect test preconditions for non-advertised policies.

* test(client): fix session nonce persistence test helpers

Replace the generic reflection helpers in SessionTests with explicit client/server nonce accessors that match the actual field types.

Add a short Session comment to explain why client and server nonces currently use different representations.

* Merge branch 'master' into secure-channel-enhancements-2025-11-merge5

Merge with latest master and fix conflicts.

* Removed unused Opc.Ua.Types.UnitTests.csproj

* test(client): fix Basic128Rsa15 reconnect token-policy coverage

Advertise an explicit Basic128Rsa15 user token policy in the test fixture and tighten the reconnect test preconditions for non-advertised policies.

* test(client): fix session nonce persistence test helpers

Replace the generic reflection helpers in SessionTests with explicit client/server nonce accessors that match the actual field types.

Add a short Session comment to explain why client and server nonces currently use different representations.

* Build fixes

* Fix build

* update

* Minor updates

* Fix tests

* Add code to check all Endpoints.

* Update Design files to 1.05.7

* Run code fixers, add missing docs

* Fix build

* Revert removal of using

* Increase build timeout

---------

Co-authored-by: mrsuciu <Mircea-Adrian.Suciu@Softing.com>
Co-authored-by: Randy Armstrong <randy@sparhawksoftware.com>
2026-04-16 18:56:42 +00:00

798 lines
41 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<!--
* Copyright (c) 2005-2026 The OPC Foundation, Inc. All rights reserved.
*
* OPC Foundation MIT License 1.00
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* The complete license agreement can be found here:
* http://opcfoundation.org/License/MIT/1.00/
-->
<opc:ModelDesign
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:opc="http://opcfoundation.org/UA/ModelDesign.xsd"
xmlns:ua="http://opcfoundation.org/UA/"
xmlns="http://opcfoundation.org/UA/GDS/"
xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd"
xmlns:uasc="http://opcfoundation.org/UA/PushConfiguration/"
TargetNamespace="http://opcfoundation.org/UA/GDS/"
TargetVersion="1.05.07"
TargetPublicationDate="2026-04-15T00:00:00Z"
>
<opc:Namespaces>
<opc:Namespace Name="OpcUaGds" Prefix="Opc.Ua.Gds" XmlNamespace="http://opcfoundation.org/UA/GDS/Types.xsd" XmlPrefix="GDS">http://opcfoundation.org/UA/GDS/</opc:Namespace>
<opc:Namespace Name="OpcUa" Version="1.05.07" PublicationDate="2026-04-15T00:00:00Z" Prefix="Opc.Ua" InternalPrefix="Opc.Ua.Server" XmlNamespace="http://opcfoundation.org/UA/2008/02/Types.xsd" XmlPrefix="OpcUa">http://opcfoundation.org/UA/</opc:Namespace>
</opc:Namespaces>
<opc:PermissionSets>
<opc:PermissionSet Name="DiscoveryAdmin">
<opc:RolePermission Role="ua:WellKnownRole_Anonymous">
<opc:Permission>Browse</opc:Permission>
<opc:Permission>Call</opc:Permission>
</opc:RolePermission>
<opc:RolePermission Role="WellKnownRole_DiscoveryAdmin">
<opc:Permission>Browse</opc:Permission>
<opc:Permission>Call</opc:Permission>
</opc:RolePermission>
</opc:PermissionSet>
<opc:PermissionSet Name="CertificateAuthorityAdmin">
<opc:RolePermission Role="ua:WellKnownRole_Anonymous">
<opc:Permission>Browse</opc:Permission>
</opc:RolePermission>
<opc:RolePermission Role="WellKnownRole_CertificateAuthorityAdmin">
<opc:Permission>Browse</opc:Permission>
<opc:Permission>Call</opc:Permission>
</opc:RolePermission>
</opc:PermissionSet>
<opc:PermissionSet Name="KeyCredentialAdmin">
<opc:RolePermission Role="ua:WellKnownRole_Anonymous">
<opc:Permission>Browse</opc:Permission>
</opc:RolePermission>
<opc:RolePermission Role="WellKnownRole_KeyCredentialAdmin">
<opc:Permission>Browse</opc:Permission>
<opc:Permission>Call</opc:Permission>
</opc:RolePermission>
</opc:PermissionSet>
<opc:PermissionSet Name="AuditEventDefaultPermissions">
<opc:RolePermission Role="ua:WellKnownRole_Anonymous">
<opc:Permission>Browse</opc:Permission>
<opc:Permission>Read</opc:Permission>
</opc:RolePermission>
<opc:RolePermission Role="ua:WellKnownRole_SecurityAdmin">
<opc:Permission>Browse</opc:Permission>
<opc:Permission>Read</opc:Permission>
<opc:Permission>ReceiveEvents</opc:Permission>
</opc:RolePermission>
</opc:PermissionSet>
</opc:PermissionSets>
<opc:Object SymbolicName="OPCUAGDSNamespaceMetadata" TypeDefinition="ua:NamespaceMetadataType" PartNo="12">
<opc:BrowseName>http://opcfoundation.org/UA/GDS/</opc:BrowseName>
<opc:Children>
<opc:Property SymbolicName="ua:NamespaceUri" DataType="ua:String">
<opc:DefaultValue>
<uax:String>http://opcfoundation.org/UA/GDS/</uax:String>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:NamespaceVersion" DataType="ua:String">
<opc:DefaultValue>
<uax:String>1.05.07</uax:String>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:ModelVersion" DataType="ua:SemanticVersionString">
<opc:DefaultValue>
<uax:String>1.5.7</uax:String>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:NamespacePublicationDate" DataType="ua:DateTime">
<opc:DefaultValue>
<uax:DateTime>2026-04-15T00:00:00Z</uax:DateTime>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:IsNamespaceSubset" DataType="ua:Boolean">
<opc:DefaultValue>
<uax:Boolean>false</uax:Boolean>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:StaticNodeIdTypes" DataType="ua:IdType" ValueRank="Array">
<opc:DefaultValue>
<uax:ListOfInt32>
<uax:Int32>0</uax:Int32>
</uax:ListOfInt32>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:StaticNumericNodeIdRange" DataType="ua:NumericRange" ValueRank="Array">
<opc:DefaultValue>
<uax:ListOfString>
<uax:String>1:65535</uax:String>
</uax:ListOfString>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:StaticStringNodeIdPattern" DataType="ua:String">
<opc:DefaultValue>
<uax:String></uax:String>
</opc:DefaultValue>
</opc:Property>
<opc:Property SymbolicName="ua:DefaultRolePermissions" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:DefaultUserRolePermissions" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:DefaultAccessRestrictions" ModellingRule="Mandatory" />
</opc:Children>
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
<opc:TargetId>ua:Server_Namespaces</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:Object SymbolicName="WellKnownRole_DiscoveryAdmin" TypeDefinition="ua:RoleType">
<opc:BrowseName>DiscoveryAdmin</opc:BrowseName>
<opc:DisplayName>DiscoveryAdmin</opc:DisplayName>
<opc:Description DoNotIgnore="true">This Role grants rights to register, update and unregister any OPC UA Application.</opc:Description>
<opc:Children>
<opc:Property SymbolicName="ua:Applications" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:ApplicationsExclude" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:Endpoints" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:EndpointsExclude" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddEndpoint" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveEndpoint" ModellingRule="Mandatory" />
</opc:Children>
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
<opc:TargetId>ua:Server_ServerCapabilities_RoleSet</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:Object SymbolicName="WellKnownRole_CertificateAuthorityAdmin" TypeDefinition="ua:RoleType">
<opc:BrowseName>CertificateAuthorityAdmin</opc:BrowseName>
<opc:DisplayName>CertificateAuthorityAdmin</opc:DisplayName>
<opc:Description DoNotIgnore="true">This Role grants rights to request or revoke any Certificate, update any TrustList or assign CertificateGroups to OPC UA Applications.</opc:Description>
<opc:Children>
<opc:Property SymbolicName="ua:Applications" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:ApplicationsExclude" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:Endpoints" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:EndpointsExclude" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddEndpoint" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveEndpoint" ModellingRule="Mandatory" />
</opc:Children>
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
<opc:TargetId>ua:Server_ServerCapabilities_RoleSet</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:Object SymbolicName="WellKnownRole_RegistrationAuthorityAdmin" TypeDefinition="ua:RoleType">
<opc:BrowseName>RegistrationAuthorityAdmin</opc:BrowseName>
<opc:DisplayName>RegistrationAuthorityAdmin</opc:DisplayName>
<opc:Description DoNotIgnore="true">This Role grants rights to approve Certificate Signing requests or NewKeyPair requests.</opc:Description>
<opc:Children>
<opc:Property SymbolicName="ua:Applications" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:ApplicationsExclude" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:Endpoints" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:EndpointsExclude" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddEndpoint" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveEndpoint" ModellingRule="Mandatory" />
</opc:Children>
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
<opc:TargetId>ua:Server_ServerCapabilities_RoleSet</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:Object SymbolicName="WellKnownRole_KeyCredentialAdmin" TypeDefinition="ua:RoleType">
<opc:BrowseName>KeyCredentialAdmin</opc:BrowseName>
<opc:DisplayName>KeyCredentialAdmin</opc:DisplayName>
<opc:Description DoNotIgnore="true">This Role grants rights to request or revoke any KeyCredential.</opc:Description>
<opc:Children>
<opc:Property SymbolicName="ua:Applications" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:ApplicationsExclude" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:Endpoints" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:EndpointsExclude" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddEndpoint" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveEndpoint" ModellingRule="Mandatory" />
</opc:Children>
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
<opc:TargetId>ua:Server_ServerCapabilities_RoleSet</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:Object SymbolicName="WellKnownRole_AuthorizationServiceAdmin" TypeDefinition="ua:RoleType">
<opc:BrowseName>AuthorizationServiceAdmin</opc:BrowseName>
<opc:DisplayName>AuthorizationServiceAdmin</opc:DisplayName>
<opc:Description DoNotIgnore="true">This Role grants rights to request or revoke any KeyCredential.</opc:Description>
<opc:Children>
<opc:Property SymbolicName="ua:Applications" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:ApplicationsExclude" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:Endpoints" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ua:EndpointsExclude" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveIdentity" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveApplication" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddEndpoint" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveEndpoint" ModellingRule="Mandatory" />
</opc:Children>
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
<opc:TargetId>ua:Server_ServerCapabilities_RoleSet</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:DataType SymbolicName="ApplicationRecordDataType" BaseType="ua:Structure">
<opc:Fields>
<opc:Field Name="ApplicationId" DataType="ua:NodeId"></opc:Field>
<opc:Field Name="ApplicationUri" DataType="ua:String"></opc:Field>
<opc:Field Name="ApplicationType" DataType="ua:ApplicationType" />
<opc:Field Name="ApplicationNames" DataType="ua:LocalizedText" ValueRank="Array" />
<opc:Field Name="ProductUri" DataType="ua:String" />
<opc:Field Name="DiscoveryUrls" DataType="ua:String" ValueRank="Array" />
<opc:Field Name="ServerCapabilities" DataType="ua:String" ValueRank="Array" />
</opc:Fields>
</opc:DataType>
<opc:Method SymbolicName="FindApplicationsMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationUri" DataType="ua:String"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="Applications" DataType="ApplicationRecordDataType" ValueRank="Array"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="RegisterApplicationMethodType">
<opc:InputArguments>
<opc:Argument Name="Application" DataType="ApplicationRecordDataType"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="UpdateApplicationMethodType">
<opc:InputArguments>
<opc:Argument Name="Application" DataType="ApplicationRecordDataType"></opc:Argument>
</opc:InputArguments>
</opc:Method>
<opc:Method SymbolicName="UnregisterApplicationMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
</opc:InputArguments>
</opc:Method>
<opc:Method SymbolicName="GetApplicationMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="Application" DataType="ApplicationRecordDataType"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="QueryApplicationsMethodType">
<opc:InputArguments>
<opc:Argument Name="StartingRecordId" DataType="ua:UInt32"></opc:Argument>
<opc:Argument Name="MaxRecordsToReturn" DataType="ua:UInt32"></opc:Argument>
<opc:Argument Name="ApplicationName" DataType="ua:String"></opc:Argument>
<opc:Argument Name="ApplicationUri" DataType="ua:String"></opc:Argument>
<opc:Argument Name="ApplicationType" DataType="ua:UInt32"></opc:Argument>
<opc:Argument Name="ProductUri" DataType="ua:String"></opc:Argument>
<opc:Argument Name="Capabilities" DataType="ua:String" ValueRank="Array"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="LastCounterResetTime" DataType="ua:UtcTime"></opc:Argument>
<opc:Argument Name="NextRecordId" DataType="ua:UInt32"></opc:Argument>
<opc:Argument Name="Applications" DataType="ua:ApplicationDescription" ValueRank="Array"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="QueryServersMethodType">
<opc:InputArguments>
<opc:Argument Name="StartingRecordId" DataType="ua:UInt32"></opc:Argument>
<opc:Argument Name="MaxRecordsToReturn" DataType="ua:UInt32"></opc:Argument>
<opc:Argument Name="ApplicationName" DataType="ua:String"></opc:Argument>
<opc:Argument Name="ApplicationUri" DataType="ua:String"></opc:Argument>
<opc:Argument Name="ProductUri" DataType="ua:String"></opc:Argument>
<opc:Argument Name="ServerCapabilities" DataType="ua:String" ValueRank="Array"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="LastCounterResetTime" DataType="ua:UtcTime"></opc:Argument>
<opc:Argument Name="Servers" DataType="ua:ServerOnNetwork" ValueRank="Array"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:ObjectType SymbolicName="DirectoryType" BaseType="ua:FolderType">
<opc:Children>
<opc:Object SymbolicName="Applications" TypeDefinition="ua:FolderType" ModellingRule="Mandatory">
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
</opc:Object>
<opc:Method SymbolicName="FindApplications" TypeDefinition="FindApplicationsMethodType" ModellingRule="Mandatory" />
<opc:Method SymbolicName="RegisterApplication" TypeDefinition="RegisterApplicationMethodType" ModellingRule="Mandatory">
<opc:References>
<opc:Reference>
<opc:ReferenceType>ua:GeneratesEvent</opc:ReferenceType>
<opc:TargetId>ApplicationRegistrationChangedAuditEventType</opc:TargetId>
</opc:Reference>
</opc:References>
<opc:DefaultRolePermissions Name="DiscoveryAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="UpdateApplication" TypeDefinition="UpdateApplicationMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="DiscoveryAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="UnregisterApplication" TypeDefinition="UnregisterApplicationMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="DiscoveryAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="GetApplication" TypeDefinition="GetApplicationMethodType" ModellingRule="Mandatory" />
<opc:Method SymbolicName="QueryApplications" TypeDefinition="QueryApplicationsMethodType" ModellingRule="Mandatory" />
<opc:Method SymbolicName="QueryServers" TypeDefinition="QueryServersMethodType" ModellingRule="Mandatory" />
</opc:Children>
</opc:ObjectType>
<opc:ObjectType SymbolicName="ApplicationRegistrationChangedAuditEventType" BaseType="ua:AuditUpdateMethodEventType" IsAbstract="true">
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:Method SymbolicName="StartSigningRequestMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId" />
<opc:Argument Name="CertificateGroupId" DataType="ua:NodeId" />
<opc:Argument Name="CertificateTypeId" DataType="ua:NodeId" />
<opc:Argument Name="CertificateRequest" DataType="ua:ByteString" />
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="RequestId" DataType="ua:NodeId"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="StartNewKeyPairRequestMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId" />
<opc:Argument Name="CertificateGroupId" DataType="ua:NodeId" />
<opc:Argument Name="CertificateTypeId" DataType="ua:NodeId" />
<opc:Argument Name="SubjectName" DataType="ua:String" />
<opc:Argument Name="DomainNames" DataType="ua:String" ValueRank="Array" />
<opc:Argument Name="PrivateKeyFormat" DataType="ua:String" />
<opc:Argument Name="PrivateKeyPassword" DataType="ua:String" />
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="RequestId" DataType="ua:NodeId"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="FinishRequestMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
<opc:Argument Name="RequestId" DataType="ua:NodeId"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="Certificate" DataType="ua:ByteString"></opc:Argument>
<opc:Argument Name="PrivateKey" DataType="ua:ByteString"></opc:Argument>
<opc:Argument Name="IssuerCertificates" DataType="ua:ByteString" ValueRank="Array"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="GetCertificateGroupsMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="CertificateGroupIds" DataType="ua:NodeId" ValueRank="Array"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="GetTrustListMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
<opc:Argument Name="CertificateGroupId" DataType="ua:NodeId"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="TrustListId" DataType="ua:NodeId"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="RevokeCertificateMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
<opc:Argument Name="Certificate" DataType="ua:ByteString"></opc:Argument>
</opc:InputArguments>
</opc:Method>
<opc:Method SymbolicName="GetCertificateStatusMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
<opc:Argument Name="CertificateGroupId" DataType="ua:NodeId"></opc:Argument>
<opc:Argument Name="CertificateTypeId" DataType="ua:NodeId" />
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="UpdateRequired" DataType="ua:Boolean"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="GetCertificatesMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationId" DataType="ua:NodeId"></opc:Argument>
<opc:Argument Name="CertificateGroupId" DataType="ua:NodeId"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="CertificateTypeIds" DataType="ua:NodeId" ValueRank="Array"></opc:Argument>
<opc:Argument Name="Certificates" DataType="ua:ByteString" ValueRank="Array"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="CheckRevocationStatusMethodType">
<opc:InputArguments>
<opc:Argument Name="Certificate" DataType="ua:ByteString"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="CertificateStatus" DataType="ua:StatusCode"></opc:Argument>
<opc:Argument Name="ValidityTime" DataType="ua:UtcTime" />
</opc:OutputArguments>
</opc:Method>
<opc:ObjectType SymbolicName="CertificateDirectoryType" BaseType="DirectoryType">
<opc:Children>
<opc:Object SymbolicName="CertificateGroups" TypeDefinition="ua:CertificateGroupFolderType" ModellingRule="Mandatory">
<opc:ReferenceType>ua:Organizes</opc:ReferenceType>
</opc:Object>
<opc:Method SymbolicName="StartSigningRequest" TypeDefinition="StartSigningRequestMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="StartNewKeyPairRequest" TypeDefinition="StartNewKeyPairRequestMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>EncryptionRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="FinishRequest" TypeDefinition="FinishRequestMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>EncryptionRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="RevokeCertificate" TypeDefinition="RevokeCertificateMethodType" ModellingRule="Optional">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="GetCertificateGroups" TypeDefinition="GetCertificateGroupsMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="GetCertificates" TypeDefinition="GetCertificatesMethodType" ModellingRule="Optional">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="GetTrustList" TypeDefinition="GetTrustListMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="GetCertificateStatus" TypeDefinition="GetCertificateStatusMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="CertificateAuthorityAdmin" />
<opc:DefaultAccessRestrictions>SigningRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="CheckRevocationStatus" TypeDefinition="CheckRevocationStatusMethodType" ModellingRule="Optional" />
</opc:Children>
</opc:ObjectType>
<opc:ObjectType SymbolicName="CertificateRequestedAuditEventType" BaseType="ua:AuditUpdateMethodEventType" IsAbstract="true">
<opc:Children>
<opc:Property SymbolicName="CertificateGroup" DataType="ua:NodeId" ModellingRule="Mandatory" />
<opc:Property SymbolicName="CertificateType" DataType="ua:NodeId" ModellingRule="Mandatory" />
</opc:Children>
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:ObjectType SymbolicName="CertificateDeliveredAuditEventType" BaseType="ua:AuditUpdateMethodEventType" IsAbstract="true">
<opc:Children>
<opc:Property SymbolicName="CertificateGroup" DataType="ua:NodeId" ModellingRule="Mandatory" />
<opc:Property SymbolicName="CertificateType" DataType="ua:NodeId" ModellingRule="Mandatory" />
</opc:Children>
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:ObjectType SymbolicName="CertificateRevokedAuditEventType" BaseType="ua:AuditUpdateMethodEventType" IsAbstract="true">
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:ObjectType SymbolicName="KeyCredentialManagementFolderType" BaseType="ua:FolderType">
<opc:Children>
<opc:Object SymbolicName="ServiceName_Placeholder" TypeDefinition="KeyCredentialServiceType" ModellingRule="OptionalPlaceholder">
<opc:BrowseName>&lt;ServiceName&gt;</opc:BrowseName>
<opc:ReferenceType>ua:HasComponent</opc:ReferenceType>
</opc:Object>
</opc:Children>
</opc:ObjectType>
<opc:Object SymbolicName="KeyCredentialManagement" TypeDefinition="KeyCredentialManagementFolderType">
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:Organizes</opc:ReferenceType>
<opc:TargetId>ua:ObjectsFolder</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:ObjectType SymbolicName="KeyCredentialServiceType" BaseType="ua:BaseObjectType">
<opc:Children>
<opc:Property SymbolicName="ResourceUri" DataType="ua:String" ValueRank="Scalar" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ProfileUris" DataType="ua:String" ValueRank="Array" ModellingRule="Mandatory" />
<opc:Property SymbolicName="SecurityPolicyUris" DataType="ua:String" ValueRank="Array" ModellingRule="Optional" />
<opc:Method SymbolicName="StartRequest" TypeDefinition="KeyCredentialStartRequestMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="KeyCredentialAdmin" />
<opc:DefaultAccessRestrictions>EncryptionRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="FinishRequest" TypeDefinition="KeyCredentialFinishRequestMethodType" ModellingRule="Mandatory">
<opc:DefaultRolePermissions Name="KeyCredentialAdmin" />
<opc:DefaultAccessRestrictions>EncryptionRequired</opc:DefaultAccessRestrictions>
</opc:Method>
<opc:Method SymbolicName="Revoke" TypeDefinition="KeyCredentialRevokeMethodType" ModellingRule="Optional">
<opc:DefaultRolePermissions Name="KeyCredentialAdmin" />
<opc:DefaultAccessRestrictions>EncryptionRequired</opc:DefaultAccessRestrictions>
</opc:Method>
</opc:Children>
</opc:ObjectType>
<opc:Method SymbolicName="KeyCredentialStartRequestMethodType">
<opc:InputArguments>
<opc:Argument Name="ApplicationUri" DataType="ua:String" />
<opc:Argument Name="PublicKey" DataType="ua:ByteString"></opc:Argument>
<opc:Argument Name="SecurityPolicyUri" DataType="ua:String" />
<opc:Argument Name="RequestedRoles" DataType="ua:NodeId" ValueRank="Array" />
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="RequestId" DataType="ua:NodeId"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="KeyCredentialFinishRequestMethodType">
<opc:InputArguments>
<opc:Argument Name="RequestId" DataType="ua:NodeId"></opc:Argument>
<opc:Argument Name="CancelRequest" DataType="ua:Boolean"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="CredentialId" DataType="ua:String" />
<opc:Argument Name="CredentialSecret" DataType="ua:ByteString"></opc:Argument>
<opc:Argument Name="CertificateThumbprint" DataType="ua:String" />
<opc:Argument Name="SecurityPolicyUri" DataType="ua:String" />
<opc:Argument Name="GrantedRoles" DataType="ua:NodeId" ValueRank="Array" />
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="KeyCredentialRevokeMethodType">
<opc:InputArguments>
<opc:Argument Name="CredentialId" DataType="ua:String" />
</opc:InputArguments>
</opc:Method>
<opc:ObjectType SymbolicName="KeyCredentialRequestedAuditEventType" BaseType="ua:KeyCredentialAuditEventType" IsAbstract="false">
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:ObjectType SymbolicName="KeyCredentialDeliveredAuditEventType" BaseType="ua:KeyCredentialAuditEventType" IsAbstract="false">
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:ObjectType SymbolicName="KeyCredentialRevokedAuditEventType" BaseType="ua:KeyCredentialAuditEventType" IsAbstract="false">
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:ObjectType SymbolicName="AuthorizationServicesFolderType" BaseType="ua:FolderType">
<opc:Children>
<opc:Object SymbolicName="ServiceName_Placeholder" TypeDefinition="AuthorizationServiceType" ModellingRule="OptionalPlaceholder">
<opc:BrowseName>&lt;ServiceName&gt;</opc:BrowseName>
<opc:ReferenceType>ua:Organizes</opc:ReferenceType>
</opc:Object>
</opc:Children>
</opc:ObjectType>
<opc:Object SymbolicName="AuthorizationServices" TypeDefinition="AuthorizationServicesFolderType">
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:Organizes</opc:ReferenceType>
<opc:TargetId>ua:ObjectsFolder</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
<opc:ObjectType SymbolicName="AuthorizationServiceType" BaseType="ua:BaseObjectType">
<opc:Children>
<opc:Property SymbolicName="ServiceUri" DataType="ua:String" ValueRank="Scalar" ModellingRule="Mandatory" />
<opc:Property SymbolicName="ServiceCertificate" DataType="ua:ByteString" ValueRank="Scalar" ModellingRule="Mandatory" />
<opc:Property SymbolicName="UserTokenPolicies" DataType="ua:UserTokenPolicy" ValueRank="Array" ModellingRule="Optional" />
<opc:Property SymbolicName="SupportedRoles" DataType="ua:String" ValueRank="Array" ModellingRule="Optional" ReleaseStatus="RC" />
<opc:Method SymbolicName="GetServiceDescription" TypeDefinition="GetServiceDescriptionMethodType" ModellingRule="Mandatory" />
<opc:Method SymbolicName="RequestAccessToken" TypeDefinition="RequestAccessTokenMethodType" ModellingRule="Optional" />
<opc:Method SymbolicName="StartRequestToken" TypeDefinition="StartRequestTokenMethodType" ModellingRule="Optional" ReleaseStatus="RC" />
<opc:Method SymbolicName="FinishRequestToken" TypeDefinition="FinishRequestTokenMethodType" ModellingRule="Optional" ReleaseStatus="RC" />
<opc:Method SymbolicName="RefreshToken" TypeDefinition="RefreshTokenMethodType" ModellingRule="Optional" ReleaseStatus="RC" />
</opc:Children>
<opc:References>
<opc:Reference>
<opc:ReferenceType>ua:GeneratesEvent</opc:ReferenceType>
<opc:TargetId>AccessTokenRequestedAuditEventType</opc:TargetId>
</opc:Reference>
<opc:Reference>
<opc:ReferenceType>ua:GeneratesEvent</opc:ReferenceType>
<opc:TargetId>AccessTokenIssuedAuditEventType</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:ObjectType>
<opc:Method SymbolicName="GetServiceDescriptionMethodType">
<opc:OutputArguments>
<opc:Argument Name="ServiceUri" DataType="ua:String"></opc:Argument>
<opc:Argument Name="ServiceCertificate" DataType="ua:ByteString"></opc:Argument>
<opc:Argument Name="UserTokenPolicies" DataType="ua:UserTokenPolicy" ValueRank="Array"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="RequestAccessTokenMethodType">
<opc:InputArguments>
<opc:Argument Name="IdentityToken" DataType="ua:UserIdentityToken"></opc:Argument>
<opc:Argument Name="ResourceId" DataType="ua:String"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="AccessToken" DataType="ua:String"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="StartRequestTokenMethodType" ReleaseStatus="RC">
<opc:InputArguments>
<opc:Argument Name="ResourceId" DataType="ua:String"></opc:Argument>
<opc:Argument Name="PolicyId" DataType="ua:String"></opc:Argument>
<opc:Argument Name="RequestorData" DataType="ua:ByteString"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="ServiceData" DataType="ua:ByteString"></opc:Argument>
<opc:Argument Name="RequestId" DataType="ua:Guid"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="FinishRequestTokenMethodType" ReleaseStatus="RC">
<opc:InputArguments>
<opc:Argument Name="RequestId" DataType="ua:Guid"></opc:Argument>
<opc:Argument Name="RequestedRoles" DataType="ua:String" ValueRank="Array"></opc:Argument>
<opc:Argument Name="UserIdentityToken" DataType="ua:UserIdentityToken"></opc:Argument>
<opc:Argument Name="UserTokenSignature" DataType="ua:SignatureData"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="AccessToken" DataType="ua:String"></opc:Argument>
<opc:Argument Name="AccessTokenExpiryTime" DataType="ua:DateTime"></opc:Argument>
<opc:Argument Name="RefreshToken" DataType="ua:String"></opc:Argument>
<opc:Argument Name="RefreshTokenExpiryTime" DataType="ua:DateTime"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:Method SymbolicName="RefreshTokenMethodType" ReleaseStatus="RC">
<opc:InputArguments>
<opc:Argument Name="ResourceId" DataType="ua:String"></opc:Argument>
<opc:Argument Name="CurrentRefreshToken" DataType="ua:String"></opc:Argument>
</opc:InputArguments>
<opc:OutputArguments>
<opc:Argument Name="AccessToken" DataType="ua:String"></opc:Argument>
<opc:Argument Name="AccessTokenExpiryTime" DataType="ua:DateTime"></opc:Argument>
<opc:Argument Name="NewRefreshToken" DataType="ua:String"></opc:Argument>
<opc:Argument Name="NewRefreshTokenExpiryTime" DataType="ua:DateTime"></opc:Argument>
</opc:OutputArguments>
</opc:Method>
<opc:ObjectType SymbolicName="AccessTokenRequestedAuditEventType" BaseType="ua:AuditUpdateMethodEventType" IsAbstract="true" PartNo="12" ReleaseStatus="RC">
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:ObjectType SymbolicName="AccessTokenIssuedAuditEventType" BaseType="ua:AuditUpdateMethodEventType" IsAbstract="true" PartNo="12">
<opc:RolePermissions Name="AuditEventDefaultPermissions" />
</opc:ObjectType>
<opc:Object SymbolicName="Directory" TypeDefinition="CertificateDirectoryType">
<opc:Children>
<opc:Method SymbolicName="RevokeCertificate" ModellingRule="Mandatory" />
<opc:Method SymbolicName="GetCertificates" ModellingRule="Mandatory" />
<opc:Method SymbolicName="CheckRevocationStatus" ModellingRule="Mandatory" />
<opc:Object SymbolicName="CertificateGroups" ModellingRule="Mandatory">
<opc:Children>
<opc:Object SymbolicName="ua:DefaultApplicationGroup" ModellingRule="Mandatory">
<opc:Children>
<opc:Object SymbolicName="ua:TrustList" ModellingRule="Mandatory">
<opc:Children>
<opc:Method SymbolicName="ua:OpenWithMasks" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:CloseAndUpdate" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddCertificate" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveCertificate" ModellingRule="Mandatory" />
</opc:Children>
</opc:Object>
</opc:Children>
</opc:Object>
<opc:Object SymbolicName="ua:DefaultHttpsGroup" ModellingRule="Mandatory">
<opc:Children>
<opc:Object SymbolicName="ua:TrustList" ModellingRule="Mandatory">
<opc:Children>
<opc:Method SymbolicName="ua:OpenWithMasks" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:CloseAndUpdate" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddCertificate" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveCertificate" ModellingRule="Mandatory" />
</opc:Children>
</opc:Object>
</opc:Children>
</opc:Object>
<opc:Object SymbolicName="ua:DefaultUserTokenGroup" ModellingRule="Mandatory">
<opc:Children>
<opc:Object SymbolicName="ua:TrustList" ModellingRule="Mandatory">
<opc:Children>
<opc:Method SymbolicName="ua:OpenWithMasks" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:CloseAndUpdate" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:AddCertificate" ModellingRule="Mandatory" />
<opc:Method SymbolicName="ua:RemoveCertificate" ModellingRule="Mandatory" />
</opc:Children>
</opc:Object>
</opc:Children>
</opc:Object>
</opc:Children>
<opc:ReferenceType>ua:Organizes</opc:ReferenceType>
</opc:Object>
</opc:Children>
<opc:References>
<opc:Reference IsInverse="true">
<opc:ReferenceType>ua:Organizes</opc:ReferenceType>
<opc:TargetId>ua:ObjectsFolder</opc:TargetId>
</opc:Reference>
</opc:References>
</opc:Object>
</opc:ModelDesign>