Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
                }
            }
        }