diff --git a/.cproject b/.cproject
index 778099856..432241155 100755
--- a/.cproject
+++ b/.cproject
@@ -45,4 +45,520 @@
+
+
+
+ make
+
+ all
+ true
+ true
+ false
+
+
+ make
+
+ am--refresh
+ true
+ true
+ false
+
+
+ make
+
+ check
+ true
+ true
+ false
+
+
+ make
+
+ clean
+ true
+ true
+ false
+
+
+ make
+
+ clean-cscope
+ true
+ true
+ false
+
+
+ make
+
+ clean-libtool
+ true
+ true
+ false
+
+
+ make
+
+ clean-local
+ true
+ true
+ false
+
+
+ make
+
+ contrib/devtools/split-debug.sh
+ true
+ true
+ false
+
+
+ make
+
+ cscope
+ true
+ true
+ false
+
+
+ make
+
+ cscope.files
+ true
+ true
+ false
+
+
+ make
+
+ cscopelist
+ true
+ true
+ false
+
+
+ make
+
+ ctags
+ true
+ true
+ false
+
+
+ make
+
+ deploydir
+ true
+ true
+ false
+
+
+ make
+
+ dist
+ true
+ true
+ false
+
+
+ make
+
+ dist-all
+ true
+ true
+ false
+
+
+ make
+
+ dist-bzip2
+ true
+ true
+ false
+
+
+ make
+
+ dist-gzip
+ true
+ true
+ false
+
+
+ make
+
+ dist-hook
+ true
+ true
+ false
+
+
+ make
+
+ dist-lzip
+ true
+ true
+ false
+
+
+ make
+
+ dist-shar
+ true
+ true
+ false
+
+
+ make
+
+ dist-tarZ
+ true
+ true
+ false
+
+
+ make
+
+ dist-xz
+ true
+ true
+ false
+
+
+ make
+
+ dist-zip
+ true
+ true
+ false
+
+
+ make
+
+ distcheck
+ true
+ true
+ false
+
+
+ make
+
+ distclean
+ true
+ true
+ false
+
+
+ make
+
+ distclean-hdr
+ true
+ true
+ false
+
+
+ make
+
+ distclean-libtool
+ true
+ true
+ false
+
+
+ make
+
+ distclean-tags
+ true
+ true
+ false
+
+
+ make
+
+ distcleancheck
+ true
+ true
+ false
+
+
+ make
+
+ distdir
+ true
+ true
+ false
+
+
+ make
+
+ distuninstallcheck
+ true
+ true
+ false
+
+
+ make
+
+ doc/Doxyfile
+ true
+ true
+ false
+
+
+ make
+
+ dvi
+ true
+ true
+ false
+
+
+ make
+
+ html
+ true
+ true
+ false
+
+
+ make
+
+ info
+ true
+ true
+ false
+
+
+ make
+
+ install
+ true
+ true
+ false
+
+
+ make
+
+ install-data
+ true
+ true
+ false
+
+
+ make
+
+ install-dvi
+ true
+ true
+ false
+
+
+ make
+
+ install-exec
+ true
+ true
+ false
+
+
+ make
+
+ install-html
+ true
+ true
+ false
+
+
+ make
+
+ install-info
+ true
+ true
+ false
+
+
+ make
+
+ install-man
+ true
+ true
+ false
+
+
+ make
+
+ install-pdf
+ true
+ true
+ false
+
+
+ make
+
+ install-pkgconfigDATA
+ true
+ true
+ false
+
+
+ make
+
+ install-ps
+ true
+ true
+ false
+
+
+ make
+
+ install-strip
+ true
+ true
+ false
+
+
+ make
+
+ installcheck
+ true
+ true
+ false
+
+
+ make
+
+ installdirs
+ true
+ true
+ false
+
+
+ make
+
+ libbitcoinconsensus.pc
+ true
+ true
+ false
+
+
+ make
+
+ maintainer-clean
+ true
+ true
+ false
+
+
+ make
+
+ Makefile
+ true
+ true
+ false
+
+
+ make
+
+ mostlyclean
+ true
+ true
+ false
+
+
+ make
+
+ mostlyclean-libtool
+ true
+ true
+ false
+
+
+ make
+
+ osx_volname
+ true
+ true
+ false
+
+
+ make
+
+ pdf
+ true
+ true
+ false
+
+
+ make
+
+ ps
+ true
+ true
+ false
+
+
+ make
+
+ share/qt/Info.plist
+ true
+ true
+ false
+
+
+ make
+
+ share/setup.nsi
+ true
+ true
+ false
+
+
+ make
+
+ src/config/bitcoin-config.h
+ true
+ true
+ false
+
+
+ make
+
+ src/config/stamp-h1
+ true
+ true
+ false
+
+
+ make
+
+ tags
+ true
+ true
+ false
+
+
+ make
+
+ test/config.ini
+ true
+ true
+ false
+
+
+ make
+
+ uninstall
+ true
+ true
+ false
+
+
+ make
+
+ uninstall-pkgconfigDATA
+ true
+ true
+ false
+
+
+
diff --git a/src/base58.cpp b/src/base58.cpp
old mode 100644
new mode 100755
diff --git a/src/pubkey.cpp b/src/pubkey.cpp
old mode 100644
new mode 100755
index 2da7be783..477a07311
--- a/src/pubkey.cpp
+++ b/src/pubkey.cpp
@@ -7,6 +7,8 @@
#include
#include
+#include
+
namespace
{
/* Global secp256k1_context object used for verification. */
diff --git a/src/test/key_tests.cpp b/src/test/key_tests.cpp
old mode 100644
new mode 100755
index 9b83b9e02..3037345f5
--- a/src/test/key_tests.cpp
+++ b/src/test/key_tests.cpp
@@ -16,18 +16,22 @@
#include
-static const std::string strSecret1 ("6uGFQ4DSW7zh1viHZi6iiVT17CncvoaV4MHvGvJKPDaLCdymj87");
-static const std::string strSecret2 ("6vVo7sPkeLTwVdAntrv4Gbnsyr75H8ChD3P5iyHziwaqe8mCYR5");
-static const std::string strSecret1C ("T3gJYmBuZXsdd65E7NQF88ZmUP2MaUanqnZg9GFS94W7kND4Ebjq");
-static const std::string strSecret2C ("T986ZKRRdnuuXLeDZuKBRrZW1ujotAncU9WTrFU1n7vMgRW75ZtF");
-static const CBitcoinAddress addr1 ("LiUo6Zn39joYJBzPUhssbDwAywhjFcoHE3");
-static const CBitcoinAddress addr2 ("LZJvLSP5SGKcFS13MHgdrVhpFUbEMB5XVC");
-static const CBitcoinAddress addr1C("Lh2G82Bi33RNuzz4UfSMZbh54jnWHVnmw8");
-static const CBitcoinAddress addr2C("LWegHWHB5rmaF5rgWYt1YN3StapRdnGJfU");
+//#define GENERATE_BITCOIN_ADDRESSES
+#ifdef GENERATE_BITCOIN_ADDRESSES
+#include
+#endif
-static const std::string strAddressBad("Lbi6bpMhSwp2CXkivEeUK9wzyQEFzHDfSr");
+static const std::string strSecret1 ("6UYrXhVrgjhHP9bjyc1HPVbKbkdLtrSLYTLZ9eJRpKUQeMTzuXt"); //hex: 5bfd923b4950181c2466a7b44fc759774b4bbbe99a8922dce9326c497e2c963f
+static const std::string strSecret2 ("6UbQ5c5u9ZSVSS7DdecXaHKSbU88NbBenepqn5Gd36cNTNAAZnx"); //hex: 61c453b04d3a8572359ac43bb0233084a590f36d736a4ce740398ffa29ae5184
+static const std::string strSecret1C ("RAbbcVkNJPSoJkxLgqWFLHCV6PZQosCqFqFJu9dvXrXyMmjB9Dr6"); //hex: 5bfd923b4950181c2466a7b44fc759774b4bbbe99a8922dce9326c497e2c963f01
+static const std::string strSecret2C ("RAnpsKrdAnBWXFpSkm1owu2Py8iTYHt1nVxAHwqx4Fm7h2SkaSQd"); //hex: 61c453b04d3a8572359ac43bb0233084a590f36d736a4ce740398ffa29ae518401
+static const CBitcoinAddress addr1 ("FGnu49xmR6MDgZ5biBASB73A9jzn5G2Chz");
+static const CBitcoinAddress addr2 ("FSwZQFY39grFLSfS57L2FQhX2XgJMhpuRQ");
+static const CBitcoinAddress addr1C("FTJAqaCyPdx9z3uSNNZz2r1D98gEJ4QpzU");
+static const CBitcoinAddress addr2C("FAS6sPR2dLvXKZBrDk7rmafKvW6YnoD9Vc");
+static const std::string strAddressBad("LWegHWHB5rmaF5rgWYt1YN3StapRdnGabc");
BOOST_FIXTURE_TEST_SUITE(key_tests, BasicTestingSetup)
@@ -54,6 +58,20 @@ BOOST_AUTO_TEST_CASE(key_test1)
CPubKey pubkey1C = key1C.GetPubKey();
CPubKey pubkey2C = key2C.GetPubKey();
+
+ CBitcoinAddress addr1BA,addr2BA,addr1CBA,addr2CBA;
+ addr1BA.Set(pubkey1.GetID());
+ addr2BA.Set(pubkey2.GetID());
+ addr1CBA.Set(pubkey1C.GetID());
+ addr2CBA.Set(pubkey2C.GetID());
+
+#ifdef GENERATE_BITCOIN_ADDRESSES
+ std::cout << "static const CBitcoinAddress addr1 (\"" << addr1BA.ToString() << "\");\n";
+ std::cout << "static const CBitcoinAddress addr2 (\"" << addr2BA.ToString() << "\");\n";
+ std::cout << "static const CBitcoinAddress addr1C(\"" << addr1CBA.ToString() << "\");\n";
+ std::cout << "static const CBitcoinAddress addr2C(\"" << addr2CBA.ToString() << "\");\n";
+#endif
+
BOOST_CHECK(key1.VerifyPubKey(pubkey1));
BOOST_CHECK(!key1.VerifyPubKey(pubkey1C));
BOOST_CHECK(!key1.VerifyPubKey(pubkey2));
@@ -95,21 +113,21 @@ BOOST_AUTO_TEST_CASE(key_test1)
BOOST_CHECK( pubkey1.Verify(hashMsg, sign1));
BOOST_CHECK(!pubkey1.Verify(hashMsg, sign2));
- BOOST_CHECK( pubkey1.Verify(hashMsg, sign1C));
+ BOOST_CHECK( pubkey1.Verify(hashMsg, sign1C)); //failed
BOOST_CHECK(!pubkey1.Verify(hashMsg, sign2C));
BOOST_CHECK(!pubkey2.Verify(hashMsg, sign1));
BOOST_CHECK( pubkey2.Verify(hashMsg, sign2));
BOOST_CHECK(!pubkey2.Verify(hashMsg, sign1C));
- BOOST_CHECK( pubkey2.Verify(hashMsg, sign2C));
+ BOOST_CHECK( pubkey2.Verify(hashMsg, sign2C)); //failed
- BOOST_CHECK( pubkey1C.Verify(hashMsg, sign1));
+ BOOST_CHECK( pubkey1C.Verify(hashMsg, sign1)); //failed
BOOST_CHECK(!pubkey1C.Verify(hashMsg, sign2));
BOOST_CHECK( pubkey1C.Verify(hashMsg, sign1C));
BOOST_CHECK(!pubkey1C.Verify(hashMsg, sign2C));
BOOST_CHECK(!pubkey2C.Verify(hashMsg, sign1));
- BOOST_CHECK( pubkey2C.Verify(hashMsg, sign2));
+ BOOST_CHECK( pubkey2C.Verify(hashMsg, sign2)); //failed
BOOST_CHECK(!pubkey2C.Verify(hashMsg, sign1C));
BOOST_CHECK( pubkey2C.Verify(hashMsg, sign2C));
@@ -143,19 +161,55 @@ BOOST_AUTO_TEST_CASE(key_test1)
BOOST_CHECK(key1.Sign(hashMsg, detsig));
BOOST_CHECK(key1C.Sign(hashMsg, detsigc));
BOOST_CHECK(detsig == detsigc);
- BOOST_CHECK(detsig == ParseHex("304402205dbbddda71772d95ce91cd2d14b592cfbc1dd0aabd6a394b6c2d377bbe59d31d022014ddda21494a4e221f0824f0b8b924c43fa43c0ad57dccdaa11f81a6bd4582f6"));
+ BOOST_CHECK(detsig == ParseHex("30450221008eb06cff5d3e674ec8cd6ff8178a5537af23339bcf646407fb3f4d59ff9b51560220267cca388c801f470890eb636f24eed2b432776789944435eb0b32bdf26dcf9a"));
+#ifdef GENERATE_BITCOIN_ADDRESSES
+ std::cout << "detsig == ParseHex(\"";
+ for (std::vector::const_iterator i = detsig.begin(); i != detsig.end(); ++i)
+ std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast(*i);
+ std::cout << ")\n";
+#endif
BOOST_CHECK(key2.Sign(hashMsg, detsig));
BOOST_CHECK(key2C.Sign(hashMsg, detsigc));
BOOST_CHECK(detsig == detsigc);
- BOOST_CHECK(detsig == ParseHex("3044022052d8a32079c11e79db95af63bb9600c5b04f21a9ca33dc129c2bfa8ac9dc1cd5022061d8ae5e0f6c1a16bde3719c64c2fd70e404b6428ab9a69566962e8771b5944d"));
+ BOOST_CHECK(detsig == ParseHex("3045022100b0208c440f805a57c654491518f6a7c699abd1767bfa738fc676fc5cb430395302206bb4ad99d6a0f952814f33816d4211ce36d7a5c116255927cf9b6b8d4779c276"));
+#ifdef GENERATE_BITCOIN_ADDRESSES
+ std::cout << "detsig == ParseHex(\"";
+ for (std::vector::const_iterator i = detsig.begin(); i != detsig.end(); ++i)
+ std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast(*i);
+ std::cout << ")\n";
+#endif
BOOST_CHECK(key1.SignCompact(hashMsg, detsig));
BOOST_CHECK(key1C.SignCompact(hashMsg, detsigc));
- BOOST_CHECK(detsig == ParseHex("1c5dbbddda71772d95ce91cd2d14b592cfbc1dd0aabd6a394b6c2d377bbe59d31d14ddda21494a4e221f0824f0b8b924c43fa43c0ad57dccdaa11f81a6bd4582f6"));
- BOOST_CHECK(detsigc == ParseHex("205dbbddda71772d95ce91cd2d14b592cfbc1dd0aabd6a394b6c2d377bbe59d31d14ddda21494a4e221f0824f0b8b924c43fa43c0ad57dccdaa11f81a6bd4582f6"));
+ BOOST_CHECK(detsig == ParseHex("1b8eb06cff5d3e674ec8cd6ff8178a5537af23339bcf646407fb3f4d59ff9b5156267cca388c801f470890eb636f24eed2b432776789944435eb0b32bdf26dcf9a"));
+#ifdef GENERATE_BITCOIN_ADDRESSES
+ std::cout << "detsig == ParseHex(\"";
+ for (std::vector::const_iterator i = detsig.begin(); i != detsig.end(); ++i)
+ std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast(*i);
+ std::cout << ")\n";
+#endif
+ BOOST_CHECK(detsigc == ParseHex("1f8eb06cff5d3e674ec8cd6ff8178a5537af23339bcf646407fb3f4d59ff9b5156267cca388c801f470890eb636f24eed2b432776789944435eb0b32bdf26dcf9a"));
+#ifdef GENERATE_BITCOIN_ADDRESSES
+ std::cout << "detsigc == ParseHex(\"";
+ for (std::vector::const_iterator i = detsigc.begin(); i != detsigc.end(); ++i)
+ std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast(*i);
+ std::cout << ")\n";
+#endif
BOOST_CHECK(key2.SignCompact(hashMsg, detsig));
BOOST_CHECK(key2C.SignCompact(hashMsg, detsigc));
- BOOST_CHECK(detsig == ParseHex("1c52d8a32079c11e79db95af63bb9600c5b04f21a9ca33dc129c2bfa8ac9dc1cd561d8ae5e0f6c1a16bde3719c64c2fd70e404b6428ab9a69566962e8771b5944d"));
- BOOST_CHECK(detsigc == ParseHex("2052d8a32079c11e79db95af63bb9600c5b04f21a9ca33dc129c2bfa8ac9dc1cd561d8ae5e0f6c1a16bde3719c64c2fd70e404b6428ab9a69566962e8771b5944d"));
+ BOOST_CHECK(detsig == ParseHex("1cb0208c440f805a57c654491518f6a7c699abd1767bfa738fc676fc5cb43039536bb4ad99d6a0f952814f33816d4211ce36d7a5c116255927cf9b6b8d4779c276"));
+#ifdef GENERATE_BITCOIN_ADDRESSES
+ std::cout << "detsig == ParseHex(\"";
+ for (std::vector::const_iterator i = detsig.begin(); i != detsig.end(); ++i)
+ std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast(*i);
+ std::cout << ")\n";
+#endif
+ BOOST_CHECK(detsigc == ParseHex("20b0208c440f805a57c654491518f6a7c699abd1767bfa738fc676fc5cb43039536bb4ad99d6a0f952814f33816d4211ce36d7a5c116255927cf9b6b8d4779c276"));
+#ifdef GENERATE_BITCOIN_ADDRESSES
+ std::cout << "detsigc == ParseHex(\"";
+ for (std::vector::const_iterator i = detsigc.begin(); i != detsigc.end(); ++i)
+ std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast(*i);
+ std::cout << ")\n";
+#endif
}
BOOST_AUTO_TEST_SUITE_END()