Пример #1
0
        public void ShouldSignAndVerifyMessageWithoutKey()
        {
            EllipticCurveDsa ellipticCurveDsa     = new EllipticCurveDsa("1.2.840.10045.3.1.7", EllipticCurveAlgorithm.EcDsaSha2Nistp256);
            EllipticCurveDsa ellipticCurveDsaFake = new EllipticCurveDsa("1.2.840.10045.3.1.7", EllipticCurveAlgorithm.EcDsaSha2Nistp256);

            byte[] message = new BigInteger("968236873715988614170569073515315707566766479517").ToByteArray();

            byte[] signature = ellipticCurveDsa.SignMessage(message);


            bool isCorrect = ellipticCurveDsa.VerifyMessage(message, signature);

            bool isFake = ellipticCurveDsaFake.VerifyMessage(message, signature);

            Assert.True(isCorrect, "Signature does not match message");
            Assert.False(isFake, "Fake Signature does not match message");

            //Both values will not be true because no common keys were used in building the curves
        }
Пример #2
0
        public void ShouldSignAndVerifyMessage()
        {
            EllipticCurveAlgorithm curve = EllipticCurveAlgorithm.Create(EllipticCurveAlgorithm.EcDsaSha2Nistp256);
            var privateKey = curve.GetPrivateKey();
            EllipticCurveDsa ellipticCurveDsa = new EllipticCurveDsa("1.2.840.10045.3.1.7", EllipticCurveAlgorithm.EcDsaSha2Nistp256);

            ellipticCurveDsa.FromPrivateKey(privateKey);
            EllipticCurveDsa ellipticCurveDsaFake = new EllipticCurveDsa("1.2.840.10045.3.1.7", EllipticCurveAlgorithm.EcDsaSha2Nistp256);

            ellipticCurveDsaFake.FromPrivateKey(privateKey);

            byte[] message = new BigInteger("968236873715988614170569073515315707566766479517").ToByteArray();

            byte[] signature = ellipticCurveDsa.SignMessage(message);


            bool isCorrect = ellipticCurveDsa.VerifyMessage(message, signature);

            bool isFake = ellipticCurveDsaFake.VerifyMessage(message, signature);

            Assert.Equal(isCorrect, isFake);

            //Both values are true because the curves were built from the same private key
        }