diff --git a/newcoin.vcxproj b/newcoin.vcxproj index 6d82588bf7..fb500bb55d 100644 --- a/newcoin.vcxproj +++ b/newcoin.vcxproj @@ -100,13 +100,13 @@ + - @@ -157,11 +157,7 @@ - - - - @@ -178,36 +174,75 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - diff --git a/newcoin.vcxproj.filters b/newcoin.vcxproj.filters index d9c41f387c..4896e44620 100644 --- a/newcoin.vcxproj.filters +++ b/newcoin.vcxproj.filters @@ -90,9 +90,6 @@ Source Files - - Source Files - Source Files @@ -246,32 +243,17 @@ Source Files + + Source Files + Header Files - - Header Files - - - Header Files - Header Files - - Header Files - - - Header Files - - - Header Files - - - Header Files - Header Files\util @@ -281,54 +263,12 @@ Header Files - - Header Files - - - Header Files - - - Header Files - Header Files\util - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - Header Files - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - Source Files\cryptopp @@ -362,36 +302,21 @@ Source Files\cryptopp - - Header Files - Header Files - - Header Files - Header Files - - Header Files - Header Files - - Header Files - Header Files\util Header Files\util - - Header Files - Header Files\util @@ -401,10 +326,190 @@ Header Files - + Header Files - + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + Header Files diff --git a/newcoind.cfg b/newcoind.cfg index a6c0ea16d7..6c4260dd91 100644 --- a/newcoind.cfg +++ b/newcoind.cfg @@ -49,3 +49,6 @@ [rpc_port] 5005 + +[rpc_allow_remote] +1 diff --git a/src/RPCServer.cpp b/src/RPCServer.cpp index 57f3351a1e..55420d07aa 100644 --- a/src/RPCServer.cpp +++ b/src/RPCServer.cpp @@ -275,10 +275,10 @@ Json::Value RPCServer::getMasterGenerator(const uint256& uLedger, const NewcoinA // - Make sure the source account can pay. // --> naRegularSeed : To find the generator // --> naSrcAccountID : Account we want the public and private regular keys to. -// --> naVerifyGenerator : If provided, the found master public generator must match. // <-- naAccountPublic : Regular public key for naSrcAccountID // <-- naAccountPrivate : Regular private key for naSrcAccountID // <-- saSrcBalance: Balance minus fee. +// --> naVerifyGenerator : If provided, the found master public generator must match. Json::Value RPCServer::authorize(const uint256& uLedger, const NewcoinAddress& naRegularSeed, const NewcoinAddress& naSrcAccountID, NewcoinAddress& naAccountPublic, NewcoinAddress& naAccountPrivate, @@ -291,19 +291,21 @@ Json::Value RPCServer::authorize(const uint256& uLedger, { return RPCError(rpcSRC_MISSING); } - - // Source must have been claimed. - if (!asSrc->bHaveAuthorizedKey()) - { - return RPCError(rpcSRC_UNCLAIMED); - } - + NewcoinAddress naMasterGenerator; - Json::Value obj = getMasterGenerator(uLedger, naRegularSeed, naMasterGenerator); + + if(asSrc->bHaveAuthorizedKey()) + { + Json::Value obj = getMasterGenerator(uLedger, naRegularSeed, naMasterGenerator); - if (!obj.empty()) - return obj; + if (!obj.empty()) + return obj; + }else + { + // Try the seed as a master seed. + naMasterGenerator.setFamilyGenerator(naRegularSeed); + } // If naVerifyGenerator is provided, make sure it is the master generator. if (naVerifyGenerator.isValid() && naMasterGenerator != naVerifyGenerator) @@ -330,7 +332,7 @@ Json::Value RPCServer::authorize(const uint256& uLedger, naAccountPublic.setAccountPublic(naGenerator, iIndex); naAccountPrivate.setAccountPrivate(naGenerator, naRegularSeed, iIndex); - if (asSrc->getAuthorizedKey().getAccountID() != naAccountPublic.getAccountID()) + if (asSrc->bHaveAuthorizedKey() && (asSrc->getAuthorizedKey().getAccountID() != naAccountPublic.getAccountID())) { std::cerr << "iIndex: " << iIndex << std::endl; std::cerr << "sfAuthorizedKey: " << strHex(asSrc->getAuthorizedKey().getAccountID()) << std::endl; @@ -350,6 +352,7 @@ Json::Value RPCServer::authorize(const uint256& uLedger, saSrcBalance -= saFee; } + Json::Value obj; return obj; } @@ -426,13 +429,13 @@ Json::Value RPCServer::doAccountEmailSet(Json::Value ¶ms) return RPCError(rpcSRC_ACT_MALFORMED); } - NewcoinAddress naMasterGenerator; + NewcoinAddress naVerifyGenerator; NewcoinAddress naAccountPublic; NewcoinAddress naAccountPrivate; AccountState::pointer asSrc; STAmount saSrcBalance; Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate, - saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naMasterGenerator); + saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naVerifyGenerator); if (!obj.empty()) return obj; @@ -634,13 +637,13 @@ Json::Value RPCServer::doAccountMessageSet(Json::Value& params) { return RPCError(rpcPUBLIC_MALFORMED); } - NewcoinAddress naMasterGenerator; + NewcoinAddress naVerifyGenerator; NewcoinAddress naAccountPublic; NewcoinAddress naAccountPrivate; AccountState::pointer asSrc; STAmount saSrcBalance; Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate, - saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naMasterGenerator); + saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naVerifyGenerator); if (!obj.empty()) return obj; @@ -1177,13 +1180,13 @@ Json::Value RPCServer::doSend(Json::Value& params) bool bCreate = !asDst; STAmount saFee = bCreate ? theConfig.FEE_ACCOUNT_CREATE : theConfig.FEE_DEFAULT; - NewcoinAddress naMasterGenerator; + NewcoinAddress naVerifyGenerator; NewcoinAddress naAccountPublic; NewcoinAddress naAccountPrivate; AccountState::pointer asSrc; STAmount saSrcBalance; Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate, - saSrcBalance, saFee, asSrc, naMasterGenerator); + saSrcBalance, saFee, asSrc, naVerifyGenerator); if (!obj.empty()) return obj; @@ -1764,7 +1767,7 @@ Json::Value RPCServer::doWalletClaim(Json::Value& params) std::vector vucGeneratorCipher = naRegular0Private.accountPrivateEncrypt(naRegular0Public, naMasterGenerator.getFamilyGenerator()); std::vector vucGeneratorSig; - // Prove that we have the corrisponding private key to the generator id. So, we can get the generator id. + // Prove that we have the corresponding private key to the generator id. So, we can get the generator id. // XXX Check result. naRegular0Private.accountPrivateSign(Serializer::getSHA512Half(vucGeneratorCipher), vucGeneratorSig); diff --git a/src/TransactionEngine.cpp b/src/TransactionEngine.cpp index 8748f8b336..cf006613a0 100644 --- a/src/TransactionEngine.cpp +++ b/src/TransactionEngine.cpp @@ -479,6 +479,7 @@ TransactionEngineResult TransactionEngine::applyTransaction(const SerializedTran break; default: + if (!sleSrc->getIFieldPresent(sfAuthorizedKey)) { std::cerr << "applyTransaction: Source is an unclaimed account." << std::endl;