Example #1
0
        static void AssertDSA(DSA dsa)
        {
            // first, check private key conversion
            var expected     = dsa.ExportParameters(true);
            var keyParameter = dsa.AsAsymmetricKeyParameter();
            DSA asymmetricAlgorithm;

            try {
                asymmetricAlgorithm = keyParameter.AsAsymmetricAlgorithm() as DSA;
            } catch {
                Console.WriteLine("System.Security DSA X parameter = {0}", expected.X.AsHex());
                Console.WriteLine("Bouncy Castle DSA X parameter   = {0}", ((DsaPrivateKeyParameters)keyParameter).X.ToByteArrayUnsigned().AsHex());
                throw;
            }

            var actual = asymmetricAlgorithm.ExportParameters(true);

            Assert.AreEqual(expected.Counter, actual.Counter, "Counter");
            AssertAreEqual(expected.Seed, actual.Seed, "Seed");
            AssertAreEqual(expected.G, actual.G, "G");
            AssertAreEqual(expected.P, actual.P, "P");
            AssertAreEqual(expected.Q, actual.Q, "Q");
            AssertAreEqual(expected.X, actual.X, "X");
            AssertAreEqual(expected.Y, actual.Y, "Y");

            // test AsymmetricCipherKeyPair conversion
            var keyPair = dsa.AsAsymmetricCipherKeyPair();

            asymmetricAlgorithm = keyPair.AsAsymmetricAlgorithm() as DSA;
            actual = asymmetricAlgorithm.ExportParameters(true);

            Assert.AreEqual(expected.Counter, actual.Counter, "Counter");
            AssertAreEqual(expected.Seed, actual.Seed, "Seed");
            AssertAreEqual(expected.G, actual.G, "G");
            AssertAreEqual(expected.P, actual.P, "P");
            AssertAreEqual(expected.Q, actual.Q, "Q");
            AssertAreEqual(expected.X, actual.X, "X");
            AssertAreEqual(expected.Y, actual.Y, "Y");

            // test public key conversion
            expected = dsa.ExportParameters(false);
            var pubdsa = new DSACryptoServiceProvider();

            pubdsa.ImportParameters(expected);

            keyParameter        = pubdsa.AsAsymmetricKeyParameter();
            asymmetricAlgorithm = keyParameter.AsAsymmetricAlgorithm() as DSA;
            actual = asymmetricAlgorithm.ExportParameters(false);

            Assert.AreEqual(expected.Counter, actual.Counter, "Counter");
            AssertAreEqual(expected.Seed, actual.Seed, "Seed");
            AssertAreEqual(expected.G, actual.G, "G");
            AssertAreEqual(expected.P, actual.P, "P");
            AssertAreEqual(expected.Q, actual.Q, "Q");
            AssertAreEqual(expected.X, actual.X, "X");
            AssertAreEqual(expected.Y, actual.Y, "Y");
        }
        static void AssertDSA(DSA dsa)
        {
            // first, check private key conversion
            var expected            = dsa.ExportParameters(true);
            var keyParameter        = dsa.AsAsymmetricKeyParameter();
            var asymmetricAlgorithm = keyParameter.AsAsymmetricAlgorithm() as DSA;
            var actual = asymmetricAlgorithm.ExportParameters(true);

            Assert.AreEqual(expected.Counter, actual.Counter, "Counter");
            AssertAreEqual(expected.Seed, actual.Seed, "Seed");
            AssertAreEqual(expected.G, actual.G, "G");
            AssertAreEqual(expected.P, actual.P, "P");
            AssertAreEqual(expected.Q, actual.Q, "Q");
            AssertAreEqual(expected.X, actual.X, "X");
            AssertAreEqual(expected.Y, actual.Y, "Y");

            // test AsymmetricCipherKeyPair conversion
            var keyPair = dsa.AsAsymmetricCipherKeyPair();

            asymmetricAlgorithm = keyPair.AsAsymmetricAlgorithm() as DSA;
            actual = asymmetricAlgorithm.ExportParameters(true);

            Assert.AreEqual(expected.Counter, actual.Counter, "Counter");
            AssertAreEqual(expected.Seed, actual.Seed, "Seed");
            AssertAreEqual(expected.G, actual.G, "G");
            AssertAreEqual(expected.P, actual.P, "P");
            AssertAreEqual(expected.Q, actual.Q, "Q");
            AssertAreEqual(expected.X, actual.X, "X");
            AssertAreEqual(expected.Y, actual.Y, "Y");

            // test public key conversion
            expected = dsa.ExportParameters(false);
            var pubdsa = new DSACryptoServiceProvider();

            pubdsa.ImportParameters(expected);

            keyParameter        = pubdsa.AsAsymmetricKeyParameter();
            asymmetricAlgorithm = keyParameter.AsAsymmetricAlgorithm() as DSA;
            actual = asymmetricAlgorithm.ExportParameters(false);

            Assert.AreEqual(expected.Counter, actual.Counter, "Counter");
            AssertAreEqual(expected.Seed, actual.Seed, "Seed");
            AssertAreEqual(expected.G, actual.G, "G");
            AssertAreEqual(expected.P, actual.P, "P");
            AssertAreEqual(expected.Q, actual.Q, "Q");
            AssertAreEqual(expected.X, actual.X, "X");
            AssertAreEqual(expected.Y, actual.Y, "Y");
        }