// 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;
             }
         }
     }
 }