// Token: 0x0600000A RID: 10 RVA: 0x000029E4 File Offset: 0x00000BE4 private void PullCertificate(List <TopologyServer> sourceServers, List <CertificateRecord> certsNeeded, Server destinationServer) { foreach (TopologyServer topologyServer in sourceServers) { Servicelet.Tracer.TraceDebug <TopologyServer>((long)this.GetHashCode(), "Testing Server: {0}", topologyServer); if (!destinationServer.Id.Equals(topologyServer.Id)) { List <CertificateRecord> list = new List <CertificateRecord>(); foreach (CertificateRecord certificateRecord in certsNeeded) { Servicelet.Tracer.TraceDebug <string>((long)this.GetHashCode(), "Testing Cert: {0}", certificateRecord.Thumbprint); SecureString securePassword = FederationCertificate.GeneratePassword(); try { string base64cert = FederationCertificate.ExportCertificate(topologyServer.Name, securePassword, certificateRecord.Thumbprint); FederationCertificate.ImportCertificate(destinationServer.Name, securePassword, base64cert); FederationCertificate.EnableCertificateForNetworkService(destinationServer.Name, certificateRecord.Thumbprint); list.Add(certificateRecord); this.eventLogger.LogEvent(MSExchangeCertificateDeploymentEventLogConstants.Tuple_InstalledCertificate, null, new object[] { certificateRecord, topologyServer.Name }); } catch (LocalizedException arg) { Servicelet.Tracer.TraceError <LocalizedException>((long)this.GetHashCode(), "Failed to Export/Import: {0}", arg); } catch (InvalidOperationException arg2) { Servicelet.Tracer.TraceError <InvalidOperationException>((long)this.GetHashCode(), "Failed to Export/Import: {0}", arg2); } } foreach (CertificateRecord certificateRecord2 in list) { Servicelet.Tracer.TraceDebug <string>((long)this.GetHashCode(), "Succesfully Retrieved: {0}", certificateRecord2.Thumbprint); certsNeeded.Remove(certificateRecord2); } if (certsNeeded.Count == 0) { break; } } } }