public void End2EndVerificationSimple(uint scalarSeed)
        {
            var secret          = new Scalar(scalarSeed);
            var generator       = Generators.G;
            var publicPoint     = secret * generator;
            var statement       = new Statement(publicPoint, generator);
            var knowledgeParams = new KnowledgeOfDlogParams(secret, statement);
            var proof           = Prover.CreateProof(knowledgeParams);

            Assert.True(Verifier.Verify(proof, statement));
        }
 public void End2EndVerification()
 {
     foreach (var secret in CryptoHelpers.GetScalars(x => !x.IsOverflow && !x.IsZero))
     {
         var generator       = Generators.G;
         var publicPoint     = secret * generator;
         var statement       = new Statement(publicPoint, generator);
         var knowledgeParams = new KnowledgeOfDlogParams(secret, statement);
         var proof           = Prover.CreateProof(knowledgeParams);
         Assert.True(Verifier.Verify(proof, statement));
     }
 }
        public void End2EndVerificationLargeScalar()
        {
            uint val             = int.MaxValue;
            var  gen             = new Scalar(4) * Generators.G;
            var  secret          = new Scalar(val, val, val, val, val, val, val, val);
            var  p               = secret * gen;
            var  statement       = new Statement(p, gen);
            var  knowledgeParams = new KnowledgeOfDlogParams(secret, statement);
            var  proof           = Prover.CreateProof(knowledgeParams);

            Assert.True(Verifier.Verify(proof, statement));

            secret          = EC.N + (new Scalar(1)).Negate();
            p               = secret * gen;
            statement       = new Statement(p, gen);
            knowledgeParams = new KnowledgeOfDlogParams(secret, statement);
            proof           = Prover.CreateProof(knowledgeParams);
            Assert.True(Verifier.Verify(proof, statement));

            secret          = EC.NC;
            p               = secret * gen;
            statement       = new Statement(p, gen);
            knowledgeParams = new KnowledgeOfDlogParams(secret, statement);
            proof           = Prover.CreateProof(knowledgeParams);
            Assert.True(Verifier.Verify(proof, statement));
            secret          = EC.NC + new Scalar(1);
            p               = secret * gen;
            statement       = new Statement(p, gen);
            knowledgeParams = new KnowledgeOfDlogParams(secret, statement);
            proof           = Prover.CreateProof(knowledgeParams);
            Assert.True(Verifier.Verify(proof, statement));
            secret          = EC.NC + (new Scalar(1)).Negate();
            p               = secret * gen;
            statement       = new Statement(p, gen);
            knowledgeParams = new KnowledgeOfDlogParams(secret, statement);
            proof           = Prover.CreateProof(knowledgeParams);
            Assert.True(Verifier.Verify(proof, statement));
        }