private static bool TryReadFirstBundle( IReadOnlyList <string> probePaths, out X509Certificate2Collection certificates, out string successfulProbePath) { certificates = null; successfulProbePath = null; var oneProbePath = new string[1]; foreach (string probePath in probePaths) { oneProbePath[0] = probePath; if (SystemCertificateBundleX509ChainFactory.TryCreate( oneProbePath, out SystemCertificateBundleX509ChainFactory factory)) { certificates = factory.Certificates; successfulProbePath = probePath; return(true); } } return(false); }
public void TryCreate_WhenFilePathDoesNotExist_ReturnsFalse() { FileInfo nonexistentFile = new(Path.Combine(_directory.Path, "certificates.bundle")); bool wasCreated = SystemCertificateBundleX509ChainFactory.TryCreate( new[] { nonexistentFile.FullName }, out SystemCertificateBundleX509ChainFactory factory); Assert.False(wasCreated); Assert.Null(factory); }
public void TryCreate_WhenFilePathExists_ReturnsTrue(int indexOfMatch) { using (X509Certificate2 certificate = _fixture.GetDefaultCertificate()) { var files = new FileInfo[2] { new(Path.Combine(_directory.Path, "0.bundle")), new(Path.Combine(_directory.Path, "1.bundle")) }; CreateBundleFile(files[indexOfMatch], certificate); bool wasCreated = SystemCertificateBundleX509ChainFactory.TryCreate( files.Select(file => file.FullName).ToArray(), out SystemCertificateBundleX509ChainFactory factory); Assert.True(wasCreated); Assert.Equal(1, factory.Certificates.Count); Assert.Equal(certificate.Thumbprint, factory.Certificates[0].Thumbprint); } }
public void Create_Always_ReturnsInstance() { using (X509Certificate2 certificate = _fixture.GetDefaultCertificate()) { FileInfo bundleFile = new(Path.Combine(_directory.Path, "certificates.bundle")); CreateBundleFile(bundleFile, certificate); bool wasCreated = SystemCertificateBundleX509ChainFactory.TryCreate( new[] { bundleFile.FullName }, out SystemCertificateBundleX509ChainFactory factory); Assert.True(wasCreated); using (X509Chain chain = factory.Create()) { Assert.Equal(X509ChainTrustMode.CustomRootTrust, chain.ChainPolicy.TrustMode); Assert.Equal(1, chain.ChainPolicy.CustomTrustStore.Count); Assert.Equal(certificate.Thumbprint, chain.ChainPolicy.CustomTrustStore[0].Thumbprint); } } }