From 5ceed8b0f49c06c7c4313fbb8b7875d41f5b173a Mon Sep 17 00:00:00 2001 From: Jimmy Kiselak Date: Sat, 12 Mar 2016 00:08:51 -0500 Subject: [PATCH] change the alert key and update tests to reflect the new key --- src/chainparams.cpp | 2 +- src/test/alert_tests.cpp | 99 +++++++++++++++++++++++++++++++---- src/test/data/alertTests.raw | Bin 1279 -> 1278 bytes 3 files changed, 89 insertions(+), 12 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 9ce8bbaed..0731693bd 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -53,7 +53,7 @@ public: //pchMessageStart[1] = 0xe4; //pchMessageStart[2] = 0xaa; //pchMessageStart[3] = 0xf1; - vAlertPubKey = ParseHex("04fc9702847840aaf195de8442ebecedf5b095cdbb9bc716bda9110971b28a49e0ead8564ff0db22209e0374782c093bb899692d524e9d6a6956e7c5ecbcd68284"); + vAlertPubKey = ParseHex("04a887418f021a52e33c345367ba4265890f4e295426894f4e1aece407f6441b14a036efa702d6abeb2c61883e11dd00ddc193f669c23a896981c632a73f1314ae"); nDefaultPort = 8333; nMinerThreads = 2; nPruneAfterHeight = 100000; diff --git a/src/test/alert_tests.cpp b/src/test/alert_tests.cpp index 7239c76d3..a0d106402 100644 --- a/src/test/alert_tests.cpp +++ b/src/test/alert_tests.cpp @@ -17,6 +17,7 @@ #include "streams.h" #include "util.h" #include "utilstrencodings.h" +#include "key.h" #include "test/test_bitcoin.h" @@ -26,12 +27,79 @@ #include #include -#if 0 -// +bool SignAlert(CAlert &alert) +{ + CKey key; + std::vector vchkey = ParseHex("hex output of HexStr(CKey.GetPrivKey)"); + CPrivKey privKey(vchkey.begin(), vchkey.end()); + key.SetPrivKey(privKey, false); + + CDataStream sMsg(SER_NETWORK, PROTOCOL_VERSION); + sMsg << *(CUnsignedAlert*)&alert; + alert.vchMsg = std::vector(sMsg.begin(), sMsg.end()); + + if (!key.Sign(Hash(alert.vchMsg.begin(), alert.vchMsg.end()), alert.vchSig)) + { + LogPrintf("Sign Alert() : key.Sign failed\n"); + return false; + } + return true; +} + +bool SignAndSave(CAlert &alert, CDataStream &buffer) +{ + if (!SignAlert(alert)) + { + LogPrintf("SignAndSave() : could not sign alert\n"); + return false; + } + buffer << alert; + return true; +} + +template +std::string HexStrArray(const T itbegin, const T itend) +{ + std::string rv; + static const char hexmap[16] = { '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; + rv.reserve((itend-itbegin)*3); + int i = 0; + for(T it = itbegin; it < itend; ++it) + { + unsigned char val = (unsigned char)(*it); + if(it != itbegin) + { + if (i % 8 == 0) + rv.push_back('\n'); + else + rv.push_back(' '); + } + rv.push_back('0'); + rv.push_back('x'); + rv.push_back(hexmap[val>>4]); + rv.push_back(hexmap[val&15]); + rv.push_back(','); + i++; + } + + return rv; +} + +template +inline std::string HexStrArray(const T& vch) +{ + return HexStrArray(vch.begin(), vch.end()); +} + + // alertTests contains 7 alerts, generated with this code: // (SignAndSave code not shown, alert signing key is secret) // +void GenerateAlertTests() { + CDataStream sBuffer(SER_DISK, CLIENT_VERSION); + CAlert alert; alert.nRelayUntil = 60; alert.nExpiration = 24 * 60 * 60; @@ -43,45 +111,54 @@ alert.strComment = "Alert comment"; alert.strStatusBar = "Alert 1"; - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); alert.setSubVer.insert(std::string("/Satoshi:0.1.0/")); alert.strStatusBar = "Alert 1 for Satoshi 0.1.0"; - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); alert.setSubVer.insert(std::string("/Satoshi:0.2.0/")); alert.strStatusBar = "Alert 1 for Satoshi 0.1.0, 0.2.0"; - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); alert.setSubVer.clear(); ++alert.nID; alert.nCancel = 1; alert.nPriority = 100; alert.strStatusBar = "Alert 2, cancels 1"; - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); alert.nExpiration += 60; ++alert.nID; - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); ++alert.nID; alert.nMinVer = 11; alert.nMaxVer = 22; - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); ++alert.nID; alert.strStatusBar = "Alert 2 for Satoshi 0.1.0"; alert.setSubVer.insert(std::string("/Satoshi:0.1.0/")); - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); ++alert.nID; alert.nMinVer = 0; alert.nMaxVer = 999999; alert.strStatusBar = "Evil Alert'; /bin/ls; echo '"; alert.setSubVer.clear(); - SignAndSave(alert, "test/alertTests"); + SignAndSave(alert, sBuffer); + + std::vector vch = std::vector(sBuffer.begin(), sBuffer.end()); + + std::ofstream f; + f.open("alertTest.raw"); + for (std::vector::iterator itvch = vch.begin(); itvch != vch.end(); ++itvch) + { + f << *itvch; + } + f.close(); } -#endif struct ReadAlerts : public TestingSetup { diff --git a/src/test/data/alertTests.raw b/src/test/data/alertTests.raw index 01f50680b95aa307a1a013b643ded4ae0bc47162..1fa7acfbb47c26cf31ba7e0af2b569da66b96419 100644 GIT binary patch delta 617 zcmV-v0+#*%3H}L?LP$n1L;@g2i~Pljdiu)k4EIvVR~~I50=BBPLWtMUt-0xwQ;wJd zAWRcO%^%pj_*>?h&pa|?Y`p@}C~C6Ta0Ll{uEF^a2|Rd}+g zeKsv8LuALrqakFK3YmJHgWY&#Hv%9S(1d3=YE9KMYh*}QjyJp z&2wpbkpU%>TLD!`M=(VKApnM1WixIKEQsQVnmJ-~h)mGnus^c-EaseXJa;L*7diqU zI#ugMzS;y1v=^XXDi*rI7db>L;@gK{9q4HB|rAk#$Dfz0)p9|<;Cs!C`0l) zQiGWSAXvVBlSe|r5pI7il?OyssSXZB4P?Le&Pq0^N~?2{Zj&GbO-M#CL;@fjDcYMV z7};NyCZ1-^aM2&WY#@mClv0;`W(p290v7H9AVB+Dvx7e}sgGze=uSI>U{;opk~Ph*oI0~C|W164we_Tp%VtaqAKc=Qs=N5UUtW?&Qp#7Mn+m{}1=CgtG* zAVxVh%8E0DM0!Jk3V(NXymfccXeR&upinpN_tSmk)RSQZTtY$H!uhzZL}oTr5cKnM zj(1vBm;`eGaLg%ah>%-myZ!Q&*CS#Rzb DE-Dtj delta 618 zcmV-w0+s##3I7R@LPILqi(b)5Z@;CaFHA z0r%?g)xlfd`2V(65*0z(`b547N{j*^4I5lK)Ni`zMXrZl`Bv4?3_WQ38c0w&{@QTp zI2xnMDAkDhQB6A5S6J56=lDWjA}-3VzBU3N zF^?32`G<7TjoSQ;9G2oKsG=HSzoROB(dQ-CMW9YLOpyT;lMDhlM@BG20w6BevYQ{I z6$wS~cBwymDg}{#JMDf1zrEwvF;&yDuA~AWH$%KPKPN+4V5V*Jp33%MxsYbP%>z)F zG_1&0We`~>lOO{Xlc54QNJlV50wDm0mHqZpFx|Q6hxm5DU}xE4`+D`&ku1#k>X@_` zUDF@}AVv?X$-zp-t1R#fSy3apGM~TMo`0_@IlDOo!qzF%-IE{#O-V;EMFJrJxi`OE z;$=0JFONrzVRO|RHvb|=60Igic(Co}0w7cqCizaD0Zoxx+$v+6WDqOk^)x8T zdlU2BBYsLZBV=QfAp;bX$pckF)R8h#tv|6-7^HOfZ7WRLb&3XDf!{kx=lG6(se!6R z0w7_&!x@7E3Jc&e$t=_hx4)|5;K>)lXWWizfoo}+d0>-Z1YAN_&5t5)e7!|E;)y@Y z*}pT^fRsmm56y$IVy5;1O!s^OAYN}1eQi~L%pd6GQYgCT*#jk$O?=dK&QOmlI;f9< EE2F6!A^-pY