/// <summary>
/// Updates the XML document with the new configuration information.
/// </summary>
private static void UpdateDocument(XmlElement element, SecuredApplication application)
{
for (XmlNode node = element.FirstChild; node != null; node = node.NextSibling)
{
if (node.Name == "ApplicationName" && node.NamespaceURI == Namespaces.OpcUaConfig)
{
node.InnerText = application.ApplicationName;
continue;
}
if (node.Name == "ApplicationUri" && node.NamespaceURI == Namespaces.OpcUaConfig)
{
node.InnerText = application.ApplicationUri;
continue;
}
if (node.Name == "SecurityConfiguration" && node.NamespaceURI == Namespaces.OpcUaConfig)
{
SecurityConfiguration security = (SecurityConfiguration)GetObject(typeof(SecurityConfiguration), node);
if (application.ApplicationCertificate != null)
{
security.ApplicationCertificate = SecuredApplication.FromCertificateIdentifier(application.ApplicationCertificate);
}
security.TrustedIssuerCertificates = SecuredApplication.FromCertificateStoreIdentifierToTrustList(application.IssuerCertificateStore);
security.TrustedIssuerCertificates.TrustedCertificates = SecuredApplication.FromCertificateList(application.IssuerCertificates);
security.TrustedPeerCertificates = SecuredApplication.FromCertificateStoreIdentifierToTrustList(application.TrustedCertificateStore);
security.TrustedPeerCertificates.TrustedCertificates = SecuredApplication.FromCertificateList(application.TrustedCertificates);
security.RejectedCertificateStore = SecuredApplication.FromCertificateStoreIdentifier(application.RejectedCertificatesStore);
node.InnerXml = SetObject(typeof(SecurityConfiguration), security);
continue;
}
if (node.Name == "ServerConfiguration" && node.NamespaceURI == Namespaces.OpcUaConfig)
{
ServerConfiguration configuration = (ServerConfiguration)GetObject(typeof(ServerConfiguration), node);
SecuredApplication.FromListOfBaseAddresses(configuration, application.BaseAddresses);
configuration.SecurityPolicies = SecuredApplication.FromListOfSecurityProfiles(application.SecurityProfiles);
node.InnerXml = SetObject(typeof(ServerConfiguration), configuration);
continue;
}
else if (node.Name == "DiscoveryServerConfiguration" && node.NamespaceURI == Namespaces.OpcUaConfig)
{
DiscoveryServerConfiguration configuration = (DiscoveryServerConfiguration)GetObject(typeof(DiscoveryServerConfiguration), node);
SecuredApplication.FromListOfBaseAddresses(configuration, application.BaseAddresses);
configuration.SecurityPolicies = SecuredApplication.FromListOfSecurityProfiles(application.SecurityProfiles);
node.InnerXml = SetObject(typeof(DiscoveryServerConfiguration), configuration);
continue;
}
}
}