internal static List <ChainValidityStatus> ValidateCertificates(List <string> trustedCertificateList, List <string> certificateChainList, List <string> certificateList, bool checkCRL, int hashCodeForTracing, MailboxLogger mailboxLogger, bool againstADConfiguration, string organizationId) { X509Store trustedStore = CertificateManager.AddChainCertsToStore(trustedCertificateList, hashCodeForTracing); X509Store chainBuildStore = CertificateManager.AddChainCertsToStore(certificateChainList, hashCodeForTracing); List <ChainValidityStatus> list = new List <ChainValidityStatus>(certificateList.Count); foreach (string text in certificateList) { ChainContext chainContext = null; try { X509Certificate2 certificate = new X509Certificate2(Convert.FromBase64String(text)); ChainValidityStatus item = X509CertificateCollection.ValidateCertificate(certificate, null, X509KeyUsageFlags.NonRepudiation | X509KeyUsageFlags.DigitalSignature, checkCRL, trustedStore, chainBuildStore, ref chainContext, againstADConfiguration, organizationId); list.Add(item); } catch (CryptographicException ex) { if (mailboxLogger != null) { mailboxLogger.SetData(MailboxLogDataName.ValidateCertCommand_ProcessCommand_Per_Cert_Exception, ex.ToString()); } AirSyncDiagnostics.TraceError <string, CryptographicException>(ExTraceGlobals.RequestTracer, null, "Failed to validate certificate: '{0}', Error: '{1}'", text, ex); list.Add((ChainValidityStatus)2148098052U); } finally { if (chainContext != null) { chainContext.Dispose(); } } } return(list); }