allow you to send from an unclaimed wallet

This commit is contained in:
jed
2012-06-10 07:18:23 -07:00
parent 0f0e567829
commit c37cf4001d
5 changed files with 273 additions and 126 deletions

View File

@@ -100,13 +100,13 @@
<ClCompile Include="src\Application.cpp" /> <ClCompile Include="src\Application.cpp" />
<ClCompile Include="src\BitcoinUtil.cpp" /> <ClCompile Include="src\BitcoinUtil.cpp" />
<ClCompile Include="src\CallRPC.cpp" /> <ClCompile Include="src\CallRPC.cpp" />
<ClCompile Include="src\CanonicalTXSet.cpp" />
<ClCompile Include="src\Config.cpp" /> <ClCompile Include="src\Config.cpp" />
<ClCompile Include="src\ConnectionPool.cpp" /> <ClCompile Include="src\ConnectionPool.cpp" />
<ClCompile Include="src\Conversion.cpp" /> <ClCompile Include="src\Conversion.cpp" />
<ClCompile Include="src\DBInit.cpp" /> <ClCompile Include="src\DBInit.cpp" />
<ClCompile Include="src\DeterministicKeys.cpp" /> <ClCompile Include="src\DeterministicKeys.cpp" />
<ClCompile Include="src\ECIES.cpp" /> <ClCompile Include="src\ECIES.cpp" />
<ClCompile Include="src\Hanko.cpp" />
<ClCompile Include="src\HashedObject.cpp" /> <ClCompile Include="src\HashedObject.cpp" />
<ClCompile Include="src\HttpsClient.cpp" /> <ClCompile Include="src\HttpsClient.cpp" />
<ClCompile Include="src\Ledger.cpp" /> <ClCompile Include="src\Ledger.cpp" />
@@ -157,11 +157,7 @@
<ItemGroup> <ItemGroup>
<ClInclude Include="Account.h" /> <ClInclude Include="Account.h" />
<ClInclude Include="Application.h" /> <ClInclude Include="Application.h" />
<ClInclude Include="base58.h" />
<ClInclude Include="bignum.h" />
<ClInclude Include="bitcoinUtil.h" /> <ClInclude Include="bitcoinUtil.h" />
<ClInclude Include="CallRPC.h" />
<ClInclude Include="ConnectionPool.h" />
<ClInclude Include="Conversion.h" /> <ClInclude Include="Conversion.h" />
<ClInclude Include="cryptopp\config.h" /> <ClInclude Include="cryptopp\config.h" />
<ClInclude Include="cryptopp\cpu.h" /> <ClInclude Include="cryptopp\cpu.h" />
@@ -178,36 +174,75 @@
<ClInclude Include="database\sqlite3.h" /> <ClInclude Include="database\sqlite3.h" />
<ClInclude Include="database\sqlite3ext.h" /> <ClInclude Include="database\sqlite3ext.h" />
<ClInclude Include="database\SqliteDatabase.h" /> <ClInclude Include="database\SqliteDatabase.h" />
<ClInclude Include="HttpReply.h" />
<ClInclude Include="HttpRequest.h" />
<ClInclude Include="key.h" />
<ClInclude Include="KnownNodeList.h" /> <ClInclude Include="KnownNodeList.h" />
<ClInclude Include="Ledger.h" />
<ClInclude Include="LedgerHistory.h" />
<ClInclude Include="LedgerMaster.h" />
<ClInclude Include="NewcoinAddress.h" />
<ClInclude Include="obj\src\newcoin.pb.h" /> <ClInclude Include="obj\src\newcoin.pb.h" />
<ClInclude Include="PackedMessage.h" />
<ClInclude Include="PeerDoor.h" />
<ClInclude Include="NetworkThread.h" /> <ClInclude Include="NetworkThread.h" />
<ClInclude Include="Peer.h" />
<ClInclude Include="RequestParser.h" />
<ClInclude Include="RPC.h" />
<ClInclude Include="RPCCommands.h" />
<ClInclude Include="script.h" /> <ClInclude Include="script.h" />
<ClInclude Include="SecureAllocator.h" /> <ClInclude Include="src\AccountState.h" />
<ClInclude Include="Serializer.h" /> <ClInclude Include="src\Application.h" />
<ClInclude Include="src\base58.h" />
<ClInclude Include="src\bignum.h" />
<ClInclude Include="src\BinaryFormats.h" />
<ClInclude Include="src\BitcoinUtil.h" />
<ClInclude Include="src\CallRPC.h" />
<ClInclude Include="src\CanonicalTXSet.h" />
<ClInclude Include="src\Config.h" />
<ClInclude Include="src\ConnectionPool.h" />
<ClInclude Include="src\Conversion.h" />
<ClInclude Include="src\HashedObject.h" />
<ClInclude Include="src\HttpReply.h" />
<ClInclude Include="src\HttpRequest.h" />
<ClInclude Include="src\HttpsClient.h" />
<ClInclude Include="src\key.h" />
<ClInclude Include="src\Ledger.h" />
<ClInclude Include="src\LedgerAcquire.h" />
<ClInclude Include="src\LedgerConsensus.h" />
<ClInclude Include="src\LedgerFormats.h" />
<ClInclude Include="src\LedgerHistory.h" />
<ClInclude Include="src\LedgerMaster.h" />
<ClInclude Include="src\LedgerProposal.h" />
<ClInclude Include="src\LedgerTiming.h" />
<ClInclude Include="src\Log.h" />
<ClInclude Include="src\NetworkOPs.h" />
<ClInclude Include="src\NetworkStatus.h" />
<ClInclude Include="src\NewcoinAddress.h" />
<ClInclude Include="src\NicknameState.h" />
<ClInclude Include="src\PackedMessage.h" />
<ClInclude Include="src\ParseSection.h" />
<ClInclude Include="src\Peer.h" />
<ClInclude Include="src\PeerDoor.h" />
<ClInclude Include="src\PubKeyCache.h" />
<ClInclude Include="src\RequestParser.h" />
<ClInclude Include="src\rfc1751.h" />
<ClInclude Include="src\RippleState.h" />
<ClInclude Include="src\RPC.h" />
<ClInclude Include="src\RPCCommands.h" />
<ClInclude Include="src\RPCDoor.h" />
<ClInclude Include="src\RPCServer.h" />
<ClInclude Include="src\ScopedLock.h" />
<ClInclude Include="src\SecureAllocator.h" />
<ClInclude Include="src\SerializedLedger.h" />
<ClInclude Include="src\SerializedObject.h" />
<ClInclude Include="src\SerializedTransaction.h" />
<ClInclude Include="src\SerializedTypes.h" />
<ClInclude Include="src\SerializedValidation.h" />
<ClInclude Include="src\Serializer.h" />
<ClInclude Include="src\SHAMap.h" />
<ClInclude Include="src\TaggedCache.h" />
<ClInclude Include="src\Transaction.h" />
<ClInclude Include="src\TransactionEngine.h" />
<ClInclude Include="src\TransactionFormats.h" />
<ClInclude Include="src\TransactionMaster.h" />
<ClInclude Include="src\types.h" />
<ClInclude Include="src\uint256.h" />
<ClInclude Include="src\UniqueNodeList.h" />
<ClInclude Include="src\utils.h" />
<ClInclude Include="src\ValidationCollection.h" />
<ClInclude Include="src\Wallet.h" />
<ClInclude Include="TimingService.h" /> <ClInclude Include="TimingService.h" />
<ClInclude Include="ExtendedTransaction.h" /> <ClInclude Include="ExtendedTransaction.h" />
<ClInclude Include="Transaction.h" />
<ClInclude Include="TransactionBundle.h" />
<ClInclude Include="types.h" />
<ClInclude Include="uint256.h" />
<ClInclude Include="UniqueNodeList.h" />
<ClInclude Include="util\pugiconfig.hpp" /> <ClInclude Include="util\pugiconfig.hpp" />
<ClInclude Include="util\pugixml.hpp" /> <ClInclude Include="util\pugixml.hpp" />
<ClInclude Include="ValidationCollection.h" />
<ClInclude Include="Wallet.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="config.xml" /> <None Include="config.xml" />

View File

@@ -90,9 +90,6 @@
<ClCompile Include="src\ECIES.cpp"> <ClCompile Include="src\ECIES.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\Hanko.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\HashedObject.cpp"> <ClCompile Include="src\HashedObject.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@@ -246,32 +243,17 @@
<ClCompile Include="src\NicknameState.cpp"> <ClCompile Include="src\NicknameState.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\CanonicalTXSet.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="Application.h"> <ClInclude Include="Application.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="UniqueNodeList.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Wallet.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="KnownNodeList.h"> <ClInclude Include="KnownNodeList.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Ledger.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="LedgerHistory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ConnectionPool.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Peer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="util\pugiconfig.hpp"> <ClInclude Include="util\pugiconfig.hpp">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
@@ -281,54 +263,12 @@
<ClInclude Include="NetworkThread.h"> <ClInclude Include="NetworkThread.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="PeerDoor.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="CallRPC.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="RPC.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="bitcoinUtil.h"> <ClInclude Include="bitcoinUtil.h">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="RequestParser.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="HttpRequest.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="HttpReply.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="RPCCommands.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="TransactionBundle.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="PackedMessage.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="TimingService.h"> <ClInclude Include="TimingService.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="LedgerMaster.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="NewcoinAddress.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="base58.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="bignum.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="key.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="cryptopp\config.h"> <ClInclude Include="cryptopp\config.h">
<Filter>Source Files\cryptopp</Filter> <Filter>Source Files\cryptopp</Filter>
</ClInclude> </ClInclude>
@@ -362,36 +302,21 @@
<ClInclude Include="cryptopp\stdcpp.h"> <ClInclude Include="cryptopp\stdcpp.h">
<Filter>Source Files\cryptopp</Filter> <Filter>Source Files\cryptopp</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="types.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="script.h"> <ClInclude Include="script.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="ValidationCollection.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ExtendedTransaction.h"> <ClInclude Include="ExtendedTransaction.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Transaction.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Account.h"> <ClInclude Include="Account.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Serializer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="database\database.h"> <ClInclude Include="database\database.h">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="database\SqliteDatabase.h"> <ClInclude Include="database\SqliteDatabase.h">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="uint256.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="database\sqlite3.h"> <ClInclude Include="database\sqlite3.h">
<Filter>Header Files\util</Filter> <Filter>Header Files\util</Filter>
</ClInclude> </ClInclude>
@@ -401,10 +326,190 @@
<ClInclude Include="Conversion.h"> <ClInclude Include="Conversion.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SecureAllocator.h"> <ClInclude Include="obj\src\newcoin.pb.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="obj\src\newcoin.pb.h"> <ClInclude Include="src\AccountState.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Application.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\base58.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\bignum.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\BinaryFormats.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\BitcoinUtil.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\CallRPC.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\CanonicalTXSet.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\ConnectionPool.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Conversion.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\HashedObject.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\HttpReply.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\HttpRequest.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\HttpsClient.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\key.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Ledger.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\LedgerAcquire.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\LedgerConsensus.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\LedgerFormats.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\LedgerHistory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\LedgerMaster.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\LedgerProposal.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\LedgerTiming.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Log.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\NetworkOPs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\NetworkStatus.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\NewcoinAddress.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\NicknameState.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\PackedMessage.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\ParseSection.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Peer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\PeerDoor.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\PubKeyCache.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\RequestParser.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\rfc1751.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\RippleState.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\RPC.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\RPCCommands.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\RPCDoor.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\RPCServer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\ScopedLock.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\SecureAllocator.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\SerializedLedger.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\SerializedObject.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\SerializedTransaction.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\SerializedTypes.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\SerializedValidation.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Serializer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\SHAMap.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\TaggedCache.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Transaction.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\TransactionEngine.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\TransactionFormats.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\TransactionMaster.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\types.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\uint256.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\UniqueNodeList.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\utils.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\ValidationCollection.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Wallet.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
</ItemGroup> </ItemGroup>

View File

@@ -49,3 +49,6 @@
[rpc_port] [rpc_port]
5005 5005
[rpc_allow_remote]
1

View File

@@ -275,10 +275,10 @@ Json::Value RPCServer::getMasterGenerator(const uint256& uLedger, const NewcoinA
// - Make sure the source account can pay. // - Make sure the source account can pay.
// --> naRegularSeed : To find the generator // --> naRegularSeed : To find the generator
// --> naSrcAccountID : Account we want the public and private regular keys to. // --> 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 // <-- naAccountPublic : Regular public key for naSrcAccountID
// <-- naAccountPrivate : Regular private key for naSrcAccountID // <-- naAccountPrivate : Regular private key for naSrcAccountID
// <-- saSrcBalance: Balance minus fee. // <-- saSrcBalance: Balance minus fee.
// --> naVerifyGenerator : If provided, the found master public generator must match.
Json::Value RPCServer::authorize(const uint256& uLedger, Json::Value RPCServer::authorize(const uint256& uLedger,
const NewcoinAddress& naRegularSeed, const NewcoinAddress& naSrcAccountID, const NewcoinAddress& naRegularSeed, const NewcoinAddress& naSrcAccountID,
NewcoinAddress& naAccountPublic, NewcoinAddress& naAccountPrivate, NewcoinAddress& naAccountPublic, NewcoinAddress& naAccountPrivate,
@@ -291,19 +291,21 @@ Json::Value RPCServer::authorize(const uint256& uLedger,
{ {
return RPCError(rpcSRC_MISSING); return RPCError(rpcSRC_MISSING);
} }
// Source must have been claimed.
if (!asSrc->bHaveAuthorizedKey())
{
return RPCError(rpcSRC_UNCLAIMED);
}
NewcoinAddress naMasterGenerator; NewcoinAddress naMasterGenerator;
Json::Value obj = getMasterGenerator(uLedger, naRegularSeed, naMasterGenerator);
if(asSrc->bHaveAuthorizedKey())
{
Json::Value obj = getMasterGenerator(uLedger, naRegularSeed, naMasterGenerator);
if (!obj.empty()) if (!obj.empty())
return obj; 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 is provided, make sure it is the master generator.
if (naVerifyGenerator.isValid() && naMasterGenerator != naVerifyGenerator) if (naVerifyGenerator.isValid() && naMasterGenerator != naVerifyGenerator)
@@ -330,7 +332,7 @@ Json::Value RPCServer::authorize(const uint256& uLedger,
naAccountPublic.setAccountPublic(naGenerator, iIndex); naAccountPublic.setAccountPublic(naGenerator, iIndex);
naAccountPrivate.setAccountPrivate(naGenerator, naRegularSeed, 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 << "iIndex: " << iIndex << std::endl;
std::cerr << "sfAuthorizedKey: " << strHex(asSrc->getAuthorizedKey().getAccountID()) << std::endl; std::cerr << "sfAuthorizedKey: " << strHex(asSrc->getAuthorizedKey().getAccountID()) << std::endl;
@@ -350,6 +352,7 @@ Json::Value RPCServer::authorize(const uint256& uLedger,
saSrcBalance -= saFee; saSrcBalance -= saFee;
} }
Json::Value obj;
return obj; return obj;
} }
@@ -426,13 +429,13 @@ Json::Value RPCServer::doAccountEmailSet(Json::Value &params)
return RPCError(rpcSRC_ACT_MALFORMED); return RPCError(rpcSRC_ACT_MALFORMED);
} }
NewcoinAddress naMasterGenerator; NewcoinAddress naVerifyGenerator;
NewcoinAddress naAccountPublic; NewcoinAddress naAccountPublic;
NewcoinAddress naAccountPrivate; NewcoinAddress naAccountPrivate;
AccountState::pointer asSrc; AccountState::pointer asSrc;
STAmount saSrcBalance; STAmount saSrcBalance;
Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate, Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate,
saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naMasterGenerator); saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naVerifyGenerator);
if (!obj.empty()) if (!obj.empty())
return obj; return obj;
@@ -634,13 +637,13 @@ Json::Value RPCServer::doAccountMessageSet(Json::Value& params) {
return RPCError(rpcPUBLIC_MALFORMED); return RPCError(rpcPUBLIC_MALFORMED);
} }
NewcoinAddress naMasterGenerator; NewcoinAddress naVerifyGenerator;
NewcoinAddress naAccountPublic; NewcoinAddress naAccountPublic;
NewcoinAddress naAccountPrivate; NewcoinAddress naAccountPrivate;
AccountState::pointer asSrc; AccountState::pointer asSrc;
STAmount saSrcBalance; STAmount saSrcBalance;
Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate, Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate,
saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naMasterGenerator); saSrcBalance, theConfig.FEE_DEFAULT, asSrc, naVerifyGenerator);
if (!obj.empty()) if (!obj.empty())
return obj; return obj;
@@ -1177,13 +1180,13 @@ Json::Value RPCServer::doSend(Json::Value& params)
bool bCreate = !asDst; bool bCreate = !asDst;
STAmount saFee = bCreate ? theConfig.FEE_ACCOUNT_CREATE : theConfig.FEE_DEFAULT; STAmount saFee = bCreate ? theConfig.FEE_ACCOUNT_CREATE : theConfig.FEE_DEFAULT;
NewcoinAddress naMasterGenerator; NewcoinAddress naVerifyGenerator;
NewcoinAddress naAccountPublic; NewcoinAddress naAccountPublic;
NewcoinAddress naAccountPrivate; NewcoinAddress naAccountPrivate;
AccountState::pointer asSrc; AccountState::pointer asSrc;
STAmount saSrcBalance; STAmount saSrcBalance;
Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate, Json::Value obj = authorize(uLedger, naSeed, naSrcAccountID, naAccountPublic, naAccountPrivate,
saSrcBalance, saFee, asSrc, naMasterGenerator); saSrcBalance, saFee, asSrc, naVerifyGenerator);
if (!obj.empty()) if (!obj.empty())
return obj; return obj;
@@ -1764,7 +1767,7 @@ Json::Value RPCServer::doWalletClaim(Json::Value& params)
std::vector<unsigned char> vucGeneratorCipher = naRegular0Private.accountPrivateEncrypt(naRegular0Public, naMasterGenerator.getFamilyGenerator()); std::vector<unsigned char> vucGeneratorCipher = naRegular0Private.accountPrivateEncrypt(naRegular0Public, naMasterGenerator.getFamilyGenerator());
std::vector<unsigned char> vucGeneratorSig; std::vector<unsigned char> 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. // XXX Check result.
naRegular0Private.accountPrivateSign(Serializer::getSHA512Half(vucGeneratorCipher), vucGeneratorSig); naRegular0Private.accountPrivateSign(Serializer::getSHA512Half(vucGeneratorCipher), vucGeneratorSig);

View File

@@ -479,6 +479,7 @@ TransactionEngineResult TransactionEngine::applyTransaction(const SerializedTran
break; break;
default: default:
if (!sleSrc->getIFieldPresent(sfAuthorizedKey)) if (!sleSrc->getIFieldPresent(sfAuthorizedKey))
{ {
std::cerr << "applyTransaction: Source is an unclaimed account." << std::endl; std::cerr << "applyTransaction: Source is an unclaimed account." << std::endl;