private async Task RefreshAvailableCertificates() { try { if (this.AvailableCertificates == null) { return; } this.AvailableCertificates.Clear(); if (this.SelectedForest == null) { return; } var allCertificates = certificateProvider.GetEligibleCertificates(false).OfType <X509Certificate2>(); this.certificateProvider.TryGetCertificateFromDirectory(out X509Certificate2 publishedCert, this.SelectedForest.RootDomain.Name); bool foundPublished = false; foreach (var certificate in allCertificates) { var vm = this.certificate2ViewModelFactory.CreateViewModel(certificate); if (certificate.Thumbprint == publishedCert?.Thumbprint) { vm.IsPublished = true; foundPublished = true; } if (certificate.Subject.StartsWith($"CN={this.SelectedForest.RootDomain.Name}", StringComparison.OrdinalIgnoreCase)) { this.AvailableCertificates.Add(vm); } } if (!foundPublished && publishedCert != null) { var vm = this.certificate2ViewModelFactory.CreateViewModel(publishedCert); vm.IsOrphaned = true; vm.IsPublished = true; this.AvailableCertificates.Add(vm); } } catch (Exception ex) { logger.LogError(EventIDs.UIGenericError, ex, "Could not load certificate list"); await this.dialogCoordinator.ShowMessageAsync(this, "Error", $"Could not refresh the certificate list\r\n{ex.Message}"); } }