From de9cffe5c5015d5c7ad5572234f406ad045c48ac Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Thu, 6 Dec 2012 00:02:02 -0800 Subject: [PATCH] Emit 256 bits of random on RPC server subscribe. --- src/cpp/ripple/Ledger.cpp | 5 +---- src/cpp/ripple/NetworkOPs.cpp | 16 ++++++++++++++++ src/cpp/ripple/RPCHandler.cpp | 6 +++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/cpp/ripple/Ledger.cpp b/src/cpp/ripple/Ledger.cpp index 7234a0a64..c9c76beee 100644 --- a/src/cpp/ripple/Ledger.cpp +++ b/src/cpp/ripple/Ledger.cpp @@ -774,14 +774,13 @@ SLE::pointer Ledger::getASNode(LedgerStateParms& parms, const uint256& nodeID, if ( (parms & lepCREATE) == 0 ) { parms = lepMISSING; -cLog(lsDEBUG) << "getASNode: MISSING"; + return SLE::pointer(); } parms = parms | lepCREATED | lepOKAY; SLE::pointer sle=boost::make_shared(let, nodeID); -cLog(lsDEBUG) << "getASNode: CREATED"; return sle; } @@ -790,14 +789,12 @@ cLog(lsDEBUG) << "getASNode: CREATED"; if (sle->getType() != let) { // maybe it's a currency or something -cLog(lsDEBUG) << "getASNode: WRONG TYPE"; parms = parms | lepWRONGTYPE; return SLE::pointer(); } parms = parms | lepOKAY; -cLog(lsDEBUG) << "getASNode: FOUND"; return sle; } diff --git a/src/cpp/ripple/NetworkOPs.cpp b/src/cpp/ripple/NetworkOPs.cpp index e706ab4b5..9ec450ddf 100644 --- a/src/cpp/ripple/NetworkOPs.cpp +++ b/src/cpp/ripple/NetworkOPs.cpp @@ -1307,8 +1307,24 @@ bool NetworkOPs::unsubLedger(InfoSub* ispListener) // <-- bool: true=added, false=already there bool NetworkOPs::subServer(InfoSub* ispListener, Json::Value& jvResult) { + uint256 uRandom; + jvResult["stand_alone"] = theConfig.RUN_STANDALONE; + switch (RAND_bytes(uRandom.begin(), uRandom.size())) + { + case 0: + case 1: + jvResult["random"] = uRandom.ToString(); + break; + + case -1: + default: + // XXX Should probably stop running. + cLog(lsFATAL) << "Internal error: unable to generate secure random."; + break; + } + return mSubServer.insert(ispListener).second; } diff --git a/src/cpp/ripple/RPCHandler.cpp b/src/cpp/ripple/RPCHandler.cpp index 9d0728475..3060d8e5e 100644 --- a/src/cpp/ripple/RPCHandler.cpp +++ b/src/cpp/ripple/RPCHandler.cpp @@ -658,13 +658,13 @@ Json::Value RPCHandler::doAccountOffers(Json::Value jvRequest) // Result: // { -// random: +// random: // } Json::Value RPCHandler::doRandom(Json::Value jvRequest) { - uint160 uRandom; + uint256 uRandom; - switch (RAND_pseudo_bytes(uRandom.begin(), uRandom.size())) + switch (RAND_bytes(uRandom.begin(), uRandom.size())) { case 0: case 1: