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()