public static void AddToDiscoveryServerTrustList(
X509Certificate2 certificate,
string oldThumbprint,
IList<X509Certificate2> issuers,
CertificateStoreIdentifier trustedCertificateStore)
{
Utils.Trace(Utils.TraceMasks.Information, "Adding certificate to discovery server trust list.");
try
{
string configurationPath = Utils.GetAbsoluteFilePath(@"%CommonApplicationData%\OPC Foundation\Config\Opc.Ua.DiscoveryServer.Config.xml", true, false, false);
if (configurationPath == null)
{
throw new ServiceResultException("Could not find the discovery server configuration file. Please confirm that it is installed.");
}
Opc.Ua.Security.SecuredApplication ldsConfiguration = new Opc.Ua.Security.SecurityConfigurationManager().ReadConfiguration(configurationPath);
CertificateStoreIdentifier csid = Opc.Ua.Security.SecuredApplication.FromCertificateStoreIdentifier(ldsConfiguration.TrustedCertificateStore);
AddApplicationCertificateToStore(csid, certificate, oldThumbprint);
if (issuers != null && ldsConfiguration.IssuerCertificateStore != null)
{
csid = Opc.Ua.Security.SecuredApplication.FromCertificateStoreIdentifier(ldsConfiguration.IssuerCertificateStore);
AddIssuerCertificatesToStore(csid, issuers);
}
CertificateIdentifier cid = Opc.Ua.Security.SecuredApplication.FromCertificateIdentifier(ldsConfiguration.ApplicationCertificate);
X509Certificate2 ldsCertificate = cid.Find(false);
// add LDS certificate to application trust list.
if (ldsCertificate != null && trustedCertificateStore != null)
{
AddApplicationCertificateToStore(csid, ldsCertificate, null);
}
}
catch (Exception e)
{
Utils.Trace(e, "Could not add certificate to discovery server trust list.");
}
}