Auto merge of #1061 - ebfull:remove-libzerocash-completely, r=ebfull
Remove the rest of libzerocash. Closes #510.
This commit is contained in:
commit
ecef582339
|
@ -27,7 +27,6 @@ cd "${REPOROOT}"
|
||||||
|
|
||||||
# Test phases:
|
# Test phases:
|
||||||
run_test_phase "${REPOROOT}/qa/zcash/ensure-no-dot-so-in-depends.py"
|
run_test_phase "${REPOROOT}/qa/zcash/ensure-no-dot-so-in-depends.py"
|
||||||
run_test_phase "${REPOROOT}/src/zerocash/tests/utilTest"
|
|
||||||
|
|
||||||
# If make check fails, show test-suite.log as part of our run_test_phase
|
# If make check fails, show test-suite.log as part of our run_test_phase
|
||||||
# output (and fail the phase with false):
|
# output (and fail the phase with false):
|
||||||
|
|
|
@ -72,7 +72,6 @@ endif
|
||||||
# TODO: rename to libzcash
|
# TODO: rename to libzcash
|
||||||
LIBZCASH_H = \
|
LIBZCASH_H = \
|
||||||
zcash/IncrementalMerkleTree.h \
|
zcash/IncrementalMerkleTree.h \
|
||||||
zerocash/utils/util.h \
|
|
||||||
zcash/NoteEncryption.hpp \
|
zcash/NoteEncryption.hpp \
|
||||||
zcash/Address.hpp \
|
zcash/Address.hpp \
|
||||||
zcash/JoinSplit.hpp \
|
zcash/JoinSplit.hpp \
|
||||||
|
@ -408,7 +407,6 @@ bitcoin_tx_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
|
||||||
# zerocash protocol primitives #
|
# zerocash protocol primitives #
|
||||||
libzcash_a_SOURCES = \
|
libzcash_a_SOURCES = \
|
||||||
zcash/IncrementalMerkleTree.cpp \
|
zcash/IncrementalMerkleTree.cpp \
|
||||||
zerocash/utils/util.cpp \
|
|
||||||
zcash/NoteEncryption.cpp \
|
zcash/NoteEncryption.cpp \
|
||||||
zcash/Address.cpp \
|
zcash/Address.cpp \
|
||||||
zcash/JoinSplit.cpp \
|
zcash/JoinSplit.cpp \
|
||||||
|
|
|
@ -9,7 +9,8 @@ zcash_gtest_SOURCES = \
|
||||||
gtest/test_joinsplit.cpp \
|
gtest/test_joinsplit.cpp \
|
||||||
gtest/test_noteencryption.cpp \
|
gtest/test_noteencryption.cpp \
|
||||||
gtest/test_merkletree.cpp \
|
gtest/test_merkletree.cpp \
|
||||||
gtest/test_circuit.cpp
|
gtest/test_circuit.cpp \
|
||||||
|
gtest/test_libzcash_utils.cpp
|
||||||
|
|
||||||
zcash_gtest_CPPFLAGS = -DMULTICORE -fopenmp -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC
|
zcash_gtest_CPPFLAGS = -DMULTICORE -fopenmp -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DSTATIC
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
bin_PROGRAMS += \
|
bin_PROGRAMS += \
|
||||||
zcash/GenerateParams \
|
zcash/GenerateParams
|
||||||
zerocash/tests/utilTest
|
|
||||||
|
|
||||||
# tool for generating our public parameters
|
# tool for generating our public parameters
|
||||||
zcash_GenerateParams_SOURCES = zcash/GenerateParams.cpp
|
zcash_GenerateParams_SOURCES = zcash/GenerateParams.cpp
|
||||||
|
@ -10,12 +9,3 @@ zcash_GenerateParams_LDADD = \
|
||||||
$(LIBBITCOIN_UTIL) \
|
$(LIBBITCOIN_UTIL) \
|
||||||
$(LIBBITCOIN_CRYPTO) \
|
$(LIBBITCOIN_CRYPTO) \
|
||||||
$(LIBZCASH_LIBS)
|
$(LIBZCASH_LIBS)
|
||||||
|
|
||||||
# tests for utilities that come with zerocash
|
|
||||||
zerocash_tests_utilTest_SOURCES = zerocash/tests/utilTest.cpp
|
|
||||||
zerocash_tests_utilTest_LDADD = \
|
|
||||||
$(BOOST_LIBS) \
|
|
||||||
$(LIBZCASH) \
|
|
||||||
$(LIBBITCOIN_UTIL) \
|
|
||||||
$(LIBBITCOIN_CRYPTO) \
|
|
||||||
$(LIBZCASH_LIBS)
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
|
|
||||||
#include "zerocash/utils/util.h"
|
|
||||||
#include "zcash/util.h"
|
#include "zcash/util.h"
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
@ -14,7 +13,6 @@
|
||||||
#include "libsnark/gadgetlib1/gadgets/merkle_tree/merkle_tree_check_read_gadget.hpp"
|
#include "libsnark/gadgetlib1/gadgets/merkle_tree/merkle_tree_check_read_gadget.hpp"
|
||||||
|
|
||||||
using namespace libsnark;
|
using namespace libsnark;
|
||||||
using namespace libzerocash;
|
|
||||||
|
|
||||||
#include "zcash/circuit/utils.tcc"
|
#include "zcash/circuit/utils.tcc"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include "zcash/util.h"
|
||||||
|
|
||||||
|
TEST(libzcash_utils, convertBytesVectorToVector)
|
||||||
|
{
|
||||||
|
std::vector<unsigned char> bytes = {0x00, 0x01, 0x03, 0x12, 0xFF};
|
||||||
|
std::vector<bool> expected_bits = {
|
||||||
|
// 0x00
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
// 0x01
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 1,
|
||||||
|
// 0x03
|
||||||
|
0, 0, 0, 0, 0, 0, 1, 1,
|
||||||
|
// 0x12
|
||||||
|
0, 0, 0, 1, 0, 0, 1, 0,
|
||||||
|
// 0xFF
|
||||||
|
1, 1, 1, 1, 1, 1, 1, 1
|
||||||
|
};
|
||||||
|
ASSERT_TRUE(convertBytesVectorToVector(bytes) == expected_bits);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(libzcash_utils, convertVectorToInt)
|
||||||
|
{
|
||||||
|
ASSERT_TRUE(convertVectorToInt({0}) == 0);
|
||||||
|
ASSERT_TRUE(convertVectorToInt({1}) == 1);
|
||||||
|
ASSERT_TRUE(convertVectorToInt({0,1}) == 1);
|
||||||
|
ASSERT_TRUE(convertVectorToInt({1,0}) == 2);
|
||||||
|
ASSERT_TRUE(convertVectorToInt({1,1}) == 3);
|
||||||
|
ASSERT_TRUE(convertVectorToInt({1,0,0}) == 4);
|
||||||
|
ASSERT_TRUE(convertVectorToInt({1,0,1}) == 5);
|
||||||
|
ASSERT_TRUE(convertVectorToInt({1,1,0}) == 6);
|
||||||
|
|
||||||
|
ASSERT_THROW(convertVectorToInt(std::vector<bool>(100)), std::length_error);
|
||||||
|
|
||||||
|
{
|
||||||
|
std::vector<bool> v(63, 1);
|
||||||
|
ASSERT_TRUE(convertVectorToInt(v) == 0x7fffffffffffffff);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
std::vector<bool> v(64, 1);
|
||||||
|
ASSERT_TRUE(convertVectorToInt(v) == 0xffffffffffffffff);
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,6 +15,9 @@
|
||||||
#include "serialize.h"
|
#include "serialize.h"
|
||||||
#include "streams.h"
|
#include "streams.h"
|
||||||
|
|
||||||
|
#include "zcash/IncrementalMerkleTree.hpp"
|
||||||
|
#include "zcash/util.h"
|
||||||
|
|
||||||
#include "libsnark/common/default_types/r1cs_ppzksnark_pp.hpp"
|
#include "libsnark/common/default_types/r1cs_ppzksnark_pp.hpp"
|
||||||
#include "libsnark/zk_proof_systems/ppzksnark/r1cs_ppzksnark/r1cs_ppzksnark.hpp"
|
#include "libsnark/zk_proof_systems/ppzksnark/r1cs_ppzksnark/r1cs_ppzksnark.hpp"
|
||||||
#include "libsnark/gadgetlib1/gadgets/hashes/sha256/sha256_gadget.hpp"
|
#include "libsnark/gadgetlib1/gadgets/hashes/sha256/sha256_gadget.hpp"
|
||||||
|
@ -40,13 +43,9 @@ read_json(const std::string& jsondata)
|
||||||
return v.get_array();
|
return v.get_array();
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "zcash/IncrementalMerkleTree.hpp"
|
|
||||||
#include "zerocash/utils/util.h"
|
|
||||||
|
|
||||||
//#define PRINT_JSON 1
|
//#define PRINT_JSON 1
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace libzerocash;
|
|
||||||
using namespace libsnark;
|
using namespace libsnark;
|
||||||
|
|
||||||
|
|
||||||
|
@ -178,10 +177,10 @@ void test_tree(Array root_tests, Array ser_tests, Array witness_ser_tests, Array
|
||||||
std::vector<bool> commitment_bv;
|
std::vector<bool> commitment_bv;
|
||||||
{
|
{
|
||||||
std::vector<unsigned char> commitment_v(test_commitment.begin(), test_commitment.end());
|
std::vector<unsigned char> commitment_v(test_commitment.begin(), test_commitment.end());
|
||||||
convertBytesVectorToVector(commitment_v, commitment_bv);
|
commitment_bv = convertBytesVectorToVector(commitment_v);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t path_index = libzerocash::convertVectorToInt(path.index);
|
size_t path_index = convertVectorToInt(path.index);
|
||||||
|
|
||||||
commitment.bits.fill_with_bits(pb, bit_vector(commitment_bv));
|
commitment.bits.fill_with_bits(pb, bit_vector(commitment_bv));
|
||||||
positions.fill_with_bits_of_ulong(pb, path_index);
|
positions.fill_with_bits_of_ulong(pb, path_index);
|
||||||
|
@ -193,7 +192,7 @@ void test_tree(Array root_tests, Array ser_tests, Array witness_ser_tests, Array
|
||||||
{
|
{
|
||||||
uint256 witroot = wit.root();
|
uint256 witroot = wit.root();
|
||||||
std::vector<unsigned char> root_v(witroot.begin(), witroot.end());
|
std::vector<unsigned char> root_v(witroot.begin(), witroot.end());
|
||||||
convertBytesVectorToVector(root_v, root_bv);
|
root_bv = convertBytesVectorToVector(root_v);
|
||||||
}
|
}
|
||||||
|
|
||||||
root.bits.fill_with_bits(pb, bit_vector(root_bv));
|
root.bits.fill_with_bits(pb, bit_vector(root_bv));
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
#include "zcash/IncrementalMerkleTree.hpp"
|
#include "zcash/IncrementalMerkleTree.hpp"
|
||||||
#include "crypto/sha256.h"
|
#include "crypto/sha256.h"
|
||||||
#include "zerocash/utils/util.h" // TODO: remove these utilities
|
#include "zcash/util.h"
|
||||||
|
|
||||||
namespace libzcash {
|
namespace libzcash {
|
||||||
|
|
||||||
|
@ -244,11 +244,8 @@ MerklePath IncrementalMerkleTree<Depth, Hash>::path(std::deque<Hash> filler_hash
|
||||||
BOOST_FOREACH(Hash b, path)
|
BOOST_FOREACH(Hash b, path)
|
||||||
{
|
{
|
||||||
std::vector<unsigned char> hashv(b.begin(), b.end());
|
std::vector<unsigned char> hashv(b.begin(), b.end());
|
||||||
std::vector<bool> tmp_b;
|
|
||||||
|
|
||||||
libzerocash::convertBytesVectorToVector(hashv, tmp_b);
|
merkle_path.push_back(convertBytesVectorToVector(hashv));
|
||||||
|
|
||||||
merkle_path.push_back(tmp_b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::reverse(merkle_path.begin(), merkle_path.end());
|
std::reverse(merkle_path.begin(), merkle_path.end());
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
#include "prf.h"
|
#include "prf.h"
|
||||||
#include "sodium.h"
|
#include "sodium.h"
|
||||||
|
|
||||||
#include "zerocash/utils/util.h"
|
|
||||||
#include "zcash/util.h"
|
#include "zcash/util.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
|
@ -50,7 +50,7 @@ public:
|
||||||
void generate_r1cs_witness(const MerklePath& path) {
|
void generate_r1cs_witness(const MerklePath& path) {
|
||||||
// TODO: Change libsnark so that it doesn't require this goofy
|
// TODO: Change libsnark so that it doesn't require this goofy
|
||||||
// number thing in its API.
|
// number thing in its API.
|
||||||
size_t path_index = libzerocash::convertVectorToInt(path.index);
|
size_t path_index = convertVectorToInt(path.index);
|
||||||
|
|
||||||
positions.fill_with_bits_of_ulong(this->pb, path_index);
|
positions.fill_with_bits_of_ulong(this->pb, path_index);
|
||||||
|
|
||||||
|
|
|
@ -22,13 +22,8 @@ std::vector<bool> trailing252(std::vector<bool> input) {
|
||||||
template<typename T>
|
template<typename T>
|
||||||
std::vector<bool> to_bool_vector(T input) {
|
std::vector<bool> to_bool_vector(T input) {
|
||||||
std::vector<unsigned char> input_v(input.begin(), input.end());
|
std::vector<unsigned char> input_v(input.begin(), input.end());
|
||||||
std::vector<bool> output_bv(256, 0);
|
|
||||||
libzerocash::convertBytesVectorToVector(
|
|
||||||
input_v,
|
|
||||||
output_bv
|
|
||||||
);
|
|
||||||
|
|
||||||
return output_bv;
|
return convertBytesVectorToVector(input_v);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<bool> uint256_to_bool_vector(uint256 input) {
|
std::vector<bool> uint256_to_bool_vector(uint256 input) {
|
||||||
|
@ -41,10 +36,8 @@ std::vector<bool> uint252_to_bool_vector(uint252 input) {
|
||||||
|
|
||||||
std::vector<bool> uint64_to_bool_vector(uint64_t input) {
|
std::vector<bool> uint64_to_bool_vector(uint64_t input) {
|
||||||
auto num_bv = convertIntToVectorLE(input);
|
auto num_bv = convertIntToVectorLE(input);
|
||||||
std::vector<bool> num_v(64, 0);
|
|
||||||
libzerocash::convertBytesVectorToVector(num_bv, num_v);
|
|
||||||
|
|
||||||
return num_v;
|
return convertBytesVectorToVector(num_bv);
|
||||||
}
|
}
|
||||||
|
|
||||||
void insert_uint256(std::vector<bool>& into, uint256 from) {
|
void insert_uint256(std::vector<bool>& into, uint256 from) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "zcash/util.h"
|
#include "zcash/util.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
std::vector<unsigned char> convertIntToVectorLE(const uint64_t val_int) {
|
std::vector<unsigned char> convertIntToVectorLE(const uint64_t val_int) {
|
||||||
std::vector<unsigned char> bytes;
|
std::vector<unsigned char> bytes;
|
||||||
|
@ -10,3 +11,35 @@ std::vector<unsigned char> convertIntToVectorLE(const uint64_t val_int) {
|
||||||
|
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert bytes into boolean vector. (MSB to LSB)
|
||||||
|
std::vector<bool> convertBytesVectorToVector(const std::vector<unsigned char>& bytes) {
|
||||||
|
std::vector<bool> ret;
|
||||||
|
ret.resize(bytes.size() * 8);
|
||||||
|
|
||||||
|
unsigned char c;
|
||||||
|
for (size_t i = 0; i < bytes.size(); i++) {
|
||||||
|
c = bytes.at(i);
|
||||||
|
for (size_t j = 0; j < 8; j++) {
|
||||||
|
ret.at((i*8)+j) = (c >> (7-j)) & 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert boolean vector (big endian) to integer
|
||||||
|
uint64_t convertVectorToInt(const std::vector<bool>& v) {
|
||||||
|
if (v.size() > 64) {
|
||||||
|
throw std::length_error ("boolean vector can't be larger than 64 bits");
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t result = 0;
|
||||||
|
for (size_t i=0; i<v.size();i++) {
|
||||||
|
if (v.at(i)) {
|
||||||
|
result |= (uint64_t)1 << ((v.size() - 1) - i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
|
@ -5,5 +5,7 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
std::vector<unsigned char> convertIntToVectorLE(const uint64_t val_int);
|
std::vector<unsigned char> convertIntToVectorLE(const uint64_t val_int);
|
||||||
|
std::vector<bool> convertBytesVectorToVector(const std::vector<unsigned char>& bytes);
|
||||||
|
uint64_t convertVectorToInt(const std::vector<bool>& v);
|
||||||
|
|
||||||
#endif // __ZCASH_UTIL_H
|
#endif // __ZCASH_UTIL_H
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
*.o
|
|
||||||
*.d
|
|
||||||
depinst/
|
|
||||||
depsrc/
|
|
||||||
|
|
||||||
libzerocash.a
|
|
||||||
libzerocash.so
|
|
||||||
|
|
||||||
zerocash_pour_ppzksnark/tests/test_zerocash_pour_ppzksnark
|
|
||||||
zerocash_pour_ppzksnark/profiling/profile_zerocash_pour_gadget
|
|
||||||
tests/zerocashTest
|
|
||||||
tests/merkleTest
|
|
||||||
tests/utilTest
|
|
||||||
libzerocash/GenerateParamsForFiles
|
|
||||||
zerocashTest-proving-key
|
|
||||||
zerocashTest-verification-key
|
|
|
@ -1,7 +0,0 @@
|
||||||
Eli Ben-Sasson
|
|
||||||
Alessandro Chiesa
|
|
||||||
Christina Garman
|
|
||||||
Matthew Green
|
|
||||||
Ian Miers
|
|
||||||
Eran Tromer
|
|
||||||
Madars Virza
|
|
|
@ -1,19 +0,0 @@
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
|
@ -1,31 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
SUITE_EXIT_STATUS=0
|
|
||||||
REPOROOT="$(readlink -f "$(dirname "$0")"/../)"
|
|
||||||
|
|
||||||
function run_test_phase
|
|
||||||
{
|
|
||||||
echo "===== BEGIN: $*"
|
|
||||||
set +e
|
|
||||||
eval "$@"
|
|
||||||
if [ $? -eq 0 ]
|
|
||||||
then
|
|
||||||
echo "===== PASSED: $*"
|
|
||||||
else
|
|
||||||
echo "===== FAILED: $*"
|
|
||||||
SUITE_EXIT_STATUS=1
|
|
||||||
fi
|
|
||||||
set -e
|
|
||||||
}
|
|
||||||
|
|
||||||
cd "${REPOROOT}"
|
|
||||||
|
|
||||||
# Test phases:
|
|
||||||
run_test_phase "${REPOROOT}/tests/utilTest"
|
|
||||||
run_test_phase "${REPOROOT}/tests/zerocashTest"
|
|
||||||
run_test_phase "${REPOROOT}/tests/merkleTest"
|
|
||||||
run_test_phase "${REPOROOT}/zerocash_pour_ppzksnark/tests/test_zerocash_pour_ppzksnark"
|
|
||||||
|
|
||||||
exit $SUITE_EXIT_STATUS
|
|
|
@ -1,48 +0,0 @@
|
||||||
/** @file
|
|
||||||
*****************************************************************************
|
|
||||||
|
|
||||||
Implementation of interfaces for a timer to profile executions.
|
|
||||||
|
|
||||||
*****************************************************************************
|
|
||||||
* @author This file is part of libzerocash, developed by the Zerocash
|
|
||||||
* project and contributors (see AUTHORS).
|
|
||||||
* @copyright MIT license (see LICENSE file)
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
|
|
||||||
#include "zerocash/tests/timer.h"
|
|
||||||
|
|
||||||
namespace libzerocash {
|
|
||||||
|
|
||||||
struct timeval tv_start;
|
|
||||||
struct timeval tv_end;
|
|
||||||
|
|
||||||
void timer_start() {
|
|
||||||
printf("%s\n", "Starting Timer");
|
|
||||||
gettimeofday(&tv_start, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void timer_stop() {
|
|
||||||
float elapsed;
|
|
||||||
gettimeofday(&tv_end, 0);
|
|
||||||
|
|
||||||
elapsed = float(tv_end.tv_sec-tv_start.tv_sec) + (tv_end.tv_usec-tv_start.tv_usec)/float(1000000);
|
|
||||||
printf("%s [%fs]\n\n", "Stopping Timer", elapsed);
|
|
||||||
}
|
|
||||||
|
|
||||||
void timer_start(const std::string location) {
|
|
||||||
printf("%s %s\n", "(enter)", location.c_str());
|
|
||||||
gettimeofday(&tv_start, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void timer_stop(const std::string location) {
|
|
||||||
float elapsed;
|
|
||||||
gettimeofday(&tv_end, 0);
|
|
||||||
|
|
||||||
elapsed = float(tv_end.tv_sec-tv_start.tv_sec) + (tv_end.tv_usec-tv_start.tv_usec)/float(1000000);
|
|
||||||
printf("%s %s [%fs]\n\n", "(leave)", location.c_str(), elapsed);
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* namespace libzerocash */
|
|
|
@ -1,28 +0,0 @@
|
||||||
/** @file
|
|
||||||
*****************************************************************************
|
|
||||||
|
|
||||||
Declaration of interfaces for a timer to profile executions.
|
|
||||||
|
|
||||||
*****************************************************************************
|
|
||||||
* @author This file is part of libzerocash, developed by the Zerocash
|
|
||||||
* project and contributors (see AUTHORS).
|
|
||||||
* @copyright MIT license (see LICENSE file)
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef TIMER_H_
|
|
||||||
#define TIMER_H_
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace libzerocash {
|
|
||||||
|
|
||||||
void timer_start();
|
|
||||||
void timer_stop();
|
|
||||||
|
|
||||||
void timer_start(const std::string location);
|
|
||||||
void timer_stop(const std::string location);
|
|
||||||
|
|
||||||
} /* namespace libzerocash */
|
|
||||||
|
|
||||||
#endif /* TIMER_H_ */
|
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
|
|
||||||
#define BOOST_TEST_MODULE utilTest
|
|
||||||
#include <boost/test/included/unit_test.hpp>
|
|
||||||
|
|
||||||
#include "zerocash/utils/util.h"
|
|
||||||
#include "crypto/sha256.h"
|
|
||||||
|
|
||||||
#include "uint256.h"
|
|
||||||
#include "utilstrencodings.h"
|
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE( testConvertVectorToInt ) {
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({0}) == 0);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({1}) == 1);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({0,1}) == 1);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({1,0}) == 2);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({1,1}) == 3);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({1,0,0}) == 4);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({1,0,1}) == 5);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt({1,1,0}) == 6);
|
|
||||||
|
|
||||||
BOOST_CHECK_THROW(libzerocash::convertVectorToInt(std::vector<bool>(100)), std::length_error);
|
|
||||||
|
|
||||||
{
|
|
||||||
std::vector<bool> v(63, 1);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt(v) == 0x7fffffffffffffff);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::vector<bool> v(64, 1);
|
|
||||||
BOOST_CHECK(libzerocash::convertVectorToInt(v) == 0xffffffffffffffff);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_AUTO_TEST_CASE( testConvertBytesVectorToVector ) {
|
|
||||||
std::vector<unsigned char> bytes = {0x00, 0x01, 0x03, 0x12, 0xFF};
|
|
||||||
std::vector<bool> expected_bits = {
|
|
||||||
// 0x00
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
// 0x01
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 1,
|
|
||||||
// 0x03
|
|
||||||
0, 0, 0, 0, 0, 0, 1, 1,
|
|
||||||
// 0x12
|
|
||||||
0, 0, 0, 1, 0, 0, 1, 0,
|
|
||||||
// 0xFF
|
|
||||||
1, 1, 1, 1, 1, 1, 1, 1
|
|
||||||
};
|
|
||||||
std::vector<bool> actual_bits;
|
|
||||||
libzerocash::convertBytesVectorToVector(bytes, actual_bits);
|
|
||||||
BOOST_CHECK(actual_bits == expected_bits);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
#include <string>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <exception>
|
|
||||||
#include <cstring>
|
|
||||||
#include <iomanip>
|
|
||||||
#include <algorithm>
|
|
||||||
|
|
||||||
#include <sodium.h>
|
|
||||||
|
|
||||||
#include "util.h"
|
|
||||||
|
|
||||||
namespace libzerocash {
|
|
||||||
|
|
||||||
void convertBytesVectorToVector(const std::vector<unsigned char>& bytes, std::vector<bool>& v) {
|
|
||||||
v.resize(bytes.size() * 8);
|
|
||||||
unsigned char c;
|
|
||||||
for (size_t i = 0; i < bytes.size(); i++) {
|
|
||||||
c = bytes.at(i);
|
|
||||||
for (size_t j = 0; j < 8; j++) {
|
|
||||||
v.at((i*8)+j) = (c >> (7-j)) & 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t convertVectorToInt(const std::vector<bool>& v) {
|
|
||||||
if (v.size() > 64) {
|
|
||||||
throw std::length_error ("boolean vector can't be larger than 64 bits");
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t result = 0;
|
|
||||||
for (size_t i=0; i<v.size();i++) {
|
|
||||||
if (v.at(i)) {
|
|
||||||
result |= (uint64_t)1 << ((v.size() - 1) - i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* namespace libzerocash */
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
#ifndef UTIL_H_
|
|
||||||
#define UTIL_H_
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <stdexcept>
|
|
||||||
#include <vector>
|
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
#include "crypto/sha256.h"
|
|
||||||
|
|
||||||
namespace libzerocash {
|
|
||||||
|
|
||||||
void convertBytesVectorToVector(const std::vector<unsigned char>& bytes, std::vector<bool>& v);
|
|
||||||
|
|
||||||
uint64_t convertVectorToInt(const std::vector<bool>& v);
|
|
||||||
|
|
||||||
} /* namespace libzerocash */
|
|
||||||
#endif /* UTIL_H_ */
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue