public Update ( |
||
issuerStore | ||
trustedStore | ||
rejectedCertificateStore | CertificateStoreIdentifier | |
return | void |
public virtual void Update(
CertificateTrustList issuerStore,
CertificateTrustList trustedStore,
CertificateStoreIdentifier rejectedCertificateStore)
{
lock (m_lock)
{
m_validatedCertificates.Clear();
m_trustedCertificateStore = null;
m_trustedCertificateList = null;
if (trustedStore != null)
{
m_trustedCertificateStore = new CertificateStoreIdentifier();
m_trustedCertificateStore.StoreType = trustedStore.StoreType;
m_trustedCertificateStore.StorePath = trustedStore.StorePath;
m_trustedCertificateStore.ValidationOptions = trustedStore.ValidationOptions;
if (trustedStore.TrustedCertificates != null)
{
m_trustedCertificateList = new CertificateIdentifierCollection();
m_trustedCertificateList.AddRange(trustedStore.TrustedCertificates);
}
}
m_issuerCertificateStore = null;
m_issuerCertificateList = null;
if (issuerStore != null)
{
m_issuerCertificateStore = new CertificateStoreIdentifier();
m_issuerCertificateStore.StoreType = issuerStore.StoreType;
m_issuerCertificateStore.StorePath = issuerStore.StorePath;
m_issuerCertificateStore.ValidationOptions = issuerStore.ValidationOptions;
if (issuerStore.TrustedCertificates != null)
{
m_issuerCertificateList = new CertificateIdentifierCollection();
m_issuerCertificateList.AddRange(issuerStore.TrustedCertificates);
}
}
m_rejectedCertificateStore = null;
if (rejectedCertificateStore != null)
{
m_rejectedCertificateStore = (CertificateStoreIdentifier)rejectedCertificateStore.MemberwiseClone();
}
}
}
/// <summary> /// Ensures that the application configuration is valid. /// </summary> /// <param name="applicationType">Type of the application.</param> public virtual async Task Validate(ApplicationType applicationType) { if (String.IsNullOrEmpty(ApplicationName)) { throw ServiceResultException.Create(StatusCodes.BadConfigurationError, "ApplicationName must be specified."); } if (SecurityConfiguration == null) { throw ServiceResultException.Create(StatusCodes.BadConfigurationError, "SecurityConfiguration must be specified."); } SecurityConfiguration.Validate(); // generate a default uri if null if (String.IsNullOrEmpty(ApplicationUri)) { StringBuilder buffer = new StringBuilder(); buffer.Append("urn:"); buffer.Append(Utils.GetHostName()); buffer.Append(":"); buffer.Append(ApplicationName); m_applicationUri = buffer.ToString(); } // load app cert await SecurityConfiguration.ApplicationCertificate.LoadApplicationCertificate(m_applicationUri, null); if (applicationType == ApplicationType.Client || applicationType == ApplicationType.ClientAndServer) { if (ClientConfiguration == null) { throw ServiceResultException.Create(StatusCodes.BadConfigurationError, "ClientConfiguration must be specified."); } ClientConfiguration.Validate(); } if (applicationType == ApplicationType.Server || applicationType == ApplicationType.ClientAndServer) { if (ServerConfiguration == null) { throw ServiceResultException.Create(StatusCodes.BadConfigurationError, "ServerConfiguration must be specified."); } ServerConfiguration.Validate(); } if (applicationType == ApplicationType.DiscoveryServer) { if (DiscoveryServerConfiguration == null) { throw ServiceResultException.Create(StatusCodes.BadConfigurationError, "DiscoveryServerConfiguration must be specified."); } DiscoveryServerConfiguration.Validate(); } // toggle the state of the hi-res clock. HiResClock.Disabled = m_disableHiResClock; if (m_disableHiResClock) { if (m_serverConfiguration != null) { if (m_serverConfiguration.PublishingResolution < 50) { m_serverConfiguration.PublishingResolution = 50; } } } // create the certificate validator. m_certificateValidator = new CertificateValidator(); await m_certificateValidator.Update(this.SecurityConfiguration); }