From 23fc70b32543dbc1853b19bd9b65765ed70da827 Mon Sep 17 00:00:00 2001 From: thebevrishot Date: Wed, 28 Nov 2018 13:58:12 +0700 Subject: [PATCH 1/8] Ported sigma_PublicPrivateCoin_test --- src/Makefile.test.include | 5 +++- .../test/sigma_PublicPrivateCoin_test.cpp | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 3d6a84cf4e..fdb8db3c55 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -98,7 +98,8 @@ BITCOIN_TESTS =\ test/txvalidationcache_tests.cpp \ test/uint256_tests.cpp \ test/univalue_tests.cpp \ - test/util_tests.cpp + test/util_tests.cpp \ + libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp if ENABLE_WALLET BITCOIN_TESTS += \ @@ -138,6 +139,8 @@ if ENABLE_ZMQ test_test_bitcoin_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS) endif +test_test_bitcoin_LDADD += $(LIBSIGMA) + nodist_test_test_bitcoin_SOURCES = $(GENERATED_TEST_FILES) $(BITCOIN_TESTS): $(GENERATED_TEST_FILES) diff --git a/src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp b/src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp new file mode 100644 index 0000000000..81ced3174f --- /dev/null +++ b/src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp @@ -0,0 +1,27 @@ +#include +#include +#include +#include + +using namespace sigma; +using namespace std; + +BOOST_AUTO_TEST_CASE(sigma_PublicPrivateCoin_test) +{ + //creating params + ParamsV3* params = sigma::ParamsV3::get_default(); + + //testing public coin and serialize + secp_primitives::GroupElement coin; + coin.randomize(); + PublicCoinV3 publicCoin(coin, ZQ_GOLDWASSER); + CDataStream serializedCoin(SER_NETWORK, PROTOCOL_VERSION); + serializedCoin << publicCoin; + PublicCoinV3 publicCoinNew(serializedCoin); + BOOST_CHECK(publicCoin == publicCoinNew); + + // mint test + PrivateCoinV3 newCoin(params); + PublicCoinV3 pubCoin = newCoin.getPublicCoin(); + BOOST_CHECK(pubCoin.validate()); +} From b62c479d2a1b8025e3d55bfda86922346d25300a Mon Sep 17 00:00:00 2001 From: Putta Khunchalee Date: Wed, 28 Nov 2018 15:05:08 +0700 Subject: [PATCH 2/8] Refactor sigma_PublicPrivateCoin_test --- src/Makefile.test.include | 8 ++--- src/gtest/sigma_PublicPrivateCoin_test.cpp | 28 --------------- src/libzerocoin/sigma/test/coin_tests.cpp | 35 +++++++++++++++++++ .../test/sigma_PublicPrivateCoin_test.cpp | 27 -------------- 4 files changed, 38 insertions(+), 60 deletions(-) delete mode 100644 src/gtest/sigma_PublicPrivateCoin_test.cpp create mode 100644 src/libzerocoin/sigma/test/coin_tests.cpp delete mode 100644 src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp diff --git a/src/Makefile.test.include b/src/Makefile.test.include index fdb8db3c55..1c2b771d60 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -39,6 +39,7 @@ RAW_TEST_FILES = GENERATED_TEST_FILES = $(JSON_TEST_FILES:.json=.json.h) $(RAW_TEST_FILES:.raw=.raw.h) BITCOIN_TESTS =\ + libzerocoin/sigma/test/coin_tests.cpp \ test/zerocoin_tests.cpp \ test/zerocoin_tests2.cpp \ test/zerocoin_tests3.cpp \ @@ -98,8 +99,7 @@ BITCOIN_TESTS =\ test/txvalidationcache_tests.cpp \ test/uint256_tests.cpp \ test/univalue_tests.cpp \ - test/util_tests.cpp \ - libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp + test/util_tests.cpp if ENABLE_WALLET BITCOIN_TESTS += \ @@ -119,7 +119,7 @@ test_test_bitcoin_LDADD = $(LIBBITCOIN_SERVER) tor/src/or/libtor.a \ tor/src/common/libcurve25519_donna.a \ tor/src/ext/ed25519/donna/libed25519_donna.a \ tor/src/ext/ed25519/ref10/libed25519_ref10.a \ - tor/src/ext/keccak-tiny/libkeccak-tiny.a $(ZLIB_LIBS) -lz + tor/src/ext/keccak-tiny/libkeccak-tiny.a $(LIBSIGMA) $(ZLIB_LIBS) -lz test_test_bitcoin_SOURCES = $(BITCOIN_TESTS) $(JSON_TEST_FILES) $(RAW_TEST_FILES) test_test_bitcoin_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) -I$(builddir)/test/ $(TESTDEFS) @@ -139,8 +139,6 @@ if ENABLE_ZMQ test_test_bitcoin_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS) endif -test_test_bitcoin_LDADD += $(LIBSIGMA) - nodist_test_test_bitcoin_SOURCES = $(GENERATED_TEST_FILES) $(BITCOIN_TESTS): $(GENERATED_TEST_FILES) diff --git a/src/gtest/sigma_PublicPrivateCoin_test.cpp b/src/gtest/sigma_PublicPrivateCoin_test.cpp deleted file mode 100644 index dc708ed00c..0000000000 --- a/src/gtest/sigma_PublicPrivateCoin_test.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include -#include -#include "../streams.h" - -using namespace sigma; -using namespace std; - -TEST(sigma_PublicPrivateCoin_test, test) -{ - //creating params - ParamsV3* params = sigma::ParamsV3::get_default(); - - //testing public coin and serialize - secp_primitives::GroupElement coin; - coin.randomize(); - PublicCoinV3 publicCoin(coin, ZQ_GOLDWASSER); - CDataStream serializedCoin(SER_NETWORK, PROTOCOL_VERSION); - serializedCoin << publicCoin; - PublicCoinV3 publicCoinNew; - serializedCoin >> publicCoinNew; - EXPECT_TRUE(publicCoin == publicCoinNew); - - // mint test - PrivateCoinV3 newCoin(params); - PublicCoinV3 pubCoin = newCoin.getPublicCoin(); - EXPECT_TRUE(pubCoin.validate()); -} diff --git a/src/libzerocoin/sigma/test/coin_tests.cpp b/src/libzerocoin/sigma/test/coin_tests.cpp new file mode 100644 index 0000000000..ae42e9768d --- /dev/null +++ b/src/libzerocoin/sigma/test/coin_tests.cpp @@ -0,0 +1,35 @@ +#include "../Coin.h" +#include "../Params.h" +#include "../../../streams.h" + +#include + +BOOST_AUTO_TEST_SUITE(sigma_coin_tests) + +BOOST_AUTO_TEST_CASE(pubcoin_serialization) +{ + secp_primitives::GroupElement coin; + coin.randomize(); + + sigma::PublicCoinV3 pubcoin(coin, sigma::ZQ_GOLDWASSER); + + CDataStream serialized(SER_NETWORK, PROTOCOL_VERSION); + serialized << pubcoin; + + sigma::PublicCoinV3 deserialized; + serialized >> deserialized; + + BOOST_CHECK(pubcoin == deserialized); +} + +BOOST_AUTO_TEST_CASE(pubcoin_validate) +{ + auto params = sigma::ParamsV3::get_default(); + + sigma::PrivateCoinV3 privcoin(params); + auto& pubcoin = privcoin.getPublicCoin(); + + BOOST_CHECK(pubcoin.validate()); +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp b/src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp deleted file mode 100644 index 81ced3174f..0000000000 --- a/src/libzerocoin/sigma/test/sigma_PublicPrivateCoin_test.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include -#include - -using namespace sigma; -using namespace std; - -BOOST_AUTO_TEST_CASE(sigma_PublicPrivateCoin_test) -{ - //creating params - ParamsV3* params = sigma::ParamsV3::get_default(); - - //testing public coin and serialize - secp_primitives::GroupElement coin; - coin.randomize(); - PublicCoinV3 publicCoin(coin, ZQ_GOLDWASSER); - CDataStream serializedCoin(SER_NETWORK, PROTOCOL_VERSION); - serializedCoin << publicCoin; - PublicCoinV3 publicCoinNew(serializedCoin); - BOOST_CHECK(publicCoin == publicCoinNew); - - // mint test - PrivateCoinV3 newCoin(params); - PublicCoinV3 pubCoin = newCoin.getPublicCoin(); - BOOST_CHECK(pubCoin.validate()); -} From d8e0d9701a3387b2ec30051f1857efc784679550 Mon Sep 17 00:00:00 2001 From: Putta Khunchalee Date: Wed, 28 Nov 2018 15:38:36 +0700 Subject: [PATCH 3/8] Port src/gtest/sigma_plus_test.cpp to boost test --- src/Makefile.test.include | 1 + .../sigma/test/protocol_tests.cpp} | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) rename src/{gtest/sigma_plus_test.cpp => libzerocoin/sigma/test/protocol_tests.cpp} (79%) diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 1c2b771d60..5482dcbfc1 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -40,6 +40,7 @@ GENERATED_TEST_FILES = $(JSON_TEST_FILES:.json=.json.h) $(RAW_TEST_FILES:.raw=.r BITCOIN_TESTS =\ libzerocoin/sigma/test/coin_tests.cpp \ + libzerocoin/sigma/test/protocol_tests.cpp \ test/zerocoin_tests.cpp \ test/zerocoin_tests2.cpp \ test/zerocoin_tests3.cpp \ diff --git a/src/gtest/sigma_plus_test.cpp b/src/libzerocoin/sigma/test/protocol_tests.cpp similarity index 79% rename from src/gtest/sigma_plus_test.cpp rename to src/libzerocoin/sigma/test/protocol_tests.cpp index 64e5e054c7..431eaf128c 100644 --- a/src/gtest/sigma_plus_test.cpp +++ b/src/libzerocoin/sigma/test/protocol_tests.cpp @@ -1,14 +1,17 @@ -#include -#include -#include +#include "../SigmaPlusProver.h" +#include "../SigmaPlusVerifier.h" -TEST(test_1_out_of_N, EC_group) +#include + +BOOST_AUTO_TEST_SUITE(sigma_protocol_tests) + +BOOST_AUTO_TEST_CASE(one_out_of_n) { int N = 16; int n = 4; int index = 0; - int m = (int)(log(N) / log(n));; + int m = (int)(log(N) / log(n)); secp_primitives::GroupElement g; g.randomize(); @@ -41,6 +44,8 @@ TEST(test_1_out_of_N, EC_group) prover.proof(commits, index, r, proof); sigma::SigmaPlusVerifier verifier(g, h_gens, n, m); - EXPECT_TRUE(verifier.verify(commits, proof)); -} \ No newline at end of file + BOOST_CHECK(verifier.verify(commits, proof)); +} + +BOOST_AUTO_TEST_SUITE_END() From bb5c644ac9ef82c7bb1874ce75e158432af26793 Mon Sep 17 00:00:00 2001 From: thebevrishot Date: Thu, 29 Nov 2018 11:13:07 +0700 Subject: [PATCH 4/8] Port sigma unit tests --- src/Makefile.test.include | 1 + src/libzerocoin/sigma/test/unit_tests.cpp | 161 ++++++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 src/libzerocoin/sigma/test/unit_tests.cpp diff --git a/src/Makefile.test.include b/src/Makefile.test.include index 5482dcbfc1..e9e8b2f132 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -41,6 +41,7 @@ GENERATED_TEST_FILES = $(JSON_TEST_FILES:.json=.json.h) $(RAW_TEST_FILES:.raw=.r BITCOIN_TESTS =\ libzerocoin/sigma/test/coin_tests.cpp \ libzerocoin/sigma/test/protocol_tests.cpp \ + libzerocoin/sigma/test/unit_tests.cpp \ test/zerocoin_tests.cpp \ test/zerocoin_tests2.cpp \ test/zerocoin_tests3.cpp \ diff --git a/src/libzerocoin/sigma/test/unit_tests.cpp b/src/libzerocoin/sigma/test/unit_tests.cpp new file mode 100644 index 0000000000..67efcf341d --- /dev/null +++ b/src/libzerocoin/sigma/test/unit_tests.cpp @@ -0,0 +1,161 @@ +#include + +#include "test/test_bitcoin.h" + +#include +#include +#include +using namespace secp_primitives; +using namespace sigma; +namespace { +struct sigma_unit_tests_fixture { + // struct sigma_unit_tests_fixture : public TestingSetup { + // sigma_unit_tests_fixture() = default; + int N; + int n; + int m; + int index; + GroupElement g; + std::unique_ptr> h_; + Scalar rB; + std::vector sigma; + std::unique_ptr> r1prover; + R1Proof r1proof; + Scalar x; + std::vector > P_i_k; + std::vector f_; + std::vector a; + std::vector Pk; + secp_primitives::Scalar r; + std::vector commits; + + sigma_unit_tests_fixture() { + // sigma_unit_tests_fixture() : TestingSetup(CBaseChainParams::REGTEST) { + N = 16; + n = 4; + index = 13; + m = (int)(log(N) / log(n)); + g.randomize(); + std::vector h_gens; + for(int i = 0; i < n * m; ++i ){ + h_gens.push_back(secp_primitives::GroupElement()); + h_gens[i].randomize(); + } + + h_.reset(new zcoin_common::GeneratorVector (h_gens)); + rB.randomize(); + SigmaPrimitives::convert_to_sigma(index, n, m, sigma); + r1prover.reset(new R1ProofGenerator(g, *h_, sigma, rB, n, m)); + + Pk.resize(m); + for (int k = 0; k < m; ++k) { + Pk[k].randomize(); + } + r.randomize(); + for(int i = 0; i < N; ++i){ + if(i == (index)){ + secp_primitives::GroupElement c; + secp_primitives::Scalar zero(uint64_t(0)); + c = sigma::SigmaPrimitives::commit(g, zero, h_gens[0], r); + commits.push_back(c); + } + else{ + commits.push_back(secp_primitives::GroupElement()); + commits[i].randomize(); + } + } + (*r1prover).proof(a, r1proof); + x = (*r1prover).x_; + P_i_k.resize(N); + for (int i = 0; i < N; ++i) { + std::vector & coefficients = P_i_k[i]; + std::vector I = SigmaPrimitives::convert_to_nal(i, n, m); + coefficients.push_back(sigma[I[0]]); + coefficients.push_back(a[I[0]]); + for (int j = 1; j < m; ++j) { + SigmaPrimitives::new_factor(sigma[j * n + I[j]], a[j * n + I[j]], coefficients); + } + std::reverse(coefficients.begin(), coefficients.end()); + } + f_ = r1proof.f_; + std::vector f; + for(int j = 0; j < m; ++j){ + f.push_back(sigma[j * n] * x + a[j * n]); + int k = n - 1; + for(int i = 0; i < k; ++i){ + f.push_back(r1proof.f_[j * k + i]); + } + } + f_= f; + } + + ~sigma_unit_tests_fixture(){} +}; + +BOOST_FIXTURE_TEST_SUITE(sigma_unit_tests,sigma_unit_tests_fixture) + +BOOST_AUTO_TEST_CASE(unit_f_and_p_x) +{ + for(int i = 0; i < N; ++i){ + std::vector I = SigmaPrimitives::convert_to_nal(i, n, m); + Scalar f_i(uint64_t(1)); + Scalar p_i_x(uint64_t(0)); + for(int j = 0; j < m; ++j){ + f_i *= f_[j*n + I[j]]; + p_i_x += (P_i_k[i][j]*x.exponent(j)); + } + if(i==index) + p_i_x += (P_i_k[i][m]*x.exponent(m)); + BOOST_CHECK(f_i==p_i_x); + } +} + +BOOST_AUTO_TEST_CASE(unit_commits) +{ + Scalar z; + z = r * x.exponent(uint64_t(m)); + Scalar sum; + Scalar x_k(uint64_t(1)); + for (int k = 0; k < m; ++k) { + sum += (Pk[k] * x_k); + x_k *= x; + } + z -= sum; + GroupElement coommit = SigmaPrimitives::commit(g, Scalar(uint64_t(0)), (*h_).get_g(0), z); + GroupElement commits_; + for(int k = 0; k< m; ++k){ + commits_ += (SigmaPrimitives::commit( + g, Scalar(uint64_t(0)), (*h_).get_g(0), Pk[k])) * (x.exponent(k)).negate(); + } + commits_ += (commits[index] * x.exponent(m)); + + BOOST_CHECK(coommit == commits_); +} + +BOOST_AUTO_TEST_CASE(unit_G_k_prime) +{ + std::vector f_i_; + for(int i = 0; i < N; ++i){ + std::vector I = SigmaPrimitives::convert_to_nal(i, n, m); + Scalar f_i(uint64_t(1)); + for(int j = 0; j < m; ++j){ + f_i *= f_[j*n + I[j]]; + } + f_i_.push_back(f_i); + } + zcoin_common::GeneratorVector cc_(commits); + GroupElement C; + cc_.get_vector_multiple(f_i_, C); + GroupElement G; + for(int k = 0; k < m; ++k){ + GroupElement Gk_prime; + for(int i = 0; i < N; ++i) + Gk_prime += commits[i] * P_i_k[i][k]; + G += (Gk_prime)* ((x.exponent(k)).negate()); + } + BOOST_CHECK((C + G) == (commits[index] * (x.exponent(m)))); +} + + +BOOST_AUTO_TEST_SUITE_END() +} From 511f344c69e711c5a45546828e605110af5d3687 Mon Sep 17 00:00:00 2001 From: thebevrishot Date: Thu, 29 Nov 2018 15:10:14 +0700 Subject: [PATCH 5/8] Port sigma_R1 and sigma_serialize tests to boost test --- src/Makefile.test.include | 2 + src/libzerocoin/sigma/test/R1_test.cpp | 194 ++++++++++++++++++ src/libzerocoin/sigma/test/serialize_test.cpp | 94 +++++++++ 3 files changed, 290 insertions(+) create mode 100644 src/libzerocoin/sigma/test/R1_test.cpp create mode 100644 src/libzerocoin/sigma/test/serialize_test.cpp diff --git a/src/Makefile.test.include b/src/Makefile.test.include index e9e8b2f132..211209728d 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -42,6 +42,8 @@ BITCOIN_TESTS =\ libzerocoin/sigma/test/coin_tests.cpp \ libzerocoin/sigma/test/protocol_tests.cpp \ libzerocoin/sigma/test/unit_tests.cpp \ + libzerocoin/sigma/test/R1_test.cpp \ + libzerocoin/sigma/test/serialize_test.cpp \ test/zerocoin_tests.cpp \ test/zerocoin_tests2.cpp \ test/zerocoin_tests3.cpp \ diff --git a/src/libzerocoin/sigma/test/R1_test.cpp b/src/libzerocoin/sigma/test/R1_test.cpp new file mode 100644 index 0000000000..2f63b9a4fc --- /dev/null +++ b/src/libzerocoin/sigma/test/R1_test.cpp @@ -0,0 +1,194 @@ +#include + +#include +#include +#include +#include + +bool test(secp_primitives::GroupElement& g, std::vector& h_, std::vector& b, int n, int m){ + + secp_primitives::Scalar r; + r.randomize(); + zcoin_common::GeneratorVector h_gens(h_); + sigma::R1ProofGenerator prover(g, h_gens, b, r, n, m); + sigma::R1Proof proof; + prover.proof(proof); + + sigma::R1ProofVerifier verifier(g,h_gens,prover.get_B(), n, m); + return verifier.verify(proof); +} + +BOOST_AUTO_TEST_SUITE(sigma_R1_test) + +BOOST_AUTO_TEST_CASE(fixed_size_test) +{ + int n = 4; + int m = 16; + secp_primitives::GroupElement g; + g.randomize(); + std::vector h_; + std::vector b; + secp_primitives::GroupElement h; + for(int i = 0; i < m; ++i) { + h.randomize(); + h_.push_back(h); + b.push_back(secp_primitives::Scalar(uint64_t(1))); + for(int j = 1; j < n; ++j){ + h.randomize(); + h_.push_back(h); + b.push_back(secp_primitives::Scalar(uint64_t(0))); + + } + } + + BOOST_CHECK(test(g, h_, b, n, m)); +} + +BOOST_AUTO_TEST_CASE(random_size_test) +{ + int n = rand() % 64 + 16; + int m = rand() % 32 + 16; + secp_primitives::GroupElement g; + g.randomize(); + std::vector h_; + std::vector b; + for(int i = 0; i < m; ++i) { + secp_primitives::GroupElement h; + b.push_back(secp_primitives::Scalar(uint64_t(1))); + for(int j = 1; j < n; ++j){ + h.randomize(); + h_.push_back(h); + b.push_back(secp_primitives::Scalar(uint64_t(0))); + + } + } + + BOOST_CHECK(test(g, h_, b, n, m)); +} + + +BOOST_AUTO_TEST_CASE(all_positions) +{ + int n = 32; + int m = 16; + secp_primitives::GroupElement g; + std::vector h_; + std::vector b; + secp_primitives::GroupElement h; + for(int k = 0; k < n; ++k){ + g.randomize(); + for(int i = 0;i< m ;++i) { + for(int j = 0;j < n;++j){ + h.randomize(); + h_.push_back(h); + if(j == k) + b.push_back(secp_primitives::Scalar(uint64_t(1))); + else + b.push_back(secp_primitives::Scalar(uint64_t(0))); + } + } + BOOST_CHECK(test(g, h_, b, n, m)); + h_.clear(); + b.clear(); + } +} + +BOOST_AUTO_TEST_CASE(one_in_random_position) +{ + int n = 32; + int m = 16; + int k = rand() % n; + secp_primitives::GroupElement g; + std::vector h_; + std::vector b; + secp_primitives::GroupElement h; + g.randomize(); + for(int i = 0;i < m;++i) { + k = rand() % n; + for(int j = 0;j < n;++j){ + h.randomize(); + h_.push_back(h); + if(j == k) + b.push_back(secp_primitives::Scalar(uint64_t(1))); + else + b.push_back(secp_primitives::Scalar(uint64_t(0))); + } + } + BOOST_CHECK(test(g, h_, b, n, m)); +} + + +BOOST_AUTO_TEST_CASE(all_0s_in_random_row) +{ + int n = 32; + int m = 16; + int k = rand() % m; + secp_primitives::GroupElement g; + std::vector h_; + std::vector b; + secp_primitives::GroupElement h; + g.randomize(); + for(int i = 0;i < m;++i) { + for(int j = 0;j < n;++j){ + h.randomize(); + h_.push_back(h); + if(i != k) + b.push_back(secp_primitives::Scalar(uint64_t(1))); + else + b.push_back(secp_primitives::Scalar(uint64_t(0))); + } + } + BOOST_CHECK(!test(g, h_, b, n, m)); // expect false +} + +BOOST_AUTO_TEST_CASE(all_1s_in_random_row) +{ + int n = 32; + int m = 16; + int k = rand() % m; + secp_primitives::GroupElement g; + std::vector h_; + std::vector b; + secp_primitives::GroupElement h; + g.randomize(); + for(int i = 0;i < m;++i) { + for(int j = 0;j < n;++j){ + h.randomize(); + h_.push_back(h); + if(i == k) + b.push_back(secp_primitives::Scalar(uint64_t(1))); + else + b.push_back(secp_primitives::Scalar(uint64_t(0))); + } + } + BOOST_CHECK(!test(g, h_, b, n, m)); // expect false +} + + +BOOST_AUTO_TEST_CASE(two_1s_in_random_row) +{ + int n = 32; + int m = 16; + int k = rand() % n; + secp_primitives::GroupElement g; + std::vector h_; + std::vector b; + secp_primitives::GroupElement h; + g.randomize(); + for(int i = 0;i < m;++i) { + for(int j = 0;j < n;++j){ + h.randomize(); + h_.push_back(h); + if(j == k){ + b.push_back(secp_primitives::Scalar(uint64_t(1))); + b.push_back(secp_primitives::Scalar(uint64_t(1))); + ++j; + } + else + b.push_back(secp_primitives::Scalar(uint64_t(0))); + } + } + BOOST_CHECK(!test(g, h_, b, n, m)); // expect false +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/src/libzerocoin/sigma/test/serialize_test.cpp b/src/libzerocoin/sigma/test/serialize_test.cpp new file mode 100644 index 0000000000..1a6fe43f24 --- /dev/null +++ b/src/libzerocoin/sigma/test/serialize_test.cpp @@ -0,0 +1,94 @@ +#include + +#include +#include + +BOOST_AUTO_TEST_SUITE(sigma_serialize_tests) + +BOOST_AUTO_TEST_CASE(group_element_serialize) +{ + secp_primitives::GroupElement initial; + initial.randomize(); + unsigned char buffer [initial.memoryRequired()]; + initial.serialize(buffer); + secp_primitives::GroupElement resulted; + resulted.deserialize(buffer); + BOOST_CHECK(initial == resulted); +} + +BOOST_AUTO_TEST_CASE(group_element_serialize_infinity) +{ + secp_primitives::GroupElement initial; + unsigned char buffer [initial.memoryRequired()]; + initial.serialize(buffer); + secp_primitives::GroupElement resulted; + resulted.deserialize(buffer); + BOOST_CHECK(initial == resulted); +} + +BOOST_AUTO_TEST_CASE(scalar_serialize) +{ + secp_primitives::Scalar initial; + initial.randomize(); + unsigned char buffer [initial.memoryRequired()]; + initial.serialize(buffer); + secp_primitives::Scalar resulted; + resulted.deserialize(buffer); + BOOST_CHECK(initial == resulted); +} + +BOOST_AUTO_TEST_CASE(proof_serialize) +{ + int N = 16; + int n = 4; + int index = 0; + + int m = (int)(log(N) / log(n));; + + secp_primitives::GroupElement g; + g.randomize(); + std::vector h_gens; + h_gens.resize(n * m); + for(int i = 0; i < n * m; ++i ){ + h_gens[i].randomize(); + } + secp_primitives::Scalar r; + r.randomize(); + sigma::SigmaPlusProver prover(g,h_gens, n, m); + + std::vector commits; + for(int i = 0; i < N; ++i){ + if(i == index){ + secp_primitives::GroupElement c; + secp_primitives::Scalar zero(uint64_t(0)); + c = sigma::SigmaPrimitives::commit(g, zero, h_gens[0], r); + commits.push_back(c); + + } + else{ + commits.push_back(secp_primitives::GroupElement()); + commits[i].randomize(); + } + } + + sigma::SigmaPlusProof initial_proof; + + prover.proof(commits, index, r, initial_proof); + + unsigned char buffer [initial_proof.memoryRequired()]; + initial_proof.serialize(buffer); + sigma::SigmaPlusProof resulted_proof; + resulted_proof.deserialize(buffer, n, m); + + BOOST_CHECK(initial_proof.B_ == resulted_proof.B_); + BOOST_CHECK(initial_proof.r1Proof_.A_ == resulted_proof.r1Proof_.A_); + BOOST_CHECK(initial_proof.r1Proof_.C_ == resulted_proof.r1Proof_.C_); + BOOST_CHECK(initial_proof.r1Proof_.D_ == resulted_proof.r1Proof_.D_); + BOOST_CHECK(initial_proof.r1Proof_.f_ == resulted_proof.r1Proof_.f_); + BOOST_CHECK(initial_proof.r1Proof_.ZA_ == resulted_proof.r1Proof_.ZA_); + BOOST_CHECK(initial_proof.r1Proof_.ZC_ == resulted_proof.r1Proof_.ZC_); + BOOST_CHECK(initial_proof.Gk_ == resulted_proof.Gk_); + BOOST_CHECK(initial_proof.z_ == resulted_proof.z_); +} + +BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file From 04c41fc750e09ab27ec856ef92ac7ad9ff8cb613 Mon Sep 17 00:00:00 2001 From: thebevrishot Date: Thu, 29 Nov 2018 15:15:54 +0700 Subject: [PATCH 6/8] Remove sigma gtest --- src/Makefile.gtest.include | 61 --------- src/gtest/main.cpp | 8 -- src/gtest/sigma_R1_test.cpp | 190 ----------------------------- src/gtest/sigma_perform_test.cpp | 63 ---------- src/gtest/sigma_serialize_test.cpp | 89 -------------- src/gtest/sigma_unit_tests.cpp | 154 ----------------------- 6 files changed, 565 deletions(-) delete mode 100644 src/Makefile.gtest.include delete mode 100644 src/gtest/main.cpp delete mode 100644 src/gtest/sigma_R1_test.cpp delete mode 100644 src/gtest/sigma_perform_test.cpp delete mode 100644 src/gtest/sigma_serialize_test.cpp delete mode 100644 src/gtest/sigma_unit_tests.cpp diff --git a/src/Makefile.gtest.include b/src/Makefile.gtest.include deleted file mode 100644 index 6ab2890a6c..0000000000 --- a/src/Makefile.gtest.include +++ /dev/null @@ -1,61 +0,0 @@ -TESTS += sigma_R1_test -noinst_PROGRAMS += gtest/sigma_R1_test - -gtest_sigma_R1_test_SOURCES = \ - gtest/main.cpp \ - gtest/sigma_R1_test.cpp - -gtest_sigma_R1_test_CPPFLAGS = $(AM_CPPFLAGS) -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC $(BITCOIN_INCLUDES) -gtest_sigma_R1_test_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) - -gtest_sigma_R1_test_LDADD = -lgtest -lgmock $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSIGMA) $(LIBSECP256K1) $(SSL_LIBS) -lcrypto $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) -lgmp - -TESTS += sigma_plus_test -noinst_PROGRAMS += gtest/sigma_plus_test -gtest_sigma_plus_test_SOURCES = \ - gtest/main.cpp \ - gtest/sigma_plus_test.cpp - -gtest_sigma_plus_test_CPPFLAGS = $(AM_CPPFLAGS) -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC $(BITCOIN_INCLUDES) -gtest_sigma_plus_test_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -gtest_sigma_plus_test_LDADD = -lgtest -lgmock $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSIGMA) $(LIBSECP256K1) -lcrypto $(SSL_LIBS) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) -lgmp - -TESTS += sigma_unit_tests -noinst_PROGRAMS += gtest/sigma_unit_tests -gtest_sigma_unit_tests_SOURCES = \ - gtest/main.cpp \ - gtest/sigma_unit_tests.cpp - -gtest_sigma_unit_tests_CPPFLAGS = $(AM_CPPFLAGS) -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC $(BITCOIN_INCLUDES) -gtest_sigma_unit_tests_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -gtest_sigma_unit_tests_LDADD = -lgtest -lgmock $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSIGMA) $(LIBSECP256K1) $(SSL_LIBS) -lcrypto $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) -lgmp - - -TESTS += sigma_perform_test -noinst_PROGRAMS += gtest/sigma_perform_test -gtest_sigma_perform_test_SOURCES = \ - gtest/sigma_perform_test.cpp - -gtest_sigma_perform_test_CPPFLAGS = $(AM_CPPFLAGS) -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC $(BITCOIN_INCLUDES) -gtest_sigma_perform_test_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -gtest_sigma_perform_test_LDADD = -lgtest -lgmock $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSIGMA) $(LIBSECP256K1) $(SSL_LIBS) -lcrypto $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) -lgmp - -TESTS += sigma_serialize_test -noinst_PROGRAMS += gtest/sigma_serialize_test -gtest_sigma_serialize_test_SOURCES = \ - gtest/main.cpp \ - gtest/sigma_serialize_test.cpp - -gtest_sigma_serialize_test_CPPFLAGS = $(AM_CPPFLAGS) -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC $(BITCOIN_INCLUDES) -gtest_sigma_serialize_test_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -gtest_sigma_serialize_test_LDADD = -lgtest -lgmock $(BOOST_LIBS) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSIGMA) $(LIBSECP256K1) $(SSL_LIBS) -lcrypto $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) -lgmp - -TESTS += sigma_PublicPrivateCoin_test -noinst_PROGRAMS += gtest/sigma_PublicPrivateCoin_test -gtest_sigma_PublicPrivateCoin_test_SOURCES = \ - gtest/main.cpp \ - gtest/sigma_PublicPrivateCoin_test.cpp - -gtest_sigma_PublicPrivateCoin_test_CPPFLAGS = $(AM_CPPFLAGS) -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC $(BITCOIN_INCLUDES) -gtest_sigma_PublicPrivateCoin_test_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -gtest_sigma_PublicPrivateCoin_test_LDADD = -lgtest -lgmock $(BOOST_UNIT_TEST_FRAMEWORK_LIB) $(LIBSIGMA) $(LIBSECP256K1) $(SSL_LIBS) -lcrypto $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CRYPTO) $(BOOST_LIBS) -lgmp diff --git a/src/gtest/main.cpp b/src/gtest/main.cpp deleted file mode 100644 index e56a8fb078..0000000000 --- a/src/gtest/main.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include - -int main(int argc, char **argv) { - - ::testing::InitGoogleTest(&argc, argv); - - return RUN_ALL_TESTS(); -} diff --git a/src/gtest/sigma_R1_test.cpp b/src/gtest/sigma_R1_test.cpp deleted file mode 100644 index 7c61c304f7..0000000000 --- a/src/gtest/sigma_R1_test.cpp +++ /dev/null @@ -1,190 +0,0 @@ -#include -#include -#include -#include -#include - -bool test(secp_primitives::GroupElement& g, std::vector& h_, std::vector& b, int n, int m){ - - secp_primitives::Scalar r; - r.randomize(); - zcoin_common::GeneratorVector h_gens(h_); - sigma::R1ProofGenerator prover(g, h_gens, b, r, n, m); - sigma::R1Proof proof; - prover.proof(proof); - - sigma::R1ProofVerifier verifier(g,h_gens,prover.get_B(), n, m); - return verifier.verify(proof); -} - - -TEST(sigma_R1_test, fixed_size_test) -{ - int n = 4; - int m = 16; - secp_primitives::GroupElement g; - g.randomize(); - std::vector h_; - std::vector b; - secp_primitives::GroupElement h; - for(int i = 0; i < m; ++i) { - h.randomize(); - h_.push_back(h); - b.push_back(secp_primitives::Scalar(uint64_t(1))); - for(int j = 1; j < n; ++j){ - h.randomize(); - h_.push_back(h); - b.push_back(secp_primitives::Scalar(uint64_t(0))); - - } - } - - EXPECT_TRUE(test(g, h_, b, n, m)); -} - -TEST(sigma_R1_test, random_size_test) -{ - int n = rand() % 64 + 16; - int m = rand() % 32 + 16; - secp_primitives::GroupElement g; - g.randomize(); - std::vector h_; - std::vector b; - for(int i = 0; i < m; ++i) { - secp_primitives::GroupElement h; - b.push_back(secp_primitives::Scalar(uint64_t(1))); - for(int j = 1; j < n; ++j){ - h.randomize(); - h_.push_back(h); - b.push_back(secp_primitives::Scalar(uint64_t(0))); - - } - } - - EXPECT_TRUE(test(g, h_, b, n, m)); -} - - -TEST(sigma_R1_test, all_positions) -{ - int n = 32; - int m = 16; - secp_primitives::GroupElement g; - std::vector h_; - std::vector b; - secp_primitives::GroupElement h; - for(int k = 0; k < n; ++k){ - g.randomize(); - for(int i = 0;i< m ;++i) { - for(int j = 0;j < n;++j){ - h.randomize(); - h_.push_back(h); - if(j == k) - b.push_back(secp_primitives::Scalar(uint64_t(1))); - else - b.push_back(secp_primitives::Scalar(uint64_t(0))); - } - } - EXPECT_TRUE(test(g, h_, b, n, m)); - h_.clear(); - b.clear(); - } -} - -TEST(sigma_R1_test, one_in_random_position) -{ - int n = 32; - int m = 16; - int k = rand() % n; - secp_primitives::GroupElement g; - std::vector h_; - std::vector b; - secp_primitives::GroupElement h; - g.randomize(); - for(int i = 0;i < m;++i) { - k = rand() % n; - for(int j = 0;j < n;++j){ - h.randomize(); - h_.push_back(h); - if(j == k) - b.push_back(secp_primitives::Scalar(uint64_t(1))); - else - b.push_back(secp_primitives::Scalar(uint64_t(0))); - } - } - EXPECT_TRUE(test(g, h_, b, n, m)); -} - - -TEST(sigma_R1_test, all_0s_in_random_row) -{ - int n = 32; - int m = 16; - int k = rand() % m; - secp_primitives::GroupElement g; - std::vector h_; - std::vector b; - secp_primitives::GroupElement h; - g.randomize(); - for(int i = 0;i < m;++i) { - for(int j = 0;j < n;++j){ - h.randomize(); - h_.push_back(h); - if(i != k) - b.push_back(secp_primitives::Scalar(uint64_t(1))); - else - b.push_back(secp_primitives::Scalar(uint64_t(0))); - } - } - EXPECT_FALSE(test(g, h_, b, n, m)); -} - -TEST(sigma_R1_test, all_1s_in_random_row) -{ - int n = 32; - int m = 16; - int k = rand() % m; - secp_primitives::GroupElement g; - std::vector h_; - std::vector b; - secp_primitives::GroupElement h; - g.randomize(); - for(int i = 0;i < m;++i) { - for(int j = 0;j < n;++j){ - h.randomize(); - h_.push_back(h); - if(i == k) - b.push_back(secp_primitives::Scalar(uint64_t(1))); - else - b.push_back(secp_primitives::Scalar(uint64_t(0))); - } - } - EXPECT_FALSE(test(g, h_, b, n, m)); -} - - -TEST(sigma_R1_test, two_1s_in_random_row) -{ - int n = 32; - int m = 16; - int k = rand() % n; - secp_primitives::GroupElement g; - std::vector h_; - std::vector b; - secp_primitives::GroupElement h; - g.randomize(); - for(int i = 0;i < m;++i) { - for(int j = 0;j < n;++j){ - h.randomize(); - h_.push_back(h); - if(j == k){ - b.push_back(secp_primitives::Scalar(uint64_t(1))); - b.push_back(secp_primitives::Scalar(uint64_t(1))); - ++j; - } - else - b.push_back(secp_primitives::Scalar(uint64_t(0))); - } - } - EXPECT_FALSE(test(g, h_, b, n, m)); -} \ No newline at end of file diff --git a/src/gtest/sigma_perform_test.cpp b/src/gtest/sigma_perform_test.cpp deleted file mode 100644 index 8d44a4d88b..0000000000 --- a/src/gtest/sigma_perform_test.cpp +++ /dev/null @@ -1,63 +0,0 @@ - -#include -#include -#include -#include - -void test( int N, int n, int index){ - int m = (int)(log(N) / log(n));; - secp_primitives::GroupElement g; - g.randomize(); - std::vector h_gens; - h_gens.resize(n * m); - for(int i = 0; i < n * m; ++i ){ - h_gens[i].randomize(); - } - secp_primitives::Scalar r; - r.randomize(); - sigma::SigmaPlusProver prover(g,h_gens, n, m); - - std::vector commits; - for(int i = 0; i < N; ++i){ - if(i == index){ - secp_primitives::GroupElement c; - secp_primitives::Scalar zero(uint64_t(0)); - c = sigma::SigmaPrimitives::commit(g, zero, h_gens[0], r); - commits.push_back(c); - - } - else{ - commits.push_back(secp_primitives::GroupElement()); - commits[i].randomize(); - } - } - - std::clock_t proof_start = std::clock(); - - sigma::SigmaPlusProof proof; - prover.proof(commits, index, r, proof); - std::cout <<"N = " << N << " n = " << n << "m = " < verifier(g, h_gens, n, m); - std::clock_t verify_start = std::clock(); - verifier.verify(commits, proof); - - duration_clock = ( std::clock() - verify_start ) / (CLOCKS_PER_SEC / 1000); - std::cout << " Verify time " << duration_clock << " ms \n"; -} - -int main(){ - test(16384, 4, 0); - test(32768, 8, 0); - test(65536, 4, 0); - test(65536, 16, 0); - test(262144, 8, 0); - test(262144, 64, 0); - return 0; -} \ No newline at end of file diff --git a/src/gtest/sigma_serialize_test.cpp b/src/gtest/sigma_serialize_test.cpp deleted file mode 100644 index 811313a027..0000000000 --- a/src/gtest/sigma_serialize_test.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include - -TEST(sigma_serialize_tests, group_element_serialize) -{ - secp_primitives::GroupElement initial; - initial.randomize(); - unsigned char buffer [initial.memoryRequired()]; - initial.serialize(buffer); - secp_primitives::GroupElement resulted; - resulted.deserialize(buffer); - EXPECT_TRUE(initial == resulted); -} - -TEST(sigma_serialize_tests, group_element_serialize_infinity) -{ - secp_primitives::GroupElement initial; - unsigned char buffer [initial.memoryRequired()]; - initial.serialize(buffer); - secp_primitives::GroupElement resulted; - resulted.deserialize(buffer); - EXPECT_TRUE(initial == resulted); -} - -TEST(sigma_serialize_tests, scalar_serialize) -{ - secp_primitives::Scalar initial; - initial.randomize(); - unsigned char buffer [initial.memoryRequired()]; - initial.serialize(buffer); - secp_primitives::Scalar resulted; - resulted.deserialize(buffer); - EXPECT_TRUE(initial == resulted); -} - -TEST(sigma_serialize_tests, proof_serialize) -{ - int N = 16; - int n = 4; - int index = 0; - - int m = (int)(log(N) / log(n));; - - secp_primitives::GroupElement g; - g.randomize(); - std::vector h_gens; - h_gens.resize(n * m); - for(int i = 0; i < n * m; ++i ){ - h_gens[i].randomize(); - } - secp_primitives::Scalar r; - r.randomize(); - sigma::SigmaPlusProver prover(g,h_gens, n, m); - - std::vector commits; - for(int i = 0; i < N; ++i){ - if(i == index){ - secp_primitives::GroupElement c; - secp_primitives::Scalar zero(uint64_t(0)); - c = sigma::SigmaPrimitives::commit(g, zero, h_gens[0], r); - commits.push_back(c); - - } - else{ - commits.push_back(secp_primitives::GroupElement()); - commits[i].randomize(); - } - } - - sigma::SigmaPlusProof initial_proof; - - prover.proof(commits, index, r, initial_proof); - - unsigned char buffer [initial_proof.memoryRequired()]; - initial_proof.serialize(buffer); - sigma::SigmaPlusProof resulted_proof; - resulted_proof.deserialize(buffer, n, m); - - EXPECT_TRUE(initial_proof.B_ == resulted_proof.B_); - EXPECT_TRUE(initial_proof.r1Proof_.A_ == resulted_proof.r1Proof_.A_); - EXPECT_TRUE(initial_proof.r1Proof_.C_ == resulted_proof.r1Proof_.C_); - EXPECT_TRUE(initial_proof.r1Proof_.D_ == resulted_proof.r1Proof_.D_); - EXPECT_TRUE(initial_proof.r1Proof_.f_ == resulted_proof.r1Proof_.f_); - EXPECT_TRUE(initial_proof.r1Proof_.ZA_ == resulted_proof.r1Proof_.ZA_); - EXPECT_TRUE(initial_proof.r1Proof_.ZC_ == resulted_proof.r1Proof_.ZC_); - EXPECT_TRUE(initial_proof.Gk_ == resulted_proof.Gk_); - EXPECT_TRUE(initial_proof.z_ == resulted_proof.z_); -} \ No newline at end of file diff --git a/src/gtest/sigma_unit_tests.cpp b/src/gtest/sigma_unit_tests.cpp deleted file mode 100644 index 2ea5063bd1..0000000000 --- a/src/gtest/sigma_unit_tests.cpp +++ /dev/null @@ -1,154 +0,0 @@ -#include -#include -#include -#include -using namespace secp_primitives; -using namespace sigma; -namespace { -class sigma_unit_tests : public ::testing::Test { -protected: - sigma_unit_tests() = default; - int N; - int n; - int m; - int index; - GroupElement g; - std::unique_ptr> h_; - Scalar rB; - std::vector sigma; - std::unique_ptr> r1prover; - R1Proof r1proof; - Scalar x; - std::vector > P_i_k; - std::vector f_; - std::vector a; - std::vector Pk; - secp_primitives::Scalar r; - std::vector commits; - - virtual void SetUp() { - N = 16; - n = 4; - index = 13; - m = (int)(log(N) / log(n)); - g.randomize(); - std::vector h_gens; - for(int i = 0; i < n * m; ++i ){ - h_gens.push_back(secp_primitives::GroupElement()); - h_gens[i].randomize(); - } - - h_.reset(new zcoin_common::GeneratorVector (h_gens)); - rB.randomize(); - SigmaPrimitives::convert_to_sigma(index, n, m, sigma); - r1prover.reset(new R1ProofGenerator(g, *h_, sigma, rB, n, m)); - - Pk.resize(m); - for (int k = 0; k < m; ++k) { - Pk[k].randomize(); - } - r.randomize(); - for(int i = 0; i < N; ++i){ - if(i == (index)){ - secp_primitives::GroupElement c; - secp_primitives::Scalar zero(uint64_t(0)); - c = sigma::SigmaPrimitives::commit(g, zero, h_gens[0], r); - commits.push_back(c); - } - else{ - commits.push_back(secp_primitives::GroupElement()); - commits[i].randomize(); - } - } - (*r1prover).proof(a, r1proof); - x = (*r1prover).x_; - P_i_k.resize(N); - for (int i = 0; i < N; ++i) { - std::vector & coefficients = P_i_k[i]; - std::vector I = SigmaPrimitives::convert_to_nal(i, n, m); - coefficients.push_back(sigma[I[0]]); - coefficients.push_back(a[I[0]]); - for (int j = 1; j < m; ++j) { - SigmaPrimitives::new_factor(sigma[j * n + I[j]], a[j * n + I[j]], coefficients); - } - std::reverse(coefficients.begin(), coefficients.end()); - } - f_ = r1proof.f_; - std::vector f; - for(int j = 0; j < m; ++j){ - f.push_back(sigma[j * n] * x + a[j * n]); - int k = n - 1; - for(int i = 0; i < k; ++i){ - f.push_back(r1proof.f_[j * k + i]); - } - } - f_= f; - } - - void TearDown() override { - } -}; - -TEST_F(sigma_unit_tests, f_and_p_x) -{ - for(int i = 0; i < N; ++i){ - std::vector I = SigmaPrimitives::convert_to_nal(i, n, m); - Scalar f_i(uint64_t(1)); - Scalar p_i_x(uint64_t(0)); - for(int j = 0; j < m; ++j){ - f_i *= f_[j*n + I[j]]; - p_i_x += (P_i_k[i][j]*x.exponent(j)); - } - if(i==index) - p_i_x += (P_i_k[i][m]*x.exponent(m)); - EXPECT_TRUE(f_i==p_i_x); - } -} - -TEST_F(sigma_unit_tests, commits) -{ - Scalar z; - z = r * x.exponent(uint64_t(m)); - Scalar sum; - Scalar x_k(uint64_t(1)); - for (int k = 0; k < m; ++k) { - sum += (Pk[k] * x_k); - x_k *= x; - } - z -= sum; - GroupElement coommit = SigmaPrimitives::commit(g, Scalar(uint64_t(0)), (*h_).get_g(0), z); - GroupElement commits_; - for(int k = 0; k< m; ++k){ - commits_ += (SigmaPrimitives::commit( - g, Scalar(uint64_t(0)), (*h_).get_g(0), Pk[k])) * (x.exponent(k)).negate(); - } - commits_ += (commits[index] * x.exponent(m)); - - EXPECT_TRUE(coommit == commits_); -} - -TEST_F(sigma_unit_tests, G_k_prime) -{ - std::vector f_i_; - for(int i = 0; i < N; ++i){ - std::vector I = SigmaPrimitives::convert_to_nal(i, n, m); - Scalar f_i(uint64_t(1)); - for(int j = 0; j < m; ++j){ - f_i *= f_[j*n + I[j]]; - } - f_i_.push_back(f_i); - } - zcoin_common::GeneratorVector cc_(commits); - GroupElement C; - cc_.get_vector_multiple(f_i_, C); - GroupElement G; - for(int k = 0; k < m; ++k){ - GroupElement Gk_prime; - for(int i = 0; i < N; ++i) - Gk_prime += commits[i] * P_i_k[i][k]; - G += (Gk_prime)* ((x.exponent(k)).negate()); - } - EXPECT_TRUE((C + G) == (commits[index] * (x.exponent(m)))); -} - -} From 23edc4ffd29536062d4d4149a0055366c72758a5 Mon Sep 17 00:00:00 2001 From: thebevrishot Date: Thu, 29 Nov 2018 16:32:14 +0700 Subject: [PATCH 7/8] Fix tor permissions denined on make check --- src/tor/src/test/fuzz_static_testcases.sh | 0 src/tor/src/test/test-network.sh | 0 src/tor/src/test/test_bt.sh | 0 src/tor/src/test/test_hs_ntor.sh | 0 src/tor/src/test/test_key_expiration.sh | 0 src/tor/src/test/test_keygen.sh | 0 src/tor/src/test/test_ntor.sh | 0 src/tor/src/test/test_rust.sh | 0 src/tor/src/test/test_switch_id.sh | 0 src/tor/src/test/test_workqueue_cancel.sh | 0 src/tor/src/test/test_workqueue_efd.sh | 0 src/tor/src/test/test_workqueue_efd2.sh | 0 src/tor/src/test/test_workqueue_pipe.sh | 0 src/tor/src/test/test_workqueue_pipe2.sh | 0 src/tor/src/test/test_workqueue_socketpair.sh | 0 src/tor/src/test/test_zero_length_keys.sh | 0 src/tor/src/test/zero_length_keys.sh | 0 17 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 src/tor/src/test/fuzz_static_testcases.sh mode change 100644 => 100755 src/tor/src/test/test-network.sh mode change 100644 => 100755 src/tor/src/test/test_bt.sh mode change 100644 => 100755 src/tor/src/test/test_hs_ntor.sh mode change 100644 => 100755 src/tor/src/test/test_key_expiration.sh mode change 100644 => 100755 src/tor/src/test/test_keygen.sh mode change 100644 => 100755 src/tor/src/test/test_ntor.sh mode change 100644 => 100755 src/tor/src/test/test_rust.sh mode change 100644 => 100755 src/tor/src/test/test_switch_id.sh mode change 100644 => 100755 src/tor/src/test/test_workqueue_cancel.sh mode change 100644 => 100755 src/tor/src/test/test_workqueue_efd.sh mode change 100644 => 100755 src/tor/src/test/test_workqueue_efd2.sh mode change 100644 => 100755 src/tor/src/test/test_workqueue_pipe.sh mode change 100644 => 100755 src/tor/src/test/test_workqueue_pipe2.sh mode change 100644 => 100755 src/tor/src/test/test_workqueue_socketpair.sh mode change 100644 => 100755 src/tor/src/test/test_zero_length_keys.sh mode change 100644 => 100755 src/tor/src/test/zero_length_keys.sh diff --git a/src/tor/src/test/fuzz_static_testcases.sh b/src/tor/src/test/fuzz_static_testcases.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test-network.sh b/src/tor/src/test/test-network.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_bt.sh b/src/tor/src/test/test_bt.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_hs_ntor.sh b/src/tor/src/test/test_hs_ntor.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_key_expiration.sh b/src/tor/src/test/test_key_expiration.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_keygen.sh b/src/tor/src/test/test_keygen.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_ntor.sh b/src/tor/src/test/test_ntor.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_rust.sh b/src/tor/src/test/test_rust.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_switch_id.sh b/src/tor/src/test/test_switch_id.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_workqueue_cancel.sh b/src/tor/src/test/test_workqueue_cancel.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_workqueue_efd.sh b/src/tor/src/test/test_workqueue_efd.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_workqueue_efd2.sh b/src/tor/src/test/test_workqueue_efd2.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_workqueue_pipe.sh b/src/tor/src/test/test_workqueue_pipe.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_workqueue_pipe2.sh b/src/tor/src/test/test_workqueue_pipe2.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_workqueue_socketpair.sh b/src/tor/src/test/test_workqueue_socketpair.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/test_zero_length_keys.sh b/src/tor/src/test/test_zero_length_keys.sh old mode 100644 new mode 100755 diff --git a/src/tor/src/test/zero_length_keys.sh b/src/tor/src/test/zero_length_keys.sh old mode 100644 new mode 100755 From 991dcdfa9d9242d2a9f4c8bfcedbf8e267adb874 Mon Sep 17 00:00:00 2001 From: thebevrishot Date: Thu, 29 Nov 2018 16:35:58 +0700 Subject: [PATCH 8/8] Fix depends build scripts permission --- depends/config.guess | 0 depends/config.sub | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 depends/config.guess mode change 100644 => 100755 depends/config.sub diff --git a/depends/config.guess b/depends/config.guess old mode 100644 new mode 100755 diff --git a/depends/config.sub b/depends/config.sub old mode 100644 new mode 100755