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 }
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 }