public void TestBasicFunctionality()
        {
            var certs = SecureMimeTestsBase.LoadPkcs12CertificateChain(GetTestDataPath("smime.pfx"), "no.secret");
            var chain = new X509CertificateChain();

            Assert.IsFalse(chain.IsReadOnly);
            Assert.AreEqual(0, chain.Count, "Initial count");

            chain.Add(certs[2]);

            Assert.AreEqual(1, chain.Count);
            Assert.AreEqual(certs[2], chain[0]);

            chain.Insert(0, certs[0]);
            chain.Insert(1, certs[1]);

            Assert.AreEqual(3, chain.Count);
            Assert.AreEqual(certs[0], chain[0]);
            Assert.AreEqual(certs[1], chain[1]);
            Assert.AreEqual(certs[2], chain[2]);

            Assert.IsTrue(chain.Contains(certs[1]), "Contains");
            Assert.AreEqual(1, chain.IndexOf(certs[1]), "IndexOf");

            var array = new X509Certificate[chain.Count];

            chain.CopyTo(array, 0);
            chain.Clear();

            Assert.AreEqual(0, chain.Count);

            foreach (var cert in array)
            {
                chain.Add(cert);
            }

            Assert.AreEqual(array.Length, chain.Count);

            Assert.IsTrue(chain.Remove(certs[2]));
            Assert.AreEqual(2, chain.Count);
            Assert.AreEqual(certs[0], chain[0]);
            Assert.AreEqual(certs[1], chain[1]);

            chain.RemoveAt(0);

            Assert.AreEqual(1, chain.Count);
            Assert.AreEqual(certs[1], chain[0]);

            chain[0] = certs[2];

            Assert.AreEqual(1, chain.Count);
            Assert.AreEqual(certs[2], chain[0]);
        }
        public void TestAddRemoveRange()
        {
            var certificates = new List <X509Certificate> ();
            var chain        = new X509CertificateChain();

            foreach (var authority in CertificateAuthorities)
            {
                var certificate = SecureMimeTestsBase.LoadCertificate(GetTestDataPath(authority));

                certificates.Add(certificate);
            }

            Assert.Throws <ArgumentNullException> (() => chain.AddRange(null));

            chain.AddRange(certificates);

            Assert.AreEqual(CertificateAuthorities.Length, chain.Count, "Unexpected number of certificates after AddRange.");

            int index = 0;

            foreach (var certificate in chain)
            {
                Assert.AreEqual(certificates[index++], certificate, "GetEnumerator");
            }

            index = 0;
            foreach (X509Certificate certificate in ((IEnumerable)chain))
            {
                Assert.AreEqual(certificates[index++], certificate, "GetEnumerator");
            }

            Assert.Throws <ArgumentNullException> (() => chain.RemoveRange(null));

            chain.RemoveRange(certificates);

            Assert.AreEqual(0, chain.Count, "Unexpected number of certificates after RemoveRange.");
        }
Example #3
0
        public SqliteCertificateDatabaseTests()
        {
            dataDir = Path.Combine("..", "..", "TestData", "smime");
            var path = Path.Combine(dataDir, "smime.pfx");

            if (File.Exists("sqlite.db"))
            {
                File.Delete("sqlite.db");
            }

            chain = SecureMimeTestsBase.LoadPkcs12CertificateChain(path, "no.secret");

            using (var ctx = new DefaultSecureMimeContext("sqlite.db", "no.secret")) {
                foreach (var filename in StartComCertificates)
                {
                    path = Path.Combine(dataDir, filename);
                    using (var stream = File.OpenRead(path))
                        ctx.Import(stream, true);
                }

                path = Path.Combine(dataDir, "smime.pfx");
                ctx.Import(path, "no.secret");
            }
        }