internal static bool TryGetStepOne( X509 currentCerts, X509 targetCerts, CertificateClusterUpgradeStep previousStep, out CertificateClusterUpgradeStep step) { // step 1 adds all newly added certs and issuers (if any) to the white list step = null; List <string> currentThumbprints = CertificateClusterUpgradeFlow.GetThumbprints(currentCerts.ClusterCertificate); List <string> addedThumbprints = CertificateClusterUpgradeFlow.GetAddedThumbprints(currentCerts.ClusterCertificate, targetCerts.ClusterCertificate); Dictionary <string, string> currentCns = CertificateClusterUpgradeFlow.GetCns(currentCerts.ClusterCertificateCommonNames); Dictionary <string, string> addedCnsAndIssuers = CertificateClusterUpgradeFlow.GetAddedCnsAndIssuers(currentCerts.ClusterCertificateCommonNames, targetCerts.ClusterCertificateCommonNames); if (addedThumbprints.Any() || addedCnsAndIssuers.Any()) { step = new CertificateClusterUpgradeStep( thumbprintWhiteList: currentThumbprints.Concat(addedThumbprints).ToList(), thumbprintLoadList: currentCerts.ClusterCertificate, thumbprintFileStoreSvcList: currentCerts.ClusterCertificate, commonNameWhiteList: CertificateClusterUpgradeFlow.MergeCnsAndIssuers(currentCns, addedCnsAndIssuers), commonNameLoadList: currentCerts.ClusterCertificateCommonNames, commonNameFileStoreSvcList: currentCerts.ClusterCertificateCommonNames); } return(true); }