Beispiel #1
0
        public void DsaTest()
        {
            string publicKey;
            string privateKey;
            string testData;

            byte[] bytes;
            byte[] sign;

            testData = "Hello World! ppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppppppppppppppppppppppp" +
                       "pppppppppppppppppppppp";
            Dsa dsa = new Dsa();

            (publicKey, privateKey) = dsa.CreateKey();

            bytes = Encoding.UTF8.GetBytes(testData);

            sign = dsa.Sign(bytes, privateKey);
            if (sign.Equals(testData))
            {
                Assert.Fail("署名に失敗");
            }

            if (!dsa.Verify(bytes, sign, publicKey))
            {
                Assert.Fail("検証に失敗");
            }

            bytes[0] = 100;
            bytes[1] = 200;
            if (dsa.Verify(bytes, sign, publicKey))
            {
                Assert.Fail("改ざんされているのに検証に成功");
            }
        }
        private void verifyBtn_Click(object sender, EventArgs e)
        {
            dsInput.Text = string.Empty;
            if (string.IsNullOrWhiteSpace(FilePath))
            {
                MessageBox.Show("Error: Choose a file.");
                return;
            }
            if (string.IsNullOrWhiteSpace(SignaturePath))
            {
                MessageBox.Show("Error: Choose a file with signature.");
                return;
            }

            try
            {
                var signatureContent = File.ReadAllText(SignaturePath);
                var signTuple        = DsaSerializer.Deserialize(signatureContent);

                dsInput.Text = signTuple.ToString();

                var verifyResult = dsa.Verify(MessageBytes, signTuple.Item1, signTuple.Item2);
                if (verifyResult)
                {
                    MessageBox.Show("File is valid!");
                }
                else
                {
                    MessageBox.Show("File is invalid!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: Signature file is corrupt.");
                return;
            }
        }