public ImportResult( CertStoreId storeId, IReadOnlyList <X509Certificate> added, IReadOnlyList <X509Certificate> removed) { StoreId = storeId; Added = added; Removed = removed; }
ImportResult ImportToStore(CertStoreId storeId, X509CertificateCollection roots, X509Store store) { var addedResult = new List <X509Certificate>(); var removedResult = new List <X509Certificate>(); var trusted = store.Certificates; Log("I already trust {0}, your new list has {1}", trusted.Count, roots.Count); foreach (var root in roots) { if (!trusted.Contains(root)) { try { store.Import(root); Log("Certificate added: {0}", root.SubjectName); addedResult.Add(root); } catch (Exception e) { Log("Warning: Could not import {0}", root.SubjectName); Log(e.ToString()); } } } if (addedResult.Count > 0) { Log("{0} new root certificates were added to your trust store.", addedResult.Count); } var removed = new X509CertificateCollection(); foreach (var trust in trusted) { if (!roots.Contains(trust)) { removed.Add(trust); removedResult.Add(trust); } } if (removed.Count > 0) { Log("{0} previously trusted certificates were removed.", removed.Count); foreach (var old in removed) { store.Remove(old); Log("Certificate removed: {0}", old.SubjectName); } } Log("Import process completed."); return(new ImportResult(storeId, addedResult, removedResult)); }